private GameObject InstantiateRectangleStandardTile(List <Vector2> rectangle, Transform parent) { Vector2 centerGridPosition = rectangle.Center(); Vector2 startGridPosition = rectangle.Lowest(); Vector2 endGridPosition = rectangle.Highest(); Vector2 centerWorldPosition = LevelEditorGridHelper.GridToNodePosition(centerGridPosition); Vector2 startWorldPosition = LevelEditorGridHelper.GridToNodePosition(startGridPosition); Vector2 endWorldPosition = LevelEditorGridHelper.GridToNodePosition(endGridPosition); Vector2 offset = VectorHelper.Abs(endWorldPosition - startWorldPosition); float nodeSize = LevelEditorGridNodeSizeLibrary.Instance.NodeSize; float width = offset.x + nodeSize; float height = offset.y + nodeSize; Vector2 scale = new Vector2(width, height); GenerateableTileNode generatableTileNode = GenerateableTileLibrary.GetGeneratableTileNode(TileType.Standard); GameObject standardTile = Object.Instantiate(generatableTileNode.Prefab, centerWorldPosition, new Quaternion(), parent); standardTile.transform.localScale = scale; return(standardTile); }
protected override void Execute() { LevelSaveData levelSaveData = deserializedLevelSaveDataStatus.LevelSaveData; foreach (TileSaveData nonStandardTileSaveData in levelSaveData.NonStandardTilesSaveData) { GameObject prefab = GenerateableTileLibrary.GetGeneratableTileNode(nonStandardTileSaveData.TileType).Prefab; Vector2 position = LevelEditorGridHelper.GridToNodePosition(nonStandardTileSaveData.GridPosition); Quaternion rotation = nonStandardTileSaveData.Rotation; GameObject nonStandardTile = Object.Instantiate(prefab, position, rotation); Vector2 size = new Vector2(LevelEditorGridNodeSizeLibrary.Instance.NodeSize, LevelEditorGridNodeSizeLibrary.Instance.NodeSize); nonStandardTile.transform.localScale = size; nonStandardTile.transform.SetParent(levelContainerStatus.LevelContainer); } }
protected override void Execute() { Vector2 halfTileSize = new Vector2(LevelEditorGridNodeSizeLibrary.Instance.NodeSize / 2, LevelEditorGridNodeSizeLibrary.Instance.NodeSize / 2); float minX = Mathf.Min(parameter.SelectionFieldStartPosition.x, parameter.SelectionFieldEndPosition.x); float minY = Mathf.Min(parameter.SelectionFieldStartPosition.y, parameter.SelectionFieldEndPosition.y); float maxX = Mathf.Max(parameter.SelectionFieldStartPosition.x, parameter.SelectionFieldEndPosition.x); float maxY = Mathf.Max(parameter.SelectionFieldStartPosition.y, parameter.SelectionFieldEndPosition.y); Vector2 bottomLeftCornerGridPosition = new Vector2(minX, minY); Vector2 topRightCornerGridPosition = new Vector2(maxX, maxY); Vector2 bottomLeftCornerWorldPosition = LevelEditorGridHelper.GridToNodePosition(bottomLeftCornerGridPosition) - halfTileSize; Vector2 topRightCornerWorldPosition = LevelEditorGridHelper.GridToNodePosition(topRightCornerGridPosition) + halfTileSize; BoxOverlay.Instance.UpdateBox(bottomLeftCornerWorldPosition, topRightCornerWorldPosition); }
private static Tile GetTile(GameObject prefab, TileType tileType, Vector2 gridPosition) { if (tileType == TileType.Empty) { return(new Tile() { TileType = TileType.Empty }); } Vector2 tilePosition = LevelEditorGridHelper.GridToNodePosition(gridPosition); GameObject tileGameObject = ObjectPool.Instance.GetObjectForType(prefab.name, false); tileGameObject.transform.position = tilePosition; bool userGenerated = CheckTileTypeUserGenerated(tileType); string tileName = ""; if (!userGenerated) { tileName += "AutoGenerated Tile "; } else { tileName += "Tile "; } tileName += tileType.ToString() + " " + gridPosition.ToString(); tileGameObject.name = tileName; tileGameObject.layer = LayerMask.NameToLayer(Layers.LevelEditorTile); Tile tile = new Tile() { TileType = tileType, GameObject = tileGameObject, UserGenerated = userGenerated, }; return(tile); }