Browse Source

Merge pull request #96587 from Malcolmnixon/check-openxr-hand-tracking

Warn if XRHandModifier3D used with OpenXR and hand-tracking disabled
Rémi Verschelde 11 months ago
parent
commit
af0058c7e6
2 changed files with 14 additions and 0 deletions
  1. 12 0
      scene/3d/xr_hand_modifier_3d.cpp
  2. 2 0
      scene/3d/xr_hand_modifier_3d.h

+ 12 - 0
scene/3d/xr_hand_modifier_3d.cpp

@@ -30,6 +30,7 @@
 
 #include "xr_hand_modifier_3d.h"
 
+#include "core/config/project_settings.h"
 #include "servers/xr/xr_pose.h"
 #include "servers/xr_server.h"
 
@@ -283,6 +284,17 @@ void XRHandModifier3D::_skeleton_changed(Skeleton3D *p_old, Skeleton3D *p_new) {
 	_get_joint_data();
 }
 
+PackedStringArray XRHandModifier3D::get_configuration_warnings() const {
+	PackedStringArray warnings = SkeletonModifier3D::get_configuration_warnings();
+
+	// Detect OpenXR without the Hand Tracking extension.
+	if (GLOBAL_GET("xr/openxr/enabled") && !GLOBAL_GET("xr/openxr/extensions/hand_tracking")) {
+		warnings.push_back("XRHandModifier3D requires the OpenXR Hand Tracking extension to be enabled.");
+	}
+
+	return warnings;
+}
+
 void XRHandModifier3D::_notification(int p_what) {
 	switch (p_what) {
 		case NOTIFICATION_ENTER_TREE: {

+ 2 - 0
scene/3d/xr_hand_modifier_3d.h

@@ -55,6 +55,8 @@ public:
 	void set_bone_update(BoneUpdate p_bone_update);
 	BoneUpdate get_bone_update() const;
 
+	PackedStringArray get_configuration_warnings() const override;
+
 	void _notification(int p_what);
 
 protected: