From c425b2bdc932c91c78901131986434017da6e792 Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Sat, 5 Feb 2022 18:40:08 +0100 Subject: [PATCH] Visual Mode: added actions to lower and raise map elements by the current grid size (no defaults bound). Resolves #699 --- .../BuilderModes/Resources/Actions.cfg | 21 ++++++++++++++ .../VisualModes/BaseVisualMode.cs | 28 +++++++++++++++++-- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index 07e8eab71..69996d067 100755 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -654,6 +654,27 @@ raisesector128 repeat = true; } +lowermapelementbygridsize +{ + title = "Lower Floor/Ceiling/Thing by grid size"; + category = "visual"; + description = "Lowers the targeted or selected floors/ceilings by the current grid size. This also lowers selected or targeted things."; + allowkeys = true; + allowmouse = true; + allowscroll = true; + repeat = true; +} + +raisemapelementbygridsize +{ + title = "Raise Floor/Ceiling/Thing by grid size"; + category = "visual"; + description = "Raises the targeted or selected floors/ceilings by the current grid size. This also raises selected or targeted things."; + allowkeys = true; + allowmouse = true; + allowscroll = true; + repeat = true; +} //mxd lowersectortonearest diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index ff2fa8bb0..60e2c1528 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -2720,9 +2720,33 @@ namespace CodeImp.DoomBuilder.BuilderModes PostAction(); } + [BeginAction("raisemapelementbygridsize")] + public void RaiseMapElementByGridSize() + { + PreAction(UndoGroup.SectorHeightChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true, true, true); + bool hasvisualslopehandles = objs.Any(o => o is VisualSlope); + foreach (IVisualEventReceiver i in objs) // If slope handles are selected only apply the action to them + if (!hasvisualslopehandles || (hasvisualslopehandles && i is VisualSlope)) + i.OnChangeTargetHeight(General.Map.Grid.GridSize); + PostAction(); + } - //mxd - [BeginAction("raisesectortonearest")] + [BeginAction("lowermapelementbygridsize")] + public void LowerMapElementByGridSize() + { + PreAction(UndoGroup.SectorHeightChange); + List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, true, true, true); + bool hasvisualslopehandles = objs.Any(o => o is VisualSlope); + foreach (IVisualEventReceiver i in objs) // If slope handles are selected only apply the action to them + if (!hasvisualslopehandles || (hasvisualslopehandles && i is VisualSlope)) + i.OnChangeTargetHeight(-General.Map.Grid.GridSize); + PostAction(); + } + + + //mxd + [BeginAction("raisesectortonearest")] public void RaiseSectorToNearest() { List<VisualSidedefSlope> selectedhandles = GetSelectedSlopeHandles(); -- GitLab