Asgard.Core.Network.Packets.ClientStatePacket.Deserialize C# (CSharp) Method

Deserialize() public method

public Deserialize ( Bitstream msg ) : void
msg Bitstream
return void
        public override void Deserialize(Bitstream msg)
        {
            var count = msg.ReadUInt16();
            count = (ushort)Math.Max((int)count, 0);
            count = (ushort)Math.Min((int)count, 100);
            State = new List<PlayerStateData>(count);

            if (count > 0)
            {
                ushort objType = msg.ReadByte();
                PlayerId = msg.ReadVariableUInt32();
                if (_ownerType == null)
                {
                    _ownerType = ObjectMapper.LookupType(objType);
                    _lookupItem = DataLookupTable.Get(_ownerType.GetTypeInfo());

                }
            }

            NetworkObject pState = PlayerId > 0 ? ObjectMapper.GetCurrentPlayerState(PlayerId) : null;
            for (int i = 0; i < count; ++i)
            {
                NetworkObject data = Activator.CreateInstance(_ownerType) as NetworkObject;
                DataObjectPacket.ReadNetObject(_lookupItem, msg, data, pState);
                pState = data;
                State.Add(data as PlayerStateData);
            }

            if (State.Count > 0 && PlayerId > 0)
                ObjectMapper.SetCurrentPlayerState(PlayerId, State.Last());
        }
ClientStatePacket