Exemple #1
0
        public IEnumerator loginCoroutine()
        {
            Debug.Log("LoginInit::loginCoroutine start login CGLoginAccount");
            CGLoginAccount.Builder account = CGLoginAccount.CreateBuilder();
            Debug.Log("save Game Data ");

            account.Username = SaveGame.saveGame.otherAccounts[0]["username"];
            account.Password = SaveGame.saveGame.otherAccounts[0]["password"];

            var    data   = account.Build();
            Bundle bundle = new Bundle();

            bundle.newMessage(data.GetType());
            uint         fid    = bundle.writePB(data);
            PacketHolder packet = new PacketHolder();

            yield return(StartCoroutine(bundle.sendCoroutine(KBEngineApp.app.networkInterface(), fid, packet)));

            if (packet.packet.responseFlag == 0)
            {
                SaveGame.saveGame.charInfo = packet.packet.protoBody as GCLoginAccount;
                Application.LoadLevel("XuanZeRenWu");
            }
            else
            {
                WindowMng.windowMng.ShowNotifyLog(Util.GetString("loginError"), 3);
            }
            Debug.Log("LoginInit::loginCoroutine finish login");
        }
Exemple #2
0
        public Packet(byte[] input, int opcode, DateTime time, Direction direction, int number, string fileName)
            : base(new MemoryStream(input, 0, input.Length), Encoding.UTF8)
        {
            Opcode      = opcode;
            Time        = time;
            Direction   = direction;
            Number      = number;
            Writer      = null;
            FileName    = fileName;
            Status      = ParsedStatus.None;
            WriteToFile = true;

            if (number == 0)
            {
                _firstPacketTime = Time;
            }

            TimeSpan = Time - _firstPacketTime;

            Holder = new PacketHolder()
            {
                BaseData = new PacketBase()
                {
                    Number = number,
                    Time   = Timestamp.FromDateTime(DateTime.SpecifyKind(time, DateTimeKind.Utc)),
                    Opcode = Opcodes.GetOpcodeName(Opcode, Direction, false)
                }
            };
        }
Exemple #3
0
        private void OnMessage <RequestPacket>(PacketHeader packetHeader, byte[] packetMessage)
            where RequestPacket : IServerPacket
        {
            //Header는 여기서 사용해야할까?
            //var requestPacket = MessagePackSerializer.Deserialize<dynamic>(packetMessage, MessagePack.Resolvers.ContractlessStandardResolver.Instance);

            //IServerPacket serverPacket = requestPacket as IServerPacket;

            var requestPacket = MessagePackSerializer.Typeless.Deserialize(packetMessage) as IServerPacket; //size 119

            //MessagePackSerializer.Deserialize<IServerPacket>(bytes);

            //여기에는 send로 온.. 데이터만 들어오는데..
            IClientPacket clientPacket = ProcessManager.Run(requestPacket.PacketId, requestPacket);

            byte[] bytes = MessagePack.MessagePackSerializer.Typeless.Serialize(clientPacket);

            PacketHeader packetHeader2 = new PacketHeader
            {
                ContentsVersion = packetHeader.ContentsVersion,
                LogicVersion    = packetHeader.LogicVersion,
                PacketID        = requestPacket.PacketId,
                PacketSize      = bytes.Length,
                EncriptKey      = 0,
                EncriptType     = 0,
            };

            //response
            IRequestItem requestItem = new PacketHolder(PacketHeaderConverter.CreateHeaderToBytes(packetHeader2), requestPacket.PacketId, bytes);

            Send(requestItem);
        }
Exemple #4
0
        IEnumerator startRegisterCoroutine(string name, string pass)
        {
            Debug.Log("LoginInit::startRegisterCoroutine: ");
            //var name = loginUI.nameInput.text;
            //var pass = loginUI.passwordInput.text;

            PacketHolder packet = new PacketHolder();

            CGRegisterAccount.Builder reg = CGRegisterAccount.CreateBuilder();
            reg.Username = name;
            reg.Password = pass;

            yield return(StartCoroutine(Bundle.sendSimple(this, reg, packet)));

            if (packet.packet.responseFlag == 0)
            {
                SaveGame.saveGame.AddNewAccount(name, pass);

                SaveGame.saveGame.SaveFile();
                //Login Game Auto

                yield return(StartCoroutine(loginCoroutine()));
            }
            else
            {
                //loginUI.showLog(Util.GetString("autoRegError"));
            }
        }
Exemple #5
0
        //------------    Process packet related to spawning prop    ------------
        private void ProcessIncomingSpawn(CSteamID remoteId, PacketHolder packetHolder)
        {
            var packet = packetHolder.Packet <Spawn>();

            if (packet == null)
            {
                return;
            }

            switch (packet.Value.Action)
            {
            // When player accepted new spawn and sent back this callback
            case ActionType.PropSpawn:
            {
                Vector3?pos = null;
                if (packet.Value.Pos != null)
                {
                    pos = new Vector3(packet.Value.Pos.Value.X, packet.Value.Pos.Value.Y, packet.Value.Pos.Value.Z);
                }

                SpawnProp(packet.Value.Name, pos);
                // When host receives prop spawn from player
                if (_globals.PlayingAsHost)
                {
                    SpawnPropCallback(packet.Value.Name, pos, remoteId);
                }

                break;
            }
            }
        }
Exemple #6
0
        //------------    Process packet related to only changing object rotation    ------------
        private void ProcessIncomingObjectRotationChange(PacketHolder packetHolder, CSteamID remoteId)
        {
            var packet = packetHolder.Packet <Rotation>();

            if (packet == null)
            {
                return;
            }
            if (packet.Value.ObjType != ObjectType.Prop)
            {
                return;
            }

            if (!_props.TryGetValue(packet.Value.Obj, out KinematicBody updatingObj))
            {
                return;
            }

            Vector3 newObjRotation = updatingObj.Rotation;

            if (packet.Value.Rot != null)
            {
                newObjRotation.x = packet.Value.Rot.Value.X;
                newObjRotation.y = packet.Value.Rot.Value.Y;
                newObjRotation.z = packet.Value.Rot.Value.Z;
            }

            updatingObj.Rotation = newObjRotation;

            if (packet.Value.SentByHost)
            {
                return;
            }
            ObjectRotationChangeCallback(packet.Value.Obj, newObjRotation, remoteId);
        }
Exemple #7
0
        //------------    Process packet related to only changing object position    ------------
        private void ProcessIncomingObjectMovementChange(PacketHolder packetHolder, CSteamID remoteId)
        {
            var packet = packetHolder.Packet <Movement>();

            if (packet == null)
            {
                return;
            }
            if (packet.Value.ObjType != ObjectType.Prop)
            {
                return;
            }

            if (!_props.TryGetValue(packet.Value.Obj, out KinematicBody updatingObj))
            {
                return;
            }

            Transform newObjTransform = updatingObj.Transform;

            if (packet.Value.Pos != null)
            {
                newObjTransform.origin.x = packet.Value.Pos.Value.X;
                newObjTransform.origin.y = packet.Value.Pos.Value.Y;
                newObjTransform.origin.z = packet.Value.Pos.Value.Z;
            }

            updatingObj.Transform = newObjTransform;

            if (packet.Value.SentByHost)
            {
                return;
            }
            ObjectPositionChangeCallback(packet.Value.Obj, newObjTransform.origin, remoteId);
        }
Exemple #8
0
    public bool Process(PacketHolder packet)
    {
        if (!hasServerTimeDiff)
        {
            if (packet.KindCase == PacketHolder.KindOneofCase.LoginSetTimeSpeed)
            {
                hasServerTimeDiff = true;
                serverTimeDiff    = packet.BaseData.Time.ToDateTime() - packet.LoginSetTimeSpeed.GameTime.ToDateTime();
            }
        }

        if (!hasServerTimeDiffFromSpawnTime)
        {
            if (packet.KindCase == PacketHolder.KindOneofCase.UpdateObject)
            {
                foreach (var create in packet.UpdateObject.Created)
                {
                    if (create.CreateType == CreateObjectType.Spawn &&
                        create.Guid.Type is UniversalHighGuid.Creature or UniversalHighGuid.Vehicle or UniversalHighGuid.Pet or UniversalHighGuid.GameObject &&
                        create.Guid.KindCase == UniversalGuid.KindOneofCase.Guid128)
                    {
                        var timeQuotient      = (new DateTimeOffset(packet.BaseData.Time.ToDateTime()).ToUnixTimeSeconds() & ~((1 << 23) - 1));
                        var timeSpawnOffset   = (long)(create.Guid.Guid128.Low & ((1 << 23) - 1));
                        var currentServerTime = DateTimeOffset.FromUnixTimeSeconds(timeQuotient + timeSpawnOffset);
                        serverTimeDiff    = packet.BaseData.Time.ToDateTime() - currentServerTime;
                        hasServerTimeDiff = true;
                        hasServerTimeDiffFromSpawnTime = true;
                        return(false);
                    }
                }
            }
        }

        return(true);
    }
Exemple #9
0
        private void ProcessPlayerMovementAndRotationChange(PacketHolder packetHolder, CSteamID remoteId)
        {
            var packet = packetHolder.Packet <MovementAndRotation>();

            if (packet == null)
            {
                return;
            }
            if (packet.Value.ObjType != ObjectType.Player)
            {
                return;
            }

            if (!_globals.PlayerBodies.TryGetValue(packet.Value.Obj, out KinematicBody updatingPlayer))
            {
                if (_globals.OwnPlayerBody != null && _globals.OwnPlayerBody.Name.Equals(packet.Value.Obj))
                {
                    updatingPlayer = _globals.OwnPlayerBody;
                }
                else
                {
                    return;
                }
            }

            Transform newPlayerTransform = updatingPlayer.Transform;

            if (packet.Value.Pos != null)
            {
                newPlayerTransform.origin.x = packet.Value.Pos.Value.X;
                newPlayerTransform.origin.y = packet.Value.Pos.Value.Y;
                newPlayerTransform.origin.z = packet.Value.Pos.Value.Z;
            }

            updatingPlayer.Transform = newPlayerTransform;

            Vector3 newPlayerRotation = updatingPlayer.Rotation;

            if (packet.Value.Rot != null)
            {
                newPlayerRotation.x = packet.Value.Rot.Value.X;
                newPlayerRotation.y = packet.Value.Rot.Value.Y;
                newPlayerRotation.z = packet.Value.Rot.Value.Z;
            }

            updatingPlayer.Rotation = newPlayerRotation;
            if (_globals.PlayingAsHost)
            {
                PlayerMovementAndRotationChangeCallback(packet.Value.Obj, newPlayerTransform.origin, newPlayerRotation,
                                                        remoteId);
            }
        }
Exemple #10
0
        private void ProcessPlayerMovement(PacketHolder packetHolder, CSteamID remoteId)
        {
            switch (packetHolder.PacketType)
            {
            case Packets.MovementAndRotation:
                ProcessPlayerMovementAndRotationChange(packetHolder, remoteId);
                break;

            case Packets.Movement:
                ProcessPlayerMovementChange(packetHolder, remoteId);
                break;

            case Packets.Rotation:
                ProcessPlayerRotationChange(packetHolder, remoteId);
                break;
            }
        }
        public bool Process(PacketHolder packet)
        {
            if (PlayerGuid != null)
            {
                return(false);
            }

            if (packet.KindCase == PacketHolder.KindOneofCase.ClientMove)
            {
                PlayerGuid = packet.ClientMove.Mover;
            }
            else if (packet.KindCase == PacketHolder.KindOneofCase.PlayerLogin)
            {
                PlayerGuid = packet.PlayerLogin.PlayerGuid;
            }
            return(true);
        }
Exemple #12
0
        private void ProcessIncomingPackets(object source, PacketReceiveArgs args)
        {
            ByteBuffer   buff         = new ByteBuffer(args.Packet);
            PacketHolder packetHolder = PacketHolder.GetRootAsPacketHolder(buff);

            switch (packetHolder.PacketType)
            {
            case Packets.Spawn:
                ProcessSpawn(packetHolder, args.RemoteId);
                break;

            case Packets.MovementAndRotation:
            case Packets.Movement:
            case Packets.Rotation:
                ProcessPlayerMovement(packetHolder, args.RemoteId);
                break;
            }
        }
Exemple #13
0
        private void ProcessIncomingPlayerIds(PacketHolder packetHolder)
        {
            var incomingPlayerIds = packetHolder.Packet <PlayerIds>();

            if (incomingPlayerIds != null)
            {
                if (!incomingPlayerIds.Value.SentByHost)
                {
                    return;
                }
                var newIncomingPlayerIds =
                    Array.ConvertAll(incomingPlayerIds.Value.GetIdsArray(), item => (CSteamID)item);
                _globals.UserIds.UnionWith(newIncomingPlayerIds);
                GD.Print($"OK: Added lobby player id's from host, new count: {_globals.UserIds.Count}");
            }

            GD.Print("NOTIFY: Changing scene after getting PlayerIds packet.");
            OnLobbyEnteredFinished();
        }
Exemple #14
0
        public IRequestItem Request <RequestPacket>(RequestPacket requestPacket)
            where RequestPacket : IServerPacket
        {
            byte[] bytes = MessagePack.MessagePackSerializer.Typeless.Serialize(requestPacket);

            PacketHeader packetHeader = new PacketHeader
            {
                ContentsVersion = ContentsVersion,
                LogicVersion    = LogicVersion,
                PacketID        = requestPacket.PacketId,
                PacketSize      = bytes.Length,
                EncriptKey      = 0,
                EncriptType     = 0,
            };

            IRequestItem requestItem = new PacketHolder(PacketHeaderConverter.CreateHeaderToBytes(packetHeader), requestPacket.PacketId, bytes);

            return(requestItem);
        }
Exemple #15
0
        public IEnumerator regAndLog()
        {
            Debug.Log("LoginInit::regAndlog: start Register");
            PacketHolder packet = new PacketHolder();

            {
                CGAutoRegisterAccount.Builder auto = CGAutoRegisterAccount.CreateBuilder();
                var    data   = auto.Build();
                Bundle bundle = new Bundle();
                bundle.newMessage(typeof(CGAutoRegisterAccount));
                uint fid = bundle.writePB(data);
                yield return(StartCoroutine(bundle.sendCoroutine(KBEngineApp.app.networkInterface(), fid, packet)));
            }

            {
                var newAccount = packet.packet.protoBody as GCAutoRegisterAccount;
                CGRegisterAccount.Builder reg = CGRegisterAccount.CreateBuilder();
                reg.Username = newAccount.Username;
                reg.Password = "******";

                var data = reg.BuildPartial();
                Debug.Log("LoginInit::regAndLog: " + newAccount + " : " + data);
                Debug.Log("LoginInit::regAndLog:  username pass " + newAccount.Username + " " + data.Password);
                Bundle bundle = new Bundle();
                bundle.newMessage(data.GetType());
                var fid = bundle.writePB(data);
                yield return(StartCoroutine(bundle.sendCoroutine(KBEngineApp.app.networkInterface(), fid, packet)));

                if (packet.packet.responseFlag == 0)
                {
                    SaveGame.saveGame.AddNewAccount(newAccount.Username, data.Password);
                    SaveGame.saveGame.SaveFile();
                }
                else
                {
                    Log.Sys(Util.GetString("autoRegError"));
                }
            }

            yield return(StartCoroutine(loginCoroutine()));

            Debug.Log("LoginInit::regAndlog: finish register");
        }
        public uint Process(PacketHolder packet)
        {
            if (packet.KindCase == PacketHolder.KindOneofCase.QueryCreatureResponse)
            {
                return(packet.QueryCreatureResponse.Entry);
            }
            if (packet.KindCase == PacketHolder.KindOneofCase.QueryGameObjectResponse)
            {
                return(packet.QueryGameObjectResponse.Entry);
            }
            if (packet.KindCase == PacketHolder.KindOneofCase.QuestGiverRequestItems)
            {
                return(packet.QuestGiverRequestItems.QuestGiverEntry);
            }

            var guid = guidExtractor.Process(packet);

            return(guid?.Entry ?? 0);
        }
Exemple #17
0
        private void ProcessIncomingPackets(byte[] packet, CSteamID remoteId)
        {
            ByteBuffer   buff         = new ByteBuffer(packet);
            PacketHolder packetHolder = PacketHolder.GetRootAsPacketHolder(buff);

            switch (packetHolder.PacketType)
            {
            case Packets.UserAction:
            {
                ProcessIncomingUserAction(remoteId, packetHolder);
                break;
            }

            case Packets.PlayerIds:
            {
                ProcessIncomingPlayerIds(packetHolder);
                break;
            }
            }
        }
Exemple #18
0
        //------------    Process packet related to any object movement    ------------
        private void ProcessIncomingObjectAction(PacketHolder packetHolder, CSteamID remoteId)
        {
            switch (packetHolder.PacketType)
            {
            case Packets.MovementAndRotation:
            {
                ProcessIncomingObjectPositionAndRotationChange(packetHolder, remoteId);
                break;
            }

            case Packets.Movement:
            {
                ProcessIncomingObjectMovementChange(packetHolder, remoteId);
                break;
            }

            case Packets.Rotation:
            {
                ProcessIncomingObjectRotationChange(packetHolder, remoteId);
                break;
            }
            }
        }
Exemple #19
0
        private void ProcessIncomingUserAction(CSteamID remoteId, PacketHolder packetHolder)
        {
            var userAction = packetHolder.Packet <UserAction>();

            if (userAction == null)
            {
                return;
            }
            GD.Print($"NOTIFY: Receiving UserAction: {userAction.Value.Action}.");
            switch (userAction.Value.Action)
            {
            case ActionType.PlayerIds:
                var sendingUsers = new HashSet <CSteamID>(_globals.UserIds);
                sendingUsers.RemoveWhere(id => id.Equals(remoteId));

                var packet = Utils.GetPlayerIdsBytes(true, sendingUsers);
                SteamNetworking.SendP2PPacket(remoteId, packet, (uint)packet.Length,
                                              EP2PSend.k_EP2PSendReliable);
                GD.Print($"OK: Sent user list from host to: {SteamFriends.GetFriendPersonaName(remoteId)}");

                break;
            }
        }
Exemple #20
0
        public virtual T?Process(PacketHolder packet)
        {
            switch (packet.KindCase)
            {
            case PacketHolder.KindOneofCase.None:
                return(default);

            case PacketHolder.KindOneofCase.Chat:
                return(Process(packet.BaseData, packet.Chat));

            case PacketHolder.KindOneofCase.QueryCreatureResponse:
                return(Process(packet.BaseData, packet.QueryCreatureResponse));

            case PacketHolder.KindOneofCase.Emote:
                return(Process(packet.BaseData, packet.Emote));

            case PacketHolder.KindOneofCase.PlaySound:
                return(Process(packet.BaseData, packet.PlaySound));

            case PacketHolder.KindOneofCase.PlayMusic:
                return(Process(packet.BaseData, packet.PlayMusic));

            case PacketHolder.KindOneofCase.PlayObjectSound:
                return(Process(packet.BaseData, packet.PlayObjectSound));

            case PacketHolder.KindOneofCase.GossipHello:
                return(Process(packet.BaseData, packet.GossipHello));

            case PacketHolder.KindOneofCase.GossipMessage:
                return(Process(packet.BaseData, packet.GossipMessage));

            case PacketHolder.KindOneofCase.GossipSelect:
                return(Process(packet.BaseData, packet.GossipSelect));

            case PacketHolder.KindOneofCase.GossipClose:
                return(Process(packet.BaseData, packet.GossipClose));

            case PacketHolder.KindOneofCase.SpellStart:
                return(Process(packet.BaseData, packet.SpellStart));

            case PacketHolder.KindOneofCase.SpellGo:
                return(Process(packet.BaseData, packet.SpellGo));

            case PacketHolder.KindOneofCase.AuraUpdate:
                return(Process(packet.BaseData, packet.AuraUpdate));

            case PacketHolder.KindOneofCase.MonsterMove:
                return(Process(packet.BaseData, packet.MonsterMove));

            case PacketHolder.KindOneofCase.PhaseShift:
                return(Process(packet.BaseData, packet.PhaseShift));

            case PacketHolder.KindOneofCase.SpellClick:
                return(Process(packet.BaseData, packet.SpellClick));

            case PacketHolder.KindOneofCase.PlayerLogin:
                return(Process(packet.BaseData, packet.PlayerLogin));

            case PacketHolder.KindOneofCase.OneShotAnimKit:
                return(Process(packet.BaseData, packet.OneShotAnimKit));

            case PacketHolder.KindOneofCase.SetAnimKit:
                return(Process(packet.BaseData, packet.SetAnimKit));

            case PacketHolder.KindOneofCase.PlaySpellVisualKit:
                return(Process(packet.BaseData, packet.PlaySpellVisualKit));

            case PacketHolder.KindOneofCase.QuestGiverAcceptQuest:
                return(Process(packet.BaseData, packet.QuestGiverAcceptQuest));

            case PacketHolder.KindOneofCase.QuestGiverCompleteQuestRequest:
                return(Process(packet.BaseData, packet.QuestGiverCompleteQuestRequest));

            case PacketHolder.KindOneofCase.QuestGiverQuestComplete:
                return(Process(packet.BaseData, packet.QuestGiverQuestComplete));

            case PacketHolder.KindOneofCase.QuestGiverRequestItems:
                return(Process(packet.BaseData, packet.QuestGiverRequestItems));

            case PacketHolder.KindOneofCase.NpcText:
                return(Process(packet.BaseData, packet.NpcText));

            case PacketHolder.KindOneofCase.NpcTextOld:
                return(Process(packet.BaseData, packet.NpcTextOld));

            case PacketHolder.KindOneofCase.DbReply:
                return(Process(packet.BaseData, packet.DbReply));

            case PacketHolder.KindOneofCase.UpdateObject:
                return(Process(packet.BaseData, packet.UpdateObject));

            case PacketHolder.KindOneofCase.QueryGameObjectResponse:
                return(Process(packet.BaseData, packet.QueryGameObjectResponse));

            case PacketHolder.KindOneofCase.ClientAreaTrigger:
                return(Process(packet.BaseData, packet.ClientAreaTrigger));

            case PacketHolder.KindOneofCase.QueryPlayerNameResponse:
                return(Process(packet.BaseData, packet.QueryPlayerNameResponse));

            case PacketHolder.KindOneofCase.QuestComplete:
                return(Process(packet.BaseData, packet.QuestComplete));

            case PacketHolder.KindOneofCase.QuestFailed:
                return(Process(packet.BaseData, packet.QuestFailed));

            case PacketHolder.KindOneofCase.QuestAddKillCredit:
                return(Process(packet.BaseData, packet.QuestAddKillCredit));

            case PacketHolder.KindOneofCase.ClientUseItem:
                return(Process(packet.BaseData, packet.ClientUseItem));

            case PacketHolder.KindOneofCase.ClientQuestGiverChooseReward:
                return(Process(packet.BaseData, packet.ClientQuestGiverChooseReward));

            case PacketHolder.KindOneofCase.ClientMove:
                return(Process(packet.BaseData, packet.ClientMove));

            case PacketHolder.KindOneofCase.ClientUseGameObject:
                return(Process(packet.BaseData, packet.ClientUseGameObject));

            case PacketHolder.KindOneofCase.GossipPoi:
                return(Process(packet.BaseData, packet.GossipPoi));

            case PacketHolder.KindOneofCase.GameObjectCustomAnim:
                return(Process(packet.BaseData, packet.GameObjectCustomAnim));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
 public bool Process(PacketHolder packet)
 {
     return(inner.Process(packet));
 }
 public bool PreProcess(PacketHolder packet)
 {
     r1.Process(packet);
     return(true);
 }
 public bool Process(PacketHolder packet) => waypointProcessor.Process(packet);
Exemple #24
0
        private void ProcessSpawn(PacketHolder packetHolder, CSteamID remoteId)
        {
            var packet = packetHolder.Packet <Spawn>();

            if (packet == null)
            {
                return;
            }

            switch (packet.Value.Action)
            {
            case ActionType.PlayerSpawn:
                PackedScene   playerScene;
                KinematicBody player;
                if (packet.Value.Name.Equals(_globals.OwnId.ToString()))
                {
                    playerScene = ResourceLoader.Load <PackedScene>(_playerPath);
                    player      = playerScene?.Instance() as KinematicBody;
                    if (player == null)
                    {
                        return;
                    }
                    GetParent().AddChild(player);
                    player.Name            = packet.Value.Name;
                    _globals.OwnPlayerBody = player;
                }
                else
                {
                    playerScene = ResourceLoader.Load <PackedScene>(_networkedPlayerPath);
                    player      = playerScene?.Instance() as KinematicBody;
                    if (player == null)
                    {
                        return;
                    }
                    AddChild(player);
                    player.Name = packet.Value.Name;
                    _globals.PlayerBodies.Add(player.Name, player);
                }

                Transform propTransform;
                if (packet.Value.Pos != null)
                {
                    propTransform          = player.Transform;
                    propTransform.origin.x = packet.Value.Pos.Value.X;
                    propTransform.origin.y = packet.Value.Pos.Value.Y;
                    propTransform.origin.z = packet.Value.Pos.Value.Z;
                    player.Transform       = propTransform;
                }
                else
                {
                    propTransform          = player.Transform;
                    propTransform.origin.x = DefaultSpawnPos.x;
                    propTransform.origin.y = DefaultSpawnPos.y;
                    propTransform.origin.z = DefaultSpawnPos.z;
                    player.Transform       = propTransform;
                }

                if (_globals.PlayingAsHost)
                {
                    SpawnPlayerCallback(packet.Value.Name, propTransform.origin, remoteId);
                    SendAllExitingPlayersCallback(remoteId);
                }

                break;
            }
        }
 public bool Process(PacketHolder packet)
 {
     nothingProcessor.Process(packet);
     return(true);
 }
 public PacketViewModel(PacketHolder packet, uint entry, string?objectName)
 {
     Packet     = packet;
     Entry      = entry;
     ObjectName = objectName;
 }