public void UpdateSprite() { Vector2 pos = tile.gameObject.transform.position; Tile[,] grid = WorldManager.GetTerrainGrid(new Vector2(pos.x - 1, pos.y - 1), new Vector2Int(3, 3)); int[,] ids = new int[3, 3]; for (int x = 0; x < 3; ++x) { for (int y = 0; y < 3; ++y) { ids[x, y] = grid[x, y].tileData.Id; // if(x != 1 || y != 1){ // grid[x, y].AddDataChangeListener(UpdateSprite); // } } } TerrainBrush.TileType tileType = TerrainBrush.GetTileType(ids, 1, 1); //TerrainBrush.TileType tileType = TerrainBrush.TileType.Center; int other = TerrainBrush.GetOtherType(ids, 1, 1, tileType); if (tileType == TerrainBrush.TileType.Error) { tile.SetTileData(TileData.idToData[other]); return; } if (other != -1) { name = tile.tileData.Name + TileData.idToData[other].Name + (int)tileType; } else { name = tile.tileData.Name + "0"; } Sprite sprite = SpriteManager.GetTileSprite(name + "_" + currFrame.ToString()); if (sprite == null) { name = tile.tileData.Name + "0"; sprite = SpriteManager.GetTileSprite(name + "_" + currFrame.ToString()); } tile.spriteRenderer.sprite = sprite; if (!tile.tileData.IsWalkable) { tile.gameObject.AddComponent <PolygonCollider2D>(); } tile.tileScript.StartCoroutine(Animator()); }
public void UpdateSprite() { Vector2 pos = tile.gameObject.transform.position; Tile[,] grid = WorldManager.GetTerrainGrid(new Vector2(pos.x - 1, pos.y - 1), new Vector2Int(3, 3)); int[,] ids = new int[3, 3]; for (int x = 0; x < 3; ++x) { for (int y = 0; y < 3; ++y) { ids[x, y] = grid[x, y].tileData.Id; if (x != 1 || y != 1) { grid[x, y].AddDataChangeListener(UpdateSprite); } } } TerrainBrush.TileType tileType = TerrainBrush.GetTileType(ids, 1, 1); if (type == tileType && tileType != TerrainBrush.TileType.Error) { tile.spriteRenderer.sprite = sprite; if (!tile.tileData.IsWalkable) { tile.gameObject.AddComponent <PolygonCollider2D>(); } return; } type = tileType; int other = TerrainBrush.GetOtherType(ids, 1, 1, tileType); if (tileType == TerrainBrush.TileType.Error) { tile.SetTileData(TileData.idToData[other]); return; //SetTileAsCenter(); } else { string name = ""; if (other != -1) { name = tile.tileData.Name + TileData.idToData[other].Name + (int)tileType; tile.spriteRenderer.sortingLayerName = "Terrain"; sprite = SpriteManager.GetTileSprite(name); if (sprite == null) { SetTileAsCenter(); } } else { SetTileAsCenter(); } } tile.spriteRenderer.sprite = sprite; if (!tile.tileData.IsWalkable) { tile.gameObject.AddComponent <PolygonCollider2D>(); } if (!sprite) { int rand = Random.Range(0, tileAmounts); sprite = SpriteManager.GetTileSprite(tile.tileData.Name + rand.ToString()); } tile.spriteRenderer.sprite = sprite; if (!tile.tileData.IsWalkable) { tile.gameObject.AddComponent <PolygonCollider2D>(); } }
public AutoTile(int tileAmounts) { this.tileAmounts = tileAmounts; type = TerrainBrush.TileType.Error; }