void SendCharacterToNewClient(NetworkConnection nc)
    {
        CreatePlayerMsg m = new CreatePlayerMsg(nc);

        m.player.id = nc.InternalId.ToString();
        allCubes.Add(m.player);
        SendToClient(JsonUtility.ToJson(m), nc);
    }
Exemple #2
0
    void SpawnMyCube(CreatePlayerMsg m)
    {
        activeCubes = new List <GameObject>();

        Vector3    pos    = new Vector3(m.player.X, m.player.Y, m.player.Z);
        Color      newCol = new Color(m.player.R, m.player.G, m.player.B);
        GameObject p1     = Instantiate(localCube, pos, new Quaternion(0, 0, 0, 0));

        p1.GetComponent <CubeBase>().id = m.player.id;
        activeCubes.Add(p1);

        CubeInstantiated = true;
    }
Exemple #3
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.SERVER_UPDATE:
            ServerUpdateMsg suMsg = JsonUtility.FromJson <ServerUpdateMsg>(recMsg);
            for (int i = 0; i < suMsg.players.Count; i++)
            {
                bool spawned = false;
                foreach (GameObject p in activeCubes)
                {
                    if (p.GetComponent <CubeBase>().id == suMsg.players[i].id)
                    {
                        spawned = true;

                        p.GetComponent <CubeBase>().ColourChange(suMsg.players[i].R, suMsg.players[i].G, suMsg.players[i].B);

                        if (p.GetComponent <PlayerCube>() == null)
                        {
                            p.transform.position = new Vector3(suMsg.players[i].X, suMsg.players[i].Y, suMsg.players[i].Z);
                        }
                    }
                }

                if (!spawned)
                {
                    AddCube(suMsg.players[i]);
                }
            }
            //Debug.Log("Server update message received!");
            break;

        case Commands.CREATE_PLAYER:
            // Create local cube
            Debug.Log("CREATE PLAYER message received!");
            CreatePlayerMsg myCubeMsg = JsonUtility.FromJson <CreatePlayerMsg>(recMsg);
            SpawnMyCube(myCubeMsg);
            break;

        case Commands.DESTROY_PLAYER:
            //
            Debug.Log("DESTROY_PLAYER message received!");
            DisconnectedPlayerMsg dpMsg = JsonUtility.FromJson <DisconnectedPlayerMsg>(recMsg);
            for (int i = 0; i < activeCubes.Count; i++)
            {
                if (activeCubes[i].GetComponent <CubeBase>().id == dpMsg.droppedID)
                {
                    activeCubes[i].SetActive(false);
                    //DestroyImmediate(activeCubes[i]);
                    activeCubes.RemoveAt(i);
                    i--;
                }
            }
            break;

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