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); }
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; } }