Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        public void SendServerSceneChange(long connectionId, string sceneName)
        {
            if (!IsServer)
            {
                return;
            }
            ServerSceneChangeMessage message = new ServerSceneChangeMessage();

            message.serverSceneName = sceneName;
            ServerSendPacket(connectionId, DeliveryMethod.ReliableOrdered, GameMsgTypes.ServerSceneChange, message);
        }
Esempio n. 3
0
        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));
            }
        }