Esempio n. 1
0
        public override void Write(MyBinaryWriter stream)
        {
            stream.Write(Elements.Count);
            stream.Write(stream.DataStartOffset);

            if (Elements.Count > 0)
            {
                var currOffs = stream.BaseStream.Position;
                stream.Seek(stream.DataStartOffset, SeekOrigin.Begin);

                if (typeof(T).IsSubclassOf(typeof(Element)))
                {
                    var elementSize = (Elements[0] as Element).GetSize();
                    stream.DataStartOffset += elementSize * Elements.Count;
                }
                else
                {
                    stream.DataStartOffset += Marshal.SizeOf(typeof(T)) * Elements.Count;
                }

                foreach (var element in Elements)
                {
                    stream.Write <T>(element);
                }

                stream.Seek((int)currOffs, SeekOrigin.Begin);
            }
        }
Esempio n. 2
0
 public void ReWriteBodyLength(MyBinaryWriter stream, short bodyLenght)
 {
     BodyLength = bodyLenght;
     stream.Seek(-bodyLenght - 2, SeekOrigin.Current);
     stream.Write(bodyLenght);
     stream.Seek(bodyLenght, SeekOrigin.Current);
 }
Esempio n. 3
0
 public void ReWriteComponentCountAndBodyLength(MyBinaryWriter stream, short bodyLenght, byte count)
 {
     SerializeCount = count;
     BodyLength     = bodyLenght;
     stream.Seek(-bodyLenght - 3, SeekOrigin.Current);
     stream.Write(count);
     stream.Write(bodyLenght);
     stream.Seek(bodyLenght, SeekOrigin.Current);
 }