void XN_CALLBACK_TYPE CircleCB(XnFloat fTimes, XnBool bConfident, const XnVCircle* pCircle, void* pUserCxt) { SetCircleLineColor(1, 0.1, 0.1); SetCircleColor(0.2, 0.2, 1.0); SetCircle(true, fmod((double)fTimes, 1.0) * 2 * XnVMathCommon::PI); }
int main(int argc, char ** argv) { XnStatus rc = XN_STATUS_OK; xn::EnumerationErrors errors; // Configure rc = g_Context.InitFromXmlFile(SAMPLE_XML_FILE, g_ScriptNode, &errors); if (rc == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); printf("%s\n", strError); return (rc); } if (rc != XN_STATUS_OK) { printf("Couldn't initialize from file: %s\n", xnGetStatusString(rc)); return 1; } // Create and initialize point tracker g_pSessionManager = new XnVSessionManager(); rc = g_pSessionManager->Initialize(&g_Context, "Wave", "RaiseHand"); if (rc != XN_STATUS_OK) { printf("Couldn't initialize the Session Manager: %s\n", xnGetStatusString(rc)); CleanupExit(); } g_pSessionManager->RegisterSession(NULL, &SessionStart, &SessionEnd); // Start catching signals for quit indications CatchSignals(&g_bQuit); // init and register circle control g_pCircle = new XnVCircleDetector; g_pCircle->RegisterCircle(NULL, &CircleCB); g_pCircle->RegisterNoCircle(NULL, &NoCircleCB); g_pCircle->RegisterPrimaryPointCreate(NULL, &Circle_PrimaryCreate); g_pCircle->RegisterPrimaryPointDestroy(NULL, &Circle_PrimaryDestroy); g_pSessionManager->AddListener(g_pCircle); SetCircle(true, 0); SetCircleColor(1,1,1); SetCircleLineColor(0.7,0.7,0.7); g_Context.StartGeneratingAll(); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); //glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
void Button::SetButtonOrigin() { m_sprite->setOrigin(m_sprite->getGlobalBounds().width/2,m_sprite->getGlobalBounds().height/2); m_circle.setOrigin(m_sprite->getPosition().x, m_sprite->getPosition().y); SetCircle(m_sprite->getGlobalBounds().width/2); }