fix: some zone weirdness ig
This commit is contained in:
16
Cargo.lock
generated
16
Cargo.lock
generated
@@ -2715,13 +2715,19 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stereokit-macros"
|
name = "stereokit-macros"
|
||||||
version = "0.1.0"
|
version = "0.5.0"
|
||||||
source = "git+https://github.com/mvvvv/StereoKit-rust.git?rev=73ffaae6f42aa369e599a6ea0391f77840d682d8#73ffaae6f42aa369e599a6ea0391f77840d682d8"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0f8b194c544b34bb744b66759c09109e7547cfa12f86d3dc500ed735c3f80fce"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn 2.0.87",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stereokit-rust"
|
name = "stereokit-rust"
|
||||||
version = "0.1.0"
|
version = "0.4.0-alpha.6"
|
||||||
source = "git+https://github.com/mvvvv/StereoKit-rust.git?rev=73ffaae6f42aa369e599a6ea0391f77840d682d8#73ffaae6f42aa369e599a6ea0391f77840d682d8"
|
source = "git+https://github.com/mvvvv/StereoKit-rust.git#4e09cf084b03334afe913bb66f5106a5f9163f3f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"android-activity",
|
"android-activity",
|
||||||
"android_logger",
|
"android_logger",
|
||||||
@@ -3359,7 +3365,7 @@ version = "0.1.9"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"windows-sys 0.59.0",
|
"windows-sys 0.52.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
@@ -16,26 +16,28 @@ use std::sync::{Arc, Weak};
|
|||||||
pub fn capture(spatial: &Arc<Spatial>, zone: &Arc<Zone>) {
|
pub fn capture(spatial: &Arc<Spatial>, zone: &Arc<Zone>) {
|
||||||
let old_distance = spatial.zone_distance();
|
let old_distance = spatial.zone_distance();
|
||||||
let new_distance = zone.field.distance(spatial, vec3a(0.0, 0.0, 0.0));
|
let new_distance = zone.field.distance(spatial, vec3a(0.0, 0.0, 0.0));
|
||||||
if new_distance.abs() < old_distance.abs() {
|
if new_distance.abs() > old_distance.abs() {
|
||||||
release(spatial);
|
return;
|
||||||
*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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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) {
|
pub fn release(spatial: &Spatial) {
|
||||||
let Some(spatial_node) = spatial.node.upgrade() else {
|
let Some(spatial_node) = spatial.node.upgrade() else {
|
||||||
@@ -89,11 +91,8 @@ impl Zone {
|
|||||||
if distance > 0.0 {
|
if distance > 0.0 {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if let Some(zone) = zoneable.zone.lock().upgrade() {
|
if distance < zoneable.zone_distance() {
|
||||||
let zoneable_distance = zone.field.distance(&zoneable, [0.0; 3].into());
|
continue;
|
||||||
if zoneable_distance < distance {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
current_zoneables.add_raw(&zoneable);
|
current_zoneables.add_raw(&zoneable);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user