NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/AOT/PostProcess/PostOutline/OutlineManager.cs

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;
}
}