Пример #1
0
        private void ModeChanged()
        {
            if (oldMode != editMode)
            {
                switch (editMode)
                {
                case LevelEditMode.Add:
                    _selectionTile.UpdateSelectionMaterials(brush, ADD_COLOR);
                    ChangeTilemapLayer(ignoreLayer);
                    break;

                case LevelEditMode.Delete:
                    _selectionTile.UpdateSelectionMaterials(brush, REM_COLOR);
                    ChangeTilemapLayer(ignoreLayer);
                    break;

                case LevelEditMode.None:
                    _selectionTile.UpdateSelectionMaterials(brush, INV_COLOR);
                    ChangeTilemapLayer(defaultLayer);
                    break;
                }
            }

            oldMode = editMode;
        }
Пример #2
0
        private void OnSceneGui(SceneView sv)
        {
            DrawControls();

            tileMap = FindObjectOfType <QuadTileMap>();

            _selectionTile.gameObject.SetActive(editMode != LevelEditMode.None);

            Event e = Event.current;
            // Convert mouse position to world position by finding point where y = 0.
            Ray     ray             = HandleUtility.GUIPointToWorldRay(e.mousePosition);
            Vector3 pos             = ray.origin - (ray.origin.y / ray.direction.y) * ray.direction;
            Vector3 snappedPosition = QuadTileMap.GetPositionClosestTo(pos);

            _selectionTile.transform.position = snappedPosition;

            _selectionTile.UpdateHeight(height);
            ModeChanged();

            int controlId = GUIUtility.GetControlID(FocusType.Passive);

            if (e.GetTypeForControl(controlId) == EventType.ScrollWheel && e.control)
            {
                if (e.delta.y > 0)
                {
                    DecreaseHeight();
                }
                else if (e.delta.y < 0)
                {
                    IncreaseHeight();
                }
                e.Use();
            }

            if (e.GetTypeForControl(controlId) == EventType.KeyDown && e.control)
            {
                switch (e.keyCode)
                {
                case NON_KEY:
                    editMode = LevelEditMode.None;
                    break;

                case ADD_KEY:
                    editMode = LevelEditMode.Add;
                    break;

                case REM_KEY:
                    editMode = LevelEditMode.Delete;
                    break;
                }

                e.Use();
                Repaint();
            }

            if (e.GetTypeForControl(controlId) == EventType.MouseDown)
            {
                if (e.button == 0)
                {
                    switch (editMode)
                    {
                    case LevelEditMode.Add:
                        tileMap.AddTile(snappedPosition, brush, height);
                        break;

                    case LevelEditMode.Delete:
                        tileMap.DeleteTile(snappedPosition);
                        break;

                    case LevelEditMode.None:
                        return;
                    }
                }
            }

            lastSnappedPosition = snappedPosition;
        }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        Touch[] touches = Input.touches;

        if (editMode == LevelEditMode.Build)
        {
            if (!UIManager.isUIActive && touches.Length <= 1)
            {
                HandlePaint();
            }

            if (Input.GetMouseButton(1) && !UIManager.isUIActive)
            {
                cameraManager.MoveCamera();
            }
        }

        if (Input.GetKeyDown("p"))
        {
            if (editMode == LevelEditMode.Build)
            {
                EditMode = LevelEditMode.Test;
            }
            else if (editMode == LevelEditMode.Test)
            {
                EditMode = LevelEditMode.Build;
            }
        }

        if (Input.GetKeyDown("1"))
        {
            blockToPaint = Level.BlockType.Empty;
        }

        if (Input.GetKeyDown("2"))
        {
            blockToPaint = Level.BlockType.Dirt;
        }

        if (Input.GetKeyDown("3"))
        {
            blockToPaint = Level.BlockType.GrassedDirt;
        }

        if (Input.GetKeyDown("4"))
        {
            blockToPaint = Level.BlockType.Spring;
        }

        if (Input.GetKeyDown("5"))
        {
            blockToPaint = Level.BlockType.Bomber;
        }

        if (Input.GetKeyDown("6"))
        {
            blockToPaint = Level.BlockType.Flame;
        }

        if (Input.GetKeyDown("7"))
        {
            blockToPaint = Level.BlockType.Water;
        }
    }