#pragma once #include "OpenNiWin.h" #include "Rotation.h" #include "SL/SLJoints.h" #include "NITools/NiSMemory.h" #include "NITools/NiNetwork.h" #include "NiToolWin.h" #include "ParameterSet.h" #include "NITools/NiJoints.h" #define OPENNI_RECORDE_TEMP_FILE ".openni_recorde.oni.$$$" using namespace jbxwl; class CExOpenNiWin : public COpenNiWin { public: CExOpenNiWin(); ~CExOpenNiWin(); public: COpenNiDevice* dev_backup; CNiJoints* niJoints; CNiNetwork* niNetwork; CNiSMemory* sharedMem; CParameterSet appParam; CExFrame* pLogFrame; CExFrame* pSensorFrame; CExFrame* pSkeletonFrame; CLogWndDoc* pLogDoc; public: Vector vect_up; Vector vect_down; public: Buffer saveTempFilePath; void deleteRecordeTempFile(void) { unlink((char*)saveTempFilePath.buf);} void setSensorFramePtr(CExFrame* pfrm) { pSensorFrame = pfrm;} void setSkeletonFramePtr(CExFrame* pfrm) { pSkeletonFrame = pfrm;} void setLogFramePtr(CExFrame* pfrm); void setParameter(CParameterSet param) { appParam = param;} void setMotion(CParameterSet param); BOOL makeFileDevice(char* fname); BOOL remakeFileDevice(char* fname); BOOL restoreDevice(void); public: void convertRot2SLData(void); void convertPos2SLData(void); void exportSLData(void); public: virtual void logingJointsData(void); virtual void checkGroundLevel(void) { if (appParam.useJointConst) niJoints->CheckGroundLevel(m_ground_level);} virtual void checkBoneLength (void) { if (appParam.useJointConst) niJoints->CheckBoneLength();} virtual void convertData(void); virtual void lostTrackingUser(int uid) { DEBUG_ERR("LOST AVATAR");} virtual void detectTrackingUser(int uid) { DEBUG_ERR("DELETCT AVATAR");} public: // TEST bool setStartBoneLength(void); double stbnLen[OPENNI_MAX_JOINT_NUM]; }; //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // UINT openniEventLoop(LPVOID pParam);