public void Open(Tile tile) { if (tile.TileAsset is SpriteTileAsset == false) { Hide(); return; } Clear(); selectedTile = tile; SpriteTileAsset tileAsset = (SpriteTileAsset)tile.TileAsset; SetWindowPosition(new Vector2(tile.X, tile.Y)); window.gameObject.SetActive(true); foreach (Sprite s in tileAsset.RuleSprites) { TileChangeOption go = Instantiate(tileOptionPrefab, tileOptionParent); go.Initialize(this, s); options.Add(go); } }
/// <summary> /// Refreshes the graphic. Only gets called if the TileAsset is a SpriteTileAsset. /// </summary> public void RefreshGraphic() { if (TileAsset == null) { return; } if (TileAsset is SpriteTileAsset == false) { return; } SpriteTileAsset tileAsset = (SpriteTileAsset)TileAsset; if (UseManualSprite) { SpriteRenderer.sprite = tileAsset.RuleSprites.First(s => s.name == ManualSpriteName); return; } string spriteName = $"{TileAsset.name}_"; Tile t = Layer.GetTile(X, Y + 1); if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreVerticalTiles == false) { spriteName += "U"; } t = Layer.GetTile(X + 1, Y); if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreHorizontalTiles == false) { spriteName += "R"; } t = Layer.GetTile(X, Y - 1); if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreVerticalTiles == false) { spriteName += "D"; } t = Layer.GetTile(X - 1, Y); if (t != null && t.TileAsset != null && t.TileAsset.name == TileAsset.name && tileAsset.IgnoreHorizontalTiles == false) { spriteName += "L"; } if (Flipped) { spriteName += "F"; } Sprite sprite = tileAsset.RuleSprites.FirstOrDefault(s => s.name == spriteName); if (sprite == null) { sprite = tileAsset.DefaultSprite; } SpriteRenderer.sprite = sprite; TileAsset.Initialize(this); }