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); } }
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"; } } }
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; } }