public void PlaceTile(TileInteger tileType, Vector3Int position) { if (grid.CreateTile(tileType, position)) { Tile tile = Instantiate(tileTypes.GetPrefab(tileType), position, Quaternion.identity); GameObject tileGO = tile.gameObject; MonoBehaviour[] behaviorsOnTile = tileGO.GetComponents <MonoBehaviour>(); for (int i = 0; i < behaviorsOnTile.Length; i++) { Destroy(behaviorsOnTile[i]); } Joint[] joints = tileGO.GetComponents <Joint>(); for (int i = 0; i < joints.Length; i++) { Destroy(joints[i]); } Rigidbody rb; if (tileGO.TryGetComponent <Rigidbody>(out rb)) { Destroy(rb); } } else { RangeExceeded.Invoke(); } }
public Tile GetPrefab(TileInteger tile) { for (int i = 0; i < tiles.Length; i++) { if (tile == tiles[i].tileType) { return(tiles[i].tilePrefab.GetComponent <Tile>()); } } return(null); }
public bool CreateTile(TileInteger tile, Vector3Int position) { if (PositionIsInsideGrid(position) && !PositionIsFilled(position)) { PositionTile pTile = new PositionTile(); pTile.position = position; pTile.tile = (int)tile; grid.tiles.Add(pTile); return(true); } return(false); }