Пример #1
0
 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);
     }
 }
Пример #2
0
 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);
     }
 }
Пример #3
0
        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);
            }
        }
Пример #4
0
 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);
     }
 }
Пример #5
0
 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();
     }
 }
Пример #6
0
 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);
     }
 }
Пример #7
0
 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();
     }
 }
Пример #8
0
 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);
     }
 }
Пример #9
0
 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;
     }
 }
Пример #10
0
 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);
     }
 }
Пример #11
0
 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();
     }
 }
Пример #12
0
 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);
     }
 }
Пример #13
0
 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();
     }
 }
Пример #14
0
        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();
            }
        }
Пример #15
0
        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);
                }
            }
        }
Пример #16
0
 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);
     }
 }
Пример #17
0
 public override void Read(Library.Collections.BitStream stream, out DBNull value, MySerializeInfo info)
 {
     value = DBNull.Value;
 }
Пример #18
0
 public override void Write(Library.Collections.BitStream stream, ref string value, MySerializeInfo info)
 {
     stream.WritePrefixLengthString(value, 0, value.Length, info.Encoding);
 }
Пример #19
0
 public override void Read(Library.Collections.BitStream stream, out string value, MySerializeInfo info)
 {
     value = stream.ReadPrefixLengthString(info.Encoding);
 }
Пример #20
0
 public override void Write(Library.Collections.BitStream stream, ref double value, MySerializeInfo info)
 {
     stream.WriteDouble(value);
 }
Пример #21
0
 public override void Read(Library.Collections.BitStream stream, out double value, MySerializeInfo info)
 {
     value = stream.ReadDouble();
 }
Пример #22
0
 public override void Write(Library.Collections.BitStream stream, ref bool value, MySerializeInfo info)
 {
     stream.WriteBool(value);
 }
Пример #23
0
 public override void Read(Library.Collections.BitStream stream, out bool value, MySerializeInfo info)
 {
     value = stream.ReadBool();
 }
Пример #24
0
        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);
        }
Пример #25
0
 public override void Read(Library.Collections.BitStream stream, out Color value, MySerializeInfo info)
 {
     value.PackedValue = stream.ReadUInt32();
 }
Пример #26
0
 public override void Write(Library.Collections.BitStream stream, ref Color value, MySerializeInfo info)
 {
     stream.WriteUInt32(value.PackedValue);
 }
Пример #27
0
 public override void Write(Library.Collections.BitStream stream, ref DBNull value, MySerializeInfo info)
 {
 }