void updateUserState(const nite::UserData& user, uint64_t ts) { if (user.isNew()) { USER_MESSAGE("New"); } else if (user.isVisible() && !g_visibleUsers[user.getId()]) printf("[%08" PRIu64 "] User #%d:\tVisible\n", ts, user.getId()); else if (!user.isVisible() && g_visibleUsers[user.getId()]) printf("[%08" PRIu64 "] User #%d:\tOut of Scene\n", ts, user.getId()); else if (user.isLost()) { USER_MESSAGE("Lost"); } g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: USER_MESSAGE("Stopped tracking.") break; case nite::SKELETON_CALIBRATING: USER_MESSAGE("Calibrating...") break; case nite::SKELETON_TRACKED: USER_MESSAGE("Tracking!") break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: USER_MESSAGE("Calibration Failed... :-|") break; } } }
void updateUserState(const nite::UserData& user, unsigned long long ts) { if (user.isNew()) USER_MESSAGE("New") else if (user.isVisible() && !g_visibleUsers[user.getId()]) USER_MESSAGE("Visible") else if (!user.isVisible() && g_visibleUsers[user.getId()]) USER_MESSAGE("Out of Scene") else if (user.isLost()) USER_MESSAGE("Lost") g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: USER_MESSAGE("Stopped tracking.") break; case nite::SKELETON_CALIBRATING: USER_MESSAGE("Calibrating...") break; case nite::SKELETON_TRACKED: USER_MESSAGE("Tracking!") break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: USER_MESSAGE("Calibration Failed... :-|") break; } } }
/** * update and event out on state of user and skeleton tracking */ void updateUserState(const nite::UserData& user) { if (user.isNew()) { eventIDToSend = NEW_USER; async.data = (void*) &eventIDToSend; uv_async_send(&async); } else if (!isUserVisible && user.isVisible() && user.getId() == 1) { isUserVisible = 1; eventIDToSend = USER_IS_VISIBLE; async.data = (void*) &eventIDToSend; uv_async_send(&async); } else if (isUserVisible && !user.isVisible() && user.getId() == 1) { isUserVisible = 0; eventIDToSend = USER_IS_OUT_OF_SCENE; async.data = (void*) &eventIDToSend; uv_async_send(&async); } g_visibleUsers[user.getId()] = user.isVisible(); if(g_skeletonStates[user.getId()] != user.getSkeleton().getState()) { switch(g_skeletonStates[user.getId()] = user.getSkeleton().getState()) { case nite::SKELETON_NONE: if (isSkeletonTracking) { isSkeletonTracking = false; isSkeletonCalibrating = false; eventIDToSend = SKELETON_STOPPED_TRACKING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_CALIBRATING: if (!isSkeletonCalibrating) { isSkeletonCalibrating = true; eventIDToSend = SKELETON_CALIBRATING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_TRACKED: if (!isSkeletonTracking) { isSkeletonTracking = true; isSkeletonCalibrating = false; eventIDToSend = SKELETON_TRACKING; async.data = (void*) &eventIDToSend; uv_async_send(&async); } break; case nite::SKELETON_CALIBRATION_ERROR_NOT_IN_POSE: case nite::SKELETON_CALIBRATION_ERROR_HANDS: case nite::SKELETON_CALIBRATION_ERROR_LEGS: case nite::SKELETON_CALIBRATION_ERROR_HEAD: case nite::SKELETON_CALIBRATION_ERROR_TORSO: eventIDToSend = SKELETON_CALIBRATION_FAILED; async.data = (void*) &eventIDToSend; uv_async_send(&async); isSkeletonTracking = false; isSkeletonCalibrating = false; break; } } }