From e42877c8b580aa18064640de6e5159466fd9c55c Mon Sep 17 00:00:00 2001
From: Jerome Humbert <djeedai@gmail.com>
Date: Sat, 16 Apr 2022 08:55:57 +0100
Subject: [PATCH] v0.4.0

---
 CHANGELOG.md     |  3 ++-
 Cargo.toml       |  4 ++--
 README.md        | 51 +++++++++++++++++++++++++-----------------------
 release.md       |  2 +-
 src/lens.rs      |  4 +---
 src/tweenable.rs | 12 ++++++------
 6 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5c81f08..60a0864 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 ed26c9c..435e5c8 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 d99e5f1..626a337 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
 [![Crate](https://img.shields.io/crates/v/bevy_tweening.svg)](https://crates.io/crates/bevy_tweening)
 [![Build Status](https://github.com/djeedai/bevy_tweening/actions/workflows/ci.yaml/badge.svg)](https://github.com/djeedai/bevy_tweening/actions/workflows/ci.yaml)
 [![Coverage Status](https://coveralls.io/repos/github/djeedai/bevy_tweening/badge.svg?branch=main&kill_cache=1)](https://coveralls.io/github/djeedai/bevy_tweening?branch=main)
-[![Bevy tracking](https://img.shields.io/badge/Bevy%20tracking-v0.6-lightblue)](https://github.com/bevyengine/bevy/blob/main/docs/plugins_guidelines.md#main-branch-tracking)
+[![Bevy tracking](https://img.shields.io/badge/Bevy%20tracking-v0.7-lightblue)](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"
 ```
 
-![menu](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/menu.gif)
+![menu](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/menu.gif)
 
 ### [`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"
 ```
 
-![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/sprite_color.gif)
+![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/sprite_color.gif)
 
 ### [`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"
 ```
 
-![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/transform_rotation.gif)
+![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/transform_rotation.gif)
 
 ### [`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"
 ```
 
-![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/transform_translation.gif)
+![sprite_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/transform_translation.gif)
 
 ### [`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"
 ```
 
-![colormaterial_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/colormaterial_color.gif)
+![colormaterial_color](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/colormaterial_color.gif)
 
 ### [`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"
 ```
 
-![ui_position](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/ui_position.gif)
+![ui_position](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/ui_position.gif)
 
 ### [`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"
 ```
 
-![sequence](https://raw.githubusercontent.com/djeedai/bevy_tweening/22bfe239a35fdeabf1c671a3cd4bae363948d007/examples/sequence.gif)
+![sequence](https://raw.githubusercontent.com/djeedai/bevy_tweening/8473330a707d80af7cdff2abd2de4a3cb72a87ad/examples/sequence.gif)
 
 ## 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 c29320a..b196577 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 d59a84e..934045e 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 bb3e4a6..5e2f8fe 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));
             }
         }
 
-- 
GitLab