From f8c313abaa5566ed27ee38ab30db25a232f54143 Mon Sep 17 00:00:00 2001 From: spherallic Date: Fri, 21 Apr 2023 22:11:57 +0200 Subject: [PATCH] Add action for removing FOF planes from Visual Mode selection --- .../BuilderModes/Resources/Actions.cfg | 10 +++++++ .../VisualModes/BaseVisualGeometrySector.cs | 16 +++++++++++- .../VisualModes/BaseVisualMode.cs | 26 +++++++++++++++++++ 3 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index c18af17..e719c4d 100644 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -1376,6 +1376,16 @@ alphabasedtexturehighlighting allowscroll = true; } +deselectfofplanes +{ + title = "Deselect FOF planes"; + category = "visual"; + description = "Deselects all FOF planes from your selection in Visual Mode."; + allowkeys = true; + allowmouse = true; + allowscroll = true; +} + placevisualstart { title = "Place Visual Mode Camera"; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index ad31c64..df1d638 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -1057,7 +1057,21 @@ namespace CodeImp.DoomBuilder.BuilderModes selected = !selected; } } - + + public void OnRemoveFOFSelection() + { + if (level != null) + { + // This plane is part of a 3D-floor/FOF + if (level.sector != Sector.Sector) + { + BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(level.sector); + selected = false; + mode.RemoveSelectedObject(this); + } + } + } + #endregion } } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index dd1f599..2c833e4 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -4460,6 +4460,32 @@ namespace CodeImp.DoomBuilder.BuilderModes General.Interface.DisplayStatus(StatusType.Info, "Alpha-based textures highlighting is " + (BuilderPlug.Me.AlphaBasedTextureHighlighting ? "ENABLED" : "DISABLED")); } + [BeginAction("deselectfofplanes")] + public void DeselectFOFPlanes() + { + PreAction(UndoGroup.None); + List objs = GetSelectedObjects(true, false, false, false); + + foreach (IVisualEventReceiver i in objs) + { + if (i is VisualFloor) + { + VisualFloor vf = i as VisualFloor; + vf.OnRemoveFOFSelection(); + } + + if (i is VisualCeiling) + { + VisualCeiling vc = i as VisualCeiling; + vc.OnRemoveFOFSelection(); + } + } + + General.Interface.DisplayStatus(StatusType.Action, "Deselected FOF planes."); + General.Interface.RedrawDisplay(); + UpdateSelectionInfo(); + UpdateChangedObjects(); + } #endregion #region ================== Texture Alignment