// Return a copy of this tile grid. public TileGrid Duplicate() { TileGrid duplicate = new TileGrid(size, layerCount); // Duplicate tiles. for (int x = 0; x < size.X; x++) { for (int y = 0; y < size.Y; y++) { for (int i = 0; i < layerCount; i++) { TileGridTile tile = tiles[x, y, i]; if (tile.Tile != null && tile.Location == new Point2I(x, y)) { TileDataInstance tileCopy = new TileDataInstance(); tileCopy.Clone(tile.Tile); duplicate.PlaceTile(tileCopy, x, y, i); } } } } // Duplicate event tiles. foreach (EventTileDataInstance eventTile in eventTiles) { EventTileDataInstance copy = new EventTileDataInstance(); copy.Clone(eventTile); duplicate.AddEventTile(copy); } return(duplicate); }