A game about forced loneliness, made by TACStudios
at master 201 lines 5.9 kB view raw
1using System; 2using UnityEngine; 3 4namespace UnityEditor.U2D.Animation 5{ 6 internal class BoneVisibilityToolData : CacheObject 7 { 8 [SerializeField] 9 bool m_AllVisibility = true; 10 bool m_PreviousVisibility = true; 11 12 public bool allVisibility 13 { 14 get { return m_AllVisibility; } 15 set { m_AllVisibility = value; } 16 } 17 18 public bool previousVisiblity 19 { 20 get { return m_PreviousVisibility; } 21 set { m_PreviousVisibility = value; } 22 } 23 } 24 25 internal class BoneTreeWidgetModel : IBoneTreeViewModel 26 { 27 protected SkinningCache m_SkinningCache; 28 protected IBoneVisibilityToolView m_View; 29 protected BoneVisibilityToolData m_Data; 30 31 public SkinningCache skinningCache 32 { 33 get { return m_SkinningCache; } 34 } 35 36 public IBoneVisibilityToolView view 37 { 38 get { return m_View; } 39 } 40 41 public virtual bool GetAllVisibility() 42 { 43 return m_Data.allVisibility; 44 } 45 46 public SkeletonSelection GetBoneSelection() 47 { 48 return skinningCache.skeletonSelection; 49 } 50 51 public BoneCache[] GetExpandedBones() 52 { 53 return skinningCache.GetExpandedBones(); 54 } 55 56 public int GetDepth(BoneCache bone) 57 { 58 return (int)bone.depth; 59 } 60 61 public Color GetBoneColor(BoneCache bone) 62 { 63 return bone.bindPoseColor; 64 } 65 66 public SkeletonCache GetSelectedSkeleton() 67 { 68 return skinningCache.GetEffectiveSkeleton(skinningCache.selectedSprite); 69 } 70 71 public bool GetVisibility(BoneCache bone) 72 { 73 return bone.isVisible; 74 } 75 76 public void SelectBones(BoneCache[] bones) 77 { 78 skinningCache.skeletonSelection.elements = bones.ToCharacterIfNeeded(); 79 } 80 81 public void SetExpandedBones(BoneCache[] bones) 82 { 83 skinningCache.BoneExpansionChanged(bones); 84 } 85 86 public virtual void SetAllVisibility(SkeletonCache skeleton, bool visibility) 87 { 88 m_Data.allVisibility = visibility; 89 SetAllBoneVisibility(skeleton, visibility); 90 UpdateVisibilityFromPersistentState(); 91 } 92 93 public static void SetAllBoneVisibility(SkeletonCache skeleton, bool visibility) 94 { 95 if (skeleton != null) 96 { 97 foreach (var bone in skeleton.bones) 98 bone.isVisible = visibility; 99 } 100 } 101 102 public void SetBoneParent(BoneCache newParent, BoneCache bone, int insertAtIndex) 103 { 104 TransformCache parent = newParent; 105 106 if (newParent == null) 107 parent = bone.skeleton; 108 109 skinningCache.RestoreBindPose(); 110 bone.SetParent(parent, true); 111 112 if (insertAtIndex == -1) 113 insertAtIndex = parent.childCount; 114 115 bone.siblingIndex = insertAtIndex; 116 bone.SetDefaultPose(); 117 } 118 119 public void SetDepth(BoneCache bone, int depth) 120 { 121 var characterBone = bone.ToCharacterIfNeeded(); 122 characterBone.depth = depth; 123 124 if (characterBone != bone || skinningCache.mode == SkinningMode.Character) 125 skinningCache.SyncSpriteSheetSkeletons(); 126 127 skinningCache.events.boneDepthChanged.Invoke(bone); 128 } 129 130 public void SetBoneColor(BoneCache bone, Color color) 131 { 132 var characterBone = bone.ToCharacterIfNeeded(); 133 characterBone.bindPoseColor = color; 134 135 if (characterBone != bone || skinningCache.mode == SkinningMode.Character) 136 skinningCache.SyncSpriteSheetSkeletons(); 137 138 skinningCache.events.boneColorChanged.Invoke(bone); 139 } 140 141 public void SetName(BoneCache bone, string name) 142 { 143 var characterBone = bone.ToCharacterIfNeeded(); 144 characterBone.name = name; 145 if (characterBone != bone || skinningCache.mode == SkinningMode.Character) 146 { 147 skinningCache.SyncSpriteSheetSkeletons(); 148 } 149 } 150 151 public void SetVisibility(BoneCache bone, bool visibility) 152 { 153 bone.isVisible = visibility; 154 UpdateVisibilityFromPersistentState(); 155 } 156 157 public UndoScope UndoScope(string value) 158 { 159 return skinningCache.UndoScope(value); 160 } 161 162 private void UpdateVisibilityFromPersistentState() 163 { 164 skinningCache.BoneVisibilityChanged(); 165 } 166 167 public bool hasCharacter 168 { 169 get { return skinningCache.hasCharacter; } 170 } 171 172 public SkinningMode mode 173 { 174 get { return skinningCache.mode; } 175 } 176 } 177 178 179 internal interface IBoneTreeViewModel 180 { 181 void SetVisibility(BoneCache bone, bool visibility); 182 bool GetVisibility(BoneCache bone); 183 void SetName(BoneCache bone, string name); 184 void SetBoneParent(BoneCache newParent, BoneCache bone, int insertAtIndex); 185 int GetDepth(BoneCache bone); 186 void SetDepth(BoneCache bone, int depth); 187 Color GetBoneColor(BoneCache bone); 188 void SetBoneColor(BoneCache bone, Color color); 189 void SetAllVisibility(SkeletonCache skeleton, bool visibility); 190 bool GetAllVisibility(); 191 void SelectBones(BoneCache[] bones); 192 void SetExpandedBones(BoneCache[] bones); 193 IBoneVisibilityToolView view { get; } 194 SkeletonSelection GetBoneSelection(); 195 BoneCache[] GetExpandedBones(); 196 SkeletonCache GetSelectedSkeleton(); 197 bool hasCharacter { get; } 198 SkinningMode mode { get; } 199 UndoScope UndoScope(string value); 200 } 201}