/// <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 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; }