diff --git a/src/d_iwad.cpp b/src/d_iwad.cpp index f10d48fb7..fadb9e65b 100644 --- a/src/d_iwad.cpp +++ b/src/d_iwad.cpp @@ -583,7 +583,7 @@ int FIWadManager::IdentifyVersion (TArray &wadfiles, const char *iwad, // We have a -iwad parameter. Pick the first usable IWAD we found through that. for (unsigned i = numFoundWads; i < mFoundWads.Size(); i++) { - if (mFoundWads[i].mInfoIndex > 0) + if (mFoundWads[i].mInfoIndex >= 0) { picks.Push(mFoundWads[i]); break; diff --git a/src/g_shared/a_dynlightdata.cpp b/src/g_shared/a_dynlightdata.cpp index c45d6fe9f..fcdbcd3d1 100644 --- a/src/g_shared/a_dynlightdata.cpp +++ b/src/g_shared/a_dynlightdata.cpp @@ -269,7 +269,7 @@ extern int ScriptDepth; inline float ParseFloat(FScanner &sc) { - sc.GetFloat(); + sc.MustGetFloat(); return float(sc.Float); } @@ -277,7 +277,7 @@ inline float ParseFloat(FScanner &sc) inline int ParseInt(FScanner &sc) { - sc.GetNumber(); + sc.MustGetNumber(); return sc.Number; } diff --git a/src/gl/renderer/gl_postprocess.cpp b/src/gl/renderer/gl_postprocess.cpp index cea7cbb3f..142358af6 100644 --- a/src/gl/renderer/gl_postprocess.cpp +++ b/src/gl/renderer/gl_postprocess.cpp @@ -938,7 +938,7 @@ int FGLRenderer::PTM_BestColor (const uint32_t *pal_in, int r, int g, int b, int static bool firstTime = true; static float trackpowtable = 0.; - double fbestdist, fdist; + double fbestdist = DBL_MAX, fdist; int bestcolor = 0; if (firstTime || trackpowtable != gl_paltonemap_powtable) diff --git a/src/gl/shaders/gl_shader.cpp b/src/gl/shaders/gl_shader.cpp index 41b6c18a1..6c9ee416d 100644 --- a/src/gl/shaders/gl_shader.cpp +++ b/src/gl/shaders/gl_shader.cpp @@ -682,6 +682,7 @@ void gl_ParseHardwareShader(FScanner &sc, int deflump) PostProcessShader shaderdesc; shaderdesc.Target = sc.String; + shaderdesc.Target.ToLower(); bool validTarget = false; if (sc.Compare("beforebloom")) validTarget = true; diff --git a/src/gl/shaders/gl_texshader.cpp b/src/gl/shaders/gl_texshader.cpp index f91529909..6276d7a4f 100644 --- a/src/gl/shaders/gl_texshader.cpp +++ b/src/gl/shaders/gl_texshader.cpp @@ -265,11 +265,11 @@ bool FShaderLayer::ParseLayer(FScanner &sc) alpha.ShouldCycle(true); alpha.SetCycleType(ParseCycleType(sc)); - sc.GetFloat(); + sc.MustGetFloat(); start = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); end = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; alpha.SetParams(start, end, cycle); @@ -287,11 +287,11 @@ bool FShaderLayer::ParseLayer(FScanner &sc) srcFactor.ShouldCycle(true); srcFactor.SetCycleType(ParseCycleType(sc)); - sc.GetFloat(); + sc.MustGetFloat(); start = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); end = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; srcFactor.SetParams(start, end, cycle); @@ -309,11 +309,11 @@ bool FShaderLayer::ParseLayer(FScanner &sc) dstFactor.ShouldCycle(true); dstFactor.SetCycleType(ParseCycleType(sc)); - sc.GetFloat(); + sc.MustGetFloat(); start = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); end = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; dstFactor.SetParams(start, end, cycle); @@ -351,23 +351,23 @@ bool FShaderLayer::ParseLayer(FScanner &sc) g.SetCycleType(type); b.SetCycleType(type); - sc.GetFloat(); + sc.MustGetFloat(); r1 = float(sc.Float); - sc.GetFloat(); + sc.MustGetFloat(); g1 = float(sc.Float); - sc.GetFloat(); + sc.MustGetFloat(); b1 = float(sc.Float); // get color2 - sc.GetFloat(); + sc.MustGetFloat(); r2 = float(sc.Float); - sc.GetFloat(); + sc.MustGetFloat(); g2 = float(sc.Float); - sc.GetFloat(); + sc.MustGetFloat(); b2 = float(sc.Float); // get cycle time - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; r.SetParams(r1, r2, cycle); @@ -376,11 +376,11 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else { - sc.GetFloat(); + sc.MustGetFloat(); r1 = float(sc.Float); - sc.GetFloat(); + sc.MustGetFloat(); g1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); b1 = sc.Float; r.SetParams(r1, r1, 0.f); @@ -390,9 +390,9 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else if (sc.Compare("center")) { - sc.GetFloat(); + sc.MustGetFloat(); centerX = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); centerY = sc.Float; } else if (sc.Compare("emissive")) @@ -407,17 +407,17 @@ bool FShaderLayer::ParseLayer(FScanner &sc) adjustX.ShouldCycle(true); adjustY.ShouldCycle(true); - sc.GetFloat(); + sc.MustGetFloat(); r1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); r2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; offsetX = r1; @@ -428,9 +428,9 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else { - sc.GetFloat(); + sc.MustGetFloat(); offsetX = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); offsetY = sc.Float; } } @@ -447,12 +447,12 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else if (sc.Compare("rotate")) { - sc.GetFloat(); + sc.MustGetFloat(); rotate = sc.Float; } else if (sc.Compare("rotation")) { - sc.GetFloat(); + sc.MustGetFloat(); rotation = sc.Float; } else if (sc.Compare("scale")) @@ -462,17 +462,17 @@ bool FShaderLayer::ParseLayer(FScanner &sc) scaleX.ShouldCycle(true); scaleY.ShouldCycle(true); - sc.GetFloat(); + sc.MustGetFloat(); r1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); r2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; scaleX.SetParams(r1, g1, cycle); @@ -480,9 +480,9 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else { - sc.GetFloat(); + sc.MustGetFloat(); scaleX.SetParams(sc.Float, sc.Float, 0.f); - sc.GetFloat(); + sc.MustGetFloat(); scaleY.SetParams(sc.Float, sc.Float, 0.f); } } @@ -510,15 +510,15 @@ bool FShaderLayer::ParseLayer(FScanner &sc) vectorX.ShouldCycle(true); vectorY.ShouldCycle(true); - sc.GetFloat(); + sc.MustGetFloat(); r1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g1 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); r2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); g2 = sc.Float; - sc.GetFloat(); + sc.MustGetFloat(); cycle = sc.Float; vectorX.SetParams(r1, r2, cycle); @@ -526,9 +526,9 @@ bool FShaderLayer::ParseLayer(FScanner &sc) } else { - sc.GetFloat(); + sc.MustGetFloat(); vectorX.SetParams(sc.Float, sc.Float, 0.f); - sc.GetFloat(); + sc.MustGetFloat(); vectorY.SetParams(sc.Float, sc.Float, 0.f); } } diff --git a/src/gl/textures/gl_texture.cpp b/src/gl/textures/gl_texture.cpp index e5a91fe14..51425d40d 100644 --- a/src/gl/textures/gl_texture.cpp +++ b/src/gl/textures/gl_texture.cpp @@ -564,7 +564,7 @@ void gl_ParseBrightmap(FScanner &sc, int deflump) else sc.UnGet(); sc.MustGetString(); - FTextureID no = TexMan.CheckForTexture(sc.String, type); + FTextureID no = TexMan.CheckForTexture(sc.String, type, FTextureManager::TEXMAN_TryAny | FTextureManager::TEXMAN_Overridable); FTexture *tex = TexMan[no]; sc.MustGetToken('{'); diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp index 02cb9e657..8bc1c5054 100644 --- a/src/polyrenderer/scene/poly_sprite.cpp +++ b/src/polyrenderer/scene/poly_sprite.cpp @@ -57,18 +57,17 @@ bool RenderPolySprite::GetLine(AActor *thing, DVector2 &left, DVector2 &right) double thingxscalemul = spriteScale.X / tex->Scale.X; double thingyscalemul = spriteScale.Y / tex->Scale.Y; - if (flipTextureX) - pos.X -= (tex->GetWidth() - tex->LeftOffset) * thingxscalemul; - else - pos.X -= tex->LeftOffset * thingxscalemul; - - double spriteHalfWidth = thingxscalemul * tex->GetWidth() * 0.5; + double spriteWidth = thingxscalemul * tex->GetWidth(); double spriteHeight = thingyscalemul * tex->GetHeight(); - pos.X += spriteHalfWidth; + double offsetX; + if (flipTextureX) + offsetX = (tex->GetWidth() - tex->LeftOffset) * thingxscalemul; + else + offsetX = tex->LeftOffset * thingxscalemul; - left = DVector2(pos.X - viewpoint.Sin * spriteHalfWidth, pos.Y + viewpoint.Cos * spriteHalfWidth); - right = DVector2(pos.X + viewpoint.Sin * spriteHalfWidth, pos.Y - viewpoint.Cos * spriteHalfWidth); + left = DVector2(pos.X - viewpoint.Sin * offsetX, pos.Y + viewpoint.Cos * offsetX); + right = DVector2(left.X + viewpoint.Sin * spriteWidth, left.Y - viewpoint.Cos * spriteWidth); return true; } @@ -81,36 +80,26 @@ void RenderPolySprite::Render(PolyRenderThread *thread, const TriMatrix &worldTo const auto &viewpoint = PolyRenderer::Instance()->Viewpoint; DVector3 thingpos = thing->InterpolatedPosition(viewpoint.TicFrac); - DVector3 pos = thingpos; + double posZ = thingpos.Z; uint32_t spritetype = (thing->renderflags & RF_SPRITETYPEMASK); if (spritetype == RF_FACESPRITE) - pos.Z -= thing->Floorclip; + posZ -= thing->Floorclip; if (thing->flags2 & MF2_FLOATBOB) - pos.Z += thing->GetBobOffset(viewpoint.TicFrac); + posZ += thing->GetBobOffset(viewpoint.TicFrac); bool flipTextureX = false; FTexture *tex = GetSpriteTexture(thing, flipTextureX); if (tex == nullptr || tex->UseType == FTexture::TEX_Null) return; - DVector2 spriteScale = thing->Scale; - double thingxscalemul = spriteScale.X / tex->Scale.X; - double thingyscalemul = spriteScale.Y / tex->Scale.Y; - double spriteHalfWidth = thingxscalemul * tex->GetWidth() * 0.5; + double thingyscalemul = thing->Scale.Y / tex->Scale.Y; double spriteHeight = thingyscalemul * tex->GetHeight(); - if (flipTextureX) - pos.X -= (tex->GetWidth() - tex->LeftOffset) * thingxscalemul; - else - pos.X -= tex->LeftOffset * thingxscalemul; - - pos.X += spriteHalfWidth; - - pos.Z -= (tex->GetHeight() - tex->TopOffset) * thingyscalemul; - pos.Z = PerformSpriteClipAdjustment(thing, thingpos, spriteHeight, pos.Z); + posZ -= (tex->GetHeight() - tex->TopOffset) * thingyscalemul; + posZ = PerformSpriteClipAdjustment(thing, thingpos, spriteHeight, posZ); //double depth = 1.0; //visstyle_t visstyle = GetSpriteVisStyle(thing, depth); @@ -142,7 +131,7 @@ void RenderPolySprite::Render(PolyRenderThread *thread, const TriMatrix &worldTo vertices[i].x = (float)p.X; vertices[i].y = (float)p.Y; - vertices[i].z = (float)(pos.Z + spriteHeight * offsets[i].second); + vertices[i].z = (float)(posZ + spriteHeight * offsets[i].second); vertices[i].w = 1.0f; vertices[i].u = (float)(offsets[i].first * tex->Scale.X); vertices[i].v = (float)((1.0f - offsets[i].second) * tex->Scale.Y); diff --git a/src/textures/texturemanager.cpp b/src/textures/texturemanager.cpp index f7aa4926d..5039f48b6 100644 --- a/src/textures/texturemanager.cpp +++ b/src/textures/texturemanager.cpp @@ -699,9 +699,9 @@ void FTextureManager::LoadTextureDefs(int wadnum, const char *lumpname) is32bit = !!sc.Compare("force32bit"); if (!is32bit) sc.UnGet(); - sc.GetNumber(); + sc.MustGetNumber(); width = sc.Number; - sc.GetNumber(); + sc.MustGetNumber(); height = sc.Number; if (lumpnum>=0) diff --git a/src/vectors.h b/src/vectors.h index 5fa0970f1..95d7c5fdf 100644 --- a/src/vectors.h +++ b/src/vectors.h @@ -651,6 +651,7 @@ struct TVector3 TVector3 &operator ^= (const TVector3 &other) { *this = *this ^ other; + return *this; } }; diff --git a/src/win32/fb_d3d9.cpp b/src/win32/fb_d3d9.cpp index d568ce60f..ff05faca9 100644 --- a/src/win32/fb_d3d9.cpp +++ b/src/win32/fb_d3d9.cpp @@ -1223,7 +1223,7 @@ void D3DFB::Flip() { RECT box; GetClientRect(Window, &box); - if (box.right > 0 && box.right > 0 && (Width != box.right || Height != box.bottom)) + if (box.right > 0 && box.bottom > 0 && (Width != box.right || Height != box.bottom)) { Resize(box.right, box.bottom);