/// <summary> /// Occupies the area /// </summary> /// <param name="gridPos"></param> /// <param name="size"></param> public void Occupy(Vector2Int gridPos, Vector2Int size) { m_IsOccupied = true; if (m_SpawnedTile != null) { m_SpawnedTile.SetState(PlacementTileState.Filled); } }
/// <summary> /// Instantiates Tile Objects to visualise the grid and sets up the <see cref="m_AvailableCells" /> /// </summary> protected void SetUpGrid() { PlacementTile tileToUse = placementTilePrefab; if (tileToUse != null) { // Create a container that will hold the cells. var tilesParent = new GameObject("Container"); tilesParent.transform.parent = transform; tilesParent.transform.localPosition = Vector3.zero; tilesParent.transform.localRotation = Quaternion.identity; m_Tiles = new PlacementTile[dimensions.x, dimensions.y]; for (int y = 0; y < dimensions.y; y++) { for (int x = 0; x < dimensions.x; x++) { Vector3 targetPos = GridToWorld(new Vector2Int(x, y), new Vector2Int(1, 1)); targetPos.y += 0.01f; PlacementTile newTile = Instantiate(tileToUse); newTile.transform.parent = tilesParent.transform; newTile.transform.position = targetPos; newTile.transform.localRotation = Quaternion.identity; m_Tiles[x, y] = newTile; newTile.SetState(PlacementTileState.Empty); } } } }