protected override void Execute() { Vector2 selectionFieldStartPosition = SelectionFieldStatusView.SelectionFieldStartGridPosition; Vector2 selectionFieldEndPosition = SelectionFieldStatusView.SelectionFieldEndGridPosition; List <ILevelObject> levelObjectsToRemove = new List <ILevelObject>(); foreach (ILevelObject levelObject in levelObjectRefs) { GenerateableLevelObjectNode generateableLevelObjectNode = GenerateableLevelObjectLibrary.GetNode(levelObject.LevelObjectType); if (!generateableLevelObjectNode.CanCollideWithTiles) { continue; } GameObject levelObjectGameObject = levelObject.GameObject; Vector2 levelObjectGridPosition = LevelEditorGridHelper.WorldToGridPosition(levelObjectGameObject.transform.position); if (!levelObjectGridPosition.IsBetweenVectors(selectionFieldStartPosition, selectionFieldEndPosition)) { continue; } levelObjectsToRemove.Add(levelObject); } foreach (ILevelObject levelObject in levelObjectsToRemove) { levelObject.DestroyLevelObject(); } }
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() { float nodeSize = LevelEditorGridNodeSizeLibrary.Instance.NodeSize; Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(touchDownScreenPosition); levelEditorTouchUpOnGridPositionEvent.Dispatch(gridPosition); }
protected override void Execute() { Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(screenPosition); if (LevelEditorGrid.GridPositions.Contains(gridPosition)) { Abort(); } }
protected override void Execute() { Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(Input.mousePosition); if (TileGrid.Instance.ContainsTile(gridPosition)) { Abort(); } }
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); }
private Vector2 ConvertPositionToGridPosition(Vector2 position, LevelEditorInputType levelEditorInputType) { Vector2 gridPosition = new Vector2(); switch (levelEditorInputType) { case LevelEditorInputType.ScreenSpace: Vector2 worldPosition = Camera.main.ScreenToWorldPoint(position); gridPosition = LevelEditorGridHelper.WorldToGridPosition(worldPosition); break; case LevelEditorInputType.WorldSpace: gridPosition = LevelEditorGridHelper.WorldToGridPosition(position); break; case LevelEditorInputType.GridSpace: gridPosition = position; Debug.LogWarning("Position is supposedly already a gridposition."); break; } return(gridPosition); }
protected override void Execute() { Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(swipeMoveEventParameter.Position); levelEditorSwipeMovedToGridPositionEvent.Dispatch(gridPosition); }
protected override void Execute() { Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(touchDownScreenPosition); touchStartOnGridPositionEvent.Dispatch(gridPosition); }