MIF_E31211846/Library/PackageCache/com.unity.2d.animation@10.1.0/Runtime/SpriteSkinContainer.cs

55 lines
1.6 KiB
C#

using System;
using System.Collections.Generic;
namespace UnityEngine.U2D.Animation
{
internal class SpriteSkinContainer : ScriptableObject
{
public static event Action<SpriteSkin> onAddedSpriteSkin;
public static event Action<SpriteSkin> onRemovedSpriteSkin;
public static event Action<SpriteSkin> onBoneTransformChanged;
static SpriteSkinContainer s_Instance;
public static SpriteSkinContainer instance
{
get
{
if (s_Instance == null)
{
var managers = Resources.FindObjectsOfTypeAll<SpriteSkinContainer>();
if (managers.Length > 0)
s_Instance = managers[0];
else
s_Instance = CreateInstance<SpriteSkinContainer>();
s_Instance.hideFlags = HideFlags.HideAndDontSave;
}
return s_Instance;
}
}
List<SpriteSkin> m_SpriteSkin = new List<SpriteSkin>();
public IReadOnlyList<SpriteSkin> spriteSkins => m_SpriteSkin;
public void AddSpriteSkin(SpriteSkin spriteSkin)
{
m_SpriteSkin.Add(spriteSkin);
onAddedSpriteSkin?.Invoke(spriteSkin);
}
public void RemoveSpriteSkin(SpriteSkin spriteSkin)
{
m_SpriteSkin.Remove(spriteSkin);
onRemovedSpriteSkin?.Invoke(spriteSkin);
}
public void BoneTransformsChanged(SpriteSkin spriteSkin)
{
onBoneTransformChanged?.Invoke(spriteSkin);
}
}
}