void OnConnect(NetworkConnection c)
    {
        Debug.Log("Accepted a connection");

        // Send Own id
        OwnIDMsg idMsg = new OwnIDMsg();

        idMsg.ownedPlayer.id        = c.InternalId.ToString();
        idMsg.ownedPlayer.cubeColor = new Color(Random.Range(0, 1.0f), Random.Range(0, 1.0f), Random.Range(0, 1.0f));
        Debug.Log("Sending player id: " + idMsg.ownedPlayer.id);
        SendToClient(JsonUtility.ToJson(idMsg), c);

        NetworkObjects.NetworkPlayer newPlayer = new NetworkObjects.NetworkPlayer();
        newPlayer.id        = c.InternalId.ToString();
        newPlayer.cubeColor = idMsg.ownedPlayer.cubeColor;
        plMsg.players.Add(newPlayer);
        msgInterval.Add(0.0f);

        // Example to send a Connect message to the client
        for (int i = 0; i < m_Connections.Length; i++)
        {
            PlayerConnectMsg m = new PlayerConnectMsg();
            Debug.Log("Send Player Connect");
            m.newPlayer.id        = c.InternalId.ToString();
            m.newPlayer.cubeColor = idMsg.ownedPlayer.cubeColor;
            SendToClient(JsonUtility.ToJson(m), m_Connections[i]);
        }

        SendToClient(JsonUtility.ToJson(plMsg), c);
        m_Connections.Add(c);
    }
예제 #2
0
    void OnData(DataStreamReader stream)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        NetworkHeader header = JsonUtility.FromJson <NetworkHeader>(recMsg);

        switch (header.cmd)
        {
        case Commands.PLAYER_CONNECT:
            PlayerConnectMsg pcMsg = JsonUtility.FromJson <PlayerConnectMsg>(recMsg);
            SpawnPlayers(pcMsg.newPlayer.id, pcMsg.newPlayer.cubeColor);
            Debug.Log("New Player joined");
            break;

        case Commands.INVERT_BALL:

            GameObject.FindGameObjectWithTag("Ball").GetComponent <Ball>().invert = -1;
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            UpdatePlayers(puMsg.players);

            break;

        case Commands.OWNED_ID:
            OwnIDMsg idMsg = JsonUtility.FromJson <OwnIDMsg>(recMsg);
            playerID = idMsg.ownedPlayer.id;
            Debug.Log("Own id received! id: " + playerID);
            break;

        case Commands.PLAYER_DROPPED:
            PlayerDropMsg dropMsg = JsonUtility.FromJson <PlayerDropMsg>(recMsg);
            foreach (NetworkObjects.NetworkPlayer p in dropMsg.droppedPlayers)
            {
                DestroyPlayers(p.id);
            }
            break;

        case Commands.PLAYER_LIST:
            PlayerListMsg plMsg = JsonUtility.FromJson <PlayerListMsg>(recMsg);
            foreach (var it in plMsg.players)
            {
                SpawnPlayers(it.id, it.cubeColor);
                Debug.Log("Spawn player with id: " + it.id);
            }
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }