bevyengine / bevy

A refreshingly simple data-driven game engine built in Rust
https://bevyengine.org
Apache License 2.0
36.46k stars 3.6k forks source link

AnimationEvent -> Event and other improvements #16440

Closed cart closed 1 week ago

cart commented 1 week ago

Objective

Needing to derive AnimationEvent for Event is unnecessary, and the trigger logic coupled to it feels like we're coupling "event producer" logic with the event itself, which feels wrong. It also comes with a bunch of complexity, which is again unnecessary. We can have the flexibility of "custom animation event trigger logic" without this coupling and complexity.

The current animation_events example is also needlessly complicated, due to it needing to work around system ordering issues. The docs describing it are also slightly wrong. We can make this all a non-issue by solving the underlying ordering problem.

Related to this, we use the bevy_animation::Animation system set to solve PostUpdate animation order-of-operations issues. If we move this to bevy_app as part of our "core schedule", we can cut out needless bevy_animation crate dependencies in these instances.

Solution

This is polishing work that will land in 0.15, and I think it is simple enough and valuable enough to land in 0.15 with it, in the interest of making the feature as compelling as possible.

BenjaminBrienen commented 1 week ago

check-doc is still failing. Other than that, I think this is good.