-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Closed
Labels
A-AnimationMake things move and change over timeMake things move and change over timeA-MathFundamental domain-agnostic mathematical operationsFundamental domain-agnostic mathematical operationsC-Tracking-IssueAn issue that collects information about a broad development initiativeAn issue that collects information about a broad development initiative
Description
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
CurveAPI itself.- Implement a viable minimum usable as an interface. (Blocker for everything.) (A Curve trait for general interoperation — Part I #14630) (A Curve trait for general interoperation — Part II #14700).
- Extend
SampleCurveandUnevenSampleCurveAPIs for consumers. - Implement
Reflecton concrete curve types from the API. (Blocker forbevy_animationintegration.) - Extend the API to include non-allocating sampling API for curves with dynamically-sized array output. (Blocker for
bevy_animationintegration.)
- Integrate the
CurveAPI withbevy_animation.- Replace each component of
VariableCurve(translation, rotation, scale, morph weights) with a type that implements the associatedCurvetrait. (Curve-based animation #15434) - Refactor
AnimationTargetContextto sample from newVariableCurvecomponents instead of doing its own interpolation. - Benchmark animation update performance and compare the refactored version with the existing one.
- Replace each component of
- Integrate the
CurveAPI withbevy_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
CubicCurveand implementors ofCubicGenerator. - Implement curve-production API for
RationalCurveand implementors ofRationalGenerator.
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.
- Improve the
Reflectimplementations for adaptors in theCurveAPI so that the adaptors areReflectwhen their bases are.
Metadata
Metadata
Assignees
Labels
A-AnimationMake things move and change over timeMake things move and change over timeA-MathFundamental domain-agnostic mathematical operationsFundamental domain-agnostic mathematical operationsC-Tracking-IssueAn issue that collects information about a broad development initiativeAn issue that collects information about a broad development initiative