You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
HighGroundRoyaleNetcode/Assets/Outliner.cs

58 lines
1.7 KiB
C#

using UnityEngine;
public class Outliner : MonoBehaviour
{
public Material outlineMaterial; // Assign in Inspector
public float outlineWidth = 0.1f; // Customize per object
private Renderer objRenderer;
private Material[] originalMaterials;
private MaterialPropertyBlock propertyBlock;
void Start()
{
objRenderer = GetRenderer();
if (objRenderer != null)
{
originalMaterials = objRenderer.sharedMaterials;
propertyBlock = new MaterialPropertyBlock();
}
}
public void EnableOutline()
{
if (objRenderer != null && outlineMaterial != null)
{
Material[] newMaterials = new Material[originalMaterials.Length + 1];
newMaterials[0] = outlineMaterial; // Outline material at index 0
for (int i = 0; i < originalMaterials.Length; i++)
newMaterials[i + 1] = originalMaterials[i];
objRenderer.materials = newMaterials;
// Set custom outline width
objRenderer.GetPropertyBlock(propertyBlock);
propertyBlock.SetFloat("_OutlineWidth", outlineWidth);
objRenderer.SetPropertyBlock(propertyBlock);
}
}
public void DisableOutline()
{
if (objRenderer != null)
{
objRenderer.materials = originalMaterials; // Restore original materials
}
}
public Renderer GetRenderer()
{
if (TryGetComponent<MeshRenderer>(out MeshRenderer meshRenderer))
return meshRenderer;
if (TryGetComponent<SkinnedMeshRenderer>(out SkinnedMeshRenderer skinnedRenderer))
return skinnedRenderer;
return null;
}
}