internal void ClientSceneMessage(INetworkConnection conn, SceneMessage msg)
        {
            if (!client.IsConnected)
            {
                throw new InvalidOperationException("ClientSceneMessage: cannot change network scene while client is disconnected");
            }

            if (client.IsLocalClient)
            {
                throw new InvalidOperationException("ClientSceneMessage: cannot change client network scene while operating in host mode");
            }

            if (string.IsNullOrEmpty(msg.sceneName))
            {
                throw new ArgumentNullException(msg.sceneName, "ClientSceneMessage: " + msg.sceneName + " cannot be empty or null");
            }

            if (logger.LogEnabled())
            {
                logger.Log("ClientSceneMessage: changing scenes from: " + NetworkSceneName + " to:" + msg.sceneName);
            }

            // Let client prepare for scene change
            OnClientChangeScene(msg.sceneName, msg.sceneOperation);

            StartCoroutine(ApplySceneOperation(msg.sceneName, msg.sceneOperation));
        }
Exemple #2
0
        public virtual void ServerChangeScene(string newSceneName, LoadSceneMode sceneMode, LocalPhysicsMode physicsMode)
        {
            if (string.IsNullOrEmpty(newSceneName))
            {
                Debug.LogError("ServerChangeScene empty scene name");
                return;
            }

            if (LogFilter.Debug)
            {
                Debug.Log("ServerChangeScene " + newSceneName);
            }
            NetworkServer.SetAllClientsNotReady();
            networkSceneName = newSceneName;

            LoadSceneParameters loadSceneParameters = new LoadSceneParameters(sceneMode, physicsMode);

            loadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName, loadSceneParameters);

            SceneMessage msg = new SceneMessage()
            {
                sceneName   = newSceneName,
                sceneMode   = loadSceneParameters.loadSceneMode,
                physicsMode = loadSceneParameters.localPhysicsMode
            };

            NetworkServer.SendToAll(msg);

            startPositionIndex = 0;
            startPositions.Clear();
        }
Exemple #3
0
        internal void ClientSceneMessage(INetworkConnection conn, SceneMessage msg)
        {
            if (!client.IsConnected)
            {
                throw new InvalidOperationException("ClientSceneMessage: cannot change network scene while client is disconnected");
            }
            if (string.IsNullOrEmpty(msg.scenePath))
            {
                throw new ArgumentNullException(msg.scenePath, "ClientSceneMessage: " + msg.scenePath + " cannot be empty or null");
            }

            if (logger.LogEnabled())
            {
                logger.Log("ClientSceneMessage: changing scenes from: " + NetworkScenePath + " to:" + msg.scenePath);
            }

            // Let client prepare for scene change
            OnClientChangeScene(msg.scenePath, msg.sceneOperation);

            //Additive are scenes loaded on server and this client is not a host client
            if (msg.additiveScenes != null && msg.additiveScenes.Length > 0 && client && !client.IsLocalClient)
            {
                foreach (string scene in msg.additiveScenes)
                {
                    pendingAdditiveSceneList.Add(scene);
                }
            }

            StartCoroutine(ApplySceneOperation(msg.scenePath, msg.sceneOperation));
        }
Exemple #4
0
        void OnClientSceneInternal(INetworkConnection conn, SceneMessage msg)
        {
            logger.Log("NetworkManager.OnClientSceneInternal");

            if (client.IsConnected && !server.Active)
            {
                ClientChangeScene(msg.sceneName, msg.sceneOperation, msg.customHandling);
            }
        }
        internal void OnClientSceneInternal(NetworkConnection conn, SceneMessage msg)
        {
            if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientSceneInternal");

            string newSceneName = msg.value;

            if (NetworkClient.isConnected && !NetworkServer.active)
            {
                ClientChangeScene(newSceneName, true);
            }
        }
        internal void OnServerConnectInternal(NetworkConnection conn, ConnectMessage connectMsg)
        {
            if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerConnectInternal");

            if (networkSceneName != "" && networkSceneName != offlineScene)
            {
                SceneMessage msg = new SceneMessage(networkSceneName);
                conn.Send(msg);
            }

            OnServerConnect(conn);
        }
Exemple #7
0
        void OnClientSceneInternal(NetworkConnection conn, SceneMessage msg)
        {
            if (LogFilter.Debug)
            {
                Debug.Log("NetworkManager.OnClientSceneInternal");
            }

            if (NetworkClient.isConnected && !NetworkServer.active)
            {
                ClientChangeScene(msg.sceneName, true, msg.sceneMode, msg.physicsMode);
            }
        }
        void OnClientSceneInternal(NetworkConnection conn, SceneMessage msg)
        {
            if (LogFilter.Debug)
            {
                Debug.Log("NetworkManager.OnClientSceneInternal");
            }

            if (client.IsConnected && !server.active)
            {
                ClientChangeScene(msg.sceneName, msg.sceneOperation, msg.customHandling);
            }
        }
        // called after successful authentication
        void OnServerAuthenticated(INetworkConnection conn)
        {
            logger.Log("NetworkSceneManager.OnServerAuthenticated");

            // proceed with the login handshake by calling OnServerConnect
            if (!string.IsNullOrEmpty(NetworkSceneName))
            {
                var msg = new SceneMessage {
                    sceneName = NetworkSceneName
                };
                conn.Send(msg);
            }
        }
        public void TestPacking()
        {
            SceneMessage message = new SceneMessage()
            {
                value = "Hello world"
            };

            byte[] data = MessagePacker.Pack(message);

            SceneMessage unpacked = MessagePacker.Unpack <SceneMessage>(data);

            Assert.That(unpacked.value, Is.EqualTo("Hello world"));
        }
Exemple #11
0
        // called after successful authentication
        void OnServerAuthenticated(INetworkConnection conn)
        {
            // a connection has been established,  register for our messages
            RegisterServerMessages(conn);

            logger.Log("NetworkManager.OnServerAuthenticated");

            // proceed with the login handshake by calling OnServerConnect
            if (!string.IsNullOrEmpty(networkSceneName))
            {
                var msg = new SceneMessage {
                    sceneName = networkSceneName
                };
                conn.Send(msg);
            }
        }
        public virtual void ServerChangeScene(string newSceneName)
        {
            if (string.IsNullOrEmpty(newSceneName))
            {
                Debug.LogError("ServerChangeScene empty scene name");
                return;
            }

            if (LogFilter.Debug) Debug.Log("ServerChangeScene " + newSceneName);
            NetworkServer.SetAllClientsNotReady();
            networkSceneName = newSceneName;

            s_LoadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName);

            SceneMessage msg = new SceneMessage(networkSceneName);
            NetworkServer.SendToAll(msg);

            s_StartPositionIndex = 0;
            startPositions.Clear();
        }