86 lines
2.1 KiB
C#
86 lines
2.1 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Unity.VisualScripting;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering.Universal;
|
|
|
|
[ExecuteInEditMode]
|
|
public class OutLineRender : OutLineVariable
|
|
{
|
|
public bool RunInEditor;
|
|
|
|
private Renderer[] rdArray;
|
|
|
|
private bool changeValue = false;
|
|
void OnEnable()
|
|
{
|
|
|
|
rdArray= GetComponentsInChildren<Renderer>();
|
|
for (int i = 0; i < rdArray.Length; i++)
|
|
{
|
|
if(OutLine.render.Contains(rdArray[i])) return;
|
|
OutLine.render.Add(rdArray[i]);
|
|
}
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
|
|
if (changeValue)
|
|
{
|
|
changeValue = false;
|
|
if (OutLineColor != OutLine.OutLineColor)
|
|
{
|
|
OutLine.OutLineColor = OutLineColor;
|
|
}
|
|
|
|
if (OutLineStrength !=OutLine.OutLineStrength)
|
|
{
|
|
OutLine.OutLineStrength = OutLineStrength;
|
|
}
|
|
if(Application.isPlaying) return;
|
|
|
|
if (RunInEditor )
|
|
{
|
|
rdArray= GetComponentsInChildren<Renderer>();
|
|
for (int i = 0; i < rdArray.Length; i++)
|
|
{
|
|
if(OutLine.render.Contains(rdArray[i])) return;
|
|
OutLine.render.Add(rdArray[i]);
|
|
}
|
|
}
|
|
if (RunInEditor==false && rdArray!=null)
|
|
{
|
|
for (int i = 0; i < rdArray.Length; i++)
|
|
{
|
|
if(OutLine.render.Contains(rdArray[i])==false) return;
|
|
OutLine.render.Remove(rdArray[i]);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
private void OnValidate()
|
|
{
|
|
changeValue = true;
|
|
}
|
|
|
|
|
|
private void OnDisable()
|
|
{
|
|
if (rdArray != null)
|
|
{
|
|
for (int i = 0; i < rdArray.Length; i++)
|
|
{
|
|
if(OutLine.render.Contains(rdArray[i])==false) return;
|
|
OutLine.render.Remove(rdArray[i]);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|