예제 #1
0
        public static void AlignToolsClicked(UIComponent c, UIMouseEventParameter p)
        {
            switch (c.name)
            {
            case "MoveIt_AlignToolsBtn":
                if (AlignToolsPanel.isVisible)
                {
                    AlignToolsPanel.isVisible = false;
                }
                else
                {
                    AlignToolsPanel.isVisible = true;
                }
                UpdateAlignTools();
                break;

            case "MoveIt_AlignHeightBtn":
                MIT.ProcessAligning(MoveItTool.AlignModes.Height);
                break;

            case "MoveIt_AlignTerrainHeightBtn":
                MIT.AlignMode = MoveItTool.AlignModes.TerrainHeight;

                if (MIT.ToolState == MoveItTool.ToolStates.Cloning || MIT.ToolState == MoveItTool.ToolStates.RightDraggingClone)
                {
                    MIT.StopCloning();
                }

                AlignTerrainHeightAction atha = new AlignTerrainHeightAction();
                ActionQueue.instance.Push(atha);
                ActionQueue.instance.Do();
                if (MoveItTool.autoCloseAlignTools)
                {
                    AlignToolsPanel.isVisible = false;
                }
                MoveItTool.instance.DeactivateAlignTool();
                break;

            case "MoveIt_AlignSlopeBtn":
                if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
                {
                    MIT.AlignMode = MoveItTool.AlignModes.SlopeNode;

                    if (MIT.ToolState == MoveItTool.ToolStates.Cloning || MIT.ToolState == MoveItTool.ToolStates.RightDraggingClone)
                    {
                        MIT.StopCloning();
                    }

                    AlignSlopeAction asa = new AlignSlopeAction();
                    asa.followTerrain = MoveItTool.followTerrain;
                    asa.IsQuick       = true;
                    ActionQueue.instance.Push(asa);
                    ActionQueue.instance.Do();
                    if (MoveItTool.autoCloseAlignTools)
                    {
                        AlignToolsPanel.isVisible = false;
                    }
                    MIT.DeactivateAlignTool();
                    break;
                }
                MIT.ProcessAligning(MoveItTool.AlignModes.Slope);
                break;

            case "MoveIt_AlignIndividualBtn":
                MIT.ProcessAligning(MoveItTool.AlignModes.Inplace);
                break;

            case "MoveIt_AlignGroupBtn":
                MIT.ProcessAligning(MoveItTool.AlignModes.Group);
                break;

            case "MoveIt_AlignRandomBtn":
                MIT.AlignMode = MoveItTool.AlignModes.Random;

                if (MIT.ToolState == MoveItTool.ToolStates.Cloning || MIT.ToolState == MoveItTool.ToolStates.RightDraggingClone)
                {
                    MIT.StopCloning();
                }

                AlignRandomAction ara = new AlignRandomAction();
                ara.followTerrain = MoveItTool.followTerrain;
                ActionQueue.instance.Push(ara);
                ActionQueue.instance.Do();
                if (MoveItTool.autoCloseAlignTools)
                {
                    AlignToolsPanel.isVisible = false;
                }
                MoveItTool.instance.DeactivateAlignTool();
                break;

            default:
                Debug.Log($"Invalid Align Tools call ({c.name})");
                break;
            }
            //Debug.Log($"{c.name} clicked, mode is {MoveItTool.alignMode}");
        }