#include "GlutDemoApplication.h" #include "GlutStuff.h" #include "BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h" #include "BulletDynamics/Dynamics/btRigidBody.h" void GlutDemoApplication::updateModifierKeys() { m_modifierKeys = 0; if (glutGetModifiers() & GLUT_ACTIVE_ALT) m_modifierKeys |= BT_ACTIVE_ALT; if (glutGetModifiers() & GLUT_ACTIVE_CTRL) m_modifierKeys |= BT_ACTIVE_CTRL; if (glutGetModifiers() & GLUT_ACTIVE_SHIFT) m_modifierKeys |= BT_ACTIVE_SHIFT; } void GlutDemoApplication::specialKeyboard(int key, int x, int y) { (void)x; (void)y; switch (key) { case GLUT_KEY_F1: { break; } case GLUT_KEY_F2: { break; } case GLUT_KEY_END: { int numObj = getDynamicsWorld()->getNumCollisionObjects(); if (numObj) { btCollisionObject* obj = getDynamicsWorld()->getCollisionObjectArray()[numObj-1]; getDynamicsWorld()->removeCollisionObject(obj); btRigidBody* body = btRigidBody::upcast(obj); if (body && body->getMotionState()) { delete body->getMotionState(); } delete obj; } break; } case GLUT_KEY_LEFT : stepLeft(); break; case GLUT_KEY_RIGHT : stepRight(); break; case GLUT_KEY_UP : stepFront(); break; case GLUT_KEY_DOWN : stepBack(); break; case GLUT_KEY_PAGE_UP : zoomIn(); break; case GLUT_KEY_PAGE_DOWN : zoomOut(); break; case GLUT_KEY_HOME : toggleIdle(); break; default: // std::cout << "unused (special) key : " << key << std::endl; break; } glutPostRedisplay(); } void GlutDemoApplication::swapBuffers() { glutSwapBuffers(); }