int main() { sf::ContextSettings Settings; Settings.depthBits = 24; // Request a 24 bits depth buffer Settings.stencilBits = 8; // Request a 8 bits stencil buffer Settings.antialiasingLevel = 2; // Request 2 levels of antialiasing sf::Window window(sf::VideoMode(WNDW_WIDTH, WNDW_HEIGHT, 32), APP_NAME, sf::Style::Close, Settings); window.setKeyRepeatEnabled(false); // not count key holding press if (!init()) exit(EXIT_FAILURE); if (!K.init()) KinectOn = false; M.init(); std::cout << "LOADING OK" << std::endl; sf::Clock clock; sf::Time elapsed; while (window.isOpen()) { sf::Event event; while (window.pollEvent(event)) { switch (event.type) { case sf::Event::Closed: window.close(); break; case sf::Event::KeyPressed: switch (event.key.code) { case sf::Keyboard::Num1: M.increaseRotation(1, 0.0f, 0.0f); break; case sf::Keyboard::Num2: M.increaseRotation(-1, 0.0f, 0.0f); break; case sf::Keyboard::Num3: M.increaseRotation(0.0f, 1.0f, 0.0f); break; case sf::Keyboard::Num4: M.increaseRotation(0.0f, -1.0f, 0.0f); break; case sf::Keyboard::Num5: M.increaseRotation(0.0f, 0.0f, 1.0f); break; case sf::Keyboard::Num6: M.increaseRotation(0.0f, 0.0f, -1.0f); break; case sf::Keyboard::P: K.playRecord(); break; case sf::Keyboard::R: K.record(); break; case sf::Keyboard::S: K.stopRecord(); break; case sf::Keyboard::Z: M.setShocked(); break; case sf::Keyboard::X: M.undoShocked(); break; case sf::Keyboard::Escape: window.close(); break; default: break; } break; default: break; } } elapsed = clock.getElapsedTime(); if (elapsed.asSeconds() > 1.0 / 30) { // 30 fps = 1.0/60 window.setActive(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if (KinectOn) { K.update(); if (K.IsTracked()) { FLOAT* sc = K.GetScale(); FLOAT* rot = K.GetRotation(); FLOAT* trans = K.GetTranslation(); FLOAT* AU = K.GetAnimationUnits(); UINT* numAU = K.GetNumAU(); FLOAT* SU = K.GetShapeUnits(); UINT* numSU = K.GetNumSU(); M.registerResult(sc, rot, trans, AU, numAU, SU, numSU); } else M.stopAnimation(); } M.update(); K.render(); M.render(); window.display(); } } return 0; }