void WorkshopMode() { //Find mouse position and convert that to the cell on Tilemap if (workshopCamera.enabled == true) { mousePosition = workshopCamera.ScreenToWorldPoint(Input.mousePosition); } cellPosition = buildingMap.WorldToCell(mousePosition); if (Input.GetMouseButton(0)) { map.SetTile(cellPosition, equippedBlock); //Add a new tile to a seperate Tilemap //Creating an array of tiles and their positions to be copied and pasted later SaveTiles save = SaveTiles.CreateInstance(map.GetTile(cellPosition), cellPosition); tileCreation.Add(save); } //Keep the cursor updated to the current tile else if (cellPosition != previousCell) { buildingMap.SetTile(cellPosition, equippedBlock); buildingMap.SetTile(previousCell, null); previousCell = cellPosition; } }
public static SaveTiles CreateInstance(TileBase tile, Vector3Int tileLocation) { SaveTiles data = ScriptableObject.CreateInstance <SaveTiles>(); data.Init(tile, tileLocation); return(data); }
//Gets the relative location of all the tiles based on the baseTile void GetRelativeLocation() { baseTile = GetLowestRelativeY(tileCreation); foreach (SaveTiles tiles in tileCreation) { Debug.Log(tiles.tileLocation + "" + baseTile.tileLocation + "" + (baseTile.tileLocation.x - tiles.tileLocation.x)); Vector3Int relativeLoc = new Vector3Int(baseTile.tileLocation.x - tiles.tileLocation.x, baseTile.tileLocation.y - tiles.tileLocation.y, baseTile.tileLocation.z - tiles.tileLocation.z); SaveTiles save = SaveTiles.CreateInstance(tiles.tile, relativeLoc); relativeTileCreation.Add(save); } }
//Find the lowest block in the creation to use as placement SaveTiles GetLowestRelativeY(List <SaveTiles> saveTiles) { SaveTiles lowestRelativeY = null; foreach (SaveTiles tiles in saveTiles) { if (lowestRelativeY == null) { lowestRelativeY = tiles; } else if (lowestRelativeY.tileLocation.y > tiles.tileLocation.y) { lowestRelativeY = tiles; } } return(lowestRelativeY); }