using System; namespace UnityEditor.Rendering { public static partial class SerializedBitArrayUtilities { /// Convert to 8bit /// The SerializedProperty /// A SerializedBitArray8 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray8 ToSerializeBitArray8(this SerializedProperty serializedProperty) => null; /// Try convert to 8bit /// The SerializedProperty /// Out SerializedBitArray8 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray8(this SerializedProperty serializedProperty, out SerializedBitArray8 serializedBitArray) { serializedBitArray = null; return false; } /// Convert to 16bit /// The SerializedProperty /// A SerializedBitArray16 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray16 ToSerializeBitArray16(this SerializedProperty serializedProperty) => null; /// Try convert to 16bit /// The SerializedProperty /// Out SerializedBitArray16 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray16(this SerializedProperty serializedProperty, out SerializedBitArray16 serializedBitArray) { serializedBitArray = null; return false; } /// Convert to 32bit /// The SerializedProperty /// A SerializedBitArray32 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray32 ToSerializeBitArray32(this SerializedProperty serializedProperty) => null; /// Try convert to 32bit /// The SerializedProperty /// Out SerializedBitArray32 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray32(this SerializedProperty serializedProperty, out SerializedBitArray32 serializedBitArray) { serializedBitArray = null; return false; } /// Convert to 64bit /// The SerializedProperty /// A SerializedBitArray64 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray64 ToSerializeBitArray64(this SerializedProperty serializedProperty) => null; /// Try convert to 64bit /// The SerializedProperty /// Out SerializedBitArray64 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray64(this SerializedProperty serializedProperty, out SerializedBitArray64 serializedBitArray) { serializedBitArray = null; return false; } /// Convert to 128bit /// The SerializedProperty /// A SerializedBitArray128 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray128 ToSerializeBitArray128(this SerializedProperty serializedProperty) => null; /// Try convert to 128bit /// The SerializedProperty /// Out SerializedBitArray128 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray128(this SerializedProperty serializedProperty, out SerializedBitArray128 serializedBitArray) { serializedBitArray = null; return false; } /// Convert to 256bit /// The SerializedProperty /// A SerializedBitArray256 [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static SerializedBitArray256 ToSerializeBitArray256(this SerializedProperty serializedProperty) => null; /// Try convert to 256bit /// The SerializedProperty /// Out SerializedBitArray256 /// True if convertion was a success [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public static bool TryGetSerializeBitArray256(this SerializedProperty serializedProperty, out SerializedBitArray256 serializedBitArray) { serializedBitArray = null; return false; } } /// Abstract base classe of all SerializedBitArray [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public abstract class SerializedBitArray : ISerializedBitArray { /// Capacity of the bitarray public uint capacity { get; } internal SerializedBitArray(SerializedProperty serializedProperty, uint capacity) {} /// Does the bit at given index have multiple different values? /// The index /// True: Multiple different value for the given bit index public bool HasBitMultipleDifferentValue(uint bitIndex) => default; /// Get the bit at given index /// The index /// Bit value public bool GetBitAt(uint bitIndex) => default; /// Set the bit at given index /// The index /// The value public void SetBitAt(uint bitIndex, bool value) { } /// Sync again every serializedProperty protected void ResyncSerialization() { } /// Sync the reflected value with target value change public void Update() { } /// Set the bit at given index [Obsolete("Was only working under specific 32 bit mask size. Removed for disambiguisation. Use SetBitAt instead. #from(23.2)")] protected static Action SetBitAtIndexForAllTargetsImmediate = (SerializedProperty sp, int index, bool value) => { }; // Note: this should be exposed at the same time as issue with type other than Int32 is fixed on C++ side /// Has multiple differente value bitwise [Obsolete("Was only working under specific 32 bit mask size. Removed for disambiguisation. Use HasBitMultipleDifferentValueBitwise_For64BitsOrLess instead. #from(23.2)")] protected static Func HasMultipleDifferentValuesBitwise = (SerializedProperty sp) => 0; /// The underlying serialized property [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)")] protected SerializedProperty m_SerializedProperty; /// Initialisation of dedicated SerializedPropertiws /// Arrays of SerializedProperty [Obsolete("Use m_SerializedProperty only to prevent desynchronisation between objects #from(23.2)")] protected SerializedProperty[] GetOrInitializeSerializedProperties() => new SerializedProperty[] { }; /// Say if the properties have differente values /// The index /// True: properties have different value [Obsolete("Replaced by an autocasting to 64 bit buckets for all IBitArray. Now difference computation is not implementation specific anymore #from(23.2)")] virtual protected bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => HasBitMultipleDifferentValue(bitIndex); /// /// Safety: serializedProperty must match its path /// /// serializedProperty must match its path /// serializedProperty must match its path /// The index of the bit to be checked. /// True if the bit has multiple different values; otherwise, false. [Obsolete("Replaced by HasBitMultipleDifferentValue that now works for all IBitArray implementations. #from(23.2)")] unsafe protected bool HasBitMultipleDifferentValue_For64Bits(string propertyPath, SerializedProperty serializedProperty, uint bitIndex) => HasBitMultipleDifferentValue(bitIndex); /// Get the value at index /// The index /// Value at the index [Obsolete("Replaced by GetBitAt that now works for all IBitArray implementations. #from(23.2)")] virtual protected bool GetBitAt_Internal(uint bitIndex) => GetBitAt(bitIndex); /// Set the bit at given index /// The index /// The value [Obsolete("Replaced by SetBitAt that now works for all IBitArray implementations. #from(23.2)")] virtual protected void SetBitAt_Internal(uint bitIndex, bool value) => SetBitAt(bitIndex, value); /// /// Update all the targets at specific bit index only /// /// The serializedProperty to update /// Index to assign the value /// Boolean value that the bit should be updated to [Obsolete("Replaced by SetBitAt that now works for all IBitArray implementations. #from(23.2)")] protected void SetBitAt_For64Bits(SerializedProperty serializedProperty, uint bitIndex, bool value) => SetBitAtIndexForAllTargetsImmediate(serializedProperty, (int)bitIndex, value); } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray8 : SerializedBitArray { /// public SerializedBitArray8(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray16 : SerializedBitArray { /// public SerializedBitArray16(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray32 : SerializedBitArray { /// public SerializedBitArray32(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray64 : SerializedBitArray { /// public SerializedBitArray64(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray128 : SerializedBitArray { /// public SerializedBitArray128(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } /// SerializedBitArray spetialized for 8bit capacity [Obsolete("Since SerializedBitArray unification, only use SerializedBitArrayAny. #from(23.2)")] public sealed class SerializedBitArray256 : SerializedBitArray { /// public SerializedBitArray256(SerializedProperty serializedProperty, uint capacity) : base(serializedProperty, capacity) { } /// [Obsolete] protected override bool GetBitAt_Internal(uint bitIndex) => default; /// [Obsolete] protected override bool HasBitMultipleDifferentValue_Internal(uint bitIndex) => default; /// [Obsolete] protected override void SetBitAt_Internal(uint bitIndex, bool value) { } } }