Expand description
§bevy_lookup_curve 📈
Editable lookup curve for Bevy that can be used for many things, for example:
- Animation
- Gameplay progressiom (control different aspects over time or other variables)
- Physics (for example: tweakable feel on a character controller)
- Probability control (for item drops etc)
- Shaders
- … just about anything where you need a formula (x -> y) that you can fine tune, with a GUI instead of diving into math
If you have used AnimationCurve in Unity, this would be an attempt at something similar for Bevy.
§Features
-
LookupCurvetype with modifiable knots and tangents. Three types of interpolation: Constant, Linear, and Cubic -
LookupCurveimplementsbevy_math::Curve<f32>to fit into the ecosystem, giving access to resampling and other conveniences. - Asset loader and save functionality
-
egui-based editor - Integration with bevy-inspector-egui for quick and easy tweaking
https://github.com/villor/bevy_lookup_curve/assets/7102243/180aed95-ca9a-4e3b-97c4-2516055ea648
§Usage
See examples for now.
The animation example demonstrates how to both use and edit a curve in a Bevy app.
§Feature flags
| Feature | Default | Description |
|---|---|---|
| serialize | Yes | Enable serde serialization/deserialization for the LookupCurve |
| ron | Yes | Enable loading/saving the curve as a ron file |
| bevy_reflect | Yes | Implement Reflect on most types in the crate |
| bevy_asset | Yes | Implement AssetLoader for LookupCurve |
| editor_egui | Yes | Enables the egui-based editor |
| editor_bevy | Yes | ECS component for convenient spawning of editor windows inside Bevy |
| inspector-egui | No | Integration with bevy-inspector-egui |
§Bevy support
| bevy | bevy_lookup_curve |
|---|---|
| 0.18 | 0.11 |
| 0.17 | 0.10 |
| 0.16 | 0.9 |
| 0.15 | 0.6-0.8 |
| 0.14 | 0.3-0.5 |
| 0.13 | 0.1-0.2 |
§Using without Bevy
This crate can be used without Bevy as well (except for bevy_math which is a core dependency).
Just set default-features = false. And enable serialize, ron, and/or editor_egui if needed.
See the egui_only example. It can also be used as a standalone curve editor.
§Contributing
Contributions are welcome. Feel free to make a PR!
§License
Dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
Modules§
- asset
- Contains the asset loader plugin for
LookupCurveassets. - editor
- Contains editor implementations for
LookupCurves. - prelude
- Re-exports of the most commonly used items for convenience
Structs§
- Knot
- A knot in a LookupCurve.
- Lookup
Cache - Cache to speed up coherent lookups, see LookupCurve::lookup_cached
- Lookup
Curve - Two-dimensional spline that only allows a single y-value per x-value
- Lookup
Curve Plugin - Registers the asset loader and editor components
- Lookup
Options - Options for advanced lookup in a LookupCurve. See LookupCurve::lookup_advanced
- Tangent
- Tangents are used to control cubic interpolation for Knots in a LookupCurve
Enums§
- Knot
Interpolation - Interpolation used between a Knot the next knot
- Lookup
Curve Load Error - Errors that can occur when loading a
LookupCurvefrom a RON file - Lookup
Curve Save Error - Errors that can occur when saving a
LookupCurveto a RON file - Tangent
Mode - How a tangent behaves when a knot or its tangents are moved
- Tangent
Side - Specifies which tangent of a Knot to target for some operations.