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