Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tracking Issue: Curves Working Group Tasks #13213

Open
18 tasks
mweatherley opened this issue May 3, 2024 · 0 comments
Open
18 tasks

Tracking Issue: Curves Working Group Tasks #13213

mweatherley opened this issue May 3, 2024 · 0 comments
Labels
A-Animation Make things move and change over time A-Color Color spaces and color math A-Math Fundamental domain-agnostic mathematical operations C-Tracking-Issue An issue that collects information about a broad development initiative

Comments

@mweatherley
Copy link
Contributor

mweatherley commented May 3, 2024

About

The Curves working group exists to implement the Curve API described in this RFC and integrate it into Bevy's existing codebase (primarily in math and animation).

The design document for this group is here.

This working group is coordinated in this Discord channel.

If you are interested in contributing to this effort, please check in on Discord first — and, of course, external reviews on related PRs are always welcome.

Tasks

  • Implement the Curve API itself.
    • Implement a viable minimum usable as an interface. (Blocker for everything.) (Curve trait for general interoperation #12932).
    • Implement the #[derive(Interpolable)] macro.
    • Extend SampleCurve and UnevenSampleCurve APIs for consumers.
    • Implement Reflect on concrete curve types from the API. (Blocker for bevy_animation integration.)
    • Extend the API to include non-allocating sampling API for curves with dynamically-sized array output. (Blocker for bevy_animation integration.)
  • Integrate the Curve API with bevy_animation.
    • Replace each component of VariableCurve (translation, rotation, scale, morph weights) with a type that implements the associated Curve trait.
    • Refactor AnimationTargetContext to sample from new VariableCurve components instead of doing its own interpolation.
    • Benchmark animation update performance and compare the refactored version with the existing one.
    • Integrate Animatable with Interpolable.
  • Integrate the Curve API with bevy_math.
    • Perform design work on shared API for producing and consuming geometric curves which may be constrained by the input quality (e.g. C0 vs C1 curves).
    • Implement curve-production API for CubicCurve and implementors of CubicGenerator.
    • Implement curve-production API for RationalCurve and implementors of RationalGenerator.
  • Other miscellaneous integration points.
    • Investigate integration of bevy_color's Mix with Interpolable.

Beyond

This section is for tracking related tasks outside of the scope of the present working group proposal that may be spun off into external issues when this work is completed (or advanced to a sufficient state).

  • Investigate the inclusion of more common easing/tweening functions into Bevy itself.
@mweatherley mweatherley added C-Enhancement A new feature S-Needs-Triage This issue needs to be labelled labels May 3, 2024
@alice-i-cecile alice-i-cecile added A-Color Color spaces and color math C-Tracking-Issue An issue that collects information about a broad development initiative A-Math Fundamental domain-agnostic mathematical operations A-Animation Make things move and change over time and removed C-Enhancement A new feature S-Needs-Triage This issue needs to be labelled labels May 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Animation Make things move and change over time A-Color Color spaces and color math A-Math Fundamental domain-agnostic mathematical operations C-Tracking-Issue An issue that collects information about a broad development initiative
Projects
None yet
Development

No branches or pull requests

2 participants