void OnData(DataStreamReader stream, int i)
    {
        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.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            Debug.Log("Server update message received!");
            break;

        case Commands.PLAYER_JOIN:
            PlayerJoinMsg pjMsg = JsonUtility.FromJson <PlayerJoinMsg>(recMsg);
            Debug.Log("Player join message received!");
            playerJoinMsgs.Add(pjMsg);
            foreach (NetworkConnection cp in m_Connections)
            {
                SendToClient(JsonUtility.ToJson(pjMsg), cp);
            }
            break;

        case Commands.PLAYER_MOVEMONT:
            PlayerMovementMsg pmMsg = JsonUtility.FromJson <PlayerMovementMsg>(recMsg);
            Debug.Log("Player movement update message received!");
            foreach (NetworkConnection cp in m_Connections)
            {
                SendToClient(JsonUtility.ToJson(pmMsg), cp);
            }
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
Пример #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.HANDSHAKE:
            HandshakeMsg hsMsg = JsonUtility.FromJson <HandshakeMsg>(recMsg);
            Debug.Log("Handshake message received!");
            break;

        case Commands.PLAYER_UPDATE:
            PlayerUpdateMsg puMsg = JsonUtility.FromJson <PlayerUpdateMsg>(recMsg);
            Debug.Log("Player update message received!");
            break;

        case Commands.PLAYER_JOIN:
            PlayerJoinMsg pjMsg = JsonUtility.FromJson <PlayerJoinMsg>(recMsg);
            if (UID != pjMsg.uniqueid)
            {
                Instantiate(playerPrefab);
            }
            Debug.Log("Player join message received!");
            break;

        case Commands.PLAYER_MOVEMONT:
            PlayerMovementMsg pmMsg = JsonUtility.FromJson <PlayerMovementMsg>(recMsg);
            Debug.Log("Player movement update message received!");
            foreach (GameObject p in GameObject.FindGameObjectsWithTag("Player"))
            {
                if (p != myself)
                {
                    p.transform.position = pmMsg.PlayerPos;
                }
            }
            break;

        default:
            Debug.Log("Unrecognized message received!");
            break;
        }
    }
Пример #3
0
    void Update()
    {
        m_Driver.ScheduleUpdate().Complete();

        if (!m_Connection.IsCreated)
        {
            return;
        }

        if (myself)
        {
            PlayerMovementMsg m = new PlayerMovementMsg();
            m.PlayerPos = myself.transform.position;
            m.uniqueid  = UID;
            SendToServer(JsonUtility.ToJson(m));
        }


        DataStreamReader stream;

        NetworkEvent.Type cmd;
        cmd = m_Connection.PopEvent(m_Driver, out stream);
        while (cmd != NetworkEvent.Type.Empty)
        {
            if (cmd == NetworkEvent.Type.Connect)
            {
                OnConnect();
            }
            else if (cmd == NetworkEvent.Type.Data)
            {
                OnData(stream);
            }
            else if (cmd == NetworkEvent.Type.Disconnect)
            {
                OnDisconnect();
            }

            cmd = m_Connection.PopEvent(m_Driver, out stream);
        }
    }