00001 /******************************************************************************* 00002 * * 00003 * PrimeSense NITE 1.3 * 00004 * Copyright (C) 2010 PrimeSense Ltd. * 00005 * * 00006 *******************************************************************************/ 00007 00008 00009 #ifndef _XNV_MULTI_PROCESS_FLOW_CLIENT_H_ 00010 #define _XNV_MULTI_PROCESS_FLOW_CLIENT_H_ 00011 00012 #include "XnVSessionGenerator.h" 00013 #include "XnVMultipleHands.h" 00014 00015 struct XnVNiteMultiprocessData; 00016 class XnVMultiprocessReadSynchronizer; 00017 class IdToContextMapping; 00018 00030 class XNV_NITE_API XnVMultiProcessFlowClient : 00031 public XnVSessionGenerator 00032 { 00033 public: 00041 XnVMultiProcessFlowClient(const XnChar* sOutputSectionName, const XnChar* strName = "XnVMultiProcessFlowClient"); 00045 ~XnVMultiProcessFlowClient(); 00046 00053 XnStatus Initialize(); 00054 00062 XnStatus ReadState(); 00063 00069 XnStatus LosePoint(XnUInt32 nID); 00075 XnStatus LosePoints(); 00076 00077 XnStatus EndSession(); 00078 XnStatus ForceSession(const XnPoint3D& ptFocus); 00079 XnStatus TrackPoint(const XnPoint3D& pt); 00080 protected: 00081 XN_DECLARE_DEFAULT_HASH_DECL(XNV_NITE_API, XnUInt32, XnVHandPointContext*, XnVIntContextHash); 00082 00083 XnVHandPointContext* GetLocalContext(XnUInt32 nID); 00084 00085 void SendEventsForStateDiff(const XnVNiteMultiprocessData& NewState); 00086 00087 XnVMultiprocessReadSynchronizer* m_pReadingLock; 00088 XnVNiteMultiprocessData* m_pLastReadState; 00089 XnVHandPointContext* m_pInputHandContext; 00090 XnPoint3D m_ptInputHandPoint; 00091 XnVIntContextHash* m_pExistingPointContexts; 00092 00093 XnVMultipleHands m_Hands; 00094 }; // XnVMultiProcessFlowClient 00095 00096 #endif // _XNV_MULTI_PROCESS_FLOW_CLIENT_H_