/**************************************************************************/ /* kinect_skeleton.h */ /**************************************************************************/ /* This file is part of: */ /* AETHEX ENGINE */ /* https://aethex.foundation */ /**************************************************************************/ /* Copyright (c) 2026-present AeThex Labs. */ /**************************************************************************/ #ifndef AETHEX_KINECT_SKELETON_H #define AETHEX_KINECT_SKELETON_H #include "core/object/ref_counted.h" #include "core/variant/dictionary.h" // Kinect v1 joint IDs (20 joints) class KinectSkeleton : public RefCounted { GDCLASS(KinectSkeleton, RefCounted); public: enum JointID { JOINT_HIP_CENTER = 0, JOINT_SPINE = 1, JOINT_SHOULDER_CENTER = 2, JOINT_HEAD = 3, JOINT_SHOULDER_LEFT = 4, JOINT_ELBOW_LEFT = 5, JOINT_WRIST_LEFT = 6, JOINT_HAND_LEFT = 7, JOINT_SHOULDER_RIGHT = 8, JOINT_ELBOW_RIGHT = 9, JOINT_WRIST_RIGHT = 10, JOINT_HAND_RIGHT = 11, JOINT_HIP_LEFT = 12, JOINT_KNEE_LEFT = 13, JOINT_ANKLE_LEFT = 14, JOINT_FOOT_LEFT = 15, JOINT_HIP_RIGHT = 16, JOINT_KNEE_RIGHT = 17, JOINT_ANKLE_RIGHT = 18, JOINT_FOOT_RIGHT = 19, JOINT_COUNT = 20 }; enum TrackingState { TRACKING_NOT_TRACKED = 0, TRACKING_INFERRED = 1, TRACKING_TRACKED = 2 }; private: struct JointData { Vector3 position; int tracking_state = TRACKING_NOT_TRACKED; }; JointData joints[JOINT_COUNT]; protected: static void _bind_methods(); public: // Joint access void set_joint(int p_joint_id, const Vector3 &p_position, int p_tracking_state); Vector3 get_joint_position(int p_joint_id) const; int get_joint_tracking_state(int p_joint_id) const; bool is_joint_tracked(int p_joint_id) const; // Bulk access Dictionary get_all_joints() const; // Joint names static String get_joint_name(int p_joint_id); // Bone connections (for visualization) static PackedInt32Array get_bone_connections(); KinectSkeleton(); }; VARIANT_ENUM_CAST(KinectSkeleton::JointID); VARIANT_ENUM_CAST(KinectSkeleton::TrackingState); #endif // AETHEX_KINECT_SKELETON_H