Example #1
0
    public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod)
    {
        int packetID = reader.GetInt();

        switch (packetID)
        {
        case 2:
            Packet02CreateWorldObject worldPacket = new Packet02CreateWorldObject();
            worldPacket.Deserialize(reader);
            worldPacket.ExecuteClientSide();
            break;

        case 3:
            Packet03CreatePlayer createPlayer = new Packet03CreatePlayer();
            createPlayer.Deserialize(reader);
            createPlayer.ExecuteClientSide();
            break;

        case 4:
            Packet04PlayerMove playerMove = new Packet04PlayerMove();
            playerMove.Deserialize(reader);
            playerMove.ExecuteClientSide();
            break;
        }
    }
Example #2
0
    /**
     *  SPAWNING AND SENDING PLAYERS
     **/

    public void SendPlayersToClient(NetPeer peer, NetDataWriter writer)
    {
        Dictionary <Guid, Player> currentPlayers = clientPlayers;

        foreach (Player player in currentPlayers.Values)
        {
            Packet03CreatePlayer createPlayer = new Packet03CreatePlayer(player.guid, player.gameObject.transform.position, player.gameObject.transform.eulerAngles, false);
            createPlayer.Serialize(writer);
            peer.Send(writer, DeliveryMethod.ReliableUnordered);
        }
    }
Example #3
0
    /**
     *  SPAWNING AND MOVING PLAYERS
     **/

    public void AddPlayer(Packet03CreatePlayer packet)
    {
        if (packet.ourPlayer)
        {
            GameObject newPlayer = Instantiate(clientPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform);
            Player     player    = newPlayer.GetComponent <Player>();
            player.guid = packet.guid;

            clientPlayers.Add(packet.guid, player);
            Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server.");
        }
        else
        {
            GameObject newPlayer = Instantiate(serverPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform);
            Player     player    = newPlayer.GetComponent <Player>();
            player.guid = packet.guid;

            clientPlayers.Add(packet.guid, player);
            Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server.");
        }
    }
Example #4
0
    public void OnPeerConnected(NetPeer peer)
    {
        Debug.Log("[SERVER] We have new peer " + peer.EndPoint);
        connectedPeers.Add(peer);

        NetDataWriter peerWriter = new NetDataWriter();

        // Send all objects to client
        ServerObjects.Instance.SendObjectsToClient(peer, peerWriter);

        // Then send them all players that are already in the game
        ServerObjects.Instance.SendPlayersToClient(peer, peerWriter);

        // Then create OUR player and send them our player
        Packet03CreatePlayer newClientPlayer = new Packet03CreatePlayer(Guid.NewGuid(), ServerObjects.Instance.spawnPoint.transform.position, Vector3.zero, true);

        newClientPlayer.Serialize(peerWriter);
        peer.Send(peerWriter, DeliveryMethod.ReliableUnordered);

        // Send this new player to server clients as well
        newClientPlayer.ExecuteServerSide(peer, peerWriter);
    }
Example #5
0
    public void AddPlayer(Packet03CreatePlayer packet, NetPeer thisPeer, NetDataWriter writer)
    {
        GameObject newPlayer = Instantiate(serverPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform);
        Player     player    = newPlayer.GetComponent <Player>();

        player.guid      = packet.guid;
        player.ipAddress = thisPeer.EndPoint.Address.ToString();
        player.port      = thisPeer.EndPoint.Port;

        clientPlayers.Add(player.guid, player);
        Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server.");

        // If this is the server - we should send this new player to our connected clients - apart from our new one
        foreach (NetPeer peer in Server.Instance.connectedPeers)
        {
            if (peer != thisPeer)
            {
                Packet03CreatePlayer createPlayer = packet;
                createPlayer.ourPlayer = false;
                createPlayer.Serialize(writer);
                peer.Send(writer, DeliveryMethod.ReliableUnordered);
            }
        }
    }