From 9d6244ed6567619247c04106aab31af68467704f Mon Sep 17 00:00:00 2001 From: biwa <6475593+biwa@users.noreply.github.com> Date: Sat, 11 Jul 2020 18:43:49 +0200 Subject: [PATCH] Fixed a bug where the effective size of scaled textures was too small under certain circumstances --- .../Plugins/BuilderModes/VisualModes/VisualLower.cs | 8 +++++--- .../BuilderModes/VisualModes/VisualMiddle3D.cs | 10 ++++++---- .../BuilderModes/VisualModes/VisualMiddleBack.cs | 7 +++---- .../BuilderModes/VisualModes/VisualMiddleDouble.cs | 8 +++++--- .../BuilderModes/VisualModes/VisualMiddleSingle.cs | 12 +++++++----- .../Plugins/BuilderModes/VisualModes/VisualUpper.cs | 10 ++++++---- 6 files changed, 32 insertions(+), 23 deletions(-) diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs index 9bb865902..a86052779 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualLower.cs @@ -125,9 +125,8 @@ namespace CodeImp.DoomBuilder.BuilderModes setuponloadedtexture = 0; } - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY); @@ -143,6 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // If the texture gets replaced with a "hires" texture it adds more fuckery if (base.Texture is HiResImage) tof *= tscaleAbs; + + // Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier + tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y)); } // Determine texture coordinates plane as they would be in normal circumstances. diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs index 7da3145fd..74075a979 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddle3D.cs @@ -142,10 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes base.Texture = General.Map.Data.MissingTexture3D; setuponloadedtexture = 0; } - - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; + + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY) + new Vector2D(sourceside.OffsetX, sourceside.OffsetY); @@ -161,6 +160,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // If the texture gets replaced with a "hires" texture it adds more fuckery if (base.Texture is HiResImage) tof *= tscaleAbs; + + // Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier + tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y)); } // For Vavoom type 3D floors the ceiling is lower than floor and they are reversed. diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs index e97ee0c23..a6775a4d1 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleBack.cs @@ -98,10 +98,9 @@ namespace CodeImp.DoomBuilder.BuilderModes base.Texture = General.Map.Data.MissingTexture3D; setuponloadedtexture = 0; } - - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; + + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY) + new Vector2D(sourceside.OffsetX, sourceside.OffsetY); diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs index 537bfad0b..0c5cf77a2 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleDouble.cs @@ -125,9 +125,8 @@ namespace CodeImp.DoomBuilder.BuilderModes setuponloadedtexture = 0; } - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY); @@ -143,6 +142,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // If the texture gets replaced with a "hires" texture it adds more fuckery if (base.Texture is HiResImage) tof *= tscaleAbs; + + // Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier + tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y)); } // Determine texture coordinates plane as they would be in normal circumstances. diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs index 2b9b08a6f..9af2c2dbb 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualMiddleSingle.cs @@ -110,11 +110,10 @@ namespace CodeImp.DoomBuilder.BuilderModes base.Texture = General.Map.Data.MissingTexture3D; setuponloadedtexture = 0; } - - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; - + + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); + // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY); @@ -129,6 +128,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // If the texture gets replaced with a "hires" texture it adds more fuckery if (base.Texture is HiResImage) tof *= tscaleAbs; + + // Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier + tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y)); } // Determine texture coordinates plane as they would be in normal circumstances. diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs index 1bdc68aad..36ffc8438 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualUpper.cs @@ -126,10 +126,9 @@ namespace CodeImp.DoomBuilder.BuilderModes setuponloadedtexture = 0; } - // Get texture scaled size - Vector2D tsz = new Vector2D(base.Texture.ScaledWidth, base.Texture.ScaledHeight); - tsz = tsz / tscale; - + // Get texture scaled size. Round up, because that's apparently what GZDoom does + Vector2D tsz = new Vector2D(Math.Ceiling(base.Texture.ScaledWidth / tscale.x), Math.Ceiling(base.Texture.ScaledHeight / tscale.y)); + // Get texture offsets Vector2D tof = new Vector2D(Sidedef.OffsetX, Sidedef.OffsetY); @@ -144,6 +143,9 @@ namespace CodeImp.DoomBuilder.BuilderModes // If the texture gets replaced with a "hires" texture it adds more fuckery if (base.Texture is HiResImage) tof *= tscaleAbs; + + // Round up, since that's apparently what GZDoom does. Not sure if this is the right place or if it also has to be done earlier + tof = new Vector2D(Math.Ceiling(tof.x), Math.Ceiling(tof.y)); } // Determine texture coordinates plane as they would be in normal circumstances. -- GitLab