using System; using System.Collections.Generic; namespace UnityEngine.U2D.Animation { internal class SpriteSkinContainer : ScriptableObject { public static event Action onAddedSpriteSkin; public static event Action onRemovedSpriteSkin; public static event Action onBoneTransformChanged; static SpriteSkinContainer s_Instance; public static SpriteSkinContainer instance { get { if (s_Instance == null) { var managers = Resources.FindObjectsOfTypeAll(); if (managers.Length > 0) s_Instance = managers[0]; else s_Instance = CreateInstance(); s_Instance.hideFlags = HideFlags.HideAndDontSave; } return s_Instance; } } List m_SpriteSkin = new List(); public IReadOnlyList 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); } } }