internal void UpdateValues() { if (!Panel.isVisible) { return; } MoveToAction action = ActionQueue.instance.current as MoveToAction; XInput.text = action.Position.x.ToString(); YInput.text = action.Position.y.ToString(); ZInput.text = action.Position.z.ToString(); AInput.text = (action.Angle * Mathf.Rad2Deg).ToString(); }
internal void Go() { MoveToAction action = ActionQueue.instance.current as MoveToAction; float x = Mathf.Clamp(float.Parse(XInput.text), -8600, 8600); float y = action.HeightActive ? Mathf.Clamp(float.Parse(YInput.text), 0, 1024) : action.Original.y; float z = Mathf.Clamp(float.Parse(ZInput.text), -8600, 8600); float a = (float.Parse(AInput.text) * Mathf.Deg2Rad) % (Mathf.PI * 2); action.Position = new Vector3(x, y, z); action.Angle = a; action.moveDelta = action.Position - action.Original; if (action.AngleActive) { action.angleDelta = action.Angle - action.AngleOriginal; } ActionQueue.instance.Do(); UpdateValues(); }
internal void Visible(bool show) { Panel.isVisible = show; if (show) { MoveToAction action = ActionQueue.instance.current as MoveToAction; action.Position = action.Original = Action.GetCenter(); action.Angle = action.AngleOriginal = Action.GetAngle(); action.HeightActive = false; foreach (Instance i in Action.selection) { if (i is MoveableBuilding || i is MoveableProc || i is MoveableProp || i is MoveableNode || i is MoveableTree) { action.HeightActive = true; break; } } YLabel.isVisible = action.HeightActive; YInput.enabled = action.HeightActive; action.AngleActive = false; foreach (Instance i in Action.selection) { if (i is MoveableBuilding || i is MoveableProc || i is MoveableProp) { action.AngleActive = true; break; } } ALabel.isVisible = action.AngleActive; AInput.enabled = action.AngleActive; UpdateValues(); } }
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; } }