mirror of
https://github.com/storytold/storyteller-bevy.git
synced 2026-10-17 00:13:17 +00:00
Fix gizmo materials getting stuck in altered state
This commit is contained in:
@@ -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),
|
||||
|
||||
@@ -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)]
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(),
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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(),
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user