예제 #1
0
        public void NetworkSpawnPlayer(MyPlayerController spawnedPlayer, int spawnedPlayerId, int playerConnectionId)
        {
            // Player spawn msg
            SpawnPlayerMsg spm = new SpawnPlayerMsg();

            spm.PlayerId = spawnedPlayerId;
            if (playerConnectionId >= 0)
            {
                // For that player's connection, spawn as local player
                spm.IsLocalPlayer = true;
                spm.Serialize(GameStatics.OnlineSession.NetBuffer);
                GameStatics.OnlineSession.SendBufferToConnection(playerConnectionId, OnlineSession.ReliableSequencedChannelId);

                // Otherwise, spawn as not local
                spm.IsLocalPlayer = false;
                spm.Serialize(GameStatics.OnlineSession.NetBuffer);
                GameStatics.OnlineSession.SendBufferToAllClientsExcept(playerConnectionId, OnlineSession.ReliableSequencedChannelId);
            }
            else
            {
                // Server's player
                spm.IsLocalPlayer = false;
                spm.Serialize(GameStatics.OnlineSession.NetBuffer);
                GameStatics.OnlineSession.SendBufferToAllClients(OnlineSession.ReliableSequencedChannelId);
            }
        }
예제 #2
0
        public void HandleSpawnPlayerMsg(ref SpawnPlayerMsg msg, int connectionId)
        {
            if (GameStatics.OnlineSession.Mode == OnlineSessionMode.Client)
            {
                MyPlayerController spawnedPlayer = Instantiate(GameStatics.GameData.PlayerPrefab);
                SimulationSystem.RegisterPlayerControllerAtId(spawnedPlayer, msg.PlayerId, msg.IsLocalPlayer ? -1 : connectionId);

                // Handle local player camera
                if (msg.IsLocalPlayer)
                {
                    spawnedPlayer.OrbitCamera = Instantiate <OrbitCamera>(GameStatics.GameData.CameraPrefab);
                    spawnedPlayer.OrbitCamera.gameObject.tag = "MainCamera";
                }
            }
        }
예제 #3
0
        public void OnData(int connectionId, int channelId, int receiveSize, int msgId)
        {
            NetworkMessageID iMsgId = (NetworkMessageID)msgId;

            switch (iMsgId)
            {
            case (NetworkMessageID.SceneLoading):
                SceneLoadingMsg slm = new SceneLoadingMsg();
                slm.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleLoadSceneMsg(ref slm, connectionId);
                break;

            case (NetworkMessageID.TickSync):
                TickSyncMsg tsm = new TickSyncMsg();
                tsm.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleTickSyncMsg(ref tsm, connectionId);
                break;

            case (NetworkMessageID.SimpleEvent):
                SimpleEventMsg sem = new SimpleEventMsg();
                sem.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleSimpleEventMsg(connectionId, sem.Event);
                break;

            case (NetworkMessageID.SpawnPlayer):
                SpawnPlayerMsg spm = new SpawnPlayerMsg();
                spm.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleSpawnPlayerMsg(ref spm, connectionId);
                break;

            case (NetworkMessageID.SpawnCharacter):
                SpawnCharacterMsg scm = new SpawnCharacterMsg();
                scm.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleSpawnCharacterMsg(ref scm);
                break;

            case (NetworkMessageID.LazerHit):
                LazerFireMsg lhm = new LazerFireMsg();
                lhm.Deserialize(GameStatics.OnlineSession.NetBuffer);
                HandleLazerFireMsg(ref lhm);
                break;
            }
        }