using System; using System.Collections.Generic; using UnityEngine; namespace UnityEditor.U2D.Animation { [Serializable] internal class CharacterGroupCache : SkinningObject, ICharacterOrder { [SerializeField] public int parentGroup; [SerializeField] bool m_IsVisible = true; [SerializeField] 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] SpriteCache m_Sprite; [SerializeField] List m_Bones = new List(); [SerializeField] bool m_IsVisible = true; [SerializeField] int m_ParentGroup = -1; [SerializeField] int m_Order = -1; public virtual int order { get => m_Order; set => m_Order = value; } public int parentGroup { get => m_ParentGroup; set => m_ParentGroup = value; } public virtual bool isVisible { get => m_IsVisible; set { m_IsVisible = value; if (skinningCache != null) skinningCache.SpriteVisibilityChanged(this); } } public int boneCount => m_Bones.Count; public virtual SpriteCache sprite { get => m_Sprite; set => m_Sprite = value; } public virtual BoneCache[] bones { get => 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); } } }