void SendCharacterToNewClient(NetworkConnection nc) { CreatePlayerMsg m = new CreatePlayerMsg(nc); m.player.id = nc.InternalId.ToString(); allCubes.Add(m.player); SendToClient(JsonUtility.ToJson(m), nc); }
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; }
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; } }