/**************************************************************************/ /* kinect_bridge.h */ /**************************************************************************/ /* This file is part of: */ /* AETHEX ENGINE */ /* https://aethex.foundation */ /**************************************************************************/ /* Copyright (c) 2026-present AeThex Labs. */ /* */ /* Kinect Bridge - Receives skeleton data via OSC for: */ /* - Foundry Onboarding Experience */ /* - GameForge Spatial IDE */ /**************************************************************************/ #ifndef AETHEX_KINECT_BRIDGE_H #define AETHEX_KINECT_BRIDGE_H #include "core/io/packet_peer_udp.h" #include "core/io/udp_server.h" #include "core/object/ref_counted.h" #include "core/templates/vector.h" #include "scene/main/node.h" #include "kinect_skeleton.h" #include "kinect_gesture_detector.h" class KinectBridge : public Node { GDCLASS(KinectBridge, Node); public: enum Mode { MODE_FOUNDRY, // Onboarding identity forge MODE_GAMEFORGE, // Spatial IDE navigation }; private: static KinectBridge *singleton; // UDP receiver for OSC Ref udp_peer; int listen_port = 9000; bool is_running = false; // Current mode Mode current_mode = MODE_FOUNDRY; // Skeleton data Ref skeleton; bool skeleton_detected = false; // Gesture detection Ref gesture_detector; // OSC parsing void _process_osc_packet(const Vector &p_data); String _read_osc_string(const Vector &p_data, int &r_offset); int32_t _read_osc_int32(const Vector &p_data, int &r_offset); float _read_osc_float32(const Vector &p_data, int &r_offset); void _dispatch_osc_message(const String &p_address, const Array &p_args); protected: static void _bind_methods(); void _notification(int p_what); public: static KinectBridge *get_singleton(); // Server control Error start(int p_port = 9000); void stop(); bool is_active() const { return is_running; } int get_port() const { return listen_port; } // Mode void set_mode(Mode p_mode); Mode get_mode() const { return current_mode; } // Skeleton access Ref get_skeleton() const { return skeleton; } bool is_skeleton_detected() const { return skeleton_detected; } Vector3 get_joint_position(int p_joint_id) const; // Gesture detector Ref get_gesture_detector() const { return gesture_detector; } // Debug void set_debug_mode(bool p_enabled); bool is_debug_mode() const; KinectBridge(); ~KinectBridge(); }; VARIANT_ENUM_CAST(KinectBridge::Mode); #endif // AETHEX_KINECT_BRIDGE_H