void SpecialCallback(int key, int x, int y) { switch (key) { // Reset PhysX case GLUT_KEY_F10: ResetNx(); return; } }
void getkey(unsigned char key,int x,int y) { static int drawMode = 0; switch(key) { case 27: exit(0); break; case '0': ResetNx(); break; case '1': CreateCube(NxVec3(0,40,0),3); break; case '2': CreateCubeFromEye(2); break; case '3': CreateStack(10); break; case 'p': case 'P': gPauseSimulation = !gPauseSimulation; break; case 'h': case 'H': g_DisplayHelp = !g_DisplayHelp; break; case 'f': case 'F': FullScreen(); break; case 't': case 'T': drawMode = ++drawMode % 3; if(drawMode == 0) // fill mode { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); } else if(drawMode == 1) // wireframe mode { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } else // point mode { glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } break; case ' ': g_CameraPos = NxVec3(0.0f, 20.0f, 80.0f); g_CameraForward = NxVec3(0.0f,0.0f,-1.0f); g_fovy =90.0f; break; default: break; } glutPostRedisplay(); glCheckError("getkey"); }
void KeyboardUpCallback(unsigned char key, int x, int y) { gKeys[key] = false; switch (key) { case 'p': { bPause = !bPause; if (bPause) hud.SetDisplayString(2, "Paused - Hit \"p\" to Unpause", 0.3f, 0.55f); else hud.SetDisplayString(2, "", 0.0f, 0.0f); break; } case 'x': { bShadows = !bShadows; break; } case 'b': { bDebugWireframeMode = !bDebugWireframeMode; break; } case 'f': { bForceMode = !bForceMode; break; } case 'o': { NxCloth** cloths = gScene->getCloths(); for (NxU32 i = 0; i < gScene->getNbCloths(); i++) { cloths[i]->setFlags(cloths[i]->getFlags() ^ NX_CLF_BENDING_ORTHO); } break; } case 'g': { NxCloth** cloths = gScene->getCloths(); for (NxU32 i = 0; i < gScene->getNbCloths(); i++) { cloths[i]->setFlags(cloths[i]->getFlags() ^ NX_CLF_GRAVITY); } break; } case 'y': { NxCloth** cloths = gScene->getCloths(); for (NxU32 i = 0; i < gScene->getNbCloths(); i++) { cloths[i]->setFlags(cloths[i]->getFlags() ^ NX_CLF_BENDING); } break; } case 't': gTearLines = !gTearLines; ResetNx(); break; case ' ': { NxActor* sphere = CreateSphere(gCameraPos, 1, 1); sphere->setLinearVelocity(gCameraForward * 20); break; } case 27 : { exit(0); break; } default : { break; } } }
void getkey(unsigned char key,int x,int y) { static int drawMode = 0; switch(key) { case 27: exit(0); break; case '0': ResetNx(); break; case '1': CreateCube(NxVec3(0.0f, 30.0f, 0.0f), 1+(rand()&3)); break; case '2': { NxVec3 t = g_CameraPos; NxVec3 Vel = g_CameraForward; Vel.normalize(); Vel*=200.0f; CreateTrigger(t, 8 ,&Vel, true); } break; case '3': CreateStack(10); break; case 'p': case 'P': gMyPhysX.pauseSimulation(!gMyPhysX.isPaused()); break; case 'h': case 'H': g_DisplayHelp = !g_DisplayHelp; break; case 'f': case 'F': FullScreen(); break; case 't': case 'T': drawMode = ++drawMode % 3; if(drawMode == 0) // fill mode { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); } else if(drawMode == 1) // wireframe mode { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } else // point mode { glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } break; case ' ': g_CameraPos = NxVec3(0.0f, 20.0f, 80.0f); g_CameraForward = NxVec3(0.0f,0.0f,-1.0f); g_fovy =90.0f; break; default: break; } glutPostRedisplay(); glCheckError("getkey"); }