From 7504c1381dc5fba9cfee67a22240814a5ac0746d Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Fri, 17 Jun 2022 23:05:26 +0700 Subject: [PATCH] Fix non looping animation being broken --- .../kstarbound/client/render/FrameSetAnimator.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/ru/dbotthepony/kstarbound/client/render/FrameSetAnimator.kt b/src/main/kotlin/ru/dbotthepony/kstarbound/client/render/FrameSetAnimator.kt index 1b3b5fea..6840dc29 100644 --- a/src/main/kotlin/ru/dbotthepony/kstarbound/client/render/FrameSetAnimator.kt +++ b/src/main/kotlin/ru/dbotthepony/kstarbound/client/render/FrameSetAnimator.kt @@ -56,7 +56,7 @@ class FrameSetAnimator( if (frameDiff == 0) return - if (frame + frameDiff >= lastFrame && !animationLoops) { + if (frame + firstFrame >= lastFrame && !animationLoops) { return } @@ -64,8 +64,14 @@ class FrameSetAnimator( lastRender = glfwGetTime() if (counter >= 1.0) { - frame = (frame + counter.toInt()) % frameDiff - counter %= 1.0 + val desired = frame + counter.toInt() + + if (animationLoops || desired + firstFrame < lastFrame) { + frame = desired % frameDiff + counter %= 1.0 + } else { + frame = lastFrame - firstFrame + } } } }