23 #ifndef __PLUGINS_OPENNI_HANDTRACKER_THREAD_H_
24 #define __PLUGINS_OPENNI_HANDTRACKER_THREAD_H_
26 #include <core/threading/thread.h>
27 #include <core/utils/lockptr.h>
28 #include <aspect/logging.h>
29 #include <aspect/configurable.h>
30 #include <aspect/clock.h>
31 #include <aspect/blackboard.h>
32 #include <aspect/blocked_timing.h>
33 #include <plugins/openni/aspect/openni.h>
35 #include <XnCppWrapper.h>
40 class ObjectPositionInterface;
59 void hand_create(XnUserID &user,
const XnPoint3D *position, XnFloat &time);
61 void hand_update(XnUserID &user,
const XnPoint3D *position, XnFloat &time);
64 const XnPoint3D *end_position);
69 protected:
virtual void run() { Thread::run(); }
72 void update_hand(XnUserID &user,
const XnPoint3D *position);
76 typedef std::map<XnUserID, fawkes::ObjectPositionInterface *> HandMap;
79 xn::HandsGenerator *__hand_gen;
80 xn::DepthGenerator *__depth_gen;
81 xn::GestureGenerator *__gesture_gen;
83 XnCallbackHandle __hand_cb_handle;
84 XnCallbackHandle __gesture_cb_handle;
86 std::map<std::string, bool> __enabled_gesture;
88 std::map<XnUserID, bool> __needs_write;
92 unsigned int __height;