diff options
Diffstat (limited to 'servers/xr/xr_positional_tracker.cpp')
| -rw-r--r-- | servers/xr/xr_positional_tracker.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/servers/xr/xr_positional_tracker.cpp b/servers/xr/xr_positional_tracker.cpp index 2dacabe588..6c15e4c1b0 100644 --- a/servers/xr/xr_positional_tracker.cpp +++ b/servers/xr/xr_positional_tracker.cpp @@ -62,6 +62,7 @@ void XRPositionalTracker::_bind_methods() { ClassDB::bind_method(D_METHOD("invalidate_pose", "name"), &XRPositionalTracker::invalidate_pose); ClassDB::bind_method(D_METHOD("set_pose", "name", "transform", "linear_velocity", "angular_velocity", "tracking_confidence"), &XRPositionalTracker::set_pose); ADD_SIGNAL(MethodInfo("pose_changed", PropertyInfo(Variant::OBJECT, "pose", PROPERTY_HINT_RESOURCE_TYPE, "XRPose"))); + ADD_SIGNAL(MethodInfo("pose_lost_tracking", PropertyInfo(Variant::OBJECT, "pose", PROPERTY_HINT_RESOURCE_TYPE, "XRPose"))); ClassDB::bind_method(D_METHOD("get_input", "name"), &XRPositionalTracker::get_input); ClassDB::bind_method(D_METHOD("set_input", "name", "value"), &XRPositionalTracker::set_input); @@ -146,7 +147,10 @@ void XRPositionalTracker::invalidate_pose(const StringName &p_action_name) { // only update this if we were tracking this pose if (poses.has(p_action_name)) { // We just set tracking data as invalid, we leave our current transform and velocity data as is so controllers don't suddenly jump to origin. - poses[p_action_name]->set_has_tracking_data(false); + Ref<XRPose> pose = poses[p_action_name]; + pose->set_has_tracking_data(false); + + emit_signal(SNAME("pose_lost_tracking"), pose); } } |
