/// <summary> /// Primary UNSAFE Reader for PackedBytes. /// </summary> public unsafe static ulong ReadPackedBytes(ulong *uPtr, ref int bitposition, int bits) { if (bits == 0) { return(0); } int bytes = (bits + 7) >> 3; int sizebits = bytes.UsedBitCount(); int valuebits = (int)ArraySerializeUnsafe.Read(uPtr, ref bitposition, sizebits) << 3; return(ArraySerializeUnsafe.Read(uPtr, ref bitposition, valuebits)); }
/// <summary> /// Primary UNSAFE Reader for PackedBits. /// </summary> public unsafe static ulong ReadPackedBits(ulong *uPtr, ref int bitposition, int bits) { if (bits == 0) { return(0); } int sizebits = bits.UsedBitCount(); int valuebits = (int)ArraySerializeUnsafe.Read(uPtr, ref bitposition, sizebits); //UnityEngine.Debug.Log("Read Packedunsafe sizer/value : " + sizebits + " : " + valuebits); return(ArraySerializeUnsafe.Read(uPtr, ref bitposition, valuebits)); }
/// <summary> /// EXPERIMENTAL: Primary UNSAFE WritePacked Method. /// </summary> /// <param name="countbits"></param> public unsafe static void WritePackedBits(ulong *uPtr, ulong value, ref int bitposition, int bits) { if (bits == 0) { return; } int valuebits = value.UsedBitCount(); int sizebits = bits.UsedBitCount(); ArraySerializeUnsafe.Write(uPtr, (uint)(valuebits), ref bitposition, sizebits); ArraySerializeUnsafe.Write(uPtr, value, ref bitposition, valuebits); //UnityEngine.Debug.Log("Write Unsafe PBits " + value + " = " + sizebits + " : " + valuebits); }
/// <summary> /// EXPERIMENTAL: Primary UNSAFE Write Method. /// </summary> public unsafe static void WritePackedBytes(ulong *uPtr, ulong value, ref int bitposition, int bits) { if (bits == 0) { return; } int bytes = (bits + 7) >> 3; int sizebits = bytes.UsedBitCount(); int valuebytes = value.UsedByteCount(); ArraySerializeUnsafe.Write(uPtr, (uint)(valuebytes), ref bitposition, (int)sizebits); ArraySerializeUnsafe.Write(uPtr, value, ref bitposition, valuebytes << 3); //UnityEngine.Debug.Log(value + " buff:" + buffer + "bytes " + bytes + // " = [" + (int)sizebits + " : " + (valuebytes << 3) + "] total bits: " + ((int)sizebits + (valuebytes << 3))); }