-
Jerome Humbert authored761e6a04
CHANGELOG.md 10.46 KiB
Changelog
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.6.0] - 2022-11-15
Added
- Added
RepeatCount
andRepeatStrategy
for more granular control over animation looping. - Added
with_repeat_count()
andwith_repeat_strategy()
builder methods toTween<T>
. - Added a
speed()
getter onAnimator<T>
andAssetAnimator<T>
. - Added
set_elapsed(Duration)
andelapsed() -> Duration
to theTweenable<T>
trait. Those methods are preferable overset_progress()
andprogress()
as they avoid the conversion to floating-point values and any rounding errors. - Added a new
bevy_text
feature forText
-related built-in lenses. - Added
Targetable
,ComponentTarget
, andAssetTarget
, which should be considered private even though they appear in the public API. They are a workaround for Bevy 0.8 and will likely be removed in the future once the related Bevy limitation is lifted. - Added the missing
Tween::with_completed()
to raise a callback. - Added completion event and callback support to
Delay<T>
, similar to what existed forTween<T>
. - Added
TotalDuration
and a newTweenable<T>::total_duration()
method to retrieve the total duration of the animation including looping.
Changed
- Compatible with Bevy 0.9
- Removed the
tweening_type
parameter from the signature ofTween<T>::new()
; usewith_repeat_count()
andwith_repeat_strategy()
instead. - Animators now always have a tween (instead of it being optional). This means the default animator implementation was removed.
-
Delay::new()
now panics if theduration
is zero. This prevents creating no-opDelay
objects, and avoids an internal edge case producing wrong results. - Tweens moving to
TweenState::Completed
are now guaranteed to freeze their state. In particular, this means that their direction will not flip at the end of the last loop if their repeat strategy isRepeatStrategy::MirroredRepeat
. - Moved the
TextColorLens
lens from thebevy_ui
feature to the newbevy_text
one, to allow using it without the Bevy UI crate. - Changed the signature of the
component_animator_system()
andasset_animator_system()
public functions to directly consume aResMut<Events<TweenCompleted>>
instead of anEventWriter<TweenCompleted>
, to work around some internal limitations. - Changed
Delay
intoDelay<T>
, taking the animation target type like other tweenables, to be able to emit events and raise callbacks. - Changed
CompletedCallback<T>
to take the tweenable type itself, instead of the target type. Users upgrading should replaceCompletedCallback<T>
withCompletedCallback<Tween<T>>
. - The
set_progress()
,progress()
, andtimes_completed()
method ofTweenable<T>
now have a default implementation, and all built-in tweenables use that implementation.
Removed
- Removed
Tweenable::is_looping()
, which was not implemented for most tweenables. - Removed
TweeningType
in favor ofRepeatCount
andRepeatStrategy
.
Fixed
- Fixed the animator speed feature, which got broken in #44.
- Fixed change detection triggering unconditionally when
component_animator_system()
orasset_animator_system()
are ticked, even when the animator did not mutate its target component or asset. (#33)
[0.5.0] - 2022-08-04
Added
- Added
is_forward()
andis_backward()
convenience helpers toTweeningDirection
. - Added
Tween::set_direction()
andTween::with_direction()
which allow configuring the playback direction of a tween, allowing to play it backward from end to start. - Added support for dynamically changing an animation's speed with
Animator::set_speed
. - Added
AnimationSystem
label to tweening tick systems. - Added a
BoxedTweenable
trait to make working withBox<dyn Tweenable + ...>
easier.
Changed
- Compatible with Bevy 0.8
- Double boxing in
Sequence
andTracks
was fixed. As a result, any custom tweenables should implementFrom
forBoxedTweenable
to make those APIs easier to use.
[0.4.0] - 2022-04-16
Changed
- Compatible with Bevy 0.7
- Better dependencies: Introduced features
bevy_sprite
andbevy_ui
taking a dependency on the same-named crates of Bevy, and removed the forced dependency onbevy/render
. The new features are enabled by default, for discoverability, and only impact the prebuilt lenses. The library now builds without any Bevy optional feature.
[0.3.3] - 2022-03-05
Added
- Added new built-in rotation lenses based on angle interpolation, to allow rotation animations larger than a half turn:
TransformRotateXLens
TransformRotateYLens
TransformRotateZLens
TransformRotateAxisLens
[0.3.2] - 2022-02-24
Added
- Implemented
Default
forTweeningType
(=Once
),EaseMethod
(=Linear
),TweeningDirection
(=Forward
). - Added
Tweenable::is_looping()
,Tweenable::set_progress()
,Tweenable::times_completed()
, andTweenable::rewind()
. - Added
Animator::set_progress()
,Animator::progress()
,Animator::stop()
, andAnimator::rewind()
. - Added
AssetAnimator::set_progress()
,AssetAnimator::progress()
,AssetAnimator::stop()
, andAssetAnimator::rewind()
. - Added the
TweenCompleted
event, raised when aTween<T>
completed its animation if that feature was previously activated withset_completed_event()
orwith_completed_event()
.
Changed
-
TweenState
now contains only two states:Active
andCompleted
. Looping animations are always active, and non-looping ones are completed once they reach their end point. - Merged the
started
andended
callbacks into acompleted
one (Tween::set_completed()
andTween::clear_completed()
), which is invoked when the tween completes a single iteration. That is, for non-looping animations, whenTweenState::Completed
is reached. And for looping animations, once per iteration (going from start -> end, or from end -> start).
Removed
- Removed
Tweenable::stop()
. Tweenables do not have a "stop" state anymore, they are only either active or completed. The playback state is only relevant on theAnimator
orAssetAnimator
which controls them.