Beispiel #1
0
        public static void MoreToolsClicked(string name, bool simAlt = false, bool simShift = false)
        {
            MoveItTool.instance.DeactivateTool();
            MoveItTool.m_isLowSensitivity = false;

            switch (name)
            {
            case "MoveIt_MoreToolsBtn":
                if (MoreToolsPanel.isVisible)
                {
                    MoreToolsPanel.isVisible = false;
                }
                else
                {
                    MoreToolsPanel.isVisible = true;
                }
                UpdateMoreTools();
                break;

            case "MoveIt_LoadBtn":
                UILoadWindow.Open();
                break;

            case "MoveIt_SaveBtn":
                if (MoveItTool.IsExportSelectionValid())
                {
                    UISaveWindow.Open();
                }
                else
                {
                    UIView.library.ShowModal <ExceptionPanel>("ExceptionPanel").SetMessage(Str.xml_SelectionInvalidTitle, Str.xml_SelectionInvalidMessage, false);
                }
                break;

            case "MoveIt_AlignHeightBtn":
                m_activeToolMenu = MoreButtons["MoveIt_HeightBtn"];
                MIT.ProcessAligning(MoveItTool.MT_Tools.Height);
                break;

            case "MoveIt_AlignMirrorBtn":
                m_activeToolMenu = MoreButtons["MoveIt_OthersBtn"];
                MIT.ProcessAligning(MoveItTool.MT_Tools.Mirror);
                break;

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

                AlignTerrainHeightAction atha = new AlignTerrainHeightAction();
                ActionQueue.instance.Push(atha);
                ActionQueue.instance.Do();
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

            case "MoveIt_AlignSlopeBtn":
                if (simShift)
                {
                    m_activeToolMenu = MoreButtons["MoveIt_HeightBtn"];
                    MIT.ProcessAligning(MoveItTool.MT_Tools.Slope);
                    break;
                }

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

                AlignSlopeAction asa = new AlignSlopeAction
                {
                    followTerrain = MoveItTool.followTerrain,
                    mode          = AlignSlopeAction.Modes.Auto
                };
                if (simAlt)
                {
                    asa.mode = AlignSlopeAction.Modes.Quick;
                }
                ActionQueue.instance.Push(asa);
                ActionQueue.instance.Do();
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

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

                LineAction la = new LineAction
                {
                    followTerrain = MoveItTool.followTerrain,
                    mode          = LineAction.Modes.Spaced,
                };
                if (simShift)
                {
                    la.mode = LineAction.Modes.Unspaced;
                }
                ActionQueue.instance.Push(la);
                ActionQueue.instance.Do();
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

            case "MoveIt_AlignIndividualBtn":
                m_activeToolMenu = MoreButtons["MoveIt_RotateBtn"];
                MIT.ProcessAligning(MoveItTool.MT_Tools.Inplace);
                break;

            case "MoveIt_AlignGroupBtn":
                m_activeToolMenu = MoreButtons["MoveIt_RotateBtn"];
                MIT.ProcessAligning(MoveItTool.MT_Tools.Group);
                break;

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

                AlignRandomAction ara = new AlignRandomAction
                {
                    followTerrain = MoveItTool.followTerrain
                };
                ActionQueue.instance.Push(ara);
                ActionQueue.instance.Do();
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

            case "MoveIt_ConvertToPOBtn":
                if (MoveItTool.PO.Enabled && MoveItTool.ToolState == MoveItTool.ToolStates.Default)
                {
                    MoveItTool.PO.StartConvertAction();
                }
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

            case "MoveIt_ResetObjectBtn":
                MIT.StartReset();
                CheckCloseMenu();
                MIT.DeactivateTool();
                break;

            case "MoveIt_MoveToBtn":
                m_activeToolMenu = MoreButtons["MoveIt_OthersBtn"];
                if (!MoveItTool.instance.StartTool(MoveItTool.ToolStates.ToolActive, MoveItTool.MT_Tools.MoveTo))
                {
                    m_activeToolMenu = null;
                    break;
                }

                MoveToAction mta = new MoveToAction
                {
                    followTerrain = MoveItTool.followTerrain
                };
                ActionQueue.instance.Push(mta);

                MoveItTool.m_moveToPanel.Visible(true);
                CheckCloseMenu();
                break;

            default:
                Log.Debug($"Invalid Tool clicked ({name})");
                break;
            }
        }