Example #1
0
    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);
    }
Example #3
0
    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();
        }
    }
Example #5
0
    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);
    }
Example #8
0
    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);
    }
Example #9
0
    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);
    }
Example #11
0
    protected override void Execute()
    {
        Vector2 gridPosition = LevelEditorGridHelper.ScreenToGridPosition(touchDownScreenPosition);

        touchStartOnGridPositionEvent.Dispatch(gridPosition);
    }