From 2b40a08f13ae6ba90d229b14172fa1c9d464c185 Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Fri, 29 Sep 2023 20:44:04 +0200 Subject: [PATCH] Visual Mode: fixed a problem where floors/ceilings could not be changed in size if the user tried to change their texture offset in a non-UDMF map --- .../BuilderModes/VisualModes/BaseVisualGeometrySector.cs | 8 +++++--- .../VisualModes/BaseVisualGeometrySidedef.cs | 4 +++- .../Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs | 2 +- .../Plugins/BuilderModes/VisualModes/BaseVisualThing.cs | 2 +- .../Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs | 2 +- .../BuilderModes/VisualModes/IVisualEventReceiver.cs | 2 +- .../BuilderModes/VisualModes/NullVisualEventReceiver.cs | 2 +- Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs | 9 ++++++--- Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs | 9 ++++++--- 9 files changed, 25 insertions(+), 15 deletions(-) diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index 32e52bf16..7e12a6a34 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -848,15 +848,15 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Texture offset change - public virtual void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) + public virtual bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { - if(horizontal == 0 && vertical == 0) return; //mxd + if(horizontal == 0 && vertical == 0) return false; //mxd //mxd if(!General.Map.UDMF) { General.Interface.DisplayStatus(StatusType.Warning, "Floor/ceiling texture offsets cannot be changed in this map format!"); - return; + return false; } if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket)) @@ -914,6 +914,8 @@ namespace CodeImp.DoomBuilder.BuilderModes } if(vs != null) vs.UpdateSectorGeometry(false); + + return true; } //mxd diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs index 17956029f..eed8e5890 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs @@ -1660,7 +1660,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Texture offset change - public virtual void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) + public virtual bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { if((General.Map.UndoRedo.NextUndo == null) || (General.Map.UndoRedo.NextUndo.TicketID != undoticket)) undoticket = mode.CreateUndo("Change texture offsets"); @@ -1695,6 +1695,8 @@ namespace CodeImp.DoomBuilder.BuilderModes //mxd. Update linked effects SectorData sd = mode.GetSectorDataEx(Sector.Sector); if(sd != null) sd.Reset(true); + + return true; } //mxd diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs index 329adb62e..178ca0410 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs @@ -111,7 +111,7 @@ namespace CodeImp.DoomBuilder.VisualModes public void OnSelectBegin() { } public void OnEditBegin() { } public void OnChangeTargetBrightness(bool up) { } - public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } + public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; } public void OnSelectTexture() { } public void OnCopyTexture() { } public void OnPasteTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs index 50e07947b..8fe8ac841 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs @@ -657,7 +657,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnSelectBegin() { } public void OnEditBegin() { } public void OnChangeTargetBrightness(bool up) { } - public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } + public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; } public void OnSelectTexture() { } public void OnCopyTexture() { } public void OnPasteTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs index 3de36f62f..6c93f6ca4 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs @@ -241,7 +241,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnEditBegin() { } public void OnMouseMove(MouseEventArgs e) { } public void OnChangeTargetBrightness(bool up) { } - public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } + public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; } public void OnChangeScale(int incrementX, int incrementY) { } public void OnSelectTexture() { } public void OnCopyTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs index cde7f2ca6..7e22f377b 100755 --- a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs @@ -35,7 +35,7 @@ namespace CodeImp.DoomBuilder.BuilderModes void OnMouseMove(MouseEventArgs e); void OnChangeTargetHeight(int amount); void OnChangeTargetBrightness(bool up); - void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection); + bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection); void OnChangeScale(int incrementX, int incrementY); //mxd void OnResetTextureOffset(); void OnResetLocalTextureOffset(); //mxd. This should reset upper/middle/lower offsets (UDMF only) diff --git a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs index e6abe0e41..cdf113a6b 100755 --- a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs @@ -34,7 +34,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnMouseMove(MouseEventArgs e) { } public void OnChangeTargetHeight(int amount) { } public void OnChangeTargetBrightness(bool up) { } - public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } + public bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { return true; } public void OnChangeScale(int incrementX, int incrementY) { } //mxd public void OnResetTextureOffset() { } public void OnResetLocalTextureOffset() { } //mxd diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs index a1d85c029..cae40b779 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs @@ -279,16 +279,19 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - public override void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) + public override bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { + bool appliedoffset = false; + // Only do this when not done yet in this call // Because we may be able to select the same 3D floor multiple times through multiple sectors SectorData sd = mode.GetSectorData(level.sector); if(!sd.CeilingChanged) { - sd.CeilingChanged = true; - base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection); + sd.CeilingChanged = appliedoffset = base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection); } + + return appliedoffset; } // Move texture coordinates diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs index 8be4c2161..40ddc9294 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs @@ -233,16 +233,19 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd - public override void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) + public override bool OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { + bool appliedoffset = false; + // Only do this when not done yet in this call // Because we may be able to select the same 3D floor multiple times through multiple sectors SectorData sd = mode.GetSectorData(level.sector); if(!sd.FloorChanged) { - sd.FloorChanged = true; - base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection); + sd.FloorChanged = appliedoffset = base.OnChangeTextureOffset(horizontal, vertical, doSurfaceAngleCorrection); } + + return appliedoffset; } // Move texture coordinates -- GitLab