From 1e692f223ca86094bd606f02a970a714ca95cdf3 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 9e4d8fcd..714a86f4 100644 --- a/src/loaders/lottie/tvgLottieModel.cpp +++ b/src/loaders/lottie/tvgLottieModel.cpp @@ -693,7 +693,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 fce2fcde..572fe9c3 100644 --- a/src/loaders/lottie/tvgLottieModel.h +++ b/src/loaders/lottie/tvgLottieModel.h @@ -980,7 +980,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;