using UnityEngine; public abstract class LightOverride : MonoBehaviour { [Header("Overrides")] public float m_IntensityMult = 1.0f; [MinValue(0.0f)] public float m_RangeMult = 1.0f; public enum Type{None, Point, Tube, Area, Directional} Type m_Type = Type.None; bool m_Initialized = false; Light m_Light; public bool isOn { get { if (!isActiveAndEnabled) return false; Init(); switch(m_Type) { case Type.Point: return m_Light.enabled || GetForceOn(); case Type.Directional: return m_Light.enabled || GetForceOn(); } return false; } private set{} } new public Light light {get{Init(); return m_Light;} private set{}} public Type type {get{Init(); return m_Type;} private set{}} // To get the "enabled" state check box void Update() { } public abstract bool GetForceOn(); void Init() { if (m_Initialized) return; if ((m_Light = GetComponent()) != null) { switch(m_Light.type) { case LightType.Point: m_Type = Type.Point; break; case LightType.Directional: m_Type = Type.Directional; break; default: m_Type = Type.None; break; } } m_Initialized = true; } }