From 450b0fe92b83533eb0d65526f25c6f54b1575d7e Mon Sep 17 00:00:00 2001 From: Jinny You Date: Tue, 13 May 2025 20:09:48 +0900 Subject: [PATCH] lottie: handle time remapping with zero value correctly The time remapping logic had an issue where animations with zero value "tm"(Time Remap) were not being processed correctly. This was happening because the previous implementation only applied time remapping when the value was non-zero. (A zero-value Time Remap should be applied, but is ignored) The fix changes the default time remap value to `-1.0` (since frame values cannot be negative) and applies time remapping when the value is 0.0 or greater. This ensures that zero value time remapping is properly processed. --- src/loaders/lottie/tvgLottieModel.cpp | 2 +- src/loaders/lottie/tvgLottieModel.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/loaders/lottie/tvgLottieModel.cpp b/src/loaders/lottie/tvgLottieModel.cpp index 11cf38c8..aad20cd2 100644 --- a/src/loaders/lottie/tvgLottieModel.cpp +++ b/src/loaders/lottie/tvgLottieModel.cpp @@ -533,7 +533,7 @@ void LottieLayer::prepare(RGB24* color) float LottieLayer::remap(LottieComposition* comp, float frameNo, LottieExpressions* exp) { - if (timeRemap.frames || timeRemap.value) { + if (timeRemap.frames || timeRemap.value >= 0.0f) { frameNo = comp->frameAtTime(timeRemap(frameNo, exp)); } else { frameNo -= startFrame; diff --git a/src/loaders/lottie/tvgLottieModel.h b/src/loaders/lottie/tvgLottieModel.h index 441160e2..b7da458b 100644 --- a/src/loaders/lottie/tvgLottieModel.h +++ b/src/loaders/lottie/tvgLottieModel.h @@ -898,7 +898,7 @@ struct LottieLayer : LottieGroup char* name = nullptr; LottieLayer* parent = nullptr; - LottieFloat timeRemap = 0.0f; + LottieFloat timeRemap = -1.0f; LottieLayer* comp = nullptr; //Precompositor, current layer is belonges. LottieTransform* transform = nullptr; Array masks;