A game about forced loneliness, made by TACStudios
1using System;
2
3namespace UnityEditor.Rendering
4{
5 public static partial class SerializedBitArrayUtilities
6 {
7 /// <summary>Convert to 8bit</summary>
8 /// <param name="serializedProperty">The SerializedProperty</param>
9 /// <returns>A SerializedBitArray8</returns>
10 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
11 public static SerializedBitArray8 ToSerializeBitArray8(this SerializedProperty serializedProperty) => null;
12
13 /// <summary>Try convert to 8bit</summary>
14 /// <param name="serializedProperty">The SerializedProperty</param>
15 /// <param name="serializedBitArray">Out SerializedBitArray8</param>
16 /// <returns>True if convertion was a success</returns>
17 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
18 public static bool TryGetSerializeBitArray8(this SerializedProperty serializedProperty, out SerializedBitArray8 serializedBitArray)
19 {
20 serializedBitArray = null;
21 return false;
22 }
23
24 /// <summary>Convert to 16bit</summary>
25 /// <param name="serializedProperty">The SerializedProperty</param>
26 /// <returns>A SerializedBitArray16</returns>
27 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
28 public static SerializedBitArray16 ToSerializeBitArray16(this SerializedProperty serializedProperty) => null;
29
30 /// <summary>Try convert to 16bit</summary>
31 /// <param name="serializedProperty">The SerializedProperty</param>
32 /// <param name="serializedBitArray">Out SerializedBitArray16</param>
33 /// <returns>True if convertion was a success</returns>
34 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
35 public static bool TryGetSerializeBitArray16(this SerializedProperty serializedProperty, out SerializedBitArray16 serializedBitArray)
36 {
37 serializedBitArray = null;
38 return false;
39 }
40
41 /// <summary>Convert to 32bit</summary>
42 /// <param name="serializedProperty">The SerializedProperty</param>
43 /// <returns>A SerializedBitArray32</returns>
44 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
45 public static SerializedBitArray32 ToSerializeBitArray32(this SerializedProperty serializedProperty) => null;
46
47 /// <summary>Try convert to 32bit</summary>
48 /// <param name="serializedProperty">The SerializedProperty</param>
49 /// <param name="serializedBitArray">Out SerializedBitArray32</param>
50 /// <returns>True if convertion was a success</returns>
51 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
52 public static bool TryGetSerializeBitArray32(this SerializedProperty serializedProperty, out SerializedBitArray32 serializedBitArray)
53 {
54 serializedBitArray = null;
55 return false;
56 }
57
58 /// <summary>Convert to 64bit</summary>
59 /// <param name="serializedProperty">The SerializedProperty</param>
60 /// <returns>A SerializedBitArray64</returns>
61 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
62 public static SerializedBitArray64 ToSerializeBitArray64(this SerializedProperty serializedProperty) => null;
63
64 /// <summary>Try convert to 64bit</summary>
65 /// <param name="serializedProperty">The SerializedProperty</param>
66 /// <param name="serializedBitArray">Out SerializedBitArray64</param>
67 /// <returns>True if convertion was a success</returns>
68 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
69 public static bool TryGetSerializeBitArray64(this SerializedProperty serializedProperty, out SerializedBitArray64 serializedBitArray)
70 {
71 serializedBitArray = null;
72 return false;
73 }
74
75 /// <summary>Convert to 128bit</summary>
76 /// <param name="serializedProperty">The SerializedProperty</param>
77 /// <returns>A SerializedBitArray128</returns>
78 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
79 public static SerializedBitArray128 ToSerializeBitArray128(this SerializedProperty serializedProperty) => null;
80
81 /// <summary>Try convert to 128bit</summary>
82 /// <param name="serializedProperty">The SerializedProperty</param>
83 /// <param name="serializedBitArray">Out SerializedBitArray128</param>
84 /// <returns>True if convertion was a success</returns>
85 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
86 public static bool TryGetSerializeBitArray128(this SerializedProperty serializedProperty, out SerializedBitArray128 serializedBitArray)
87 {
88 serializedBitArray = null;
89 return false;
90 }
91
92 /// <summary>Convert to 256bit</summary>
93 /// <param name="serializedProperty">The SerializedProperty</param>
94 /// <returns>A SerializedBitArray256</returns>
95 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
96 public static SerializedBitArray256 ToSerializeBitArray256(this SerializedProperty serializedProperty) => null;
97
98 /// <summary>Try convert to 256bit</summary>
99 /// <param name="serializedProperty">The SerializedProperty</param>
100 /// <param name="serializedBitArray">Out SerializedBitArray256</param>
101 /// <returns>True if convertion was a success</returns>
102 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
103 public static bool TryGetSerializeBitArray256(this SerializedProperty serializedProperty, out SerializedBitArray256 serializedBitArray)
104 {
105 serializedBitArray = null;
106 return false;
107 }
108 }
109
110 /// <summary>Abstract base classe of all SerializedBitArray</summary>
111 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
112 public abstract class SerializedBitArray : ISerializedBitArray
113 {
114 /// <summary>Capacity of the bitarray</summary>
115 public uint capacity { get; }
116
117 internal SerializedBitArray(SerializedProperty serializedProperty, uint capacity)
118 {}
119
120 /// <summary>Does the bit at given index have multiple different values?</summary>
121 /// <param name="bitIndex">The index</param>
122 /// <returns>True: Multiple different value for the given bit index</returns>
123 public bool HasBitMultipleDifferentValue(uint bitIndex) => default;
124
125 /// <summary>Get the bit at given index</summary>
126 /// <param name="bitIndex">The index</param>
127 /// <returns>Bit value</returns>
128 public bool GetBitAt(uint bitIndex) => default;
129
130 /// <summary>Set the bit at given index</summary>
131 /// <param name="bitIndex">The index</param>
132 /// <param name="value">The value</param>
133 public void SetBitAt(uint bitIndex, bool value) { }
134
135 /// <summary>Sync again every serializedProperty</summary>
136 protected void ResyncSerialization() { }
137
138 /// <summary>Sync the reflected value with target value change</summary>
139 public void Update() { }
140
141 /// <summary>Set the bit at given index</summary>
142 [Obsolete("Was only working under specific 32 bit mask size. Removed for disambiguisation. Use SetBitAt instead. #from(23.2)")]
143 protected static Action<SerializedProperty, int, bool> SetBitAtIndexForAllTargetsImmediate = (SerializedProperty sp, int index, bool value) => { };
144 // Note: this should be exposed at the same time as issue with type other than Int32 is fixed on C++ side
145 /// <summary>Has multiple differente value bitwise</summary>
146 [Obsolete("Was only working under specific 32 bit mask size. Removed for disambiguisation. Use HasBitMultipleDifferentValueBitwise_For64BitsOrLess instead. #from(23.2)")]
147 protected static Func<SerializedProperty, int> HasMultipleDifferentValuesBitwise = (SerializedProperty sp) => 0;
148
149 /// <summary>The underlying serialized property</summary>
150 [Obsolete("As it is required to discompose per target to isolate works per bit, this cannot be used when there is multiple selection. #from(23.2)")]
151 protected SerializedProperty m_SerializedProperty;
152
153 /// <summary>Initialisation of dedicated SerializedPropertiws</summary>
154 /// <returns>Arrays of SerializedProperty</returns>
155 [Obsolete("Use m_SerializedProperty only to prevent desynchronisation between objects #from(23.2)")]
156 protected SerializedProperty[] GetOrInitializeSerializedProperties()
157 => new SerializedProperty[] { };
158
159 /// <summary>Say if the properties have differente values</summary>
160 /// <param name="bitIndex">The index</param>
161 /// <returns>True: properties have different value</returns>
162 [Obsolete("Replaced by an autocasting to 64 bit buckets for all IBitArray. Now difference computation is not implementation specific anymore #from(23.2)")]
163 virtual protected bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => HasBitMultipleDifferentValue(bitIndex);
164
165 /// <summary>
166 /// Safety: serializedProperty must match its path
167 /// </summary>
168 /// <param name="propertyPath">serializedProperty must match its path</param>
169 /// <param name="serializedProperty">serializedProperty must match its path</param>
170 /// <param name="bitIndex">The index of the bit to be checked.</param>
171 /// <returns>True if the bit has multiple different values; otherwise, false.</returns>
172 [Obsolete("Replaced by HasBitMultipleDifferentValue that now works for all IBitArray implementations. #from(23.2)")]
173 unsafe protected bool HasBitMultipleDifferentValue_For64Bits(string propertyPath, SerializedProperty serializedProperty, uint bitIndex)
174 => HasBitMultipleDifferentValue(bitIndex);
175
176 /// <summary>Get the value at index</summary>
177 /// <param name="bitIndex">The index</param>
178 /// <returns>Value at the index</returns>
179 [Obsolete("Replaced by GetBitAt that now works for all IBitArray implementations. #from(23.2)")]
180 virtual protected bool GetBitAt_Internal(uint bitIndex) => GetBitAt(bitIndex);
181
182 /// <summary>Set the bit at given index</summary>
183 /// <param name="bitIndex">The index</param>
184 /// <param name="value">The value</param>
185 [Obsolete("Replaced by SetBitAt that now works for all IBitArray implementations. #from(23.2)")]
186 virtual protected void SetBitAt_Internal(uint bitIndex, bool value) => SetBitAt(bitIndex, value);
187
188 /// <summary>
189 /// Update all the targets at specific bit index only
190 /// </summary>
191 /// <param name="serializedProperty">The serializedProperty to update</param>
192 /// <param name="bitIndex">Index to assign the value</param>
193 /// <param name="value">Boolean value that the bit should be updated to</param>
194 [Obsolete("Replaced by SetBitAt that now works for all IBitArray implementations. #from(23.2)")]
195 protected void SetBitAt_For64Bits(SerializedProperty serializedProperty, uint bitIndex, bool value)
196 => SetBitAtIndexForAllTargetsImmediate(serializedProperty, (int)bitIndex, value);
197 }
198
199 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
200 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
201 public sealed class SerializedBitArray8 : SerializedBitArray
202 {
203 /// <inheritdoc cref="SerializedBitArray"/>
204 public SerializedBitArray8(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
205
206 /// <inheritdoc/>
207 [Obsolete]
208 protected override bool GetBitAt_Internal(uint bitIndex) => default;
209
210 /// <inheritdoc/>
211 [Obsolete]
212 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
213
214 /// <inheritdoc/>
215 [Obsolete]
216 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
217 }
218
219 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
220 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
221 public sealed class SerializedBitArray16 : SerializedBitArray
222 {
223 /// <inheritdoc cref="SerializedBitArray"/>
224 public SerializedBitArray16(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
225
226 /// <inheritdoc/>
227 [Obsolete]
228 protected override bool GetBitAt_Internal(uint bitIndex) => default;
229
230 /// <inheritdoc/>
231 [Obsolete]
232 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
233
234 /// <inheritdoc/>
235 [Obsolete]
236 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
237 }
238
239 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
240 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
241 public sealed class SerializedBitArray32 : SerializedBitArray
242 {
243 /// <inheritdoc cref="SerializedBitArray"/>
244 public SerializedBitArray32(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
245
246 /// <inheritdoc/>
247 [Obsolete]
248 protected override bool GetBitAt_Internal(uint bitIndex) => default;
249
250 /// <inheritdoc/>
251 [Obsolete]
252 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
253
254 /// <inheritdoc/>
255 [Obsolete]
256 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
257 }
258
259 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
260 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
261 public sealed class SerializedBitArray64 : SerializedBitArray
262 {
263 /// <inheritdoc cref="SerializedBitArray"/>
264 public SerializedBitArray64(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
265
266 /// <inheritdoc/>
267 [Obsolete]
268 protected override bool GetBitAt_Internal(uint bitIndex) => default;
269
270 /// <inheritdoc/>
271 [Obsolete]
272 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
273
274 /// <inheritdoc/>
275 [Obsolete]
276 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
277 }
278
279 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
280 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
281 public sealed class SerializedBitArray128 : SerializedBitArray
282 {
283 /// <inheritdoc cref="SerializedBitArray"/>
284 public SerializedBitArray128(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
285
286 /// <inheritdoc/>
287 [Obsolete]
288 protected override bool GetBitAt_Internal(uint bitIndex) => default;
289
290 /// <inheritdoc/>
291 [Obsolete]
292 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
293
294 /// <inheritdoc/>
295 [Obsolete]
296 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
297 }
298
299 /// <summary>SerializedBitArray spetialized for 8bit capacity</summary>
300 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")]
301 public sealed class SerializedBitArray256 : SerializedBitArray
302 {
303 /// <inheritdoc cref="SerializedBitArray"/>
304 public SerializedBitArray256(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { }
305
306 /// <inheritdoc/>
307 [Obsolete]
308 protected override bool GetBitAt_Internal(uint bitIndex) => default;
309
310 /// <inheritdoc/>
311 [Obsolete]
312 protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default;
313
314 /// <inheritdoc/>
315 [Obsolete]
316 protected override void SetBitAt_Internal(uint bitIndex, bool value) { }
317 }
318}