A game about forced loneliness, made by TACStudios
at master 259 lines 6.5 kB view raw
1using System; 2using System.Collections.Generic; 3using UnityEngine; 4 5namespace UnityEditor.U2D.Animation 6{ 7 internal interface ISkinningCachePersistentState 8 { 9 string lastSpriteId 10 { 11 get; 12 set; 13 } 14 15 Tools lastUsedTool 16 { 17 get; 18 set; 19 } 20 21 List<int> lastBoneSelectionIds 22 { 23 get; 24 } 25 26 Texture2D lastTexture 27 { 28 get; 29 set; 30 } 31 32 SerializableDictionary<int, BonePose> lastPreviewPose 33 { 34 get; 35 } 36 37 SerializableDictionary<int, bool> lastBoneVisibility 38 { 39 get; 40 } 41 42 SerializableDictionary<int, bool> lastBoneExpansion 43 { 44 get; 45 } 46 47 SerializableDictionary<string, bool> lastSpriteVisibility 48 { 49 get; 50 } 51 52 SerializableDictionary<int, bool> lastGroupVisibility 53 { 54 get; 55 } 56 57 SkinningMode lastMode 58 { 59 get; 60 set; 61 } 62 63 bool lastVisibilityToolActive 64 { 65 get; 66 set; 67 } 68 69 int lastVisibilityToolIndex 70 { 71 get; 72 set; 73 } 74 75 IndexedSelection lastVertexSelection 76 { 77 get; 78 } 79 80 float lastBrushSize 81 { 82 get; 83 set; 84 } 85 86 float lastBrushHardness 87 { 88 get; 89 set; 90 } 91 92 float lastBrushStep 93 { 94 get; 95 set; 96 } 97 } 98 99 [Serializable] 100 internal class SkinningCachePersistentState 101 : ScriptableSingleton<SkinningCachePersistentState> 102 , ISkinningCachePersistentState 103 { 104 [SerializeField] Tools m_LastUsedTool = Tools.EditPose; 105 106 [SerializeField] SkinningMode m_LastMode = SkinningMode.Character; 107 108 [SerializeField] string m_LastSpriteId = String.Empty; 109 110 [SerializeField] List<int> m_LastBoneSelectionIds = new List<int>(); 111 112 [SerializeField] Texture2D m_LastTexture; 113 114 [SerializeField] 115 SerializableDictionary<int, BonePose> m_SkeletonPreviewPose = 116 new SerializableDictionary<int, BonePose>(); 117 118 [SerializeField] 119 SerializableDictionary<int, bool> m_BoneVisibility = 120 new SerializableDictionary<int, bool>(); 121 122 [SerializeField] 123 SerializableDictionary<int, bool> m_BoneExpansion = 124 new SerializableDictionary<int, bool>(); 125 126 [SerializeField] 127 SerializableDictionary<string, bool> m_SpriteVisibility = 128 new SerializableDictionary<string, bool>(); 129 130 [SerializeField] 131 SerializableDictionary<int, bool> m_GroupVisibility = 132 new SerializableDictionary<int, bool>(); 133 134 [SerializeField] IndexedSelection m_VertexSelection; 135 136 [SerializeField] bool m_VisibilityToolActive; 137 [SerializeField] int m_VisibilityToolIndex = -1; 138 139 [SerializeField] float m_LastBrushSize = 25f; 140 [SerializeField] float m_LastBrushHardness = 1f; 141 [SerializeField] float m_LastBrushStep = 20f; 142 143 public SkinningCachePersistentState() 144 { 145 m_VertexSelection = new IndexedSelection(); 146 } 147 148 void OnEnable() 149 { 150 name = GetType().ToString(); 151 } 152 153 void OnDisable() 154 { 155 Undo.ClearUndo(this); 156 } 157 158 public void SetDefault() 159 { 160 m_LastUsedTool = Tools.EditPose; 161 m_LastMode = SkinningMode.Character; 162 m_LastSpriteId = String.Empty; 163 m_LastBoneSelectionIds.Clear(); 164 m_LastTexture = null; 165 m_VertexSelection.Clear(); 166 m_SkeletonPreviewPose.Clear(); 167 m_BoneVisibility.Clear(); 168 m_BoneExpansion.Clear(); 169 m_SpriteVisibility.Clear(); 170 m_GroupVisibility.Clear(); 171 m_VisibilityToolActive = false; 172 m_VisibilityToolIndex = -1; 173 } 174 175 public string lastSpriteId 176 { 177 get => m_LastSpriteId; 178 set => m_LastSpriteId = value; 179 } 180 181 public Tools lastUsedTool 182 { 183 get => m_LastUsedTool; 184 set => m_LastUsedTool = value; 185 } 186 187 public List<int> lastBoneSelectionIds => m_LastBoneSelectionIds; 188 189 public Texture2D lastTexture 190 { 191 get => m_LastTexture; 192 set 193 { 194 if (value != m_LastTexture) 195 { 196 m_LastMode = SkinningMode.Character; 197 m_LastSpriteId = string.Empty; 198 m_LastBoneSelectionIds.Clear(); 199 m_VertexSelection.Clear(); 200 m_SkeletonPreviewPose.Clear(); 201 m_BoneVisibility.Clear(); 202 m_BoneExpansion.Clear(); 203 m_SpriteVisibility.Clear(); 204 m_GroupVisibility.Clear(); 205 } 206 207 m_LastTexture = value; 208 } 209 } 210 211 public SerializableDictionary<int, BonePose> lastPreviewPose => m_SkeletonPreviewPose; 212 213 public SerializableDictionary<int, bool> lastBoneVisibility => m_BoneVisibility; 214 215 public SerializableDictionary<int, bool> lastBoneExpansion => m_BoneExpansion; 216 217 public SerializableDictionary<string, bool> lastSpriteVisibility => m_SpriteVisibility; 218 219 public SerializableDictionary<int, bool> lastGroupVisibility => m_GroupVisibility; 220 221 public SkinningMode lastMode 222 { 223 get => m_LastMode; 224 set => m_LastMode = value; 225 } 226 227 public bool lastVisibilityToolActive 228 { 229 get => m_VisibilityToolActive; 230 set => m_VisibilityToolActive = value; 231 } 232 233 public int lastVisibilityToolIndex 234 { 235 get => m_VisibilityToolIndex; 236 set => m_VisibilityToolIndex = value; 237 } 238 239 public IndexedSelection lastVertexSelection => m_VertexSelection; 240 241 public float lastBrushSize 242 { 243 get => m_LastBrushSize; 244 set => m_LastBrushSize = value; 245 } 246 247 public float lastBrushHardness 248 { 249 get => m_LastBrushHardness; 250 set => m_LastBrushHardness = value; 251 } 252 253 public float lastBrushStep 254 { 255 get => m_LastBrushStep; 256 set => m_LastBrushStep = value; 257 } 258 } 259}