Browse Source

Newton scene collision works as expected

Panagiotis Christopoulos Charitos 10 years ago
parent
commit
139ce761ae
3 changed files with 10 additions and 8 deletions
  1. 7 7
      src/physics/PhysicsBody.cpp
  2. 2 0
      src/physics/PhysicsWorld.cpp
  3. 1 1
      testapp/Main.cpp

+ 7 - 7
src/physics/PhysicsBody.cpp

@@ -38,8 +38,8 @@ Error PhysicsBody::create(const Initializer& init)
 
 	// Create
 	Mat4 trf = toNewton(Mat4(init.m_startTrf));
-	
-	/*if(init.m_static)
+
+	if(init.m_static)
 	{
 		// Create static collision
 		NewtonCollision* scene = m_world->getNewtonScene();
@@ -54,7 +54,7 @@ Error PhysicsBody::create(const Initializer& init)
 
 		return ErrorCode::NONE;
 	}
-	else*/ if(init.m_kinematic)
+	else if(init.m_kinematic)
 	{
 		// TODO
 	}
@@ -104,8 +104,8 @@ void PhysicsBody::setTransform(const Transform& trf)
 
 //==============================================================================
 void PhysicsBody::onTransformCallback(
-	const NewtonBody* const body, 
-	const dFloat* const matrix, 
+	const NewtonBody* const body,
+	const dFloat* const matrix,
 	int threadIndex)
 {
 	ANKI_ASSERT(body);
@@ -125,8 +125,8 @@ void PhysicsBody::onTransformCallback(
 
 //==============================================================================
 void PhysicsBody::applyGravityForce(
-	const NewtonBody* body, 
-	dFloat timestep, 
+	const NewtonBody* body,
+	dFloat timestep,
 	int threadIndex)
 {
 	dFloat Ixx;

+ 2 - 0
src/physics/PhysicsWorld.cpp

@@ -78,6 +78,8 @@ Error PhysicsWorld::create(AllocAlignedCallback allocCb, void* allocCbData)
 	m_sceneCollision = NewtonCreateSceneCollision(m_world, 0);
 	Mat4 trf = Mat4::getIdentity();
 	m_sceneBody = NewtonCreateDynamicBody(m_world, m_sceneCollision, &trf[0]);
+	NewtonDestroyCollision(m_sceneCollision); // destroy old scene
+	m_sceneCollision = NewtonBodyGetCollision(m_sceneBody);
 
 	// Set the post update listener
 	NewtonWorldAddPostListener(m_world, "world", this, postUpdateCallback,

+ 1 - 1
testapp/Main.cpp

@@ -41,7 +41,7 @@ App* app;
 ModelNode* horse;
 PerspectiveCamera* cam;
 
-#define NO_PLAYER 1
+#define NO_PLAYER 0
 
 
 //==============================================================================