From be242dbb1f9d7fa6bd9b815e2a9047af387619e7 Mon Sep 17 00:00:00 2001 From: Elijah Voigt Date: Thu, 18 Jun 2026 16:10:51 -0700 Subject: [PATCH] Do not spawn when panning --- life/src/main.rs | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/life/src/main.rs b/life/src/main.rs index 012c5f3..18e733d 100644 --- a/life/src/main.rs +++ b/life/src/main.rs @@ -3,7 +3,9 @@ use std::time::Duration; use bevy::{ - audio::Volume, input::mouse::{AccumulatedMouseMotion, MouseMotion}, picking::hover::Hovered, + audio::Volume, + input::mouse::{AccumulatedMouseMotion, MouseMotion}, + picking::hover::Hovered, platform::collections::HashMap, }; use engine::*; @@ -19,6 +21,7 @@ fn main() { })) .init_resource::() .init_resource::() + .init_resource::() .init_state::() .insert_resource(GlobalVolume::new(Volume::Linear(1.0))) .add_message::() @@ -40,6 +43,7 @@ fn main() { Update, de_spawn_cells .run_if(not(is_ui_hovered)) + .run_if(not(is_panning)) .run_if(input_just_released(MouseButton::Left)), ) .add_systems( @@ -66,6 +70,7 @@ fn main() { ) .add_systems(Update, cell_lifecycle.run_if(on_message::)) .add_systems(Update, mouse_pan.run_if(on_message::)) + .add_systems(Update, set_pan_state) .add_observer(on_add_ui_button) .add_observer(on_add_coordinates) .run(); @@ -685,3 +690,23 @@ fn mouse_pan( }); } } + +#[derive(Resource, Default)] +struct Panning(bool); + +fn set_pan_state( + mut panning: ResMut, + mouse_motion: Res, + button: Res>, +) { + // Set to panning if clicked and delta > 0 + if button.pressed(MouseButton::Left) && mouse_motion.delta.abs().length() > 0.0 { + panning.0 = true + } else if button.just_released(MouseButton::Left) { + panning.0 = false; + } +} + +fn is_panning(panning: Res) -> bool { + panning.0 +}