/// <summary>Get the value at index</summary> /// <param name="bitIndex">The index</param> /// <returns>Value at the index</returns> protected override bool GetBitAt_Internal(uint bitIndex) => BitArrayUtilities.Get256( bitIndex, (ulong)m_SerializedProperty.FindPropertyRelative("data1").longValue, (ulong)m_SerializedProperty.FindPropertyRelative("data2").longValue, (ulong)m_SerializedProperty.FindPropertyRelative("data3").longValue, (ulong)m_SerializedProperty.FindPropertyRelative("data4").longValue);
/// <summary>Set the bit at given index</summary> /// <param name="bitIndex">The index</param> /// <param name="value">The value</param> protected override void SetBitAt_Internal(uint bitIndex, bool value) { foreach (var property in GetOrInitializeSerializedProperties()) { long versionedData1 = property.FindPropertyRelative("data1").longValue; long versionedData2 = property.FindPropertyRelative("data2").longValue; long versionedData3 = property.FindPropertyRelative("data3").longValue; long versionedData4 = property.FindPropertyRelative("data4").longValue; ulong trueData1; ulong trueData2; ulong trueData3; ulong trueData4; unsafe { trueData1 = *(ulong *)(&versionedData1); trueData2 = *(ulong *)(&versionedData2); trueData3 = *(ulong *)(&versionedData3); trueData4 = *(ulong *)(&versionedData4); } BitArrayUtilities.Set256(bitIndex, ref trueData1, ref trueData2, ref trueData3, ref trueData4, value); unsafe { versionedData1 = *(long *)(&trueData1); versionedData2 = *(long *)(&trueData2); versionedData3 = *(long *)(&trueData3); versionedData4 = *(long *)(&trueData4); } property.FindPropertyRelative("data1").longValue = versionedData1; property.FindPropertyRelative("data2").longValue = versionedData2; property.FindPropertyRelative("data3").longValue = versionedData3; property.FindPropertyRelative("data4").longValue = versionedData4; } ResyncSerialization(); }
static bool Get256(this SerializedProperty property, uint bitIndex) => BitArrayUtilities.Get256( bitIndex, (ulong)property.FindPropertyRelative("data1").longValue, (ulong)property.FindPropertyRelative("data2").longValue, (ulong)property.FindPropertyRelative("data3").longValue, (ulong)property.FindPropertyRelative("data4").longValue);
static void Set8(this SerializedProperty property, uint bitIndex, bool value) { byte versionedData = (byte)property.FindPropertyRelative("data").intValue; BitArrayUtilities.Set8(bitIndex, ref versionedData, value); property.FindPropertyRelative("data").intValue = versionedData; }
static void Set256(this SerializedProperty property, uint bitIndex, bool value) { long versionedData1 = property.FindPropertyRelative("data1").longValue; long versionedData2 = property.FindPropertyRelative("data2").longValue; long versionedData3 = property.FindPropertyRelative("data3").longValue; long versionedData4 = property.FindPropertyRelative("data4").longValue; ulong trueData1; ulong trueData2; ulong trueData3; ulong trueData4; unsafe { trueData1 = *(ulong *)(&versionedData1); trueData2 = *(ulong *)(&versionedData2); trueData3 = *(ulong *)(&versionedData3); trueData4 = *(ulong *)(&versionedData4); } BitArrayUtilities.Set256(bitIndex, ref trueData1, ref trueData2, ref trueData3, ref trueData4, value); unsafe { versionedData1 = *(long *)(&trueData1); versionedData2 = *(long *)(&trueData2); versionedData3 = *(long *)(&trueData3); versionedData4 = *(long *)(&trueData4); } property.FindPropertyRelative("data1").longValue = versionedData1; property.FindPropertyRelative("data2").longValue = versionedData2; property.FindPropertyRelative("data3").longValue = versionedData3; property.FindPropertyRelative("data4").longValue = versionedData4; }
public void CompareBitArrays_SimpleValues_NotEquals() { BitArray bitArray1 = new BitArray(new[] { false, false, false, false, true, true, true, true }); BitArray bitArray2 = new BitArray(new[] { true, false, false, false, true, true, true, true }); bool equals = BitArrayUtilities.CompareBitArray(bitArray1, bitArray2); Assert.IsFalse(equals); }
public void ReverseBitArray_SimpleOddValues_BitArrayReversed() { BitArray bitArray = new BitArray(new [] { true, false, true, false, false, true, true }); BitArrayUtilities.ReverseBitArray(bitArray); BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true }); Assert.AreEqual(bitArray, expectedBitArray); }
public void MakeBitArrayDivisible_SimpleValueHighDivisorRoundUp_Calculated() { BitArray bitArray = new BitArray(new[] { true, true, false, false, true, true, true, false }); BitArrayUtilities.MakeBitArrayDivisible(bitArray, 10, true); BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, true, true, false, false, false }); Assert.AreEqual(expectedBitArray, bitArray); }
public void CombineTwoBitArrays_SecondArrayEmpty_Calculated() { BitArray bitArray = new BitArray(new[] { true, true, false, false, true, false, true, false }); BitArray bitArray2 = new BitArray(0); BitArray resultArray = BitArrayUtilities.CombineTwoBitArrays(bitArray, bitArray2); BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true, false }); Assert.AreEqual(expectedBitArray, resultArray); }
public void OverwriteBitArrayAtIndex_ReplaceNothing_Calculated() { BitArray bitArray = new BitArray(new[] { true, true, false, false, true, false, true, false }); BitArray bitArray2 = new BitArray(0); BitArrayUtilities.OverwriteBitArrayAtIndex(bitArray, bitArray2, 2); BitArray expectedBitArray = new BitArray(new[] { true, true, false, false, true, false, true, false }); Assert.AreEqual(expectedBitArray, bitArray); }
public void ReverseEndianOnBitArray_SimpleValues_ChangedEndian() { BitArray bitArray = new BitArray(new[] { true, true, false, false, true, false, true, false, true, true, true, true, false, false, false, false }); BitArrayUtilities.ChangeEndianOnBitArray(bitArray); BitArray expectedBitArray = new BitArray(new[] { false, true, false, true, false, false, true, true, false, false, false, false, true, true, true, true }); Assert.AreEqual(bitArray, expectedBitArray); }
public void TakeSubBitArrayFromEnd_SimpleValue_Calculated() { BitArray bitArray = new BitArray(new[] { true, true, false, false, true, true, true, false }); BitArray resultArray = BitArrayUtilities.TakeSubBitArrayFromEnd(bitArray, 3); BitArray expectedTakenBitArray = new BitArray(new[] { false, true, true }); BitArray expectedBitArray = new BitArray(new [] { true, true, false, false, true }); Assert.AreEqual(expectedBitArray, bitArray); Assert.AreEqual(expectedTakenBitArray, resultArray); }
static void Set64(this SerializedProperty property, uint bitIndex, bool value) { long versionedData = property.FindPropertyRelative("data").longValue; ulong trueData; unsafe { trueData = *(ulong *)(&versionedData); } BitArrayUtilities.Set64(bitIndex, ref trueData, value); unsafe { versionedData = *(long *)(&trueData); } property.FindPropertyRelative("data").longValue = versionedData; }
static void Set32(this SerializedProperty property, uint bitIndex, bool value) { int versionedData = property.FindPropertyRelative("data").intValue; uint trueData; unsafe { trueData = *(uint *)(&versionedData); } BitArrayUtilities.Set32(bitIndex, ref trueData, value); unsafe { versionedData = *(int *)(&trueData); } property.FindPropertyRelative("data").intValue = versionedData; }
static bool Get32(this SerializedProperty property, uint bitIndex) => BitArrayUtilities.Get32(bitIndex, (uint)property.FindPropertyRelative("data").intValue);