A game about forced loneliness, made by TACStudios
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}