From 9119b6e8a547303ce9a7ccd3a00636153b53cb0e Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sat, 31 Dec 2005 07:20:08 +0000 Subject: Fixed several bugs: python refcounting related and Bullet related (basic add/remove object support, bounding volume hierarchy). Added a few files, updated the Bullet scons. Vc6/7 Bullet projectfiles need to add a couple of files: 'Bullet/CollisionShapes/BvhTriangleMeshShape.cpp', 'Bullet/CollisionShapes/ConvexTriangleCallback.cpp', 'Bullet/CollisionShapes/EmptyShape.cpp', 'Bullet/CollisionShapes/OptimizedBvh.cpp', 'Bullet/CollisionShapes/TriangleCallback.cpp', 'Bullet/CollisionShapes/TriangleIndexVertexArray.cpp', 'Bullet/NarrowPhaseCollision/ManifoldContactAddResult.cpp'. Sorry, no armatures fix yet. --- .../gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp') diff --git a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp index e9a6c2442b0..646fc93dadb 100644 --- a/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp +++ b/source/gameengine/Ketsji/KX_ConvertPhysicsObjects.cpp @@ -673,6 +673,7 @@ void KX_ConvertODEEngineObject(KX_GameObject* gameobj, #include "CollisionShapes/ConvexHullShape.h" #include "CollisionShapes/TriangleMesh.h" #include "CollisionShapes/TriangleMeshShape.h" +#include "CollisionShapes/BvhTriangleMeshShape.h" static GEN_Map map_gamemesh_to_bulletshape; @@ -770,8 +771,8 @@ static CollisionShape* CreateBulletShapeFromMesh(RAS_MeshObject* meshobj, bool p } else { collisionMeshData = new TriangleMesh(); - concaveShape = new TriangleMeshShape(collisionMeshData); - collisionMeshShape = concaveShape; +// concaveShape = new TriangleMeshShape(collisionMeshData); + //collisionMeshShape = concaveShape; } @@ -843,7 +844,20 @@ static CollisionShape* CreateBulletShapeFromMesh(RAS_MeshObject* meshobj, bool p if (numvalidpolys > 0) { + //map_gamemesh_to_bulletshape.insert(GEN_HashedPtr(meshobj),collisionMeshShape); + if (!polytope) + { + concaveShape = new BvhTriangleMeshShape( collisionMeshData ); + //concaveShape = new TriangleMeshShape( collisionMeshData ); + + concaveShape->RecalcLocalAabb(); + collisionMeshShape = concaveShape; + + } + + + return collisionMeshShape; } @@ -1002,7 +1016,7 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, ci.m_broadphaseHandle = 0; ci.m_friction = smmaterial->m_friction; ci.m_restitution = smmaterial->m_restitution; - + ci.m_physicsEnv = env; // drag / damping is inverted ci.m_linearDamping = 1.f - shapeprops->m_lin_drag; ci.m_angularDamping = 1.f - shapeprops->m_ang_drag; @@ -1010,7 +1024,11 @@ void KX_ConvertBulletObject( class KX_GameObject* gameobj, KX_BulletPhysicsController* physicscontroller = new KX_BulletPhysicsController(ci,isbulletdyna); - env->addCcdPhysicsController( physicscontroller); + + if (objprop->m_in_active_layer) + { + env->addCcdPhysicsController( physicscontroller); + } gameobj->SetPhysicsController(physicscontroller,isbulletdyna); -- cgit v1.2.3