From 7d8a9d257dcdda7953d30407142d9b408ca3f249 Mon Sep 17 00:00:00 2001 From: Faolan <46481567+Faolan-Rad@users.noreply.github.com> Date: Wed, 2 Aug 2023 21:49:56 -0400 Subject: [PATCH] XR Tracker reuses XR Pose --- servers/xr/xr_positional_tracker.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/servers/xr/xr_positional_tracker.cpp b/servers/xr/xr_positional_tracker.cpp index ffb89fc38587..2dacabe588e6 100644 --- a/servers/xr/xr_positional_tracker.cpp +++ b/servers/xr/xr_positional_tracker.cpp @@ -153,7 +153,13 @@ void XRPositionalTracker::invalidate_pose(const StringName &p_action_name) { void XRPositionalTracker::set_pose(const StringName &p_action_name, const Transform3D &p_transform, const Vector3 &p_linear_velocity, const Vector3 &p_angular_velocity, const XRPose::TrackingConfidence p_tracking_confidence) { Ref new_pose; - new_pose.instantiate(); + if (poses.has(p_action_name)) { + new_pose = poses[p_action_name]; + } else { + new_pose.instantiate(); + poses[p_action_name] = new_pose; + } + new_pose->set_name(p_action_name); new_pose->set_has_tracking_data(true); new_pose->set_transform(p_transform); @@ -161,7 +167,6 @@ void XRPositionalTracker::set_pose(const StringName &p_action_name, const Transf new_pose->set_angular_velocity(p_angular_velocity); new_pose->set_tracking_confidence(p_tracking_confidence); - poses[p_action_name] = new_pose; emit_signal(SNAME("pose_changed"), new_pose); // TODO discuss whether we also want to create and emit an InputEventXRPose event