// 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(); }