protected virtual void HandleServerSceneChange(LiteNetLibMessageHandler messageHandler) { // Received scene name from server ServerSceneChangeMessage message = messageHandler.ReadMessage <ServerSceneChangeMessage>(); string serverSceneName = message.serverSceneName; if (IsServer) { // If it is host (both client and server) it will send ready state to spawn player's character without scene load if (string.IsNullOrEmpty(serverSceneName) || serverSceneName.Equals(SceneManager.GetActiveScene().name)) { OnClientOnlineSceneLoaded(); SendClientReady(); } return; } if (string.IsNullOrEmpty(serverSceneName) || serverSceneName.Equals(SceneManager.GetActiveScene().name)) { Assets.Initialize(); OnClientOnlineSceneLoaded(); SendClientReady(); } else { // If scene is difference, load changing scene LoadSceneRoutine(serverSceneName, true).Forget(); } }
public void SendServerSceneChange(long connectionId, string sceneName) { if (!IsServer) { return; } ServerSceneChangeMessage message = new ServerSceneChangeMessage(); message.serverSceneName = sceneName; ServerSendPacket(connectionId, DeliveryMethod.ReliableOrdered, GameMsgTypes.ServerSceneChange, message); }
protected virtual void HandleServerSceneChange(LiteNetLibMessageHandler messageHandler) { // Server scene changes made from server, if this is host (client and server) then skip it. if (IsServer) { return; } // Scene name sent from server ServerSceneChangeMessage message = messageHandler.ReadMessage <ServerSceneChangeMessage>(); string serverSceneName = message.serverSceneName; if (string.IsNullOrEmpty(serverSceneName) || serverSceneName.Equals(SceneManager.GetActiveScene().name)) { Assets.Initialize(); OnClientOnlineSceneLoaded(); SendClientReady(); } else { // If scene is difference, load changing scene StartCoroutine(LoadSceneRoutine(serverSceneName, true)); } }