#include "stdafx.h" #include "ExNiSHMemory.h" #include "MessageBoxDLG.h" #include "WinTools.h" #include "anm_data.h" /* 使用するパラメータ appParam.animationUUID CSetAnimation */ CExNiSHMemory::CExNiSHMemory(void) { indexHandle = NULL; ptrAnimIndex = NULL; for (int i=0; i* posVect, Quaternion* rotQuat, NiSDK_Lib lib, int joints_num) { double* shm = NULL; unsigned short info[4]; memset(info, 0, sizeof(unsigned short)*4); double* joint_info = (double*)info; info[1] = (unsigned short)joints_num; unsigned short mode = 0; if (appParam.detectParts==NI_PROFILE_UPPER) { mode |= NI_SDK_PROFILE_UPPER; } if (isTracking) { mode |= NI_SDK_IS_TRACKING; } // Position if (appParam.outDataPostion) { for (int j=0; j=0 && posVect[j].c>=0.0) { shm = ptrMapData[n]; if (shm!=NULL) { shm[1] = posVect[j].x; shm[2] = posVect[j].y; shm[3] = posVect[j].z; info[0] = mode | ANM_COM_DATA_POSITION; shm[0] = *joint_info; } } } } // Quaternion if (appParam.outDataQuate) { // Positon of Root Joint if (!appParam.outDataPostion) { int n = NiSDK2SHMPosJointNum(0, lib); if (n>=0 && posVect[0].c>=0.0) { shm = ptrMapData[n]; if (shm!=NULL) { shm[1] = posVect[0].x; shm[2] = posVect[0].y; shm[3] = posVect[0].z; info[0] = mode | ANM_COM_DATA_POSITION; shm[0] = *joint_info; } } } for (int j=0; j=0 && rotQuat[j].c>=0.0) { shm = ptrMapData[n]; if (shm!=NULL) { shm[4] = rotQuat[j].x; shm[5] = rotQuat[j].y; shm[6] = rotQuat[j].z; shm[7] = rotQuat[j].s; info[0] = mode | ANM_COM_DATA_ROTATION; shm[0] = *joint_info; } } } } } void CExNiSHMemory::clearLocalAnimationData(void) { for (int i=0; i=0 && n=0 && n