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(); 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(); 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]); } } } }