summaryrefslogtreecommitdiffstats
path: root/scene/3d/xr_hand_modifier_3d.h
diff options
context:
space:
mode:
Diffstat (limited to 'scene/3d/xr_hand_modifier_3d.h')
-rw-r--r--scene/3d/xr_hand_modifier_3d.h17
1 files changed, 6 insertions, 11 deletions
diff --git a/scene/3d/xr_hand_modifier_3d.h b/scene/3d/xr_hand_modifier_3d.h
index 2bc30d42d4..9f7ce45c9d 100644
--- a/scene/3d/xr_hand_modifier_3d.h
+++ b/scene/3d/xr_hand_modifier_3d.h
@@ -31,18 +31,16 @@
#ifndef XR_HAND_MODIFIER_3D_H
#define XR_HAND_MODIFIER_3D_H
-#include "scene/3d/node_3d.h"
+#include "scene/3d/skeleton_modifier_3d.h"
#include "servers/xr/xr_hand_tracker.h"
-class Skeleton3D;
-
/**
The XRHandModifier3D node drives a hand skeleton using hand tracking
data from an XRHandTracking instance.
*/
-class XRHandModifier3D : public Node3D {
- GDCLASS(XRHandModifier3D, Node3D);
+class XRHandModifier3D : public SkeletonModifier3D {
+ GDCLASS(XRHandModifier3D, SkeletonModifier3D);
public:
enum BoneUpdate {
@@ -54,9 +52,6 @@ public:
void set_hand_tracker(const StringName &p_tracker_name);
StringName get_hand_tracker() const;
- void set_target(const NodePath &p_target);
- NodePath get_target() const;
-
void set_bone_update(BoneUpdate p_bone_update);
BoneUpdate get_bone_update() const;
@@ -65,6 +60,9 @@ public:
protected:
static void _bind_methods();
+ virtual void _skeleton_changed(Skeleton3D *p_old, Skeleton3D *p_new) override;
+ virtual void _process_modification() override;
+
private:
struct JointData {
int bone = -1;
@@ -72,13 +70,10 @@ private:
};
StringName tracker_name = "/user/left";
- NodePath target;
BoneUpdate bone_update = BONE_UPDATE_FULL;
JointData joints[XRHandTracker::HAND_JOINT_MAX];
- Skeleton3D *get_skeleton();
void _get_joint_data();
- void _update_skeleton();
void _tracker_changed(StringName p_tracker_name, const Ref<XRHandTracker> &p_tracker);
};