using System; using System.Collections.Generic; using UnityEngine; namespace UnityEditor.U2D.Animation { [Serializable] internal class CharacterGroupCache : SkinningObject, ICharacterOrder { [SerializeField] public int parentGroup; [SerializeField] private bool m_IsVisible = true; [SerializeField] private int m_Order = -1; public bool isVisible { get => m_IsVisible; set { m_IsVisible = value; skinningCache.GroupVisibilityChanged(this); } } public virtual int order { get => m_Order; set => m_Order = value; } } internal class CharacterPartCache : TransformCache, ICharacterOrder { [SerializeField] private SpriteCache m_Sprite; [SerializeField] private List m_Bones = new List(); [SerializeField] private bool m_IsVisible = true; [SerializeField] private int m_ParentGroup = -1; [SerializeField] private int m_Order = -1; public virtual int order { get => m_Order; set => m_Order = value; } public int parentGroup { get { return m_ParentGroup; } set { m_ParentGroup = value; } } public virtual bool isVisible { get { return m_IsVisible; } set { m_IsVisible = value; if (skinningCache != null) skinningCache.SpriteVisibilityChanged(this); } } public int BoneCount { get { return m_Bones.Count; } } public virtual SpriteCache sprite { get { return m_Sprite; } set { m_Sprite = value; } } public BoneCache[] bones { get { return m_Bones.ToArray(); } set { m_Bones = new List(value); } } public BoneCache GetBone(int index) { return m_Bones[index]; } public int IndexOf(BoneCache bone) { return m_Bones.IndexOf(bone); } public bool Contains(BoneCache bone) { return m_Bones.Contains(bone); } } }