Exemplo n.º 1
0
 /// <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;
        }