@@ -6,7 +6,7 @@ use bevy_mod_xr::{
66 hands:: { HandBone , HandBoneRadius } ,
77 session:: session_running,
88} ;
9- use openxr:: SpaceLocationFlags ;
9+ use openxr:: { SpaceLocationFlags , SpaceVelocityFlags } ;
1010
1111use crate :: helper_traits:: ToVec3 ;
1212use crate :: resources:: OxrFrameState ;
@@ -159,31 +159,52 @@ fn locate_hands(
159159 frame_state. predicted_display_time
160160 } ;
161161 let ref_space = ref_space. map ( |v| & v. 0 ) . unwrap_or ( & default_ref_space. 0 ) ;
162+ let mut clear_flags = || {
163+ for e in hand_entities. 0 . iter ( ) {
164+ let Ok ( ( _, _, _, _, mut flags, vel_flags) ) = bone_query. get_mut ( * e) else {
165+ continue ;
166+ } ;
167+ flags. 0 = SpaceLocationFlags :: EMPTY ;
168+ if let Some ( mut flags) = vel_flags {
169+ flags. 0 = SpaceVelocityFlags :: EMPTY ;
170+ }
171+ }
172+ } ;
162173 let ( joints, vels) = if wants_velocities {
163174 let ( loc, vel) =
164175 match session. locate_hand_joints_with_velocities ( tracker, ref_space, time) {
165176 Ok ( Some ( v) ) => v,
166- Ok ( None ) => continue ,
177+ Ok ( None ) => {
178+ clear_flags ( ) ;
179+ continue ;
180+ }
167181 Err ( openxr:: sys:: Result :: ERROR_EXTENSION_NOT_PRESENT ) => {
168182 error ! ( "HandTracking Extension not loaded" ) ;
183+ clear_flags ( ) ;
169184 continue ;
170185 }
171186 Err ( err) => {
172187 warn ! ( "Error while locating hand joints: {}" , err. to_string( ) ) ;
188+ clear_flags ( ) ;
173189 continue ;
174190 }
175191 } ;
176192 ( loc, Some ( vel) )
177193 } else {
178194 let space = match session. locate_hand_joints ( tracker, ref_space, time) {
179195 Ok ( Some ( v) ) => v,
180- Ok ( None ) => continue ,
196+ Ok ( None ) => {
197+ clear_flags ( ) ;
198+ continue ;
199+ }
181200 Err ( openxr:: sys:: Result :: ERROR_EXTENSION_NOT_PRESENT ) => {
182201 error ! ( "HandTracking Extension not loaded" ) ;
202+ clear_flags ( ) ;
183203 continue ;
184204 }
185205 Err ( err) => {
186206 warn ! ( "Error while locating hand joints: {}" , err. to_string( ) ) ;
207+ clear_flags ( ) ;
187208 continue ;
188209 }
189210 } ;
0 commit comments