public Tile AddTile() { var tile = Tileset.AddTile(); if (TilesetModified != null) { TilesetModified(this, new EventArgs()); } return(tile); }
private void AppendNewTilesToSheet(List <WriteableBitmap> tempTiles) { var total = tempTiles.Count; var tileWidth = Tilesheet.PixelWidth / 16; var addedTileHeight = (int)Math.Ceiling(total / (double)tileWidth); var tilesheet = new WriteableBitmap(Tilesheet.PixelWidth, Tilesheet.PixelHeight + addedTileHeight * 16, 96, 96, PixelFormats.Pbgra32, null); var writeableSource = BitmapFactory.ConvertToPbgra32Format(Tilesheet); var originalRect = new System.Windows.Rect(0, 0, Tilesheet.PixelWidth, Tilesheet.PixelHeight); tilesheet.Blit(originalRect, writeableSource, originalRect); var x = 0; var y = Tilesheet.PixelHeight; var source = new System.Windows.Rect(0, 0, 16, 16); foreach (var frame in tempTiles) { var dest = new System.Windows.Rect(x, y, 16, 16); tilesheet.Blit(dest, frame, source); var tile = Tileset.AddTile(); tile.Sprite.CurrentFrame.SetSheetPosition(x, y); if (x < 16 * (tileWidth - 1)) { x += 16; } else { x = 0; y += 16; } } Tilesheet = tilesheet; SpriteBitmapCache.InsertSource(Tileset.SheetPath.Absolute, tilesheet); Tileset.RefreshSheet(); }
public static void CreateTilesFromChildren(Tileset tileset) { var children = tileset.transform.Cast <Transform>().ToList(); foreach (Transform child in children) { if (child.GetComponent <Tile>() != null) { continue; } GameObject newTile = new GameObject(child.gameObject.name); newTile.transform.parent = tileset.transform; newTile.transform.position = child.position; child.SetParent(newTile.transform); var tile = newTile.AddComponent <Tile>(); tile.SetBoundsFromChildren(); tile.GetIdFromTileset(tileset); tileset.AddTile(tile); } }