From b48c353c145461ae45df028c59fa71ad8cac6279 Mon Sep 17 00:00:00 2001 From: Klemen Plestenjak Date: Fri, 29 Dec 2023 20:26:46 +0100 Subject: [PATCH] Update instead of overwrite value in easing system --- game/systems/s_animation.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/game/systems/s_animation.c b/game/systems/s_animation.c index 4f83248..8579a51 100644 --- a/game/systems/s_animation.c +++ b/game/systems/s_animation.c @@ -66,6 +66,7 @@ void updateEasingSystem(ecs_iter_t *it) { easing[i].elapsed += dt; f32 alpha = easing[i].elapsed / easing[i].duration; alpha = BZ_MIN(1.0f, alpha); + f32 prevX = easing[i].x; easing[i].x = bzEase(easing[i].easingFunc, alpha); const Easing *e = &easing[i]; @@ -74,10 +75,13 @@ void updateEasingSystem(ecs_iter_t *it) { x = e->easeStart + e->easeTarget * x + e->easeOffset; // Outer x = e->start + e->target * x + e->offset; + easing->x = x; u8 *compData = ecs_get_mut_id(ECS, entity, easing[i].compID); compData += easing[i].memberOffset; + f32 *out = (f32 *) compData; - *(f32 *) compData = x; + *out -= prevX; + *out += x; } }