Пример #1
0
void SpecialCallback(int key, int x, int y)
{
	switch (key)
    {
		// Reset PhysX
		case GLUT_KEY_F10: ResetNx(); return; 
	}
}
Пример #2
0
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");
}
Пример #3
0
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; }
	}
}
Пример #4
0
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");
}