From d255328476f1d3dd76bfd1dec550fddeab7c11ba Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:27:46 +1000 Subject: [PATCH] Humanoid: apply globalOffset *before* rotation the globalOffset is meant to realign the sprite with the collision poly - applying it after rotating the drawables is bad! (I actually ACCIDENTALLY fixed this in StarExtensions and only noticed the difference today. quite incredible) --- source/application/StarRenderer_opengl.cpp | 2 +- source/game/StarHumanoid.cpp | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/application/StarRenderer_opengl.cpp b/source/application/StarRenderer_opengl.cpp index d8b26e8..90d691e 100644 --- a/source/application/StarRenderer_opengl.cpp +++ b/source/application/StarRenderer_opengl.cpp @@ -434,7 +434,7 @@ void OpenGlRenderer::setMultiSampling(unsigned multiSampling) { glEnable(GL_SAMPLE_SHADING); glMinSampleShading((float)m_multiSampling); } else { - glMinSampleShading(1.f); + glMinSampleShading(0.f); glDisable(GL_SAMPLE_SHADING); glDisable(GL_MULTISAMPLE); } diff --git a/source/game/StarHumanoid.cpp b/source/game/StarHumanoid.cpp index c69872b..b19410a 100644 --- a/source/game/StarHumanoid.cpp +++ b/source/game/StarHumanoid.cpp @@ -528,7 +528,7 @@ List Humanoid::render(bool withItems, bool withRotation) { auto addDrawable = [&](Drawable drawable, bool forceFullbright = false) { if (m_facingDirection == Direction::Left) drawable.scale(Vec2F(-1, 1)); - drawable.fullbright = drawable.fullbright || forceFullbright; + drawable.fullbright |= forceFullbright; drawables.append(std::move(drawable)); }; @@ -792,12 +792,12 @@ List Humanoid::render(bool withItems, bool withRotation) { drawables.insertAllAt(0, m_altHand.nonRotatedDrawables); } - if (withRotation) - Drawable::rotateAll(drawables, m_rotation); - - Drawable::translateAll(drawables, m_globalOffset); - Drawable::rebaseAll(drawables); - + for (auto& drawable : drawables) { + drawable.translate(m_globalOffset); + if (withRotation && m_rotation != 0) + drawable.rotate(m_rotation); + drawable.rebase(); + } return drawables; }