Bladeren bron

Fixed 3D physics and added substep parameter to PhysicsScene

Ivan Safrin 14 jaren geleden
bovenliggende
commit
05a6e4c303

+ 2 - 1
Modules/Contents/3DPhysics/Include/PolyPhysicsScene.h

@@ -42,7 +42,7 @@ namespace Polycode {
 		/**
 		* Main constructor.
 		*/
-		PhysicsScene();
+		PhysicsScene(int maxSubSteps = 0);
 		virtual ~PhysicsScene();	
 		
 		void Update();		
@@ -68,6 +68,7 @@ namespace Polycode {
 		
 	protected:
 		
+		int maxSubSteps;
 		void initPhysicsScene();		
 		
 		btDiscreteDynamicsWorld* physicsWorld;

+ 7 - 2
Modules/Contents/3DPhysics/Source/PolyPhysicsScene.cpp

@@ -33,7 +33,8 @@ THE SOFTWARE.
 
 using namespace Polycode;
 
-PhysicsScene::PhysicsScene() : CollisionScene() {
+PhysicsScene::PhysicsScene(int maxSubSteps) : CollisionScene() {
+	this->maxSubSteps = maxSubSteps;
 	initPhysicsScene();	
 }
 
@@ -77,7 +78,11 @@ void PhysicsScene::Update() {
 	
 	
 	Number elapsed = CoreServices::getInstance()->getCore()->getElapsed();
-	physicsWorld->stepSimulation(elapsed, 7);	
+	if(maxSubSteps > 0) {
+		physicsWorld->stepSimulation(elapsed, maxSubSteps);	
+	} else {
+		physicsWorld->stepSimulation(elapsed);		
+	}
 	CollisionScene::Update();
 	
 }

+ 0 - 1
Modules/Contents/3DPhysics/Source/PolyPhysicsSceneEntity.cpp

@@ -229,7 +229,6 @@ void PhysicsSceneEntity::Update() {
 	free(mat);
 		
 	sceneEntity->setTransformByMatrixPure(m);	
-	CollisionSceneEntity::Update();		
 }
 
 SceneEntity *PhysicsSceneEntity::getSceneEntity() {