示例#1
0
        public SnapshotReplicator(INetworkObjectSerializerManager manager, string version)
        {
            var serializer = new SnapshotSerializer(manager, version);

            _recvChannel = new SnapshotRecvChannel(serializer);
            _sendChannel = new SnapshotSendChannel(serializer);
        }
        public override void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager manager)
        {
            int   entityId   = reader.ReadInt32();
            short entityType = reader.ReadInt16();

            Key = new EntityKey(entityId, entityType);
        }
        public override void ApplyPatchTo(INetworkObject target, INetworkObjectSerializerManager serializerManager)
        {
            var componentTypeId = Component.GetComponentId();
            INetworkObjectSerializer componentSerializer = serializerManager.GetSerializer(componentTypeId);

            componentSerializer.Merge(Component as INetworkObject, target, _bitMask);
        }
示例#4
0
 public void ApplyPatchTo(ISnapshot baseSnap, INetworkObjectSerializerManager serializerManager)
 {
     foreach (var patch in _entityPatchList)
     {
         patch.ApplyPatchTo(baseSnap, serializerManager);
     }
 }
示例#5
0
        public override void ApplyPatchTo(ISnapshot snap, INetworkObjectSerializerManager serializerManager)
        {
            IGameEntity entity = snap.GetOrCreate(Key);

            for (int i = 0; i < ComponentPatchList.Count; i++)
            {
                ComponentPatchList[i].ApplyPatchTo(entity, serializerManager);
            }
        }
        public override void ApplyPatchTo(ISnapshot snap, INetworkObjectSerializerManager serializerManager)
        {
            var baseEntity = snap.GetEntity(Key);

            foreach (var compPatch in ComponentPatchList)
            {
                compPatch.ApplyPatchTo(baseEntity, serializerManager);
            }
        }
示例#7
0
 public void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
 {
     writer.Write(BaseSnapshotSeq);
     writer.Write(_entityPatchList.Count);
     foreach (var item in _entityPatchList)
     {
         item.Serialize(writer, serializerManager);
     }
 }
        public override void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager serializerManager)
        {
            var typeId = reader.ReadInt16();

            CreateGameComponent(typeId);
            var componentSerializer = serializerManager.GetSerializer(typeId);

            componentSerializer.DeserializeAll(Component as INetworkObject, DoCompress, reader);
        }
        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);
        }
示例#10
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);
     }
 }
        public override void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager serializerManager)
        {
            int typeId = reader.ReadInt16();

            CreateGameComponent(typeId);
            var componentSerializer = serializerManager.GetSerializer(typeId);

            _bitMask.Deserialize(reader);
            var networkObject = Component as INetworkObject;

            componentSerializer.Deserialize(networkObject, _bitMask, DoCompress, reader);
        }
示例#12
0
        public void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager serializerManager)
        {
            BaseSnapshotSeq = reader.ReadInt32();
            AssertUtility.Assert(_entityPatchList.Count == 0);
            var count = reader.ReadInt32();

            for (int i = 0; i < count; i++)
            {
                AbstractEntityPatch patch = CreateEntityPatch((EntityReplicateOperationType)reader.ReadByte());
                patch.DeSerialize(reader, serializerManager);
                _entityPatchList.Add(patch);
            }
        }
示例#13
0
        public override void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager serializerManager)
        {
            var id   = reader.ReadInt32();
            var type = reader.ReadInt16();

            Key = new EntityKey(id, type);
            int count = reader.ReadInt32();

            AssertUtility.Assert(ComponentPatchList.Count == 0);
            for (int i = 0; i < count; i++)
            {
                reader.ReadByte(); // var op
                var patch = CreateEmptyComponentPatch();
                patch.DeSerialize(reader, serializerManager);
                ComponentPatchList.Add(patch);
            }
        }
        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];
        }
示例#15
0
 public override void ApplyPatchTo(IGameEntity entity, INetworkObjectSerializerManager serializerManager)
 {
     entity.RemoveComponent(Component.GetComponentId());
 }
示例#16
0
 public abstract void ApplyPatchTo(INetworkObject target, INetworkObjectSerializerManager serializerManager);
示例#17
0
 public abstract void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager manager);
示例#18
0
 public abstract void ApplyPatchTo(IGameEntity entity, INetworkObjectSerializerManager serializerManager);
示例#19
0
 public abstract void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager manager);
示例#20
0
        public override void DeSerialize(BinaryReader reader, INetworkObjectSerializerManager serializerManager)
        {
            int typeId = reader.ReadInt16();

            CreateGameComponent(typeId);
        }
示例#21
0
 public override void ApplyPatchTo(INetworkObject target, INetworkObjectSerializerManager serializerManager)
 {
     throw new System.NotImplementedException();
 }
示例#22
0
 public override void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager manager)
 {
     writer.Write((byte)EntityReplicateOperationType.Del);
     writer.Write(Key.EntityId);
     writer.Write(Key.EntityType);
 }
示例#23
0
 public override void ApplyPatchTo(IGameEntity entity, INetworkObjectSerializerManager serializerManager)
 {
     var copyCopy = entity.AddComponent(Component.GetComponentId(), Component);
 }
示例#24
0
 public override void ApplyPatchTo(INetworkObject target, INetworkObjectSerializerManager serializerManager)
 {
     target.CopyFrom(Component);
 }
示例#25
0
 public override void Serialize(MyBinaryWriter writer, INetworkObjectSerializerManager serializerManager)
 {
     writer.Write((byte)ComponentReplicateOperationType.Del);
     writer.Write((short)Component.GetComponentId());
 }
 public SnapshotPatchGenerator(INetworkObjectSerializerManager serializerManager)
 {
     snapshotPatch          = SnapshotPatch.Allocate();
     this.serializerManager = serializerManager;
 }
示例#27
0
 public override void ApplyPatchTo(ISnapshot snap, INetworkObjectSerializerManager serializerManager)
 {
     snap.RemoveEntity(Key);
 }
示例#28
0
 public abstract void ApplyPatchTo(ISnapshot snap, INetworkObjectSerializerManager serializerManager);
示例#29
0
 public SnapshotSerializer(INetworkObjectSerializerManager manager, string version)
 {
     _serializerManager = manager;
     _version           = version;
 }
示例#30
0
 public SnapshotSerializer(INetworkObjectSerializerManager manager)
 {
     _serializerManager = manager;
 }