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) { }
}
}