diff --git a/src/bin/trees/main.rs b/src/bin/trees/main.rs index 1d0534f..26cfcc2 100644 --- a/src/bin/trees/main.rs +++ b/src/bin/trees/main.rs @@ -33,10 +33,12 @@ fn main() { ( // Start a dialog if none are running start_dialog + .run_if(in_state(DebuggingState::Off)) .run_if(in_state(DialogState::None)) .run_if(on_event::>), // Close the dialog box if it is idle (not choosing) end_dialog + .run_if(in_state(DebuggingState::Off)) .run_if(in_state(DialogState::Idle)) .run_if(on_event::>), spawn_debug_buttons.run_if(on_event::>), @@ -704,20 +706,23 @@ fn hide_monologue_preview( fn drag_tree( trigger: Trigger>, + state: Res>, mut query: Query<&mut Transform, With>, camera: Single<(&Camera, &GlobalTransform), With>, window: Single<&Window> ) { - if let Ok(mut t) = query.get_mut(trigger.target()) { - let world_position = window - .cursor_position() - .and_then(|cursor| { - camera.0.viewport_to_world(camera.1, cursor).ok() - }).map(|ray| { - // Compute ray's distance to entity - let distance = ray.intersect_plane(t.translation, InfinitePlane3d::new(t.up())).unwrap(); - ray.get_point(distance) - }); - t.translation = world_position.unwrap(); + if *state.get() == DebuggingState::On { + if let Ok(mut t) = query.get_mut(trigger.target()) { + let world_position = window + .cursor_position() + .and_then(|cursor| { + camera.0.viewport_to_world(camera.1, cursor).ok() + }).map(|ray| { + // Compute ray's distance to entity + let distance = ray.intersect_plane(t.translation, InfinitePlane3d::new(t.up())).unwrap(); + ray.get_point(distance) + }); + t.translation = world_position.unwrap(); + } } }