Add invisible FOF toggle for Visual Mode

This commit is contained in:
spherallic 2024-06-07 12:52:28 +02:00
parent 99af0c2b81
commit 4b9ae5e332
4 changed files with 48 additions and 4 deletions

View file

@ -138,6 +138,7 @@ namespace CodeImp.DoomBuilder.Config
private string lastUsedMapFolder;
private bool gzMarkExtraFloors;
private bool enhancedrenderingeffects = true; //mxd
private bool srb2renderingeffects = true; //sphere
private int maxRecentFiles;
private bool autoClearSideTextures;
private bool storeSelectedEditTab;
@ -281,6 +282,7 @@ namespace CodeImp.DoomBuilder.Config
public string LastUsedMapFolder { get { return lastUsedMapFolder; } internal set { lastUsedMapFolder = value; } }
public bool GZMarkExtraFloors { get { return gzMarkExtraFloors; } internal set { gzMarkExtraFloors = value; } }
public bool EnhancedRenderingEffects { get { return enhancedrenderingeffects; } set { enhancedrenderingeffects = value; } } //mxd
public bool SRB2RenderingEffects { get { return srb2renderingeffects; } set { srb2renderingeffects = value; } } //sphere
public int MaxRecentFiles { get { return maxRecentFiles; } internal set { maxRecentFiles = General.Clamp(value, 8, 25); } }
public bool AutoClearSidedefTextures { get { return autoClearSideTextures; } internal set { autoClearSideTextures = value; } }
public bool StoreSelectedEditTab { get { return storeSelectedEditTab; } internal set { storeSelectedEditTab = value; } }

View file

@ -1365,6 +1365,17 @@ gztoggleenhancedrendering
registertoast = true;
}
togglesrb2invisiblefof
{
title = "Toggle SRB2 Invisible FOFs";
category = "visual";
description = "Toggles rendering of SRB2's invisible FOF types (light blocks, trigger zones etc.) in Visual mode.";
allowkeys = true;
allowmouse = true;
allowscroll = false;
registertoast = true;
}
srb2togglenights
{
title = "Toggle NiGHTS axis rendering";

View file

@ -3286,6 +3286,25 @@ namespace CodeImp.DoomBuilder.Windows
UpdateViewMenu();
}
//mxd
[BeginAction("togglesrb2invisiblefof")]
public void ToggleSRB2InvisibleFOFRendering()
{
General.Settings.SRB2RenderingEffects = !General.Settings.SRB2RenderingEffects;
string shorttext = "SRB2 invisible FOF rendering is " + (General.Settings.SRB2RenderingEffects ? "ENABLED" : "DISABLED") + ".";
string text = shorttext;
string key = Actions.Action.GetShortcutKeyDesc(General.Actions.Current.ShortcutKey);
if (!string.IsNullOrEmpty(key))
text += $" Press '{key}' to toggle.";
General.ToastManager.ShowToast("togglesrb2invisiblefof", ToastType.INFO, "Changed invisible FOF rendering", text, shorttext);
UpdateGZDoomPanel();
UpdateViewMenu();
}
//mxd
[BeginAction("gztogglefog")]
internal void ToggleFog()

View file

@ -949,12 +949,15 @@ namespace CodeImp.DoomBuilder.BuilderModes
List<Linedef>[] slopelinedefpass = new List<Linedef>[] { new List<Linedef>(), new List<Linedef>() };
List<Thing>[] slopethingpass = new List<Thing>[] { new List<Thing>(), new List<Thing>() };
if (!General.Settings.EnhancedRenderingEffects) //mxd
if (!General.Settings.EnhancedRenderingEffects || !General.Settings.SRB2RenderingEffects) //mxd
{
// Store all sectors with effects
if(sectordata != null && sectordata.Count > 0)
if (sectordata != null && sectordata.Count > 0)
effectsectors = new HashSet<Sector>(sectordata.Keys);
}
if (!General.Settings.EnhancedRenderingEffects) //mxd
{
// Remove all vertex handles from selection
if(vertices != null && vertices.Count > 0)
{
@ -1223,7 +1226,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
case "srb2_foflight":
case "srb2_foffog":
case "srb2_fofintangibleinvisible":
if (l.Front != null && sectortags.ContainsKey(l.Args[0]))
if (General.Settings.SRB2RenderingEffects && l.Front != null && sectortags.ContainsKey(l.Args[0]))
{
List<Sector> sectors = sectortags[l.Args[0]];
foreach (Sector s in sectors)
@ -4236,6 +4239,15 @@ namespace CodeImp.DoomBuilder.BuilderModes
UpdateChangedObjects();
}
//sphere
[BeginAction("togglesrb2invisiblefof", BaseAction = true)]
public void ToggleSRB2InvisibleFOFRendering()
{
// Actual toggling is done in MainForm.ToggleSRB2InvisibleFOFRendering(), so we only need to update the view here
RebuildElementData();
UpdateChangedObjects();
}
//mxd
[BeginAction("thingaligntowall")]
public void AlignThingsToWall()