public override void Update(float deltaTime) { baseGameplay.Update(deltaTime); if (invalidatedTiles.Count > 0) { MemoryStream ms = new MemoryStream(); BinaryWriter bw = new BinaryWriter(ms); bw.Write(invalidatedTiles.Count); foreach (TilePosition pos in invalidatedTiles) { Tile tile = world.tileManager.GetTile(pos); SerializationUtils.Write(bw, pos); bw.Write(tile.Serialize()); } stats.multiplayerSentTiles += invalidatedTiles.Count; invalidatedTiles.Clear(); server.SendToEveryone( new MultiplayerAction( MultiplayerAction.Action.TILE_INVALIDATED, ms.ToArray()), -1); } if (world.avatarManager.player != null) { timerSendPosition += deltaTime; if (timerSendPosition > 0.1f) { server.SendToEveryone(new MultiplayerAction( MultiplayerAction.Action.AVATAR_MOVE, new String[] { world.avatarManager.player.objectId.ToString(), world.avatarManager.player.position.x.ToString(), world.avatarManager.player.position.y.ToString(), world.avatarManager.player.position.z.ToString(), world.avatarManager.player.rotation.x.ToString(), world.avatarManager.player.rotation.y.ToString(), world.avatarManager.player.rotation.z.ToString() }), world.avatarManager.player.objectId); timerSendPosition = 0.0f; } } server.Update(); }