diff --git a/studio/src/interaction/gizmos/combo.rs b/studio/src/interaction/gizmos/combo.rs index ecdb808..d60df2a 100644 --- a/studio/src/interaction/gizmos/combo.rs +++ b/studio/src/interaction/gizmos/combo.rs @@ -36,10 +36,11 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( TranslationWidget::ScreenSpace, MaterialMeshBundle { mesh: meshes.translate_ss.clone(), - material: mats.translate_ss.clone(), + material: mats.translate_ss.handle.clone(), transform: Transform::IDENTITY, ..default() }, + mats.translate_ss.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_translation_start), @@ -54,10 +55,11 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( RotationWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_x.clone(), + material: mats.rotate_x.handle.clone(), transform: Transform::from_rotation(ROT_X), ..default() }, + mats.rotate_x.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_rotation_start), @@ -71,7 +73,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( TranslationWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_x.clone(), + material: mats.translate_x.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(1.2, 0., 0.), @@ -79,6 +81,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( }, ..default() }, + mats.translate_x.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_translation_start), @@ -93,10 +96,11 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( RotationWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_y.clone(), + material: mats.rotate_y.handle.clone(), transform: Transform::from_rotation(ROT_Y), ..default() }, + mats.rotate_y.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_rotation_start), @@ -110,7 +114,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( TranslationWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_y.clone(), + material: mats.translate_y.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(0., 1.2, 0.), @@ -118,6 +122,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( }, ..default() }, + mats.translate_y.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_translation_start), @@ -132,10 +137,11 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( RotationWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_z.clone(), + material: mats.rotate_z.handle.clone(), transform: Transform::from_rotation(ROT_Z), ..default() }, + mats.rotate_z.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_rotation_start), @@ -149,7 +155,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( TranslationWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_z.clone(), + material: mats.translate_z.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(0., 0., 1.2), @@ -157,6 +163,7 @@ pub(super) fn spawn_combo_translation_rotation_gizmo( }, ..default() }, + mats.translate_z.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), On::>::run(on_translation_start), diff --git a/studio/src/interaction/gizmos/common.rs b/studio/src/interaction/gizmos/common.rs index bd1e5e0..cf11aed 100644 --- a/studio/src/interaction/gizmos/common.rs +++ b/studio/src/interaction/gizmos/common.rs @@ -3,7 +3,7 @@ use bevy_mod_picking::prelude::*; use crate::interaction::TransformSpace; -use super::material::GizmoMaterial; +use super::{material::GizmoMaterial, resources::GizmoMaterialSet}; #[derive(Component, Reflect)] pub struct TransformGizmo { @@ -70,19 +70,21 @@ impl TransformGizmoBundle { pub(super) fn on_gizmo_element_hover( ev: Listener>, mut ra_mats: ResMut>, - q_target: Query<&Handle>, + mut q_target_mat: Query<&mut GizmoMaterialSet>, ) { - let mat = ra_mats.get_mut(q_target.get(ev.target).unwrap()).unwrap(); - mat.color *= 2.; + if let Ok(mut target_mat) = q_target_mat.get_mut(ev.target) { + target_mat.set_hover(&mut ra_mats); + } } pub(super) fn on_gizmo_element_unhover( ev: Listener>, mut ra_mats: ResMut>, - q_target: Query<&Handle>, + mut q_target_mat: Query<&mut GizmoMaterialSet>, ) { - let mat = ra_mats.get_mut(q_target.get(ev.target).unwrap()).unwrap(); - mat.color *= 0.5; + if let Ok(mut target_mat) = q_target_mat.get_mut(ev.target) { + target_mat.set_default(&mut ra_mats); + } } #[derive(Component, Deref)] diff --git a/studio/src/interaction/gizmos/resources.rs b/studio/src/interaction/gizmos/resources.rs index b76a70b..04a84dc 100644 --- a/studio/src/interaction/gizmos/resources.rs +++ b/studio/src/interaction/gizmos/resources.rs @@ -18,24 +18,57 @@ pub(super) struct GizmoMeshes { pub rotate_ss: Handle, } +#[derive(Component, Reflect, Clone, Debug, Default)] +#[reflect(Component)] +pub(super) struct GizmoMaterialSet { + pub handle: Handle, + base_color: Color, + hover_color: Color, +} + +impl GizmoMaterialSet { + pub fn from_base_color(assets: &mut Assets, base_color: Color) -> Self { + let handle = assets.add(GizmoMaterial::from(base_color)); + let hover_color = base_color * 2.; + + Self { + handle, + base_color, + hover_color, + } + } + + pub fn set_default(&mut self, assets: &mut Assets) { + if let Some(mat) = assets.get_mut(&self.handle) { + mat.color = self.base_color; + } + } + + pub fn set_hover(&mut self, assets: &mut Assets) { + if let Some(mat) = assets.get_mut(&self.handle) { + mat.color = self.hover_color; + } + } +} + #[derive(Resource, Reflect, Debug, Default)] #[reflect(Resource)] pub(super) struct GizmoMats { - pub translate_x: Handle, - pub translate_y: Handle, - pub translate_z: Handle, - pub translate_yz: Handle, - pub translate_xz: Handle, - pub translate_xy: Handle, - pub translate_ss: Handle, - pub scale_x: Handle, - pub scale_y: Handle, - pub scale_z: Handle, - pub rotate_x: Handle, - pub rotate_y: Handle, - pub rotate_z: Handle, - pub rotate_trackball: Handle, - pub rotate_ss: Handle, + pub translate_x: GizmoMaterialSet, + pub translate_y: GizmoMaterialSet, + pub translate_z: GizmoMaterialSet, + pub translate_yz: GizmoMaterialSet, + pub translate_xz: GizmoMaterialSet, + pub translate_xy: GizmoMaterialSet, + pub translate_ss: GizmoMaterialSet, + pub scale_x: GizmoMaterialSet, + pub scale_y: GizmoMaterialSet, + pub scale_z: GizmoMaterialSet, + pub rotate_x: GizmoMaterialSet, + pub rotate_y: GizmoMaterialSet, + pub rotate_z: GizmoMaterialSet, + pub rotate_trackball: GizmoMaterialSet, + pub rotate_ss: GizmoMaterialSet, } #[allow(deprecated)] @@ -99,30 +132,34 @@ pub(super) fn init_resources( uniform_scale_cube, }); - let translate_x = ra_mats.add(GizmoMaterial::from(design_system::Color::RED)); - let translate_yz = ra_mats.add(GizmoMaterial::from(design_system::Color::RED)); + let translate_x = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::RED); + let translate_yz = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::RED); - let translate_y = ra_mats.add(GizmoMaterial::from(design_system::Color::GREEN)); - let translate_xz = ra_mats.add(GizmoMaterial::from(design_system::Color::GREEN)); + let translate_y = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::GREEN); + let translate_xz = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::GREEN); - let translate_z = ra_mats.add(GizmoMaterial::from(design_system::Color::BLUE)); - let translate_xy = ra_mats.add(GizmoMaterial::from(design_system::Color::BLUE)); + let translate_z = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::BLUE); + let translate_xy = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::BLUE); - let translate_ss = ra_mats.add(GizmoMaterial::from(Color::WHITE)); + let translate_ss = GizmoMaterialSet::from_base_color(&mut ra_mats, Color::WHITE); - let rotate_x = ra_mats.add(GizmoMaterial::from(design_system::Color::RED)); - let rotate_y = ra_mats.add(GizmoMaterial::from(design_system::Color::GREEN)); - let rotate_z = ra_mats.add(GizmoMaterial::from(design_system::Color::BLUE)); - let rotate_ss = ra_mats.add(GizmoMaterial::from(Color::WHITE)); + let rotate_x = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::RED); + let rotate_y = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::GREEN); + let rotate_z = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::BLUE); + let rotate_ss = GizmoMaterialSet::from_base_color(&mut ra_mats, Color::WHITE); - let scale_x = ra_mats.add(GizmoMaterial::from(design_system::Color::RED)); - let scale_y = ra_mats.add(GizmoMaterial::from(design_system::Color::GREEN)); - let scale_z = ra_mats.add(GizmoMaterial::from(design_system::Color::BLUE)); + let scale_x = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::RED); + let scale_y = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::GREEN); + let scale_z = GizmoMaterialSet::from_base_color(&mut ra_mats, design_system::Color::BLUE); - let rotate_trackball = ra_mats.add(GizmoMaterial { - color: Color::WHITE.with_a(0.0), - blend_mode: AlphaMode::Blend, - }); + let rotate_trackball = GizmoMaterialSet { + handle: ra_mats.add(GizmoMaterial { + color: Color::WHITE.with_a(0.0), + blend_mode: AlphaMode::Blend, + }), + base_color: Color::WHITE.with_a(0.0), + hover_color: Color::WHITE.with_a(0.05), + }; cmd.insert_resource(GizmoMats { translate_x, diff --git a/studio/src/interaction/gizmos/rotation.rs b/studio/src/interaction/gizmos/rotation.rs index 259c0e7..3df6beb 100644 --- a/studio/src/interaction/gizmos/rotation.rs +++ b/studio/src/interaction/gizmos/rotation.rs @@ -60,11 +60,12 @@ pub(super) fn spawn_rotation_gizmo( RotationWidget::Trackball, MaterialMeshBundle { mesh: meshes.rotate_ball.clone(), - material: mats.rotate_trackball.clone(), + material: mats.rotate_trackball.handle.clone(), ..default() }, - On::>::run(on_trackball_hover), - On::>::run(on_trackball_unhover), + mats.rotate_trackball.clone(), + On::>::run(on_gizmo_element_hover), + On::>::run(on_gizmo_element_unhover), )); // Screen-space @@ -74,9 +75,10 @@ pub(super) fn spawn_rotation_gizmo( RotationWidget::ScreenSpace, MaterialMeshBundle { mesh: meshes.rotate_ss.clone(), - material: mats.rotate_ss.clone(), + material: mats.rotate_ss.handle.clone(), ..default() }, + mats.rotate_ss.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), )); @@ -88,10 +90,11 @@ pub(super) fn spawn_rotation_gizmo( RotationWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_x.clone(), + material: mats.rotate_x.handle.clone(), transform: Transform::from_rotation(ROT_X), ..default() }, + mats.rotate_x.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), )); @@ -102,10 +105,11 @@ pub(super) fn spawn_rotation_gizmo( RotationWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_y.clone(), + material: mats.rotate_y.handle.clone(), transform: Transform::from_rotation(ROT_Y), ..default() }, + mats.rotate_y.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), )); @@ -116,10 +120,11 @@ pub(super) fn spawn_rotation_gizmo( RotationWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.rotate_ring.clone(), - material: mats.rotate_z.clone(), + material: mats.rotate_z.handle.clone(), transform: Transform::from_rotation(ROT_Z), ..default() }, + mats.rotate_z.clone(), On::>::run(on_gizmo_element_hover), On::>::run(on_gizmo_element_unhover), )); @@ -154,24 +159,6 @@ pub(super) fn update_ss_ring_rotation( } } -fn on_trackball_hover( - ev: Listener>, - mut ra_mats: ResMut>, - q_target: Query<&Handle>, -) { - let mat = ra_mats.get_mut(q_target.get(ev.target).unwrap()).unwrap(); - mat.color.set_a(0.05); -} - -fn on_trackball_unhover( - ev: Listener>, - mut ra_mats: ResMut>, - q_target: Query<&Handle>, -) { - let mat = ra_mats.get_mut(q_target.get(ev.target).unwrap()).unwrap(); - mat.color.set_a(0.); -} - pub(super) fn on_rotation_start( event: Listener>, mut cmd: Commands, diff --git a/studio/src/interaction/gizmos/scale.rs b/studio/src/interaction/gizmos/scale.rs index 6e20b42..c973d01 100644 --- a/studio/src/interaction/gizmos/scale.rs +++ b/studio/src/interaction/gizmos/scale.rs @@ -43,10 +43,11 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::UniformScale, MaterialMeshBundle { mesh: meshes.uniform_scale_cube.clone(), - material: mats.translate_ss.clone(), + material: mats.translate_ss.handle.clone(), transform: Transform::IDENTITY, ..default() }, + mats.translate_ss.clone(), )); // X @@ -56,7 +57,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.scale_x.clone(), + material: mats.scale_x.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(0.6, 0., 0.), @@ -64,6 +65,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_x.clone(), )); cmd.spawn(( NotShadowCaster, @@ -71,7 +73,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.scale_cube.clone(), - material: mats.scale_x.clone(), + material: mats.scale_x.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(1., 0., 0.), @@ -79,6 +81,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_x.clone(), )); // Y @@ -88,7 +91,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.scale_y.clone(), + material: mats.scale_y.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(0., 0.6, 0.), @@ -96,6 +99,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_y.clone(), )); cmd.spawn(( NotShadowCaster, @@ -103,7 +107,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.scale_cube.clone(), - material: mats.scale_y.clone(), + material: mats.scale_y.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(0., 1., 0.), @@ -111,6 +115,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_y.clone(), )); // Z @@ -120,7 +125,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.scale_z.clone(), + material: mats.scale_z.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(0., 0., 0.6), @@ -128,6 +133,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_z.clone(), )); cmd.spawn(( NotShadowCaster, @@ -135,7 +141,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.scale_cube.clone(), - material: mats.scale_z.clone(), + material: mats.scale_z.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(0., 0., 1.), @@ -143,6 +149,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.scale_z.clone(), )); // YZ Plane @@ -152,7 +159,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Plane(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_yz.clone(), + material: mats.translate_yz.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(0., CIRC_45, CIRC_45), @@ -160,6 +167,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.translate_yz.clone(), )); // XZ Plane cmd.spawn(( @@ -168,7 +176,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Plane(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_xz.clone(), + material: mats.translate_xz.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(CIRC_45, 0., CIRC_45), @@ -176,6 +184,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.translate_xz.clone(), )); // XY Plane cmd.spawn(( @@ -184,7 +193,7 @@ pub(super) fn spawn_scale_gizmo( ScaleWidget::Plane(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_xy.clone(), + material: mats.translate_xy.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(CIRC_45, CIRC_45, 0.), @@ -192,6 +201,7 @@ pub(super) fn spawn_scale_gizmo( }, ..default() }, + mats.translate_xy.clone(), )); }); } diff --git a/studio/src/interaction/gizmos/translation.rs b/studio/src/interaction/gizmos/translation.rs index 7f966cc..e3b2350 100644 --- a/studio/src/interaction/gizmos/translation.rs +++ b/studio/src/interaction/gizmos/translation.rs @@ -43,10 +43,11 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::ScreenSpace, MaterialMeshBundle { mesh: meshes.translate_ss.clone(), - material: mats.translate_ss.clone(), + material: mats.translate_ss.handle.clone(), transform: Transform::IDENTITY, ..default() }, + mats.translate_ss.clone(), )); // X @@ -56,7 +57,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.translate_x.clone(), + material: mats.translate_x.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(0.6, 0., 0.), @@ -64,6 +65,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_x.clone(), )); cmd.spawn(( NotShadowCaster, @@ -71,7 +73,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_x.clone(), + material: mats.translate_x.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(1., 0., 0.), @@ -79,6 +81,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_x.clone(), )); // Y @@ -88,7 +91,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.translate_y.clone(), + material: mats.translate_y.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(0., 0.6, 0.), @@ -96,6 +99,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_y.clone(), )); cmd.spawn(( NotShadowCaster, @@ -103,7 +107,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_y.clone(), + material: mats.translate_y.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(0., 1., 0.), @@ -111,6 +115,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_y.clone(), )); // Z @@ -120,7 +125,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_line.clone(), - material: mats.translate_z.clone(), + material: mats.translate_z.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(0., 0., 0.6), @@ -128,6 +133,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_z.clone(), )); cmd.spawn(( NotShadowCaster, @@ -135,7 +141,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Axis(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_arrow.clone(), - material: mats.translate_z.clone(), + material: mats.translate_z.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(0., 0., 1.), @@ -143,6 +149,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_z.clone(), )); // YZ Plane @@ -152,7 +159,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Plane(Vec3::X), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_yz.clone(), + material: mats.translate_yz.handle.clone(), transform: Transform { rotation: ROT_X, translation: vec3(0., CIRC_45, CIRC_45), @@ -160,6 +167,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_yz.clone(), )); // XZ Plane cmd.spawn(( @@ -168,7 +176,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Plane(Vec3::Y), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_xz.clone(), + material: mats.translate_xz.handle.clone(), transform: Transform { rotation: ROT_Y, translation: vec3(CIRC_45, 0., CIRC_45), @@ -176,6 +184,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_xz.clone(), )); // XY Plane cmd.spawn(( @@ -184,7 +193,7 @@ pub(super) fn spawn_translation_gizmo( TranslationWidget::Plane(Vec3::Z), MaterialMeshBundle { mesh: meshes.translate_plane.clone(), - material: mats.translate_xy.clone(), + material: mats.translate_xy.handle.clone(), transform: Transform { rotation: ROT_Z, translation: vec3(CIRC_45, CIRC_45, 0.), @@ -192,6 +201,7 @@ pub(super) fn spawn_translation_gizmo( }, ..default() }, + mats.translate_xy.clone(), )); }); } diff --git a/studio/src/viewport.rs b/studio/src/viewport.rs index 4cbf3e5..ce08242 100644 --- a/studio/src/viewport.rs +++ b/studio/src/viewport.rs @@ -87,7 +87,7 @@ pub mod wasm { if let Some(event) = events.read().last() { let ViewportSize { width, height } = event.0; let mut window = window.single_mut(); - let scale_factor = window.scale_factor() as f32; + let scale_factor = window.scale_factor(); window .resolution .set(width * scale_factor, height * scale_factor);