diff --git a/Cargo.toml b/Cargo.toml index 35d25e5..d4c913d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ bevy_text = ["bevy/bevy_text", "bevy/bevy_render", "bevy/bevy_sprite"] [dependencies] interpolation = "0.2" -bevy = { version = "0.12", default-features = false } +bevy = { version = "0.13", default-features = false } [dev-dependencies] bevy-inspector-egui = "0.21" diff --git a/benchmarks/benches/lens.rs b/benchmarks/benches/lens.rs index 1972252..130c460 100644 --- a/benchmarks/benches/lens.rs +++ b/benchmarks/benches/lens.rs @@ -19,7 +19,7 @@ fn text_color_lens(c: &mut Criterion) { color: Color::WHITE, }, ) - .with_alignment(TextAlignment::Center); + .with_justify(JustifyText::Center); c.bench_function("TextColorLens", |b| { b.iter(|| lens.lerp(&mut text, black_box(0.3))) }); diff --git a/examples/menu.rs b/examples/menu.rs index c15eef3..e909055 100644 --- a/examples/menu.rs +++ b/examples/menu.rs @@ -126,7 +126,7 @@ fn setup(mut commands: Commands, asset_server: Res) { color: TEXT_COLOR, }, ) - .with_alignment(TextAlignment::Center), + .with_alignment(JustifyText::Center), ..default() }); }); diff --git a/examples/sequence.rs b/examples/sequence.rs index 7be09f0..f4ab3b6 100644 --- a/examples/sequence.rs +++ b/examples/sequence.rs @@ -49,7 +49,7 @@ fn setup(mut commands: Commands, asset_server: Res) { color: Color::BLUE, }; - let text_alignment = TextAlignment::Center; + let justify = JustifyText::Center; // Text with the index of the active tween in the sequence commands.spawn(( @@ -65,7 +65,7 @@ fn setup(mut commands: Commands, asset_server: Res) { style: text_style_red, }, ], - alignment: text_alignment, + justify, ..default() }, transform: Transform::from_translation(Vec3::new(0., 40., 0.)), @@ -88,7 +88,7 @@ fn setup(mut commands: Commands, asset_server: Res) { style: text_style_blue, }, ], - alignment: text_alignment, + justify, ..default() }, transform: Transform::from_translation(Vec3::new(0., -40., 0.)), diff --git a/src/color_vec4_ext.rs b/src/color_vec4_ext.rs new file mode 100644 index 0000000..f19adf1 --- /dev/null +++ b/src/color_vec4_ext.rs @@ -0,0 +1,22 @@ +use bevy::math::Vec4; +use bevy::render::color::Color; + +pub(crate) trait ColorExt { + fn to_vec(&self) -> Vec4; +} + +impl ColorExt for Color { + fn to_vec(&self) -> Vec4 { + Vec4::new(self.r(), self.g(), self.b(), self.a()) + } +} + +pub(crate) trait Vec4Ext { + fn to_color(&self) -> Color; +} + +impl Vec4Ext for Vec4 { + fn to_color(&self) -> Color { + Color::rgba(self.x, self.y, self.z, self.w) + } +} diff --git a/src/lens.rs b/src/lens.rs index a48a0c4..e08feab 100644 --- a/src/lens.rs +++ b/src/lens.rs @@ -35,6 +35,7 @@ //! [`Transform`]: https://docs.rs/bevy/0.12.0/bevy/transform/components/struct.Transform.html //! [`Quat::slerp()`]: https://docs.rs/bevy/0.12.0/bevy/math/struct.Quat.html#method.slerp +use crate::color_vec4_ext::*; use bevy::prelude::*; /// A lens over a subset of a component. @@ -95,12 +96,12 @@ impl Lens for TextColorLens { fn lerp(&mut self, target: &mut Text, ratio: f32) { // Note: Add for Color affects alpha, but not Mul. So use Vec4 for // consistency. - let start: Vec4 = self.start.into(); - let end: Vec4 = self.end.into(); + let start: Vec4 = self.start.to_vec(); + let end: Vec4 = self.end.to_vec(); let value = start.lerp(end, ratio); if let Some(section) = target.sections.get_mut(self.section) { - section.style.color = value.into(); + section.style.color = value.to_color(); } } } @@ -335,10 +336,10 @@ pub struct UiBackgroundColorLens { #[cfg(feature = "bevy_ui")] impl Lens for UiBackgroundColorLens { fn lerp(&mut self, target: &mut BackgroundColor, ratio: f32) { - let start: Vec4 = self.start.into(); - let end: Vec4 = self.end.into(); + let start: Vec4 = self.start.to_vec(); + let end: Vec4 = self.end.to_vec(); let value = start.lerp(end, ratio); - target.0 = value.into(); + target.0 = value.to_color(); } } @@ -360,10 +361,10 @@ impl Lens for ColorMaterialColorLens { fn lerp(&mut self, target: &mut ColorMaterial, ratio: f32) { // Note: Add for Color affects alpha, but not Mul. So use Vec4 for // consistency. - let start: Vec4 = self.start.into(); - let end: Vec4 = self.end.into(); + let start: Vec4 = self.start.to_vec(); + let end: Vec4 = self.end.to_vec(); let value = start.lerp(end, ratio); - target.color = value.into(); + target.color = value.to_color(); } } @@ -385,10 +386,10 @@ impl Lens for SpriteColorLens { fn lerp(&mut self, target: &mut Sprite, ratio: f32) { // Note: Add for Color affects alpha, but not Mul. So use Vec4 for // consistency. - let start: Vec4 = self.start.into(); - let end: Vec4 = self.end.into(); + let start: Vec4 = self.start.to_vec(); + let end: Vec4 = self.end.to_vec(); let value = start.lerp(end, ratio); - target.color = value.into(); + target.color = value.to_color(); } } diff --git a/src/lib.rs b/src/lib.rs index 6aeb71f..db34cf7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -221,6 +221,7 @@ pub use tweenable::{ TweenState, Tweenable, }; +mod color_vec4_ext; pub mod lens; mod plugin; mod tweenable; @@ -541,9 +542,6 @@ impl AssetAnimator { #[cfg(test)] mod tests { - #[cfg(feature = "bevy_asset")] - use bevy::reflect::TypeUuid; - use super::*; use crate::test_utils::*; @@ -558,15 +556,14 @@ mod tests { } #[cfg(feature = "bevy_asset")] - #[derive(Asset, Debug, Default, Reflect, TypeUuid)] - #[uuid = "a33abc11-264e-4bbb-82e8-b87226bb4383"] + #[derive(Asset, Debug, Default, Reflect)] struct DummyAsset { value: f32, } impl Lens for DummyLens { fn lerp(&mut self, target: &mut DummyComponent, ratio: f32) { - target.value = self.start.lerp(&self.end, &ratio); + target.value = self.start.lerp(self.end, ratio); } } @@ -583,7 +580,7 @@ mod tests { #[cfg(feature = "bevy_asset")] impl Lens for DummyLens { fn lerp(&mut self, target: &mut DummyAsset, ratio: f32) { - target.value = self.start.lerp(&self.end, &ratio); + target.value = self.start.lerp(self.end, ratio); } } diff --git a/src/tweenable.rs b/src/tweenable.rs index 45476e1..3f3f91c 100644 --- a/src/tweenable.rs +++ b/src/tweenable.rs @@ -486,7 +486,7 @@ impl Tween { /// .with_completed_event(42); /// /// fn my_system(mut reader: EventReader) { - /// for ev in reader.iter() { + /// for ev in reader.read() { /// assert_eq!(ev.user_data, 42); /// println!("Entity {:?} raised TweenCompleted!", ev.entity); /// } @@ -991,7 +991,7 @@ impl Delay { /// .with_completed_event(42); /// /// fn my_system(mut reader: EventReader) { - /// for ev in reader.iter() { + /// for ev in reader.read() { /// assert_eq!(ev.user_data, 42); /// println!("Entity {:?} raised TweenCompleted!", ev.entity); /// }