Fix gizmo materials getting stuck in altered state

This commit is contained in:
Danny McGee
2024-04-10 00:16:51 -04:00
parent 66f79463c0
commit da086e9573
7 changed files with 146 additions and 93 deletions
+14 -7
View File
@@ -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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
On::<Pointer<DragStart>>::run(on_translation_start),
+9 -7
View File
@@ -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<Pointer<Over>>,
mut ra_mats: ResMut<Assets<GizmoMaterial>>,
q_target: Query<&Handle<GizmoMaterial>>,
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<Pointer<Out>>,
mut ra_mats: ResMut<Assets<GizmoMaterial>>,
q_target: Query<&Handle<GizmoMaterial>>,
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)]
+70 -33
View File
@@ -18,24 +18,57 @@ pub(super) struct GizmoMeshes {
pub rotate_ss: Handle<Mesh>,
}
#[derive(Component, Reflect, Clone, Debug, Default)]
#[reflect(Component)]
pub(super) struct GizmoMaterialSet {
pub handle: Handle<GizmoMaterial>,
base_color: Color,
hover_color: Color,
}
impl GizmoMaterialSet {
pub fn from_base_color(assets: &mut Assets<GizmoMaterial>, 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<GizmoMaterial>) {
if let Some(mat) = assets.get_mut(&self.handle) {
mat.color = self.base_color;
}
}
pub fn set_hover(&mut self, assets: &mut Assets<GizmoMaterial>) {
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<GizmoMaterial>,
pub translate_y: Handle<GizmoMaterial>,
pub translate_z: Handle<GizmoMaterial>,
pub translate_yz: Handle<GizmoMaterial>,
pub translate_xz: Handle<GizmoMaterial>,
pub translate_xy: Handle<GizmoMaterial>,
pub translate_ss: Handle<GizmoMaterial>,
pub scale_x: Handle<GizmoMaterial>,
pub scale_y: Handle<GizmoMaterial>,
pub scale_z: Handle<GizmoMaterial>,
pub rotate_x: Handle<GizmoMaterial>,
pub rotate_y: Handle<GizmoMaterial>,
pub rotate_z: Handle<GizmoMaterial>,
pub rotate_trackball: Handle<GizmoMaterial>,
pub rotate_ss: Handle<GizmoMaterial>,
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,
+12 -25
View File
@@ -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::<Pointer<Over>>::run(on_trackball_hover),
On::<Pointer<Out>>::run(on_trackball_unhover),
mats.rotate_trackball.clone(),
On::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::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::<Pointer<Over>>::run(on_gizmo_element_hover),
On::<Pointer<Out>>::run(on_gizmo_element_unhover),
));
@@ -154,24 +159,6 @@ pub(super) fn update_ss_ring_rotation(
}
}
fn on_trackball_hover(
ev: Listener<Pointer<Over>>,
mut ra_mats: ResMut<Assets<GizmoMaterial>>,
q_target: Query<&Handle<GizmoMaterial>>,
) {
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<Pointer<Out>>,
mut ra_mats: ResMut<Assets<GizmoMaterial>>,
q_target: Query<&Handle<GizmoMaterial>>,
) {
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<Pointer<DragStart>>,
mut cmd: Commands,
+20 -10
View File
@@ -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(),
));
});
}
+20 -10
View File
@@ -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(),
));
});
}
+1 -1
View File
@@ -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);