diff --git a/CHANGELOG.md b/CHANGELOG.md index 5c81f0827d9fca8bb6ec447e9ab598004d2e7fff..60a086427b08300116f551257ccfeca07d932614 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] +## [0.4.0] - 2022-04-16 ### Changed +- Compatible with Bevy 0.7 - Better dependencies: Introduced features `bevy_sprite` and `bevy_ui` taking a dependency on the same-named crates of Bevy, and removed the forced dependency on `bevy/render`. The new features are enabled by default, for discoverability, and only impact the prebuilt lenses. The library now builds without any Bevy optional feature. ## [0.3.3] - 2022-03-05 diff --git a/Cargo.toml b/Cargo.toml index ed26c9c863ddee418f555933aee9faf2bc013ccf..435e5c87789a259dba789519532c06c7a4926e55 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bevy_tweening" -version = "0.3.3" +version = "0.4.0" authors = ["François Mockers <mockersf@gmail.com>", "Jerome Humbert <djeedai@gmail.com>"] edition = "2021" description = "Tweening animation plugin for the Bevy game engine" @@ -21,7 +21,7 @@ bevy_ui = ["bevy/bevy_ui", "bevy/bevy_text", "bevy/bevy_render"] [dependencies] interpolation = "0.2" -bevy = { version = "0.6", default-features = false } +bevy = { version = "0.7", default-features = false } [dev-dependencies] bevy-inspector-egui = "0.8" diff --git a/README.md b/README.md index d99e5f161ec2f87fdd1b255bde080c82ce9b15b4..626a337130c4284640e06832887c594f09149610 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [](https://crates.io/crates/bevy_tweening) [](https://github.com/djeedai/bevy_tweening/actions/workflows/ci.yaml) [](https://coveralls.io/github/djeedai/bevy_tweening?branch=main) -[](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking) +[](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking) Tweening animation plugin for the Bevy game engine. @@ -24,13 +24,15 @@ Add to `Cargo.toml`: ```toml [dependencies] -bevy_tweening = "0.3" +bevy_tweening = "0.4" ``` This crate supports the following features: -- `bevy_sprite` (default) : Includes built-in lenses for some `Sprite`-related components. -- `bevy_ui` (default) : Includes built-in lenses for some UI-related components. +| Feature | Default | Description | +|---|---|---| +| `bevy_sprite` | Yes | Includes built-in lenses for some `Sprite`-related components. | +| `bevy_ui` | Yes | Includes built-in lenses for some UI-related components. | ### System setup @@ -109,28 +111,28 @@ The naming scheme for predefined lenses is `"<TargetName><FieldName>Lens"`, wher | Target Component | Animated Field | Lens | Feature | |---|---|---|---| -| [`Transform`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html) | [`translation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.translation) | [`TransformPositionLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformPositionLens.html) | | -| | [`rotation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.rotation) (`Quat`)¹ | [`TransformRotationLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotationLens.html) | | -| | [`rotation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateXLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateXLens.html) | | -| | [`rotation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateYLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateYLens.html) | | -| | [`rotation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateZLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateZLens.html) | | -| | [`rotation`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateAxisLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateAxisLens.html) | | -| | [`scale`](https://docs.rs/bevy/0.6.1/bevy/transform/components/struct.Transform.html#structfield.scale) | [`TransformScaleLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformScaleLens.html) | | -| [`Sprite`](https://docs.rs/bevy/0.6.1/bevy/sprite/struct.Sprite.html) | [`color`](https://docs.rs/bevy/0.6.1/bevy/sprite/struct.Sprite.html#structfield.color) | [`SpriteColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.SpriteColorLens.html) | `bevy_sprite` | -| [`Style`](https://docs.rs/bevy/0.6.1/bevy/ui/struct.Style.html) | [`position`](https://docs.rs/bevy/0.6.1/bevy/ui/struct.Style.html#structfield.position) | [`UiPositionLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.UiPositionLens.html) | `bevy_ui` | -| [`Text`](https://docs.rs/bevy/0.6.1/bevy/text/struct.Text.html) | [`TextStyle::color`](https://docs.rs/bevy/0.6.1/bevy/text/struct.TextStyle.html#structfield.color) | [`TextColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TextColorLens.html) | `bevy_ui` | +| [`Transform`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html) | [`translation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.translation) | [`TransformPositionLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformPositionLens.html) | | +| | [`rotation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.rotation) (`Quat`)¹ | [`TransformRotationLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotationLens.html) | | +| | [`rotation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateXLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateXLens.html) | | +| | [`rotation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateYLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateYLens.html) | | +| | [`rotation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateZLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateZLens.html) | | +| | [`rotation`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.rotation) (angle)² | [`TransformRotateAxisLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformRotateAxisLens.html) | | +| | [`scale`](https://docs.rs/bevy/0.7.0/bevy/transform/components/struct.Transform.html#structfield.scale) | [`TransformScaleLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TransformScaleLens.html) | | +| [`Sprite`](https://docs.rs/bevy/0.7.0/bevy/sprite/struct.Sprite.html) | [`color`](https://docs.rs/bevy/0.7.0/bevy/sprite/struct.Sprite.html#structfield.color) | [`SpriteColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.SpriteColorLens.html) | `bevy_sprite` | +| [`Style`](https://docs.rs/bevy/0.7.0/bevy/ui/struct.Style.html) | [`position`](https://docs.rs/bevy/0.7.0/bevy/ui/struct.Style.html#structfield.position) | [`UiPositionLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.UiPositionLens.html) | `bevy_ui` | +| [`Text`](https://docs.rs/bevy/0.7.0/bevy/text/struct.Text.html) | [`TextStyle::color`](https://docs.rs/bevy/0.7.0/bevy/text/struct.TextStyle.html#structfield.color) | [`TextColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.TextColorLens.html) | `bevy_ui` | ¹ Shortest-path interpolation between two rotations, using `Quat::slerp()`. ² Angle-based interpolation, valid for rotations over ½ turn. -See the [comparison of rotation lenses](https://docs.rs/bevy_tweening/latest/bevy_tweening/lens/index.html#rotations) for details. +See the [comparison of rotation lenses](https://docs.rs/bevy_tweening/0.4.0/bevy_tweening/lens/index.html#rotations) for details. ### Bevy Assets | Target Asset | Animated Field | Lens | Feature | |---|---|---|---| -| [`ColorMaterial`](https://docs.rs/bevy/0.6.1/bevy/sprite/struct.ColorMaterial.html) | [`color`](https://docs.rs/bevy/0.6.1/bevy/sprite/struct.ColorMaterial.html#structfield.color) | [`ColorMaterialColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.ColorMaterialColorLens.html) | `bevy_sprite` | +| [`ColorMaterial`](https://docs.rs/bevy/0.7.0/bevy/sprite/struct.ColorMaterial.html) | [`color`](https://docs.rs/bevy/0.7.0/bevy/sprite/struct.ColorMaterial.html#structfield.color) | [`ColorMaterialColorLens`](https://docs.rs/bevy_tweening/latest/bevy_tweening/struct.ColorMaterialColorLens.html) | `bevy_sprite` | ## Custom lens @@ -188,7 +190,7 @@ The process is similar to custom components, creating a custom lens for the cust ## Examples -See the [`examples/`](https://github.com/djeedai/bevy_tweening/tree/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples) folder. +See the [`examples/`](https://github.com/djeedai/bevy_tweening/tree/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples) folder. ### [`menu`](examples/menu.rs) @@ -196,7 +198,7 @@ See the [`examples/`](https://github.com/djeedai/bevy_tweening/tree/22bfe239a35f cargo run --example menu --features="bevy/bevy_winit" ``` - + ### [`sprite_color`](examples/sprite_color.rs) @@ -204,7 +206,7 @@ cargo run --example menu --features="bevy/bevy_winit" cargo run --example sprite_color --features="bevy/bevy_winit" ``` - + ### [`transform_rotation`](examples/transform_rotation.rs) @@ -212,7 +214,7 @@ cargo run --example sprite_color --features="bevy/bevy_winit" cargo run --example transform_rotation --features="bevy/bevy_winit" ``` - + ### [`transform_translation`](examples/transform_translation.rs) @@ -220,7 +222,7 @@ cargo run --example transform_rotation --features="bevy/bevy_winit" cargo run --example transform_translation --features="bevy/bevy_winit" ``` - + ### [`colormaterial_color`](examples/colormaterial_color.rs) @@ -228,7 +230,7 @@ cargo run --example transform_translation --features="bevy/bevy_winit" cargo run --example colormaterial_color --features="bevy/bevy_winit" ``` - + ### [`ui_position`](examples/ui_position.rs) @@ -236,7 +238,7 @@ cargo run --example colormaterial_color --features="bevy/bevy_winit" cargo run --example ui_position --features="bevy/bevy_winit" ``` - + ### [`sequence`](examples/sequence.rs) @@ -244,7 +246,7 @@ cargo run --example ui_position --features="bevy/bevy_winit" cargo run --example sequence --features="bevy/bevy_winit" ``` - + ## Ease Functions @@ -289,6 +291,7 @@ Compatibility of `bevy_tweening` versions: | `bevy_tweening` | `bevy` | | :-- | :-- | +| `0.4` | `0.7` | | `0.2`-`0.3` | `0.6` | | `0.1` | `0.5` | diff --git a/release.md b/release.md index c29320a39e27bfaeb2934bb0ad0b8d88fa2297e9..b196577b40ddbdefe0418c940e602777a33ab5a3 100644 --- a/release.md +++ b/release.md @@ -7,5 +7,5 @@ - `cargo build` - `cargo clippy --workspace --all-targets --all-features -- -D warnings` - `cargo test` -- `cargo docs --no-deps` +- `cargo doc --no-deps` - `cargo +nightly build` (for `docs.rs`) diff --git a/src/lens.rs b/src/lens.rs index d59a84e3ca95ea0e5e80825608c268ddffacfa59..934045ea770041b2f019c00cc4209eb0a715702b 100644 --- a/src/lens.rs +++ b/src/lens.rs @@ -623,9 +623,7 @@ mod tests { }; let mut sprite = Sprite { color: Color::WHITE, - flip_x: false, - flip_y: false, - custom_size: None, + ..Default::default() }; lens.lerp(&mut sprite, 0.); diff --git a/src/tweenable.rs b/src/tweenable.rs index bb3e4a61954fe12ca933a92a821de4bd5c720541..5e2f8fee72022e0d95ad3db7d7d40c535ccc5362 100644 --- a/src/tweenable.rs +++ b/src/tweenable.rs @@ -916,7 +916,7 @@ mod tests { Duration::from_secs_f32(1.0), TransformRotationLens { start: Quat::IDENTITY, - end: Quat::from_rotation_x(180_f32.to_radians()), + end: Quat::from_rotation_x(90_f32.to_radians()), }, ); let mut seq = tween1.then(tween2); @@ -942,7 +942,7 @@ mod tests { assert_eq!(transform, Transform::from_translation(Vec3::splat(r))); } else if i < 10 { assert_eq!(state, TweenState::Active); - let alpha_deg = (36 * (i - 5)) as f32; + let alpha_deg = (18 * (i - 5)) as f32; assert!(transform.translation.abs_diff_eq(Vec3::splat(1.), 1e-5)); assert!(transform .rotation @@ -952,7 +952,7 @@ mod tests { assert!(transform.translation.abs_diff_eq(Vec3::splat(1.), 1e-5)); assert!(transform .rotation - .abs_diff_eq(Quat::from_rotation_x(180_f32.to_radians()), 1e-5)); + .abs_diff_eq(Quat::from_rotation_x(90_f32.to_radians()), 1e-5)); } } } @@ -1007,7 +1007,7 @@ mod tests { Duration::from_secs_f32(0.8), // shorter TransformRotationLens { start: Quat::IDENTITY, - end: Quat::from_rotation_x(180_f32.to_radians()), + end: Quat::from_rotation_x(90_f32.to_radians()), }, ); let mut tracks = Tracks::new([tween1, tween2]); @@ -1035,7 +1035,7 @@ mod tests { assert_eq!(tracks.times_completed(), 0); let r = i as f32 * 0.2; assert!((tracks.progress() - r).abs() < 1e-5); - let alpha_deg = (45 * i) as f32; + let alpha_deg = 22.5 * i as f32; assert!(transform.translation.abs_diff_eq(Vec3::splat(r), 1e-5)); assert!(transform .rotation @@ -1047,7 +1047,7 @@ mod tests { assert!(transform.translation.abs_diff_eq(Vec3::splat(1.), 1e-5)); assert!(transform .rotation - .abs_diff_eq(Quat::from_rotation_x(180_f32.to_radians()), 1e-5)); + .abs_diff_eq(Quat::from_rotation_x(90_f32.to_radians()), 1e-5)); } }