- Nov 09, 2022
-
-
Jerome Humbert authored
Ensure change detection on components and assets is only triggered when an animator effectively modifies said component or asset, and not invariably just by the simple fact of the animator ticking each frame. This change modifies the signature of the `component_animator_system()` and `asset_animator_system()` public functions to directly consume a `ResMut<Events<TweenCompleted>>` instead of an `EventWriter<TweenCompleted>`, to work around some internal limitations. It also publicly exposes a new `Targetable` trait used to work around the impossibility to retrieve a `Mut<T>` from a `Mut<Assets<T>>`. Instead, the trait provides an "target dereferencing" method `target_mut()` which dereferences the target component or asset, and triggers its change detection. The trait is implemented for all components via the `ComponentTarget` object, and for all assets via the `AssetTarget` object. The 3 types described here are publicly exposed to workaround some Bevy limitations, and because the trait appears in the public `Tweenable<T>` API. However users are discouraged from taking strong dependencies on those, as they will be removed once Bevy provides a way to achieve this conditionaly dereferencing without this workaround. Fixes #33
-
- Oct 02, 2022
-
-
Jerome Humbert authored
Add two new methods to the `Tweenable<T>` trait: - `set_elapsed(Duration)` sets the elapsed time of the tweenable. This is equivalent to `set_progress(duration().mul_f32(progress))`, with the added benefit of avoiding floating-point conversions and potential rounding errors resulting from it. `set_progress()` is now largely implemented in terms of and as a convenience wrapper to calling `set_elapsed()`. - `elapsed()` which queries the elapsed time of the tweenable. This is equivalent to `duration().mul_f32(progress())`, again with better precision. The elapsed API is the recommended way going forward to manipulate a tweenable's time outside of the normal `tick()` flow. It supersedes the progress API. This change purposedly skips any discussion about what happens to completion events when `set_progress()` or now `set_elpased()` is called with a lower value than the current one to seek time back. This design issue is logged as #60 and is still pending. The change also partially addresses #31, but without removing any existing API or feature.
-
Jerome Humbert authored
Clarify testing code and potential assertions message with the use of a new `assert_approx_eq!()` macro for `f32` equality check with a tolerance. The macro leverages `abs_diff_eq()` but produces a better assertion message in case of failure. It also allows skipping the tolerance parameter to use the default of `1e-5`, which is the "standard" tolerance to use for progress and other small-ish values that are expected to be equal but might be slightly off due to rounding errors. This change ignores the complications of testing for floating-point equality in a generic way, which is too complex, and instead restrict the usage to values like progress (range [0:1]) and other small position values around the origin.
-
- Oct 01, 2022
-
-
Jerome Humbert authored
Add some tests to fill gaps for: - `UiPositionLens` - `Animator::set_tweenable()` and `AssetAnimator::set_tweenable()` - `Sequence::from_single()` - `Delay`'s `then()`, `times_completed()`, and `set_progress()`
-
- Sep 28, 2022
-
-
Jerome Humbert authored
Fix the repeat mode being broken after the first iteration due to `AnimClock::progress()` reporting a progress greater than `1.`, which was breaking the logic of `Tween` and `Lens`. Also fix `Tween::rewind()` not restoring the original tween direction when using a repeat strategy of `RepeatStrategy::MirroredRepeat`. Fixes #42
-
- Sep 27, 2022
-
-
Jerome Humbert authored
Make `Delay::new()` panic if a zero duration is passed as argument. Fix the `menu` example to skip inserting a `Sequence<Transform>` containing a zero-duration `Delay`. Bug: #41
-
- Aug 04, 2022
-
-
Jerome Humbert authored
This reverts commit f7647405.
-
Jerome Humbert authored
This reverts commit 971edb62.
-
Jerome Humbert authored
This reverts commit 87ac60b2.
-
Jerome Humbert authored
This reverts commit 6a871576.
-
Jerome Humbert authored
This reverts commit 77b56f44.
-
Jerome Humbert authored
This reverts commit 722b62ec.
-
- Aug 03, 2022
-
-
Jerome Humbert authored
-
Gyrobifastigium authored
-
Alex Saveau authored
Remove `TweeningType` and split its functionalities between a new `RepeatCount` controlling the number of repeats of an animation on one hand, and `RepeatStrategy` controlling the way an animation restarts after a loop ended on the other hand. This allows more granular control on the type of playback. Remove the `tweening_type` parameter from `Tween<T>::new()` and replace it with builder methods `with_repeat_count()` and `with_repeat_strategy()`. Remove `is_looping()` from all tweenables, which was not implemented for most of them anyway.
-
- Jul 10, 2022
-
-
Alex Saveau authored
Signed-off-by:
Alex Saveau <saveau.alexandre@gmail.com>
-
- Jun 14, 2022
-
-
Alex Saveau authored
-
- Jun 01, 2022
-
-
Alex Saveau authored
Fix double-boxing by removing the `IntoBoxDynTweenable` trait and the impl of `Tweenable<T>` for `Box<dyn Tweenable>`, and instead using some `From` conversion implemented per concrete type.
-
- May 31, 2022
-
-
Alex Saveau authored
-
- May 17, 2022
-
-
Alex Saveau authored
-
- May 07, 2022
-
-
Alex Saveau authored
-
- Apr 24, 2022
-
-
Jerome Humbert authored
Allow a `Tween` to play backward by setting its direction with `Tween::set_direction()`.
-
- Apr 16, 2022
-
-
Jerome Humbert authored
-
- Mar 05, 2022
-
-
Jerome Humbert authored
-
- Feb 24, 2022
-
-
Jerome Humbert authored
-
- Feb 16, 2022
-
-
Jerome Humbert authored
- Add `TweenCompleted::user_data` to help identify the tween which raised the event. - Improved several docs. - Update CHANGELOG. - Update README with mention of events and callbacks.
-
Jerome Humbert authored
Add a mechanism to `Tween<T>` to raise a Bevy event once the tween completed. The event raising can be enabled with `set_completed_event()` and `with_completed_event()`. The `TweenCompleted` event contains the `Entity` on which the `Animator<T>` or `AssetAnimator<T>` owning the tween are attached. Update the `sequence` example to show how to use that new event mechanism.
-
- Feb 14, 2022
-
-
Jerome Humbert authored
Provide the callback owner with the `Entity` the tween and the animator are attached to, as a parameter to the callback when invoked.
-
- Feb 13, 2022
-
-
Jerome Humbert authored
Add some new methods and refactor some existing ones to clarify the playback state of a tweenable, and give increased control to the `Animator` or `AssetAnimator` to rewind a tweenable, set its progress to an arbitrary value, or query its current state.
-
- Feb 12, 2022
-
-
Jerome Humbert authored
This avoids having those predefined types, which are optional, be in the middle of the core types.
-
Jerome Humbert authored
-
Jerome Humbert authored
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.
-
Jerome Humbert authored
-
Jerome Humbert authored
-
Jerome Humbert authored
Add a `Tweenable<T>` trait describing a generic animatable tween-like element. Expose the three types of tweenables and implement `Tweenable<T>` for them: - `Tween<T>`, a single animation - `Sequence<T>`, a sequence of consecutive animations - `Tracks<T>`, a batch of animations running in parallel Clean-up animators to hold a single top-level `Tweenable<T>` and let the user build any kind of animation hierarchy for themselves.
-
- Jan 29, 2022
-
-
Jerome Humbert authored
Allow querying the active tween of a sequence. Use this to improve the `sequence` example with some text showing the current active tween and its progress.
-
Jerome Humbert authored
Implement some callbacks invoked when a tween anim starts or ends.
-
Jerome Humbert authored
Export publicly the asset and component system to allow an app to manually add them.
-
Jerome Humbert authored
-
- Jan 28, 2022
-
-
Jerome Humbert authored
- Add `Sequence<T>` for chained tweens - Add `Tracks<T>` for tracks of sequences running in parallel - Move most animation-related properties to the new `Tweens<T>` struct - Add `sequence` example
-