Visual Mode: add action to toggle texture skewing & support resetting flags.

This commit is contained in:
sphere 2021-10-16 18:34:35 +02:00
parent f4ff4ad1d5
commit e9c9d008ff
2 changed files with 100 additions and 0 deletions

View File

@ -1232,6 +1232,17 @@ togglebackslope
default = 393299; //Ctrl-Alt-S default = 393299; //Ctrl-Alt-S
} }
toggleskew
{
title = "Toggle Texture Skewing";
category = "visual";
description = "Toggles texture skewing for selected walls.";
allowkeys = true;
allowmouse = true;
allowscroll = true;
default = 0;
}
placevisualstart placevisualstart
{ {
title = "Place Visual Mode Camera"; title = "Place Visual Mode Camera";

View File

@ -3829,6 +3829,53 @@ namespace CodeImp.DoomBuilder.BuilderModes
ShowTargetInfo(); ShowTargetInfo();
} }
//sphere
[BeginAction("resetflags")]
public void ResetFlags()
{
List<VisualGeometry> selection = GetSelectedSurfaces();
List<VisualThing> selection2 = GetSelectedVisualThings(true);
if (selection.Count == 0 && selection2.Count == 0)
{
General.Interface.DisplayStatus(StatusType.Warning, "Reset flags action requires selected surfaces or things!");
return;
}
General.Map.UndoRedo.CreateUndo("Reset flags");
foreach (VisualGeometry vg in selection)
{
if (vg.GeometryType == VisualGeometryType.WALL_LOWER ||
vg.GeometryType == VisualGeometryType.WALL_MIDDLE ||
vg.GeometryType == VisualGeometryType.WALL_UPPER)
{
vg.Sidedef.Line.ClearFlags();
if (vg.Sidedef.Line.Back != null && vg.Sidedef.Line.Back.Sector != null)
vg.Sidedef.Line.SetFlag(General.Map.Config.DoubleSidedFlag, true);
else
vg.Sidedef.Line.SetFlag(General.Map.Config.ImpassableFlag, true);
vg.Sector.UpdateSectorGeometry(true);
}
}
foreach (VisualThing vt in selection2)
{
vt.Thing.ClearFlags();
}
//update changed geometry
RebuildElementData();
UpdateChangedObjects();
ClearSelection();
ShowTargetInfo();
General.Interface.DisplayStatus(StatusType.Action, "Reset flags for " +
selection.Count + (selection.Count == 1 ? " surface and " : " surfaces and ") +
selection2.Count + (selection2.Count == 1 ? " thing." : " things."));
}
//mxd //mxd
[BeginAction("toggleslope")] [BeginAction("toggleslope")]
public void ToggleSlope() public void ToggleSlope()
@ -4129,6 +4176,48 @@ namespace CodeImp.DoomBuilder.BuilderModes
General.Interface.DisplayStatus(StatusType.Action, "Toggled Slope for " + toUpdate.Count + (toUpdate.Count == 1 ? " surface." : " surfaces.")); General.Interface.DisplayStatus(StatusType.Action, "Toggled Slope for " + toUpdate.Count + (toUpdate.Count == 1 ? " surface." : " surfaces."));
} }
[BeginAction("toggleskew")]
public void ToggleSkew()
{
int counter = 0;
List<VisualGeometry> selection = GetSelectedSurfaces();
if (selection.Count == 0)
{
General.Interface.DisplayStatus(StatusType.Warning, "Toggle Skew action requires selected surfaces!");
return;
}
General.Map.UndoRedo.CreateUndo("Toggle Skew");
foreach (VisualGeometry vg in selection)
{
if (vg.GeometryType == VisualGeometryType.WALL_LOWER || vg.GeometryType == VisualGeometryType.WALL_UPPER)
vg.Sidedef.Line.SetFlag("32", vg.Sidedef.Line.IsFlagSet("32") ? false : true);
else if (vg.GeometryType == VisualGeometryType.WALL_MIDDLE)
vg.Sidedef.Line.SetFlag("128", vg.Sidedef.Line.IsFlagSet("128") ? false : true);
else if (vg.GeometryType == VisualGeometryType.WALL_MIDDLE_3D)
vg.GetControlLinedef().SetFlag("8", vg.GetControlLinedef().IsFlagSet("8") ? false : true);
else
continue;
counter++;
}
if (counter > 0)
{
RebuildElementData();
UpdateChangedObjects();
ClearSelection();
ShowTargetInfo();
}
General.Interface.DisplayStatus(StatusType.Action, "Toggled Skewing for " + counter + (counter == 1 ? " surface." : " surfaces."));
}
// biwa // biwa
[BeginAction("visualpaintselect")] [BeginAction("visualpaintselect")]
protected virtual void OnPaintSelectBegin() protected virtual void OnPaintSelectBegin()