public virtual void RemoveTile(EditorGridPosition info) { tileDictionary.Remove(info.gridPosition); info.worldUnitHeight = info.baseWorldUnitHeight; info.savedWorldUnitHeight = info.baseWorldUnitHeight; DestroyImmediate(info.tile.gameObject); }
public void CalculateHeight(EditorTile tile, EditorGridPosition info, float y) { int numLayers = y >= .75 ? 2 : y >= .5 ? 1 : y <= -.75 ? -2 : y <= .5 ? -1 : 0; int height = Mathf.FloorToInt(numLayers * tileHeightPerLayer); info.worldUnitHeight = info.savedWorldUnitHeight + height; tileDictionary[tile.gridPosition].worldHeight = info.worldUnitHeight; }
public override bool Equals(object obj) { if (obj is EditorGridPosition) { EditorGridPosition p = (EditorGridPosition)obj; return(gridPosition == p.gridPosition); } return(false); }
public void ExtrudeTiles(Vector3 dir) { foreach (EditorTile selectedTile in selectedTiles) { EditorGridPosition info = editorPositions.Find(x => x.gridPosition == selectedTile.gridPosition); GridTile tile = tileDictionary[info.tile.gridPosition]; tile.tileType = GridTile.TileType.Inactive; Vector3 scaledDir = new Vector3(dir.x * scaledWidth, dir.y * scaledHeight, dir.z); Vector3 pos = info.worldPosition + scaledDir; Instantiate(tile, pos, Quaternion.identity, container); } }
public void PlaceTile(EditorGridPosition info, int tileIndex) { container = GameObject.Find(stageName).transform; if (container == null) { container = new GameObject(stageName).transform; } EditorTile editorTile = new GameObject( string.Format("[{0}, {1}] {2}", info.gridPosition.x, info.gridPosition.y, tileInfo[tileIndex].sprite.name) ).AddComponent <EditorTile>(); editorTile.gameObject.AddComponent <SpriteRenderer>().sprite = tileInfo[tileIndex].sprite; editorTile.gridPosition = info.gridPosition; editorTile.placementLayer = tileInfo[tileIndex].placementLayer; editorTile.numLayers = tileInfo[tileIndex].numLayers; Vector3 offset = new Vector3(); if (tileInfo[tileIndex].numLayers == 1) { offset.y = tileInfo[tileIndex].placementLayer == 1 ? scaledHeight * .25f : -scaledHeight * .25f; } info.offsetY += offset; editorTile.transform.position = info.worldPosition + offset; editorTile.transform.SetParent(container); editorTile.tileType = tileInfo[tileIndex].tileType; editorTile.savedPosition = info.worldPosition; editorTile.scaleX = editorTile.transform.localScale.x; editorTile.scaleY = editorTile.transform.localScale.y; info.tile = editorTile; GridTile tile = editorTile.gameObject.AddComponent <GridTile>(); tile.gridPosition = info.gridPosition; tile.tileType = editorTile.tileType; if (tileInfo[tileIndex].numLayers == 1) { info.worldUnitHeight += tileInfo[tileIndex].placementLayer == 2 ? tileHeightPerLayer : tileHeightPerLayer * 2; } else { info.worldUnitHeight += tileHeightPerLayer * 2; } info.savedWorldUnitHeight = info.worldUnitHeight; tile.worldHeight = info.worldUnitHeight; tileDictionary.Add(editorTile.gridPosition, tile); GetAdjacentTiles(info); }
public void ResetTilePositions() { foreach (EditorTile selectedTile in selectedTiles) { EditorGridPosition info = editorPositions.Find(x => x.gridPosition == selectedTile.gridPosition); selectedTile.moveGridX = 0; selectedTile.moveGridY = 0; selectedTile.moveWorldX = 0; selectedTile.moveWorldY = 0; selectedTile.transform.position = selectedTile.savedPosition + info.offsetY; info.worldPosition = info.savedWorldPosition; info.worldUnitHeight = info.savedWorldUnitHeight; tileDictionary[selectedTile.gridPosition].worldHeight = info.savedWorldUnitHeight; } }
public void AdjustTilePositions() { foreach (EditorTile selectedTile in selectedTiles) { EditorGridPosition info = editorPositions.Find(x => x.gridPosition == selectedTile.gridPosition); selectedTile.moveGridX = selectedTiles[0].moveGridX; selectedTile.moveGridY = selectedTiles[0].moveGridY; selectedTile.moveWorldX = selectedTiles[0].moveWorldX; selectedTile.moveWorldY = selectedTiles[0].moveWorldY; float isoX = (selectedTile.moveGridX * scaledWidth * .5f) + (selectedTile.moveGridY * scaledWidth * .5f); float isoY = (selectedTile.moveGridY * scaledHeight * .5f) - (selectedTile.moveGridX * scaledHeight * .5f); Vector3 newPosition = new Vector3(isoX + (selectedTile.moveWorldX * scaledWidth), isoY + (selectedTile.moveWorldY * scaledHeight), 0); selectedTile.transform.position = selectedTile.savedPosition + newPosition + info.offsetY; info.worldPosition = info.savedWorldPosition + newPosition; CalculateHeight(selectedTile, info, selectedTile.moveWorldY); } }
public void GetAdjacentTiles(EditorGridPosition info) { for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { GridPosition newGridPos = info.gridPosition + new GridPosition(x, y); float isoX = (x * scaledWidth * .5f) + (y * scaledWidth * .5f); float isoY = (y * scaledHeight * .5f) - (x * scaledHeight * .5f); float depth = x - y; Vector3 newWorldPos = info.worldPosition + new Vector3(isoX, isoY, -depth); EditorGridPosition newInfo = new EditorGridPosition(newGridPos, newWorldPos, info.baseWorldUnitHeight); if (!editorPositions.Contains(newInfo)) { editorPositions.Add(newInfo); } } } }
public void SelectTile(EditorGridPosition info) { selectedTiles.Add(tileDictionary[info.gridPosition].GetComponent <EditorTile>()); }