89 lines
1.7 KiB
C#
89 lines
1.7 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
[ExecuteInEditMode]
|
|
public class OutlineManager : MonoBehaviour
|
|
{
|
|
|
|
private static OutlineManager _instance;
|
|
|
|
public static OutlineManager instance
|
|
{
|
|
get
|
|
{
|
|
return _instance;
|
|
}
|
|
}
|
|
|
|
public bool m_EnableOutline = true;
|
|
|
|
public float m_SampleDistance = 0.01f;
|
|
|
|
public Color m_OutlineColor = Color.white;
|
|
|
|
public List<Renderer> m_RenderList = new List<Renderer>();
|
|
|
|
public Color m_OutlineColorEnemy = Color.red;
|
|
public List<Renderer> m_RenderListEnemy = new List<Renderer>();
|
|
|
|
public Camera targetCamera;
|
|
|
|
public float scaleProgress = 1f;
|
|
|
|
public Material mat1;
|
|
public Material mat1_1;
|
|
public Material mat2;
|
|
public Material mat3;
|
|
|
|
// Start is called before the first frame update
|
|
void OnEnable()
|
|
{
|
|
_instance = this;
|
|
}
|
|
|
|
public void AutoAddFromObj(GameObject obj, bool isEnemy)
|
|
{
|
|
var renders = obj.GetComponentsInChildren<Renderer>();
|
|
if (isEnemy)
|
|
{
|
|
m_RenderListEnemy.AddRange(renders);
|
|
}
|
|
else
|
|
{
|
|
m_RenderList.AddRange(renders);
|
|
}
|
|
}
|
|
|
|
public void RemoveRenderer(Renderer r, bool isEnemy)
|
|
{
|
|
if (isEnemy)
|
|
{
|
|
m_RenderListEnemy.Remove(r);
|
|
}
|
|
else
|
|
{
|
|
m_RenderList.Remove(r);
|
|
}
|
|
}
|
|
|
|
public void AddRenderer(Renderer r, bool isEnemy)
|
|
{
|
|
if (r.sharedMaterials.Length > 1) return;
|
|
if (isEnemy)
|
|
{
|
|
m_RenderListEnemy.Add(r);
|
|
}
|
|
else
|
|
{
|
|
m_RenderList.Add(r);
|
|
}
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
_instance = null;
|
|
}
|
|
}
|