From 900316968a35d65d747122de7e13fad679344245 Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 5 May 2025 22:34:24 -0700 Subject: [PATCH] fix: some zone weirdness ig --- Cargo.lock | 16 ++++++++----- src/nodes/spatial/zone.rs | 47 +++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 29 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7ee767a..feef263 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2715,13 +2715,19 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stereokit-macros" -version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git?rev=73ffaae6f42aa369e599a6ea0391f77840d682d8#73ffaae6f42aa369e599a6ea0391f77840d682d8" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f8b194c544b34bb744b66759c09109e7547cfa12f86d3dc500ed735c3f80fce" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] [[package]] name = "stereokit-rust" -version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git?rev=73ffaae6f42aa369e599a6ea0391f77840d682d8#73ffaae6f42aa369e599a6ea0391f77840d682d8" +version = "0.4.0-alpha.6" +source = "git+https://github.com/mvvvv/StereoKit-rust.git#4e09cf084b03334afe913bb66f5106a5f9163f3f" dependencies = [ "android-activity", "android_logger", @@ -3359,7 +3365,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] diff --git a/src/nodes/spatial/zone.rs b/src/nodes/spatial/zone.rs index 5bfabe7..4743797 100644 --- a/src/nodes/spatial/zone.rs +++ b/src/nodes/spatial/zone.rs @@ -16,26 +16,28 @@ use std::sync::{Arc, Weak}; pub fn capture(spatial: &Arc, zone: &Arc) { let old_distance = spatial.zone_distance(); let new_distance = zone.field.distance(spatial, vec3a(0.0, 0.0, 0.0)); - if new_distance.abs() < old_distance.abs() { - release(spatial); - *spatial.old_parent.lock() = spatial.get_parent(); - *spatial.zone.lock() = Arc::downgrade(zone); - let Some(zone_node) = zone.spatial.node.upgrade() else { - return; - }; - let Some(spatial_node) = spatial.node.upgrade() else { - return; - }; - let Ok(spatial_alias) = Alias::create( - &spatial_node, - &zone_node.get_client().unwrap(), - SPATIAL_ASPECT_ALIAS_INFO.clone(), - Some(&zone.captured), - ) else { - return; - }; - let _ = super::zone_client::capture(&zone_node, &spatial_alias); + if new_distance.abs() > old_distance.abs() { + return; } + + release(spatial); + *spatial.old_parent.lock() = spatial.get_parent(); + *spatial.zone.lock() = Arc::downgrade(zone); + let Some(zone_node) = zone.spatial.node.upgrade() else { + return; + }; + let Some(spatial_node) = spatial.node.upgrade() else { + return; + }; + let Ok(spatial_alias) = Alias::create( + &spatial_node, + &zone_node.get_client().unwrap(), + SPATIAL_ASPECT_ALIAS_INFO.clone(), + Some(&zone.captured), + ) else { + return; + }; + let _ = super::zone_client::capture(&zone_node, &spatial_alias); } pub fn release(spatial: &Spatial) { let Some(spatial_node) = spatial.node.upgrade() else { @@ -89,11 +91,8 @@ impl Zone { if distance > 0.0 { continue; } - if let Some(zone) = zoneable.zone.lock().upgrade() { - let zoneable_distance = zone.field.distance(&zoneable, [0.0; 3].into()); - if zoneable_distance < distance { - continue; - } + if distance < zoneable.zone_distance() { + continue; } current_zoneables.add_raw(&zoneable); }