예제 #1
0
 public override void Write(MyBinaryWriter stream)
 {
     stream.Write(Id);
     stream.Write(Bone);
     stream.Write(Position);
     AnimateAttached.Write(stream);
 }
예제 #2
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);
            }
        }
예제 #3
0
파일: Program.cs 프로젝트: Dramacydal/M2Lib
 public override void Write(MyBinaryWriter stream)
 {
     //stream.DataStartOffset += 16;
     stream.Write(C);
     stream.Write(D);
     E.Write(stream);
 }
예제 #4
0
        /// <summary>
        /// 判断与比较值不相同的情况下,将当前值写入Wirter
        /// </summary>
        /// <param name="comparedInfo"></param>
        /// <param name="writer"></param>
        public void Write(WeaponBagContainer comparedInfo, MyBinaryWriter writer)
        {
            writer.Write(HeldSlotPointer);
            writer.Write(LastSlotPointer);
            BitArrayWrapper bitArray = BitArrayWrapper.Allocate(GameGlobalConst.WeaponSlotMaxLength, false);

            //  return new BitArray(5, true);
            if (comparedInfo == null)
            {
                bitArray.SetAll(true);
            }
            else
            {
                for (int i = 0; i < GameGlobalConst.WeaponSlotMaxLength; i++)
                {
                    bitArray[i] = slotWeapons[i] != comparedInfo.slotWeapons[i];
                }
            }

            writer.Write(bitArray);
            for (int i = 0; i < GameGlobalConst.WeaponSlotMaxLength; i++)
            {
                if (bitArray[i])
                {
                    writer.Write(slotWeapons[i].WeaponKey.EntityId);
                    writer.Write(slotWeapons[i].WeaponKey.EntityType);
                }
            }


            bitArray.ReleaseReference();
        }
예제 #5
0
 public override void Write(MyBinaryWriter stream)
 {
     stream.Write(Id);
     stream.Write(Data);
     stream.Write(Bone);
     stream.Write(Position);
     Enabled.Write(stream);
 }
예제 #6
0
 public void Write(MyBinaryWriter writer)
 {
     for (int i = 0; i < GlobalConst.WeaponSlotMaxLength; i++)
     {
         writer.Write(slotWeapons[i].WeaponKey.EntityId);
         writer.Write(slotWeapons[i].WeaponKey.EntityType);
     }
 }
        public void Write(FixedVector3 data, MyBinaryWriter writer)
        {
            var v = data.WorldVector3();

            writer.Write(v.x);
            writer.Write(v.y);
            writer.Write(v.z);
        }
예제 #8
0
 public void Write(MyBinaryWriter writer)
 {
     writer.Write(Commands.Count);
     for (int i = 0; i < Commands.Count; ++i)
     {
         writer.Write(Commands[i].Key);
         writer.Write(Commands[i].Value);
     }
 }
예제 #9
0
        public void Serialize(MyBinaryWriter stream)
        {
            stream.Write(BaseUserCmdSeq);
            stream.Write(UserCmdSeq);
            stream.Write(LastSnapshotId);

            stream.Write(ComponentCount);
            stream.Write((short)0);
        }
예제 #10
0
 public void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
 {
     writer.Write(BaseSnapshotSeq);
     writer.Write(_entityPatchList.Count);
     foreach (var item in _entityPatchList)
     {
         item.Serialize(writer, serializerManager);
     }
 }
예제 #11
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);
 }
예제 #12
0
        public override void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
        {
            writer.Write((byte)ComponentReplicateOperationType.Add);
            var componentId = Component.GetComponentId();

            writer.Write((short)componentId);

            var componentSerializer = serializerManager.GetSerializer(componentId);

            componentSerializer.SerializeAll(Component as INetworkObject, DoCompress, writer);
        }
예제 #13
0
 public override void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
 {
     writer.Write((byte)EntityReplicateOperationType.Mod);
     writer.Write(Key.EntityId);
     writer.Write(Key.EntityType);
     writer.Write((short)ComponentPatchList.Count);
     for (int i = 0; i < ComponentPatchList.Count; i++)
     {
         ComponentPatchList[i].Serialize(writer, serializerManager);
     }
 }
예제 #14
0
        public void Write(WeaponBagContainer comparedInfo, MyBinaryWriter writer)
        {
            writer.Write(HeldSlotPointer);
            writer.Write(LastSlotPointer);

            for (int i = 0; i < GlobalConst.WeaponSlotMaxLength; i++)
            {
                writer.Write(slotWeapons[i].WeaponKey.EntityId);
                writer.Write(slotWeapons[i].WeaponKey.EntityType);
            }
        }
예제 #15
0
        public void Write(MyBinaryWriter writer)
        {
            AssertUtility.Assert((int)EEventType.End < 255);

            writer.Write((byte)_events.Count);
            foreach (var v in _events.Values)
            {
                writer.Write((byte)v.EventType);
                v.WriteBody(writer);
            }
        }
예제 #16
0
파일: Camera.cs 프로젝트: Dramacydal/M2Lib
 public override void Write(MyBinaryWriter stream)
 {
     stream.Write(Type);
     stream.Write(FarClip);
     stream.Write(NearClip);
     Positions.Write(stream);
     stream.Write(PositionBase);
     TargetPositions.Write(stream);
     stream.Write(TargetPositionBase);
     Roll.Write(stream);
     FoV.Write(stream);
 }
예제 #17
0
        public void Write(MyBinaryWriter writer)
        {
            AssertUtility.Assert((int)EEventType.End < 255);
            int c = _events.Count;

            writer.Write((short)c);
            for (var i = 0; i < c; i++)
            {
                var node = _events[i];
                writer.Write((byte)node.EventType);
                node.WriteBody(writer);
            }
        }
예제 #18
0
 public override void Write(MyBinaryWriter stream)
 {
     stream.Write(Type);
     stream.Write(Bone);
     stream.Write(Position);
     AmbientColor.Write(stream);
     AmbientInsensity.Write(stream);
     DiffuseColor.Write(stream);
     DiffuseIntensity.Write(stream);
     AttenuationStart.Write(stream);
     AttenuationEnd.Write(stream);
     Unknown.Write(stream);
 }
예제 #19
0
        public void Serialize(MyBinaryWriter writer)
        {
            writer.Write(_bitNum);
            ulong val      = _value;
            ulong byteMask = 0x000000ff;
            int   byteNum  = (int)System.Math.Ceiling(_bitNum * 1.0 / 8);

            for (int i = 0; i < byteNum; i++)
            {
                byte b = (byte)(val & byteMask);
                val = val >> 8;
                writer.Write(b);
            }
        }
예제 #20
0
        public void Write(MyBinaryWriter writer)
        {
            AssertUtility.Assert((int)EEventType.End < 255);

            writer.Write((byte)_events.Count);
            foreach (KeyValuePair <EEventType, List <IEvent> > eventListPair in _events)
            {
                writer.Write((byte)eventListPair.Key);
                writer.Write(eventListPair.Value.Count);
                foreach (var node in eventListPair.Value)
                {
                    node.WriteBody(writer);
                }
            }
        }
예제 #21
0
        public void saveBinaryFile(ObservableCollection <User> Users)
        {
            SaveFileDialog saveFileDialog = new SaveFileDialog();

            saveFileDialog.FileName   = "users.bin";
            saveFileDialog.DefaultExt = ".bin";
            saveFileDialog.Filter     = "Binary documents (.bin)|*.bin";

            var result = saveFileDialog.ShowDialog();

            if (result == true)
            {
                writer.Create(saveFileDialog.FileName);

                foreach (var u in Users)
                {
                    PublicUsers.Add(new UserAbstraction {
                        ID         = u.ID, LastName = u.LastName, Name = u.Name,
                        SecondName = u.SecondName, Email = u.Email
                    });
                }

                writer.Write(PublicUsers);
            }
        }
예제 #22
0
 public void ReWriteBodyLength(MyBinaryWriter stream, short bodyLenght)
 {
     BodyLength = bodyLenght;
     stream.Seek(-bodyLenght - 2, SeekOrigin.Current);
     stream.Write(bodyLenght);
     stream.Seek(bodyLenght, SeekOrigin.Current);
 }
예제 #23
0
 public override void Write(MyBinaryWriter stream)
 {
     for (var i = 0; i < Values.Length; ++i)
     {
         stream.Write <T>(Values[i]);
     }
 }
예제 #24
0
        public static void WriteFieldsMask(MyBinaryWriter writer, BitArray fieldsMask)
        {
            var count = fieldsMask.Count;

            if (count > Byte.MaxValue)
            {
                string info = string.Format("property count {0} exceed the byte max", count);
                throw new Exception(info);
            }
            writer.Write((byte)count);
            byte[] bytes = ToBytes(fieldsMask);

            for (int i = 0; i < bytes.Length; i++)
            {
                writer.Write(bytes[i]);
            }
        }
예제 #25
0
 public override void Write(MyBinaryWriter stream)
 {
     stream.Write(Position);
     for (var i = 0; i < Weights.Length; ++i)
     {
         stream.Write(Weights[i]);
     }
     for (var i = 0; i < Indices.Length; ++i)
     {
         stream.Write(Indices[i]);
     }
     stream.Write(Normal);
     for (var i = 0; i < TextureCoordinates.Length; ++i)
     {
         stream.Write(TextureCoordinates[i]);
     }
 }
예제 #26
0
        public void Write(NetworkAnimatorLayer right, MyBinaryWriter writer)
        {
            BitArrayWrapper bitArray = BitArrayWrapper.Allocate(7, false);

            if (right == null)
            {
                bitArray.SetAll(true);
            }
            else
            {
                bitArray[0] = !CompareUtility.IsApproximatelyEqual(LayerIndex, right.LayerIndex);
                bitArray[1] = Weight != right.Weight;
                bitArray[2] = !CompareUtility.IsApproximatelyEqual(CurrentStateHash, right.CurrentStateHash);
                bitArray[3] = NormalizedTime != right.NormalizedTime;
                bitArray[4] = StateDuration != right.StateDuration;
                bitArray[5] = TransitionNormalizedTime != right.TransitionNormalizedTime;
                bitArray[6] = TransitionDuration != right.TransitionDuration;
            }

            writer.Write(bitArray);
            if (bitArray[0])
            {
                writer.Write(LayerIndex);
            }
            if (bitArray[1])
            {
                writer.Write(Weight);
            }
            if (bitArray[2])
            {
                writer.Write(CurrentStateHash);
            }
            if (bitArray[3])
            {
                writer.Write(NormalizedTime);
            }
            if (bitArray[4])
            {
                writer.Write(StateDuration);
            }
            if (bitArray[5])
            {
                writer.Write(TransitionNormalizedTime);
            }
            if (bitArray[6])
            {
                writer.Write(TransitionDuration);
            }


            bitArray.ReleaseReference();
        }
예제 #27
0
        public override void Write(MyBinaryWriter stream)
        {
            stream.DataStartOffset += GetSize();

            stream.Write(Magic);
            stream.Write(Version);
            Name.Write(stream);
            stream.Write(GlobalModelFlags);
            GlobalSequences.Write(stream);
            Animations.Write(stream);
            AnimationLookups.Write(stream);
            Bones.Write(stream);
            KeyBoneLookup.Write(stream);
            Vertices.Write(stream);
            stream.Write(nViews);
            SubmeshAnimations.Write(stream);
            Textures.Write(stream);
            Transparencies.Write(stream);
            UVAnimations.Write(stream);
            TextureReplacements.Write(stream);
            Materials.Write(stream);
            BoneLookups.Write(stream);
            TextureLookups.Write(stream);
            TextureUnits.Write(stream);
            TransparencyLookups.Write(stream);
            AnimTextureLookups.Write(stream);
            for (var i = 0; i < BoundingBox.Length; ++i)
            {
                stream.Write <C3Vector>(BoundingBox[i]);
            }
            stream.Write(BoundingSphereRadius);
            for (var i = 0; i < CollisionBox.Length; ++i)
            {
                stream.Write <C3Vector>(CollisionBox[i]);
            }
            stream.Write(CollisionSphereRadius);
            BoundingTriangles.Write(stream);
            BoundingVertices.Write(stream);
            BoundingNormals.Write(stream);
            Attachments.Write(stream);
            AttachementLookups.Write(stream);
            Events.Write(stream);
            Lights.Write(stream);
            Cameras.Write(stream);
            CameraLookups.Write(stream);
            RibbonEmitters.Write(stream);
            ParticleEmitters.Write(stream);
            if (HasExtraField())
            {
                Unknown.Write(stream);
            }
        }
예제 #28
0
 public void Serialize(MyBinaryWriter writer, string version)
 {
     writer.Write(version);
     writer.Write(VehicleSimulationTime);
     writer.Write(ServerTime);
     writer.Write(SnapshotSeq);
     writer.Write(LastUserCmdSeq);
     writer.Write(Self.EntityId);
     writer.Write(Self.EntityType);
 }
예제 #29
0
        public override void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
        {
            var start = writer.BaseStream.Length;

            writer.Write((byte)ComponentReplicateOperationType.Mod);
            var componentId = Component.GetComponentId();

            AssertUtility.Assert(componentId < 65535);
            writer.Write((short)componentId);
            _bitMask.Serialize(writer);

            var componentSerializer = serializerManager.GetSerializer(componentId);

            componentSerializer.Serialize(LastComponent as INetworkObject, Component as INetworkObject, _bitMask, DoCompress, writer);
            var end    = writer.BaseStream.Length;
            var length = end - start;

            _total[componentId]  += length;
            _current[componentId] = length;
            _count[componentId]  += 1;
            _average[componentId] = _total[componentId] / _count[componentId];
        }
예제 #30
0
 void ProcessPendingBuffer(bool last, bool endElement)
 {
     if (buffer.Position > 0)
     {
         byte [] arr = buffer.GetBuffer();
         if (endElement)
         {
             arr [0]++;
         }
         original.Write(arr, 0, (int)buffer.Position);
         buffer.SetLength(0);
     }
     if (last)
     {
         writer = original;
     }
 }