From 11fdbe1fe390db7a9440fbbb1e61dd773142d95a Mon Sep 17 00:00:00 2001 From: Jerome Humbert <djeedai@gmail.com> Date: Sat, 12 Feb 2022 11:19:27 +0000 Subject: [PATCH] Fix non-`Once` animation playback Ensure the `TweenState::Ended` is set only for `TweeningType::Once`, which is the only one with a finite duration, so which can end. Other tweening types repeat indefinitely until stopped, so have no end. --- examples/menu.rs | 2 +- src/tweenable.rs | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/menu.rs b/examples/menu.rs index 4f3dbf3..eb09eeb 100644 --- a/examples/menu.rs +++ b/examples/menu.rs @@ -43,7 +43,7 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) { color: UiColor(Color::NONE), ..Default::default() }) - .insert(Name::new("container")) + .insert(Name::new("menu")) .id(); let mut start_time_ms = 0; diff --git a/src/tweenable.rs b/src/tweenable.rs index bdb5ab2..ae706b2 100644 --- a/src/tweenable.rs +++ b/src/tweenable.rs @@ -165,7 +165,10 @@ impl<T> Tweenable<T> for Tween<T> { self.lens.lerp(target, factor); if self.timer.just_finished() { - self.state = TweenState::Ended; + if self.tweening_type == TweeningType::Once { + self.state = TweenState::Ended; + } + // This is always true for non ping-pong, and is true for ping-pong when // coming back to start after a full cycle start -> end -> start. if self.direction == TweeningDirection::Forward { -- GitLab