/// <summary> /// Called whenever a new object is being initialized on the network /// </summary> /// <param name="behavior">The behavior for the object that is initialized</param> /// <param name="obj">The network object that is being initialized</param> private void ObjectInitialized(INetworkBehavior behavior, NetworkObject obj) { if (!(obj is NetworkCameraNetworkObject)) { return; } // Since the camera represents the player, if one is being created // we need to increment the player count for the display. NOTE: playerCount++; // When this object is destroyed we need to decrement the player count as the camera // represents the player obj.onDestroy += (sender) => { playerCount--; }; if (NetworkManager.Instance.Networker is IServer) { obj.Owner.disconnected += (sender) => { obj.Destroy(); } } ; netCam = obj as NetworkCameraNetworkObject; }
private void Start() { NetworkManager.Instance.objectInitialized += (INetworkBehavior behavior, NetworkObject obj) => { if (!(obj is NetworkCameraNetworkObject)) { return; } // Since the camera represents the player, if one is being created // we need to increment the player count for the display. NOTE: playerCount++; // When this object is destroyed we need to decrement the player count as the camera // represents the player obj.onDestroy += () => { playerCount--; }; if (NetworkManager.Instance.Networker is IServer) { obj.Owner.disconnected += () => { obj.Destroy(); } } ; netCam = obj as NetworkCameraNetworkObject; }; // Since this object is a singleton we can create the player from here as // it is in the scene at start time and we want to create a player camera // for this newly created server or newly connected client NetworkManager.Instance.InstantiateNetworkCamera(); NetworkManager.Instance.Networker.pingReceived += PingReceived; // If the current networker is the server, then setup the callbacks for when // a player connects if (NetworkManager.Instance.Networker is IServer) { // When a player is accepted on the server we need to send them the map // information through the rpc attached to this object NetworkManager.Instance.Networker.playerAccepted += (player) => { MainThreadManager.Run(() => { networkObject.SendRpc(player, RPC_INITIALIZE_MAP, min, max, SerializeMap()); }); }; } else { NetworkManager.Instance.Networker.disconnected += DisconnectedFromServer; } }