void OnConnect(NetworkConnection c) { Debug.Log("Accepted a connection"); HandshakeMsg m = new HandshakeMsg(); m.player.id = c.InternalId.ToString(); m.player.cubeColor = new Color(Random.Range(0, 1f), Random.Range(0, 1f), Random.Range(0, 1f)); SendToClient(JsonUtility.ToJson(m), c); ListUpdateMsg lm = new ListUpdateMsg(); NetworkObjects.NetworkPlayer newPlayer = m.player; newPlayer.lastHB = 0f; playerList.Add(newPlayer); // lm.players = playerList; for (int i = 0; i < m_Connections.Length; ++i) { PlayerAddMsg am = new PlayerAddMsg(); am.player = m.player; SendToClient(JsonUtility.ToJson(am), m_Connections[i]); } SendToClient(JsonUtility.ToJson(lm), c); m_Connections.Add(c); Debug.Log("Connect Init Finished"); }
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); ownID = hsMsg.player.id; Debug.Log("Handshake message received!"); Debug.Log("Client ID is " + ownID); 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); foreach (var it in suMsg.players) { if (localPlayerList.ContainsKey(it.id)) { localPlayerList[it.id].transform.position = it.pos; } } //Debug.Log("Server update message received!"); break; case Commands.PLAYER_ADD: PlayerAddMsg aMsg = JsonUtility.FromJson <PlayerAddMsg>(recMsg); SpawnPlayer(aMsg.player.id, aMsg.player.cubeColor); Debug.Log("Add New Player, ID: " + aMsg.player.id); break; case Commands.LIST_UPDATE: ListUpdateMsg lMsg = JsonUtility.FromJson <ListUpdateMsg>(recMsg); foreach (var it in lMsg.players) { SpawnPlayer(it.id, it.cubeColor); Debug.Log("Spawn other player, ID: " + it.id); } break; case Commands.PLAYER_DROP: PlayerDropMsg dropMsg = JsonUtility.FromJson <PlayerDropMsg>(recMsg); foreach (var it in dropMsg.dplayers) { if (localPlayerList.ContainsKey(it.id)) { GameObject temp = localPlayerList[it.id]; localPlayerList.Remove(it.id); Destroy(temp); } } break; default: Debug.Log("Unrecognized message received!"); break; } }