#pragma once #ifndef __KINECTGESTUREDETECTOR_H__ #define __KINECTGESTUREDETECTOR_H__ #if defined( GESTURE_TRAINER ) #if defined( TARGET_X360 ) #include #include #include #define VECTOR_TYPE XMVECTOR #elif defined( TARGET_DURANGO ) #include #elif defined( TARGET_ORBIS ) #include "SK_iisu/PS4/include/HumanTrackingCTypes.h" #include "Kinect/PS4/commontypes.h" #elif defined ( TARGET_WIN32 ) #include #else #error unsuported platform #endif #else // defined( GESTURE_TRAINER ) #if defined( _XBOX ) || defined( ITF_X360 ) #include #include #include #define VECTOR_TYPE XMVECTOR #elif defined( DURANGO ) || defined( ITF_DURANGO ) #include #include #elif defined( __ORBIS__ ) || defined( ITF_ORBIS ) #include "SK_iisu/PS4/include/HumanTrackingCTypes.h" #include "Kinect/PS4/commontypes.h" #elif defined ( WIN32 ) ||defined( ITF_WIN32) #include #include #include #define VECTOR_TYPE XMVECTOR #else #error unsuported platform #endif #endif #define INVALID_GESTURE_HANDLE ( 0xffffffff ) #define KINECT_GESTURE_VELOCITY_GRID_X (3) #define KINECT_GESTURE_VELOCITY_GRID_Y (3) #define KINECT_GESTURE_VELOCITY_GRID_WIDTH ( 2.0f ) #define KINECT_GESTURE_VELOCITY_GRID_HEIGHT ( 2.0f ) #define KINECT_GESTURE_MAX_SIMULTANEOUS_GESTURES ( 10 ) // IDENTITY_MAX_IDENTITIES namespace KinectGesture { typedef unsigned int GestureHandle; // aligned malloc typedef void* (*MallocFunction)( unsigned int, unsigned int ); // aligned free typedef void (*FreeFunction)( void* ); // error reporting typedef void (*AssertFunction)( bool, const char* ); void SetEndianSwapOnRead( bool endianSwapOnRead ); bool GetEndianSwapOnRead(); struct VelocityGrid { float mVelocity[ KINECT_GESTURE_VELOCITY_GRID_X ][ KINECT_GESTURE_VELOCITY_GRID_Y ][ 2 ]; }; #ifdef GESTURE_EVALUATOR void Initialise(unsigned gestureCount); #endif void Initialise( unsigned int gestureCount, MallocFunction mallocFunction, FreeFunction freeFunction, AssertFunction assertFunction ); void Shutdown(); GestureHandle CreateGesture( void* buffer ); void DestroyGesture( GestureHandle gesture ); void SetNormalToGravity( const float* normalToGravity ); void Update( unsigned int playerIndex, const void* pSkeletonData, float fDeltaTimeInSeconds, const VelocityGrid* opticalFlowGrid ); void NewPlayer( unsigned int playerIndex, const void* pSkeletonData ); float DetectGesture( GestureHandle gesture, unsigned int playerIndex ); void GetGestureBoneWeights( GestureHandle gesture, float *weights, unsigned int numWeights ); float GetGestureEnergyMean( GestureHandle gesture ); float GetGestureEnergyStdDev( GestureHandle gesture ); float GetEnergyLevel( unsigned int playerIndex ); } #endif // #ifndef __KINECTGESTUREDETECTOR_H__