@@ -16,26 +16,28 @@ use std::sync::{Arc, Weak};
1616pub fn capture ( spatial : & Arc < Spatial > , zone : & Arc < Zone > ) {
1717 let old_distance = spatial. zone_distance ( ) ;
1818 let new_distance = zone. field . distance ( spatial, vec3a ( 0.0 , 0.0 , 0.0 ) ) ;
19- if new_distance. abs ( ) < old_distance. abs ( ) {
20- release ( spatial) ;
21- * spatial. old_parent . lock ( ) = spatial. get_parent ( ) ;
22- * spatial. zone . lock ( ) = Arc :: downgrade ( zone) ;
23- let Some ( zone_node) = zone. spatial . node . upgrade ( ) else {
24- return ;
25- } ;
26- let Some ( spatial_node) = spatial. node . upgrade ( ) else {
27- return ;
28- } ;
29- let Ok ( spatial_alias) = Alias :: create (
30- & spatial_node,
31- & zone_node. get_client ( ) . unwrap ( ) ,
32- SPATIAL_ASPECT_ALIAS_INFO . clone ( ) ,
33- Some ( & zone. captured ) ,
34- ) else {
35- return ;
36- } ;
37- let _ = super :: zone_client:: capture ( & zone_node, & spatial_alias) ;
19+ if new_distance. abs ( ) > old_distance. abs ( ) {
20+ return ;
3821 }
22+
23+ release ( spatial) ;
24+ * spatial. old_parent . lock ( ) = spatial. get_parent ( ) ;
25+ * spatial. zone . lock ( ) = Arc :: downgrade ( zone) ;
26+ let Some ( zone_node) = zone. spatial . node . upgrade ( ) else {
27+ return ;
28+ } ;
29+ let Some ( spatial_node) = spatial. node . upgrade ( ) else {
30+ return ;
31+ } ;
32+ let Ok ( spatial_alias) = Alias :: create (
33+ & spatial_node,
34+ & zone_node. get_client ( ) . unwrap ( ) ,
35+ SPATIAL_ASPECT_ALIAS_INFO . clone ( ) ,
36+ Some ( & zone. captured ) ,
37+ ) else {
38+ return ;
39+ } ;
40+ let _ = super :: zone_client:: capture ( & zone_node, & spatial_alias) ;
3941}
4042pub fn release ( spatial : & Spatial ) {
4143 let Some ( spatial_node) = spatial. node . upgrade ( ) else {
@@ -89,11 +91,8 @@ impl Zone {
8991 if distance > 0.0 {
9092 continue ;
9193 }
92- if let Some ( zone) = zoneable. zone . lock ( ) . upgrade ( ) {
93- let zoneable_distance = zone. field . distance ( & zoneable, [ 0.0 ; 3 ] . into ( ) ) ;
94- if zoneable_distance < distance {
95- continue ;
96- }
94+ if distance < zoneable. zone_distance ( ) {
95+ continue ;
9796 }
9897 current_zoneables. add_raw ( & zoneable) ;
9998 }
0 commit comments