public override void Read(Library.Collections.BitStream stream, out TEnum value, MySerializeInfo info) { if (m_valueCount == 1) { value = m_firstValue; } else if (m_valueCount == 2) { value = stream.ReadBool() ? m_firstValue : m_secondValue; } else if (m_valueCount > 2) { if (HasNegativeValues) { value = MyEnum <TEnum> .SetValue((ulong)stream.ReadInt64Variant()); } else { value = MyEnum <TEnum> .SetValue(stream.ReadUInt64(m_bitCount)); } } else { value = default(TEnum); } }
public override void Write(Library.Collections.BitStream stream, ref TItem[] value, MySerializeInfo info) { stream.WriteVariant((uint)value.Length); for (int i = 0; i < value.Length; i++) { MySerializationHelpers.Write <TItem>(stream, ref value[i], m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default); } }
public override void Read(Library.Collections.BitStream stream, out TItem[] value, MySerializeInfo info) { int num = (int)stream.ReadUInt32Variant(); value = new TItem[num]; for (int i = 0; i < value.Length; i++) { MySerializationHelpers.CreateAndRead <TItem>(stream, out value[i], m_itemSerializer, info.ItemInfo ?? MySerializeInfo.Default); } }
public override void Write(Library.Collections.BitStream stream, ref UInt64 value, MySerializeInfo info) { if (info.IsVariant || info.IsVariantSigned) { stream.WriteVariant(value); } else { stream.WriteUInt64(value); } }
public override void Read(Library.Collections.BitStream stream, out Half value, MySerializeInfo info) { if (info.IsNormalized && info.IsFixed8) { value = stream.ReadByte() / 255.0f; } else { value = stream.ReadHalf(); } }
public override void Write(Library.Collections.BitStream stream, ref Half value, MySerializeInfo info) { if (info.IsNormalized && info.IsFixed8) { stream.WriteByte((byte)(value * 255.0f)); } else { stream.WriteHalf(value); } }
public override void Read(Library.Collections.BitStream stream, out UInt64 value, MySerializeInfo info) { if (info.IsVariant || info.IsVariantSigned) { value = stream.ReadUInt64Variant(); } else { value = stream.ReadUInt64(); } }
public override void Write(Library.Collections.BitStream stream, ref T?value, MySerializeInfo info) { if (value.HasValue) { T val = value.Value; stream.WriteBool(true); m_serializer.Write(stream, ref val, info); } else { stream.WriteBool(false); } }
public override void Read(Library.Collections.BitStream stream, out T?value, MySerializeInfo info) { if (stream.ReadBool()) { T val; m_serializer.Read(stream, out val, info); value = val; } else { value = null; } }
public override void Write(Library.Collections.BitStream stream, ref float value, MySerializeInfo info) { if (info.IsNormalized && info.IsFixed8) { stream.WriteByte((byte)(value * 255.0f)); } else if (info.IsNormalized && info.IsFixed16) { stream.WriteUInt16((ushort)(value * 65535.0f)); } else { stream.WriteFloat(value); } }
public override void Read(Library.Collections.BitStream stream, out float value, MySerializeInfo info) { if (info.IsNormalized && info.IsFixed8) { value = stream.ReadByte() / 255.0f; } else if (info.IsNormalized && info.IsFixed16) { value = stream.ReadUInt16() / 65535.0f; } else { value = stream.ReadFloat(); } }
public override void Write(Library.Collections.BitStream stream, ref Int32 value, MySerializeInfo info) { if (info.IsVariant) { stream.WriteVariant((UInt32)value); } else if (info.IsVariantSigned) { stream.WriteVariantSigned(value); } else { stream.WriteInt32(value); } }
public override void Read(Library.Collections.BitStream stream, out Int32 value, MySerializeInfo info) { if (info.IsVariant) { value = (Int32)stream.ReadUInt32Variant(); } else if (info.IsVariantSigned) { value = stream.ReadInt32Variant(); } else { value = stream.ReadInt32(); } }
public override void Read(Library.Collections.BitStream stream, out Quaternion value, MySerializeInfo info) { if (info.IsNormalized) { bool cwNeg = stream.ReadBool(); bool cxNeg = stream.ReadBool(); bool cyNeg = stream.ReadBool(); bool czNeg = stream.ReadBool(); ushort cx = stream.ReadUInt16(); ushort cy = stream.ReadUInt16(); ushort cz = stream.ReadUInt16(); // Calculate w from x,y,z value.X = (float)(cx / 65535.0); value.Y = (float)(cy / 65535.0); value.Z = (float)(cz / 65535.0); if (cxNeg) { value.X = -value.X; } if (cyNeg) { value.Y = -value.Y; } if (czNeg) { value.Z = -value.Z; } float difference = 1.0f - value.X * value.X - value.Y * value.Y - value.Z * value.Z; if (difference < 0.0f) { difference = 0.0f; } value.W = (float)(Math.Sqrt(difference)); if (cwNeg) { value.W = -value.W; } } else { Debug.Fail("Not normalized quaternion?"); value.X = stream.ReadFloat(); value.Y = stream.ReadFloat(); value.Z = stream.ReadFloat(); value.W = stream.ReadFloat(); } }
public override void Write(Library.Collections.BitStream stream, ref TEnum value, MySerializeInfo info) { ulong val = MyEnum <TEnum> .GetValue(value); if (m_valueCount == 2) { stream.WriteBool(val == m_firstUlong); } else if (m_valueCount > 2) { if (HasNegativeValues) { stream.WriteVariantSigned((long)val); } else { stream.WriteUInt64(val, m_bitCount); } } }
public override void Write(Library.Collections.BitStream stream, ref Quaternion value, MySerializeInfo info) { if (info.IsNormalized) { stream.WriteBool(value.W < 0.0f); stream.WriteBool(value.X < 0.0f); stream.WriteBool(value.Y < 0.0f); stream.WriteBool(value.Z < 0.0f); stream.WriteUInt16((ushort)(Math.Abs(value.X) * 65535.0)); stream.WriteUInt16((ushort)(Math.Abs(value.Y) * 65535.0)); stream.WriteUInt16((ushort)(Math.Abs(value.Z) * 65535.0)); } else { Debug.Fail("Not normalized quaternion?"); stream.WriteFloat(value.X); stream.WriteFloat(value.Y); stream.WriteFloat(value.Z); stream.WriteFloat(value.W); } }
public override void Read(Library.Collections.BitStream stream, out DBNull value, MySerializeInfo info) { value = DBNull.Value; }
public override void Write(Library.Collections.BitStream stream, ref string value, MySerializeInfo info) { stream.WritePrefixLengthString(value, 0, value.Length, info.Encoding); }
public override void Read(Library.Collections.BitStream stream, out string value, MySerializeInfo info) { value = stream.ReadPrefixLengthString(info.Encoding); }
public override void Write(Library.Collections.BitStream stream, ref double value, MySerializeInfo info) { stream.WriteDouble(value); }
public override void Read(Library.Collections.BitStream stream, out double value, MySerializeInfo info) { value = stream.ReadDouble(); }
public override void Write(Library.Collections.BitStream stream, ref bool value, MySerializeInfo info) { stream.WriteBool(value); }
public override void Read(Library.Collections.BitStream stream, out bool value, MySerializeInfo info) { value = stream.ReadBool(); }
public override void Write(Library.Collections.BitStream stream, ref Guid value, MySerializeInfo info) { string s = value.ToString(); stream.WritePrefixLengthString(s, 0, s.Length, info.Encoding); }
public override void Read(Library.Collections.BitStream stream, out Color value, MySerializeInfo info) { value.PackedValue = stream.ReadUInt32(); }
public override void Write(Library.Collections.BitStream stream, ref Color value, MySerializeInfo info) { stream.WriteUInt32(value.PackedValue); }
public override void Write(Library.Collections.BitStream stream, ref DBNull value, MySerializeInfo info) { }