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