using System.Collections.Generic; using UnityEngine.Scripting.APIUpdating; namespace UnityEngine.Rendering.Universal { /// <summary> /// Class for 2D shadow caster groups. /// </summary> [MovedFrom("UnityEngine.Experimental.Rendering.Universal")] public abstract class ShadowCasterGroup2D : MonoBehaviour { [SerializeField] internal int m_ShadowGroup = 0; List<ShadowCaster2D> m_ShadowCasters; internal virtual void CacheValues() { if (m_ShadowCasters != null) { for (int i = 0; i < m_ShadowCasters.Count; i++) m_ShadowCasters[i].CacheValues(); } } /// <summary> /// Returns a list of registered 2D shadow casters. /// </summary> /// <returns>A list of 2D shadow casters that have been registered..</returns> public List<ShadowCaster2D> GetShadowCasters() { return m_ShadowCasters; } /// <summary> /// Returns the shadow group. /// </summary> /// <returns>The shadow group used.</returns> public int GetShadowGroup() { return m_ShadowGroup; } /// <summary> /// Registers a 2D shadow caster. /// </summary> /// <param name="shadowCaster2D">The 2D shadow to register.</param> public void RegisterShadowCaster2D(ShadowCaster2D shadowCaster2D) { if (m_ShadowCasters == null) m_ShadowCasters = new List<ShadowCaster2D>(); m_ShadowCasters.Add(shadowCaster2D); } /// <summary> /// Unregisters a 2D shadow caster. /// </summary> /// <param name="shadowCaster2D">The 2D shadow to unregister.</param> public void UnregisterShadowCaster2D(ShadowCaster2D shadowCaster2D) { if (m_ShadowCasters != null) m_ShadowCasters.Remove(shadowCaster2D); } } }