#include "stdafx.h" #include "ExportNiData.h" ////////////////////////////////////////////////////////////////////////////////////////// // // // void CExportNiData::init(void) { clear(); outPeriod = NI_FPS_MAX; // 30ms } void CExportNiData::clear(void) { outTimer = 0; modTime = 0; frameRate = 0.0f; frameTimer = 0; frameNum = 0; ctrlFPS = TRUE; } void CExportNiData::exportJointsData(Vector* posVect, Quaternion* rotQuat, CExNiNetwork* net, NiSDK_Lib lib, int joint_num) { if (!ctrlFPS || checkOutputPeriod()) { exportData(posVect, rotQuat, net, lib, joint_num); calcLocalFPS(); } } ////////////////////////////////////////////////////////////////////////////////////////// // // // BOOL CExportNiData::checkOutputPeriod(void) { unsigned short tmptimer; int laptm = (int)GetMsecondsLapTimer(outTimer, &tmptimer) - outPeriod; if (laptm+modTime<0) return FALSE; //if (laptm>0) modTime = laptm; //else modTime = 0; modTime = Min(laptm + modTime, outPeriod); outTimer = tmptimer; return TRUE; } void CExportNiData::calcLocalFPS(void) { unsigned short tmptimer; unsigned short laptm = GetMsecondsLapTimer(frameTimer, &tmptimer)/1000; frameNum++; if (laptm>=NINET_FRM_RATE_INTVL) { frameRate = (float)frameNum/laptm; frameTimer = tmptimer; frameNum = 0; SendWinMessage(WM_USER_LCLFPS_UPDATE); } return; } void CExportNiData::exportData(Vector* posVect, Quaternion* rotQuat, CExNiNetwork* net, NiSDK_Lib lib, int joint_num) { CExNiSHMemory* mem = net->sharedMem; CParameterSet param = net->appParam; // if (net!=NULL && net->sendSocket>0) { if (param.netOutMode==NETandLOCAL) { mem->updateLocalAnimationData(posVect, rotQuat, lib, joint_num); } if (param.netFastMode) { sendAnimationData (posVect, rotQuat, net, lib, joint_num); } else { sendAnimationData(posVect, rotQuat, net, lib, joint_num); } } else { mem->updateLocalAnimationData(posVect, rotQuat, lib, joint_num); } }