A game about forced loneliness, made by TACStudios
at master 318 lines 17 kB view raw
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}