Exemple #1
0
// create all the convexes
void TSRBSPTree::CreateAllConvexes()
{
    vector< TSRVector3 > dummy;

    for ( int i = 0; i < NumBrushes; i++ )
    {
        tBSPBrush* brush = &Brushes[ i ];

        if ( brush->numOfBrushSides > 0 && ( Textures[ brush->textureID ].contents & 1 ) )
        {
            CreateConvex( dummy, i );
        }
        dummy.clear();
    }
}
void InitNx()
{
	// Initialize Camera Parameters
	gCameraAspectRatio	= 1.0f;
	gCameraPos			= NxVec3(0,5,-15);
	gCameraForward		= NxVec3(0,0,1);
	gCameraRight		= NxVec3(-1,0,0);	
	
	// Create the physics SDK
    gPhysicsSDK = NxCreatePhysicsSDK(NX_PHYSICS_SDK_VERSION);
    if (!gPhysicsSDK)  return;

	// Set the physics parameters
	gPhysicsSDK->setParameter(NX_SKIN_WIDTH, 0.01);
	gPhysicsSDK->setParameter(NX_DEFAULT_SLEEP_LIN_VEL_SQUARED, 0.15*0.15);
	gPhysicsSDK->setParameter(NX_DEFAULT_SLEEP_ANG_VEL_SQUARED, 0.14*0.14);

	// Set the debug visualization parameters
	gPhysicsSDK->setParameter(NX_VISUALIZATION_SCALE, 1);
	gPhysicsSDK->setParameter(NX_VISUALIZE_COLLISION_SHAPES, 1);
	gPhysicsSDK->setParameter(NX_VISUALIZE_ACTOR_AXES, 1);
	gPhysicsSDK->setParameter(NX_VISUALIZE_COLLISION_AABBS, 1);

    // Create the scene
    NxSceneDesc sceneDesc;
    sceneDesc.gravity               = gDefaultGravity;
	sceneDesc.simType				= NX_SIMULATION_SW;
    gScene = gPhysicsSDK->createScene(sceneDesc);	
	if(!gScene)
	{ 
		sceneDesc.simType			= NX_SIMULATION_SW; 
		gScene = gPhysicsSDK->createScene(sceneDesc);  
		if(!gScene) return;
	}

	// Create the default material
	NxMaterial* defaultMaterial = gScene->getMaterialFromIndex(0); 
	defaultMaterial->setRestitution(0.5);
	defaultMaterial->setStaticFriction(0.5);
	defaultMaterial->setDynamicFriction(0.5);

	// Create the objects in the scene
	groundPlane = CreateGroundPlane();

	// Create dynamic actors
	CreateSphere(NxVec3(6.0f, 0.0f, 24.0f), 0);
	CreateBox(NxVec3(6.0f, 0.0f, 16.0f), 0);
	CreateCapsule(NxVec3(6.0f, 0.0f, 6.0f), 0);
	gSelectedActor = CreateConvex(NxVec3(6.0f, 0.0f, 0.0f), 0);
	
	// Create static actors
	CreateSphere(NxVec3(0.0f, 0.0f, 24.0f), 0);
	CreateBox(NxVec3(0.0f, 0.0f, 16.0f), 0);
	CreateCapsule(NxVec3(0.0f, 0.0f, 6.0f), 0);
	CreateConvex(NxVec3(0.0f, 0.0f, 0.0f), 0);

	// Create kinematic actors
	CreateSphere(NxVec3(-6.0f, 0.0f, 24.0f), 0);
	CreateBox(NxVec3(-6.0f, 0.0f, 16.0f), 0);
	CreateCapsule(NxVec3(-6.0f, 0.0f, 6.0f), 0);
	CreateConvex(NxVec3(-6.0f, 0.0f, 0.0f), 0);

	bPause = false;

	gCapsuleSegment.p0 = NxVec3(0, 1.2f, 0.5f);
	gCapsuleSegment.p1 = NxVec3(0, 3.2f, 0.5f);

	// Initialize HUD
	InitializeHUD();

	// Get the current time
	getElapsedTime();

	// Start the first frame of the simulation
	if (gScene)  StartPhysics();
}