Skip to content
Snippets Groups Projects
  1. Nov 15, 2022
  2. Nov 14, 2022
  3. Nov 09, 2022
    • Jerome Humbert's avatar
      Add completion event/callback on `Delay<T>` (#73) · e6bdbbce
      Jerome Humbert authored
      Change `Delay` into `Delay<T>`, and add support for raising a completion
      event or callback.
      
      Bug: #69
      e6bdbbce
    • Jerome Humbert's avatar
      Fix incorrect change detection triggering (#71) · a3fecb10
      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
      a3fecb10
  4. Nov 06, 2022
  5. Oct 02, 2022
    • Jerome Humbert's avatar
      Add elapsed API (#67) · d295b91c
      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.
      d295b91c
  6. Oct 01, 2022
    • Jerome Humbert's avatar
      Fix animator speed feature (#63) · 4c2f49da
      Jerome Humbert authored
      Fix the animator speed applying, which got broken as part of the
      refactor of #44.
      
      Add a `speed()` getter to both `Animator<T>` and `AssetAnimator<T>`.
      
      Add some simple test for speed, but this is not enough to make sure the
      feature doesn't regress, so logged #62 to follow-up with a proper
      regression test.
      
      Fixes #61
      4c2f49da
  7. Sep 28, 2022
    • Jerome Humbert's avatar
      Fix repeat mode broken after first iteration (#57) · 175c8b74
      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
      175c8b74
  8. Sep 27, 2022
  9. Aug 12, 2022
  10. Aug 06, 2022
  11. Aug 04, 2022
  12. Aug 03, 2022
    • Alex Saveau's avatar
      Support running an animation N times (#19) · 6a871576
      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.
      6a871576
  13. Jun 01, 2022
  14. May 17, 2022
  15. May 14, 2022
    • Alex Saveau's avatar
      Add speed modifier (#22) · 454bcd00
      Alex Saveau authored
      It needs to be built-in because otherwise you have to completely recreate the animation to change the speed.
      454bcd00
  16. Apr 24, 2022
  17. Apr 16, 2022
  18. Mar 19, 2022
    • Jerome Humbert's avatar
      Tighter dependencies with features (#9) · 6619f067
      Jerome Humbert authored
      Enable minimal dependencies with new features `bevu_sprite` and
      `bevy_ui`, removing the `bevy/render` mandatory dependency. Those new
      features are enabled by default, and enable the built-in lenses for the
      related Bevy crates. The core `bevy_tweening` crate itself does not take
      any optional Bevy dependency anymore, allowing for a slim build with
      only the core Bevy functionalities.
      6619f067
  19. Mar 05, 2022
  20. Feb 24, 2022
  21. Feb 21, 2022
    • Jerome Humbert's avatar
      Fix bug with color lenses · 60a9a8a7
      Jerome Humbert authored
      Fix some bug lerp'ing colored lenses (`TextColorLens`,
      `SpriteColorLens`, `ColorMaterialColorLens`) where the alpha value would
      be too high. This only affects non-opaque colors, in that for opaque
      blending the resulting alpha was `3.0` which was interpreted as opaque.
      60a9a8a7
  22. Feb 16, 2022
    • Jerome Humbert's avatar
      Add event `user_data` and improve docs · 8dcd3d27
      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.
      8dcd3d27
  23. Feb 15, 2022
  24. Feb 13, 2022
    • Jerome Humbert's avatar
      Clarify and increase control on playback state · 38e99394
      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.
      38e99394
  25. Feb 12, 2022
    • Jerome Humbert's avatar
      Bump version to 0.3.1 · 0b595c41
      Jerome Humbert authored
      0b595c41
    • Jerome Humbert's avatar
      Add `Delay` and the menu example · 4b138ffb
      Jerome Humbert authored
      4b138ffb
    • Jerome Humbert's avatar
      `Tweenable`-based design · d3b5f1be
      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.
      d3b5f1be
  26. Jan 29, 2022
  27. Jan 28, 2022
  28. Jan 27, 2022
Loading