From e755d1ed4e7ea39f0ad9f22c40ce5e006296f75e Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Fri, 2 Nov 2007 01:14:29 +0000 Subject: [PATCH] added some comments, to clarify unit-test/brute force implementations. --- Demos/BasicDemo/BasicDemo.cpp | 2 +- .../ConvexDecompositionDemo.cpp | 2 +- Demos/RagdollDemo/RagdollDemo.cpp | 14 +- Demos/RagdollDemo/RagdollDemo.h | 124 +++++++++--------- .../BroadphaseCollision/btSimpleBroadphase.h | 2 + .../CollisionShapes/btOptimizedBvh.cpp | 1 - .../CollisionShapes/btTriangleMeshShape.cpp | 4 +- .../CollisionShapes/btTriangleMeshShape.h | 11 +- .../Dynamics/btContinuousDynamicsWorld.h | 2 +- .../Dynamics/btSimpleDynamicsWorld.h | 7 +- 10 files changed, 84 insertions(+), 85 deletions(-) diff --git a/Demos/BasicDemo/BasicDemo.cpp b/Demos/BasicDemo/BasicDemo.cpp index ed2054992..e9a0b9497 100644 --- a/Demos/BasicDemo/BasicDemo.cpp +++ b/Demos/BasicDemo/BasicDemo.cpp @@ -199,7 +199,7 @@ void BasicDemo::initPhysics() localCreateRigidBody(btScalar(0.),groundTransform,groundShape); //create a few dynamic sphere rigidbodies (re-using the same sphere shape) - //btCollisionShape* sphereShape = new btBoxShape(btVector3(1,1,1)); + //btCollisionShape* colShape = new btBoxShape(btVector3(1,1,1)); btCollisionShape* colShape = new btSphereShape(btScalar(1.)); m_collisionShapes.push_back(colShape); diff --git a/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp index 497c64546..6d8e95d26 100644 --- a/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp +++ b/Demos/ConvexDecompositionDemo/ConvexDecompositionDemo.cpp @@ -275,7 +275,7 @@ void ConvexDecompositionDemo::initPhysics(const char* filename) }; - if (0)//tcount) + if (tcount) { btTriangleMesh* trimesh = new btTriangleMesh(); diff --git a/Demos/RagdollDemo/RagdollDemo.cpp b/Demos/RagdollDemo/RagdollDemo.cpp index ed9ae59f0..e05f0fb0f 100644 --- a/Demos/RagdollDemo/RagdollDemo.cpp +++ b/Demos/RagdollDemo/RagdollDemo.cpp @@ -333,14 +333,17 @@ void RagdollDemo::initPhysics() } // Spawn one ragdoll - spawnRagdoll(); + btVector3 startOffset(1,0.5,0); + spawnRagdoll(startOffset); + startOffset.setValue(-1,0.5,0); + spawnRagdoll(startOffset); clientResetScene(); } -void RagdollDemo::spawnRagdoll(bool random) +void RagdollDemo::spawnRagdoll(const btVector3& startOffset) { - RagDoll* ragDoll = new RagDoll (m_dynamicsWorld, btVector3 (0,1,0)); + RagDoll* ragDoll = new RagDoll (m_dynamicsWorld, startOffset); m_ragdolls.push_back(ragDoll); } @@ -383,8 +386,11 @@ void RagdollDemo::keyboardCallback(unsigned char key, int x, int y) switch (key) { case 'e': - spawnRagdoll(true); + { + btVector3 startOffset(0,2,0); + spawnRagdoll(startOffset); break; + } default: DemoApplication::keyboardCallback(key, x, y); } diff --git a/Demos/RagdollDemo/RagdollDemo.h b/Demos/RagdollDemo/RagdollDemo.h index a004d0a9f..5c5a82c11 100644 --- a/Demos/RagdollDemo/RagdollDemo.h +++ b/Demos/RagdollDemo/RagdollDemo.h @@ -1,39 +1,39 @@ -/* -Bullet Continuous Collision Detection and Physics Library -RagdollDemo -Copyright (c) 2007 Starbreeze Studios - -This software is provided 'as-is', without any express or implied warranty. -In no event will the authors be held liable for any damages arising from the use of this software. -Permission is granted to anyone to use this software for any purpose, -including commercial applications, and to alter it and redistribute it freely, -subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. -3. This notice may not be removed or altered from any source distribution. - -Written by: Marten Svanfeldt -*/ - -#ifndef RAGDOLLDEMO_H -#define RAGDOLLDEMO_H - -#include "DemoApplication.h" -#include "LinearMath/btAlignedObjectArray.h" +/* +Bullet Continuous Collision Detection and Physics Library +RagdollDemo +Copyright (c) 2007 Starbreeze Studios + +This software is provided 'as-is', without any express or implied warranty. +In no event will the authors be held liable for any damages arising from the use of this software. +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it freely, +subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. + +Written by: Marten Svanfeldt +*/ + +#ifndef RAGDOLLDEMO_H +#define RAGDOLLDEMO_H + +#include "DemoApplication.h" +#include "LinearMath/btAlignedObjectArray.h" class btBroadphaseInterface; class btCollisionShape; class btOverlappingPairCache; class btCollisionDispatcher; class btConstraintSolver; struct btCollisionAlgorithmCreateFunc; -class btDefaultCollisionConfiguration; - -class RagdollDemo : public DemoApplication -{ - - btAlignedObjectArray m_ragdolls; - +class btDefaultCollisionConfiguration; + +class RagdollDemo : public DemoApplication +{ + + btAlignedObjectArray m_ragdolls; + //keep the collision shapes, for deletion/cleanup btAlignedObjectArray m_collisionShapes; @@ -43,35 +43,35 @@ class RagdollDemo : public DemoApplication btConstraintSolver* m_solver; - btDefaultCollisionConfiguration* m_collisionConfiguration; - -public: - void initPhysics(); - - void exitPhysics(); - - virtual ~RagdollDemo() - { - exitPhysics(); - } - - void spawnRagdoll(bool random = false); - - virtual void clientMoveAndDisplay(); - - virtual void displayCallback(); - - virtual void keyboardCallback(unsigned char key, int x, int y); - - static DemoApplication* Create() - { - RagdollDemo* demo = new RagdollDemo(); - demo->myinit(); - demo->initPhysics(); - return demo; - } - -}; - - -#endif + btDefaultCollisionConfiguration* m_collisionConfiguration; + +public: + void initPhysics(); + + void exitPhysics(); + + virtual ~RagdollDemo() + { + exitPhysics(); + } + + void spawnRagdoll(const btVector3& startOffset); + + virtual void clientMoveAndDisplay(); + + virtual void displayCallback(); + + virtual void keyboardCallback(unsigned char key, int x, int y); + + static DemoApplication* Create() + { + RagdollDemo* demo = new RagdollDemo(); + demo->myinit(); + demo->initPhysics(); + return demo; + } + +}; + + +#endif diff --git a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h index ceb09ac8c..09367a79d 100644 --- a/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h +++ b/src/BulletCollision/BroadphaseCollision/btSimpleBroadphase.h @@ -49,6 +49,8 @@ struct btSimpleBroadphaseProxy : public btBroadphaseProxy }; ///SimpleBroadphase is a brute force aabb culling broadphase based on O(n^2) aabb checks +///btSimpleBroadphase is just a unit-test implementation to verify and test other broadphases. +///So please don't use this class, but use bt32BitAxisSweep3 or btAxisSweep3 instead! class btSimpleBroadphase : public btBroadphaseInterface { diff --git a/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp b/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp index 3c25f8811..e80469f45 100644 --- a/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp +++ b/src/BulletCollision/CollisionShapes/btOptimizedBvh.cpp @@ -597,7 +597,6 @@ void btOptimizedBvh::reportAabbOverlappingNodex(btNodeOverlapCallback* nodeCallb { //either choose recursive traversal (walkTree) or stackless (walkStacklessTree) - if (m_useQuantization) { ///quantize query AABB diff --git a/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp b/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp index e69be3544..0d390c88b 100644 --- a/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp +++ b/src/BulletCollision/CollisionShapes/btTriangleMeshShape.cpp @@ -137,7 +137,7 @@ const btVector3& btTriangleMeshShape::getLocalScaling() const //#define DEBUG_TRIANGLE_MESH -/* + void btTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const { struct FilteredCallback : public btInternalTriangleIndexCallback @@ -171,8 +171,6 @@ void btTriangleMeshShape::processAllTriangles(btTriangleCallback* callback,const } -*/ - diff --git a/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h b/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h index d1ebb527d..6657fc091 100644 --- a/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h +++ b/src/BulletCollision/CollisionShapes/btTriangleMeshShape.h @@ -27,10 +27,12 @@ protected: btVector3 m_localAabbMin; btVector3 m_localAabbMax; btStridingMeshInterface* m_meshInterface; - + + ///btTriangleMeshShape constructor has been disabled/protected, so that users will not mistakenly use this class. + ///Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead! + btTriangleMeshShape(btStridingMeshInterface* meshInterface); public: - btTriangleMeshShape(btStridingMeshInterface* meshInterface); virtual ~btTriangleMeshShape(); @@ -51,12 +53,7 @@ public: virtual void getAabb(const btTransform& t,btVector3& aabbMin,btVector3& aabbMax) const; -//this is a brute force processAllTriangles implementation to compare/unit test the btBvhTriangleMeshShape. -//it has been disabled, so that users will not mistakenly use this class. -//Don't use btTriangleMeshShape but use btBvhTriangleMeshShape instead! -/* virtual void processAllTriangles(btTriangleCallback* callback,const btVector3& aabbMin,const btVector3& aabbMax) const; -*/ virtual void calculateLocalInertia(btScalar mass,btVector3& inertia) const; diff --git a/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h b/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h index ba3843566..61c8dea03 100644 --- a/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h +++ b/src/BulletDynamics/Dynamics/btContinuousDynamicsWorld.h @@ -20,7 +20,7 @@ subject to the following restrictions: ///btContinuousDynamicsWorld adds optional (per object) continuous collision detection for fast moving objects to the btDiscreteDynamicsWorld. ///This copes with fast moving objects that otherwise would tunnel/miss collisions. -///Under construction, don't use yet! +///Under construction, don't use yet! Please use btDiscreteDynamicsWorld instead. class btContinuousDynamicsWorld : public btDiscreteDynamicsWorld { diff --git a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h index b65d4db86..4e38f74a7 100644 --- a/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h +++ b/src/BulletDynamics/Dynamics/btSimpleDynamicsWorld.h @@ -22,11 +22,8 @@ class btDispatcher; class btOverlappingPairCache; class btConstraintSolver; -///btSimpleDynamicsWorld demonstrates very basic usage of Bullet rigid body dynamics -///It can be used for basic simulations, and as a starting point for porting Bullet -///btSimpleDynamicsWorld lacks object deactivation, island management and other concepts. -///For more complicated simulations, btDiscreteDynamicsWorld and btContinuousDynamicsWorld are recommended -///those classes replace the obsolete CcdPhysicsEnvironment/CcdPhysicsController +///btSimpleDynamicsWorld serves as unit-test and to verify more complicated and optimized dynamics worlds. +///Please use btDiscreteDynamicsWorld instead (or btContinuousDynamicsWorld once it is finished). class btSimpleDynamicsWorld : public btDynamicsWorld { protected: