Beispiel #1
0
 public void Deserialize(NetDataReader reader)
 {
     Id         = reader.GetUShort();
     Keys       = (MovementKeys)reader.GetByte();
     Rotation   = reader.GetFloat();
     ServerTick = reader.GetUShort();
 }
Beispiel #2
0
        private void HandleChunkReceived(NetDataReader reader)
        {
            var worldId        = reader.GetInt();
            var chunkPositionX = reader.GetInt();
            var chunkPositionY = reader.GetInt();
            var chunkSize      = reader.GetInt();
            var chunkLength    = chunkSize * chunkSize;

            var chunkStaticTileData = new ChunkStaticTileData[chunkLength];

            for (var i = 0; i < chunkLength; i++)
            {
                var tileId = reader.GetUShort();
                var z      = reader.GetInt();
                var hue    = reader.GetInt();
                chunkStaticTileData[i] = new ChunkStaticTileData(tileId, z, hue);
            }

            var chunkItemTileData = new ChunkItemTileData[chunkLength];

            for (var i = 0; i < chunkLength; i++)
            {
                var tileId = reader.GetUShort();
                var z      = reader.GetInt();
                var hue    = reader.GetInt();
                chunkItemTileData[i] = new ChunkItemTileData(tileId, z, hue);
            }

            var chunkData     = new ChunkData(worldId, new Point(chunkPositionX, chunkPositionY), chunkStaticTileData, chunkItemTileData);
            var chunkReceived = ChunkReceived;

            chunkReceived?.Invoke(chunkData);
        }
Beispiel #3
0
 public void Deserialize(NetDataReader reader)
 {
     FromPlayer = reader.GetByte();
     CommandId  = reader.GetUShort();
     Hit        = reader.GetVector2();
     ServerTick = reader.GetUShort();
 }
    public override void Deserialize(NetDataReader reader)
    {
        base.Deserialize(reader);

        id         = reader.GetUShort();
        keys       = (ExamplePlayerController.MovementKeys)reader.GetByte();
        serverTick = reader.GetUShort();
    }
        public override void Deserialize(NetDataReader reader)
        {
            // Deserialize base
            base.Deserialize(reader);

            // Read class
            ButtonMask  = reader.GetUShort();
            LeftAnalog  = reader.GetUShort();
            RightAnalog = reader.GetUShort();
        }
        public void ReadPacketStream(NetDataReader stream)
        {
            ushort repObjId = stream.GetUShort();

            while (repObjId != 0)
            {
                Log.Debug($"Reading ghost with id: {repObjId}");
                // first read if there is a status change
                if (stream.GetByte() == 1)
                {
                    // read the status change
                    if (stream.GetByte() == 1)
                    {
                        Log.Debug("status changed: ADDED");
                        // added so read the persistent obj id
                        byte objRepId = stream.GetByte();

                        // Create new instance of the object
                        IPersistentObject obj = PersistentObjectManager.CreatePersistentObject(objRepId);

                        // unpack stream data
                        obj.Deserialize(stream);

                        ReplicatedObjects[repObjId] = new ReplicationRecord
                        {
                            Id     = repObjId,
                            Entity = obj as ReplicatableObject
                        };
                    }
                    else
                    {
                        Log.Debug("status changed: REMOVED");
                        // remove the record but also need to destroy game object or queue it to be destroyed..
                        if (ReplicatedObjects.TryGetValue(repObjId, out ReplicationRecord record))
                        {
                            Log.Debug($"Removing record: {record.Id}");
                            //GameObject.Destroy(record.Entity);
                            ReplicatedObjects.Remove(repObjId);
                        }
                    }
                }
                else
                {
                    Log.Debug("State update");
                    // no status change just new state information  so unpack into existing replicated obj
                    ReplicatedObjects[repObjId].Entity.Deserialize(stream);
                }

                repObjId = stream.GetUShort();
            }
        }
Beispiel #7
0
        public void Deserialize(NetDataReader reader)
        {
            Tick = reader.GetUShort();
            LastProcessedCommand = reader.GetUShort();

            PlayerStatesCount = reader.AvailableBytes / PlayerState.Size;
            if (PlayerStates == null || PlayerStates.Length < PlayerStatesCount)
            {
                PlayerStates = new PlayerState[PlayerStatesCount];
            }
            for (int i = 0; i < PlayerStates.Length; i++)
            {
                PlayerStates[i].Deserialize(reader);
            }
        }
Beispiel #8
0
        public Message decodeMessage(NetDataReader incoming)
        {
            ushort messageType = incoming.GetUShort();
            var    message     = create(messageType);

            message.ReadUncryptedPayload(incoming);
            if (this.Modus == ManagerModus.Intoducer)
            {
                if (message.EncryptedMessage)
                {
                    message.CopyEncryptedToTempStorage(incoming);
                }
                else
                {
                    message.ReadPayload(incoming);
                }
            }
            else
            {
                if (message.EncryptedMessage)
                {
                    if (this.Modus == ManagerModus.Host)
                    {
                        Decrypt(message.StartPointEncryption, Manager.getSymmetricKeyForRemoteId(message.ClientSystemId), incoming);
                    }
                    else
                    {
                        Decrypt(message.StartPointEncryption, Manager.getSymmetricKeyForRemoteId(message.HostSystemId), incoming);
                    }
                }
                message.ReadPayload(incoming);
            }

            return(message);
        }
Beispiel #9
0
 public void Deserialize(NetDataReader reader)
 {
     networkID      = reader.GetInt();
     rpcMethodIndex = reader.GetInt();
     frameTick      = reader.GetUShort();
     parameters     = reader.GetRemainingBytes();
 }
Beispiel #10
0
        public override void ReadPacketStream(NetDataReader stream)
        {
            // read id of last processed move and use it to update
            // the buffer of stored moves
            SeqLastProcessed = stream.GetUShort();
            _log.Debug($"SeqLastProcessed from server: {SeqLastProcessed}");

            _window.AckSeq((ushort)SeqLastProcessed);

            // read state of player obj and set it using remainder of moves in buffer to predict again
            CurrentlyControlledObject.Deserialize(stream);

            if (_window.Count == 0)
            {
                return;
            }

            int i = _window.First;

            while (i != _window.Last)
            {
                CurrentlyControlledObject.ApplyMoveDirection(_window.Items[i].MoveDirection.z, _window.Items[i].MoveDirection.x);
                i = ++i < _window.Max ? i : 0;
            }
        }
        public override void OnMessage(NetPeer peer, NetDataReader reader)
        {
            var count = reader.GetInt();

            for (int i = 0; i < count; i++)
            {
                var npcid    = reader.GetLong();
                var npcType  = (NpcType)reader.GetUShort();
                var position = reader.GetVector3();
                var rotation = reader.GetQuaternion();

                NPCView npcView = null;
                switch (npcType)
                {
                case NpcType.Player:
                    npcView = npcMgr.CreateNpc <TankView>();
                    break;

                case NpcType.Monster:
                    npcView = npcMgr.CreateNpc <AnimalView>();
                    break;
                }
                if (npcView != null)
                {
                    npcView.Initialize(npcid);
                    npcView.InitInterpolateFields(position, rotation);
                }
                Debugger.LogWarning("OnResNpcs--->>>" + npcid + " " + npcType + " " + position);
            }
        }
Beispiel #12
0
        public void ProcessInitialFields(NetDataReader reader)
        {
            if (!cachedElements)
            {
                CacheNetworkMember();
            }
            for (byte i = 0; i < networkFields.Count; i++)
            {
                var field = networkFields[i];
                var objId = reader.GetUShort();
                if (ObjectId != objId)
                {
                    Log.Error(this, $"NetworkObject id don't match! {ObjectId}<->{objId}");
                    return;
                }
                var tmpID = reader.GetByte();

                if (field.ElementId != tmpID)
                {
                    Log.Error(this, $"server field order is not equal client!");
                    return;
                }

                field.Deserialize(reader);
            }
        }
Beispiel #13
0
 public void Deserialize(NetDataReader reader)
 {
     Id       = reader.GetByte();
     Position = reader.GetVector2();
     Rotation = reader.GetFloat();
     Tick     = reader.GetUShort();
 }
        public void Deserialize(NetDataReader reader)
        {
            Tick = reader.GetUShort();
            LastProcessedAction = reader.GetUShort();
            CharacterStateCount = reader.AvailableBytes / CharacterPacket.Size;

            if (CharacterStates == null || CharacterStates.Length < CharacterStateCount)
            {
                CharacterStates = new CharacterPacket[CharacterStateCount];
            }

            for (int i = 0; i < CharacterStateCount; i++)
            {
                CharacterStates[i].Deserialize(reader);
            }
        }
Beispiel #15
0
        public void Deserialize(NetDataReader reader)
        {
            UnitId   = reader.GetUShort();
            UnitMesh = reader.GetByte();
            PosX     = reader.GetShort();
            PosY     = reader.GetShort();

            bool[] bdata = ByteToBool(reader.GetByte());
            Attack      = bdata[0];
            PlayerOwned = bdata[1];
            HasEffect   = bdata[2];
            HasHealth   = bdata[3];
            Alive       = bdata[4];
            HasExp      = bdata[5];
            Upgrade     = bdata[6];
            CustomSize  = bdata[7];

            if (Alive && HasHealth)
            {
                Health = reader.GetByte();
            }
            if (Alive)
            {
                Rot = reader.GetByte();
            }
            if (HasEffect)
            {
                VisualEffect = (VisualEffect)reader.GetByte();
            }
            if (Attack)
            {
                Target = reader.GetUShort();
            }
            if (HasExp)
            {
                Exp = reader.GetByte();
            }
            if (Upgrade)
            {
                UnitSkin = reader.GetByte();
            }
            if (CustomSize)
            {
                UnitSize = reader.GetByte();
            }
        }
Beispiel #16
0
 public void Deserialize(NetDataReader reader)
 {
     PlayerId     = reader.GetUShort();
     Color        = reader.GetFloat3();
     Position     = reader.GetFloat3();
     Rotation     = reader.GetFloat3();
     BodyRotation = reader.GetFloat3();
 }
 public void Deserialize(NetDataReader reader)
 {
     NetworkId = reader.GetUShort();
     Position  = reader.GetVector3();
     Rotation  = reader.GetQuaternion();
     Velocity  = reader.GetVector3();
     Grounded  = reader.GetBool();
 }
Beispiel #18
0
 public void Deserialize(NetDataReader reader)
 {
     networkID    = reader.GetInt();
     sceneId      = reader.GetInt();
     position     = new Vector3(reader.GetFloat(), reader.GetFloat(), reader.GetFloat());
     frameTick    = reader.GetUShort();
     initialState = reader.GetRemainingBytes();
 }
Beispiel #19
0
 public virtual void Deserialize(NetDataReader reader)
 {
     typeId   = reader.GetString();
     assetId  = reader.GetString();
     objectId = reader.GetUShort();
     position = new Vector3(reader.GetFloat(), reader.GetFloat(), reader.GetFloat());
     rotation = new Quaternion(reader.GetFloat(), reader.GetFloat(), reader.GetFloat(), reader.GetFloat());
 }
Beispiel #20
0
 public void Deserialize(NetDataReader reader)
 {
     PlayerId      = reader.GetUShort();
     LocalPlanetId = reader.GetInt();
     Color         = reader.GetFloat3();
     UPosition     = reader.GetDouble3();
     Rotation      = reader.GetFloat3();
     BodyRotation  = reader.GetFloat3();
 }
    public static T[] GetArray <T>(this NetDataReader reader) where T : INetSerializable, new()
    {
        var len   = reader.GetUShort();
        var array = new T[len];

        for (int i = 0; i < len; i++)
        {
            array[i] = reader.Get <T>();
        }
        return(array);
    }
Beispiel #22
0
    void OnMessageReceived(NetPeer peer, NetDataReader reader)
    {
        MessageType    type    = (MessageType)reader.GetUShort();
        NetworkMessage message = NetworkMessage.Decode(type);

        if (message != null)
        {
            message.Read(reader);
            OnMessageReceived(peer, message);
        }
    }
Beispiel #23
0
        public void WriteReadUShort()
        {
            var ndw = new NetDataWriter();

            ndw.Put((ushort)16);

            var ndr        = new NetDataReader(ndw.Data);
            var readUShort = ndr.GetUShort();

            Assert.AreEqual(readUShort, (ushort)16);
        }
 public void Deserialize(NetDataReader reader)
 {
     Seq             = reader.GetUShort();
     MoveDirection.x = reader.GetFloat();
     MoveDirection.z = reader.GetFloat();
     MoveDirection.y = 0;
     //PressedCount = reader.GetUShort();
     //for(int i = 0; i < PressedCount; i++)
     //{
     //    Pressed[i] = reader.GetUShort();
     //}
 }
Beispiel #25
0
 public void Deserialize(NetDataReader reader)
 {
     Username            = reader.GetString();
     PlayerId            = reader.GetUShort();
     LocalPlanetId       = reader.GetInt();
     MechaColor          = reader.GetFloat3();
     LocalPlanetPosition = reader.GetFloat3();
     UPosition           = reader.GetDouble3();
     Rotation            = reader.GetFloat3();
     BodyRotation        = reader.GetFloat3();
     Mecha = new MechaData();
     Mecha.Deserialize(reader);
 }
Beispiel #26
0
        /// <summary>
        /// 处理数据
        /// </summary>
        public void DispatchMessage(NetPeer peer, NetDataReader reader)
        {
            var      messageid = reader.GetUShort();
            Protocal key       = (Protocal)messageid;

            if (mHandlers.ContainsKey(key))
            {
                mHandlers[key].OnMessage(peer, reader);
            }
            else
            {
                mDefaultHandler.OnMessage(peer, reader);
            }
        }
        /// <summary>
        /// 消息接收
        /// </summary>
        public void OnReceived(NetPeer peer, NetDataReader reader)
        {
            IMessageHandler handler = null;
            Protocal        key     = (Protocal)reader.GetUShort();

            if (mHandlers.ContainsKey(key))
            {
                handler = mHandlers[key];
            }
            else
            {
                handler = mDefaultHandler;
            }
            handler.OnMessage(peer, reader);
        }
Beispiel #28
0
        //============ TinyNetMessages Networking ===========//

        /// <summary>
        /// Reads the message and calls the correct handler.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="peer">The peer.</param>
        /// <returns></returns>
        ushort ReadMessageAndCallDelegate(NetDataReader reader, NetPeer peer, DeliveryMethod deliveryMethod)
        {
            ushort msgType = reader.GetUShort();

            if (_tinyMessageHandlers.Contains(msgType))
            {
                recycleMessageReader.msgType     = msgType;
                recycleMessageReader.reader      = reader;
                recycleMessageReader.tinyNetConn = GetTinyNetConnection(peer);
                recycleMessageReader.channelId   = deliveryMethod;

                _tinyMessageHandlers.GetHandler(msgType)(recycleMessageReader);
            }

            return(msgType);
        }
        //============ TinyNetMessages Networking ===========//

        /// <summary>
        /// Reads the message and calls the correct handler.
        /// </summary>
        /// <param name="reader">The reader.</param>
        /// <param name="peer">The peer.</param>
        /// <returns></returns>
        ushort ReadMessageAndCallDelegate(NetDataReader reader, NetPeer peer)
        {
            ushort msgType = reader.GetUShort();

            if (_tinyMessageHandlers.Contains(msgType))
            {
                recycleMessageReader.msgType     = msgType;
                recycleMessageReader.reader      = reader;
                recycleMessageReader.tinyNetConn = GetTinyNetConnection(peer);
                recycleMessageReader.channelId   = DeliveryMethod.ReliableOrdered;               //@TODO: I currently don't know if it's possible to get from which channel a message came.

                _tinyMessageHandlers.GetHandler(msgType)(recycleMessageReader);
            }

            return(msgType);
        }
Beispiel #30
0
        public void Deserialize(NetDataReader reader)
        {
            BattleId      = Guid.Parse(reader.GetString());
            CurrentArmyId = reader.GetInt();
            CurrentUnitId = reader.GetInt();

            var armiesLength = reader.GetUShort();

            Armies = new ArmyParams[armiesLength];
            for (int i = 0; i < armiesLength; i++)
            {
                Armies[i] = reader.Get <ArmyParams>();
            }

            GameId     = reader.GetInt();
            GameString = reader.GetString();
        }