Exemplo n.º 1
0
    /// <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;
        }
    }