public static bool IsGridPassableAtCoordinate(Grid gameWorldGrid, Vector2Int position) { bool foundPassible = false; for (var i = 0; i < gameWorldGrid.transform.childCount; i++) { Tilemap child = gameWorldGrid.transform.GetChild(i).GetComponent <Tilemap>(); child.CompressBounds(); TileBase tile = child.GetTile(new Vector3Int(position.x, position.y, 0)); if (tile == null) { continue; } BlockingTile convertedTile = tile as BlockingTile; if ((convertedTile != null) && (convertedTile.isImpassible)) { // Debug.Log("Tile is impassible: " + convertedTile.isImpassible); return(false); } else { foundPassible = true; } } return(foundPassible); }
void BuildBlockingTiles(List <BlockingTileSpawnInfo> layout) { //blocker tiles foreach (BlockingTileSpawnInfo info in layout) { BlockingTile t = CreateBlockerTileAt(info.GridPosition); t.SetHealth(info.Health); } }
public override void EnableInspector(Tile t) { base.EnableInspector(t); if (!(t is BlockingTile)) { throw new System.Exception("trying to inspect tile with non suitable tile inspector"); } blockerTileInspecting = t as BlockingTile; health.text = blockerTileInspecting.Health.ToString(); }
public BlockingTile CreateBlockerTileAt(Vector2Int pos) { //TODO check if in bounds probably; GameObject obj = Instantiate(blockingTilePrefab); BlockingTile t = obj.GetComponent <BlockingTile>(); t.Initialize(new Vector3Int(pos.x, pos.y, 0), this); t.name = t.GetType().ToString() + ": " + t.LayeredGridPosition.ToString(); t.PlaceInWorld(); t.transform.SetParent(transform); Tiles.Add(t.LayeredGridPosition, t); OnTileCreated?.Invoke(t); return(t); }