From e4e993ed64f6a9e6b09136af728ad969a5aac4e7 Mon Sep 17 00:00:00 2001 From: "Elijah C. Voigt" Date: Sun, 17 Mar 2024 20:02:15 -0700 Subject: [PATCH] Dissovle not fixed, but at least it doesn't crash! --- assets/shaders/dissolve.wgsl | 2 +- src/display3d.rs | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/assets/shaders/dissolve.wgsl b/assets/shaders/dissolve.wgsl index 4443ed1..924d1a2 100644 --- a/assets/shaders/dissolve.wgsl +++ b/assets/shaders/dissolve.wgsl @@ -13,7 +13,7 @@ struct DissovleExtension { percentage: f32, } -@group(1) @binding(100) +@group(2) @binding(100) var dissolve: DissovleExtension; fn random(st: vec2) -> f32 { diff --git a/src/display3d.rs b/src/display3d.rs index 6d619ee..b664f85 100644 --- a/src/display3d.rs +++ b/src/display3d.rs @@ -36,7 +36,8 @@ impl Plugin for Display3dPlugin { any_component_changed::() .or_else(any_component_changed::()) .or_else(any_component_changed::()) - .or_else(any_component_removed::()), + .or_else(any_component_removed::()) + .or_else(any_component_removed::()), ), ), set_board_model.run_if(any_component_added::()), @@ -45,11 +46,11 @@ impl Plugin for Display3dPlugin { select .run_if(in_state(GameState::Play)) .run_if(in_state(DisplayState::Display3d)) - .run_if(on_event::()), + .run_if(just_pressed(MouseButton::Left)), pick_up.run_if(any_component_added::()), put_down.run_if(any_component_removed::()), - // setup_capture_piece.run_if(any_component_changed::>()), - // capture_piece.run_if(any_with_component::), + setup_capture_piece.run_if(any_component_added::>().or_else(any_component_changed::>())), + capture_piece.run_if(any_with_component::), skip_animation .run_if(just_pressed(KeyCode::Enter).or_else(just_pressed(MouseButton::Left))) .run_if(in_state(GameState::Play)), @@ -562,7 +563,7 @@ fn select( events .read() // Only read button presses - .filter(|ev| ev.state == ButtonState::Pressed) + .filter(|ev| ev.state == ButtonState::Pressed && ev.button == MouseButton::Left) .for_each(|_| { // For each window (there should be only one) windows.iter().for_each(|window| { @@ -1095,10 +1096,7 @@ fn setup_capture_piece( // All entities with materials are candidates for this procedure events: Query< (Entity, &Handle), - ( - Added>, - Changed>, - ), + Added>, >, // Only process newly created pieces (we do not delete pieces at runtime) query: Query, Added)>, @@ -1119,6 +1117,7 @@ fn setup_capture_piece( .filter(|(child, _)| query.iter_many(parents.iter_ancestors(*child)).count() > 0) // Handle this entity (mesh) .for_each(|(child, std_handle)| { + info!("Setting up dissolve material for {:?}", child); let dis_handle = match cache.get(std_handle) { // We have not seen this material, so create a new dissolve material None => {