13 releases (breaking)
Uses new Rust 2024
| 0.10.0 | Oct 4, 2025 |
|---|---|
| 0.9.0 | May 5, 2025 |
| 0.8.0 | Mar 16, 2025 |
| 0.6.0 | Dec 3, 2024 |
| 0.1.0 | Feb 23, 2024 |
#449 in Algorithms
Used in bevy_tween
88KB
1.5K
SLoC
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.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)
Dependencies
~15–65MB
~1M SLoC