diff --git a/Extras/BulletMultiThreaded/SpuParallelSolver.cpp b/Extras/BulletMultiThreaded/SpuParallelSolver.cpp index 64d2cf7de..50e02c60d 100644 --- a/Extras/BulletMultiThreaded/SpuParallelSolver.cpp +++ b/Extras/BulletMultiThreaded/SpuParallelSolver.cpp @@ -68,11 +68,13 @@ static void clearHash (SpuSolverHash* hash) hash->m_currentMask[0][SPU_HASH_NUMCELLDWORDS-1] |= (1 << i); } } - +/* static bool getDependency(SpuSolverHash* hash, unsigned int i, unsigned int j) { return (hash->m_dependencyMatrix[i][j >> 5] & (1 << (j & 31))) != 0; } +*/ + static unsigned int getObjectIndex (btCollisionObject* object) { @@ -231,7 +233,7 @@ public: }; -static void printDependencyMatrix(SpuSolverHash* hash) +/*static void printDependencyMatrix(SpuSolverHash* hash) { for (int r = 0; r < SPU_HASH_NUMCELLS; ++r) { @@ -252,6 +254,7 @@ static void printDependencyMatrix(SpuSolverHash* hash) printf("\n"); fflush(stdout); } +*/ // Solver caches btAlignedObjectArray solverBodyPool_persist; @@ -525,7 +528,7 @@ SpuSolverTaskDesc* SolverTaskScheduler::getTask() if (m_taskBusy[m_currentTask]) { //try to find a new one - for (unsigned int i = 0; i < m_maxNumOutstandingTasks; ++i) + for (int i = 0; i < m_maxNumOutstandingTasks; ++i) { if (!m_taskBusy[i]) { diff --git a/Extras/BulletMultiThreaded/SpuParallelSolver.h b/Extras/BulletMultiThreaded/SpuParallelSolver.h index 9f52ba16c..2d25c2da9 100644 --- a/Extras/BulletMultiThreaded/SpuParallelSolver.h +++ b/Extras/BulletMultiThreaded/SpuParallelSolver.h @@ -26,7 +26,7 @@ class SolverTaskScheduler { protected: class btThreadSupportInterface* m_threadInterface; - unsigned int m_maxNumOutstandingTasks; + int m_maxNumOutstandingTasks; unsigned int m_currentTask; unsigned int m_numBusyTasks; @@ -43,7 +43,7 @@ public: void issueTask(); void flushTasks(); - unsigned int getMaxOutstandingTasks() + int getMaxOutstandingTasks() { return m_maxNumOutstandingTasks; } diff --git a/src/BulletCollision/BroadphaseCollision/btDbvt.cpp b/src/BulletCollision/BroadphaseCollision/btDbvt.cpp index 291586a70..de3f28f76 100644 --- a/src/BulletCollision/BroadphaseCollision/btDbvt.cpp +++ b/src/BulletCollision/BroadphaseCollision/btDbvt.cpp @@ -273,7 +273,7 @@ if(leafs.size()>1) tNodeArray sets[2]; int bestaxis=-1; int bestmidp=leafs.size(); - int splitcount[3][2]={0,0,0,0,0,0}; + int splitcount[3][2]={{0,0},{0,0},{0,0}}; for(int i=0;ivolume.Center()-org; @@ -286,7 +286,7 @@ if(leafs.size()>1) { if((splitcount[i][0]>0)&&(splitcount[i][1]>0)) { - const int midp=abs(splitcount[i][0]-splitcount[i][1]); + const int midp=(int)btFabs(btScalar(splitcount[i][0]-splitcount[i][1])); if(midp #define DBVT_IPOLICY T& policy #define DBVT_CHECKTYPE static const ICollide& typechecker=*(T*)0; #else -#define DBVT_VIRTUAL virtual +#define DBVT_VIRTUAL_DESTRUCTOR(a) virtual ~a() {} +#define DBVT_VIRTUAL virtual #define DBVT_PREFIX #define DBVT_IPOLICY ICollide& policy #define DBVT_CHECKTYPE @@ -110,13 +112,13 @@ struct btDbvt struct sStkNP { const Node* node; - unsigned mask; + int mask; sStkNP(const Node* n,unsigned m) : node(n),mask(m) {} }; struct sStkNPS { const Node* node; - unsigned mask; + int mask; btScalar value; sStkNPS(const Node* n,unsigned m,btScalar v) : node(n),mask(m),value(v) {} }; @@ -125,6 +127,7 @@ struct btDbvt /* ICollide */ struct ICollide { + DBVT_VIRTUAL_DESTRUCTOR(ICollide) DBVT_VIRTUAL void Process(const Node*,const Node*) {} DBVT_VIRTUAL void Process(const Node*) {} DBVT_VIRTUAL bool Descent(const Node*) { return(true); } @@ -133,6 +136,7 @@ struct btDbvt /* IWriter */ struct IWriter { + virtual ~IWriter() {} virtual void Prepare(const Node* root,int numnodes)=0; virtual void WriteNode(const Node*,int index,int parent,int child0,int child1)=0; virtual void WriteLeaf(const Node*,int index,int parent)=0; @@ -178,27 +182,27 @@ struct btDbvt const Node* root1, DBVT_IPOLICY); DBVT_PREFIX - static void collideTV( const Node* root, - const Volume& volume, - DBVT_IPOLICY); - DBVT_PREFIX - static void collideRAY( const Node* root, - const btVector3& origin, - const btVector3& direction, - DBVT_IPOLICY); - DBVT_PREFIX - static void collideKDOP(const Node* root, - const btVector3* normals, - const btScalar* offsets, - int count, - DBVT_IPOLICY); - DBVT_PREFIX - static void collideOCL( const Node* root, - const btVector3* normals, - const btScalar* offsets, - const btVector3& sortaxis, - int count, - DBVT_IPOLICY); + static void collideTV( const Node* root, + const Volume& volume, + DBVT_IPOLICY); + DBVT_PREFIX + static void collideRAY( const Node* root, + const btVector3& origin, + const btVector3& direction, + DBVT_IPOLICY); + DBVT_PREFIX + static void collideKDOP(const Node* root, + const btVector3* normals, + const btScalar* offsets, + int count, + DBVT_IPOLICY); + DBVT_PREFIX + static void collideOCL( const Node* root, + const btVector3* normals, + const btScalar* offsets, + const btVector3& sortaxis, + int count, + DBVT_IPOLICY); DBVT_PREFIX static void collideTU( const Node* root, DBVT_IPOLICY); @@ -454,93 +458,93 @@ inline void btDbvt::collideTT( const Node* root0, DBVT_IPOLICY) { DBVT_CHECKTYPE -if(root0&&root1) - { - btAlignedObjectArray stack; - stack.reserve(DOUBLE_STACKSIZE); - stack.push_back(sStkNN(root0,root1)); - do { - sStkNN p=stack[stack.size()-1]; - stack.pop_back(); - if(p.a==p.b) - { - if(p.a->isinternal()) - { - stack.push_back(sStkNN(p.a->childs[0],p.a->childs[0])); - stack.push_back(sStkNN(p.a->childs[1],p.a->childs[1])); - stack.push_back(sStkNN(p.a->childs[0],p.a->childs[1])); - } - } - else if(Intersect(p.a->volume,p.b->volume)) - { - if(p.a->isinternal()) - { - if(p.b->isinternal()) - { - stack.push_back(sStkNN(p.a->childs[0],p.b->childs[0])); - stack.push_back(sStkNN(p.a->childs[1],p.b->childs[0])); - stack.push_back(sStkNN(p.a->childs[0],p.b->childs[1])); - stack.push_back(sStkNN(p.a->childs[1],p.b->childs[1])); - } - else - { - stack.push_back(sStkNN(p.a->childs[0],p.b)); - stack.push_back(sStkNN(p.a->childs[1],p.b)); - } - } - else - { - if(p.b->isinternal()) - { - stack.push_back(sStkNN(p.a,p.b->childs[0])); - stack.push_back(sStkNN(p.a,p.b->childs[1])); - } - else - { - policy.Process(p.a,p.b); - } - } - } - } while(stack.size()>0); +if(root0&&root1) + { + btAlignedObjectArray stack; + stack.reserve(DOUBLE_STACKSIZE); + stack.push_back(sStkNN(root0,root1)); + do { + sStkNN p=stack[stack.size()-1]; + stack.pop_back(); + if(p.a==p.b) + { + if(p.a->isinternal()) + { + stack.push_back(sStkNN(p.a->childs[0],p.a->childs[0])); + stack.push_back(sStkNN(p.a->childs[1],p.a->childs[1])); + stack.push_back(sStkNN(p.a->childs[0],p.a->childs[1])); + } + } + else if(Intersect(p.a->volume,p.b->volume)) + { + if(p.a->isinternal()) + { + if(p.b->isinternal()) + { + stack.push_back(sStkNN(p.a->childs[0],p.b->childs[0])); + stack.push_back(sStkNN(p.a->childs[1],p.b->childs[0])); + stack.push_back(sStkNN(p.a->childs[0],p.b->childs[1])); + stack.push_back(sStkNN(p.a->childs[1],p.b->childs[1])); + } + else + { + stack.push_back(sStkNN(p.a->childs[0],p.b)); + stack.push_back(sStkNN(p.a->childs[1],p.b)); + } + } + else + { + if(p.b->isinternal()) + { + stack.push_back(sStkNN(p.a,p.b->childs[0])); + stack.push_back(sStkNN(p.a,p.b->childs[1])); + } + else + { + policy.Process(p.a,p.b); + } + } + } + } while(stack.size()>0); } } // DBVT_PREFIX -inline void btDbvt::collideTV( const Node* root, - const Volume& volume, - DBVT_IPOLICY) -{ -DBVT_CHECKTYPE -if(root) - { - btAlignedObjectArray stack; - stack.reserve(SIMPLE_STACKSIZE); - stack.push_back(root); - do { - const Node* n=stack[stack.size()-1]; - stack.pop_back(); - if(Intersect(n->volume,volume)) - { - if(n->isinternal()) - { - stack.push_back(n->childs[0]); - stack.push_back(n->childs[1]); - } - else - { - policy.Process(n); - } - } - } while(stack.size()>0); - } +inline void btDbvt::collideTV( const Node* root, + const Volume& volume, + DBVT_IPOLICY) +{ +DBVT_CHECKTYPE +if(root) + { + btAlignedObjectArray stack; + stack.reserve(SIMPLE_STACKSIZE); + stack.push_back(root); + do { + const Node* n=stack[stack.size()-1]; + stack.pop_back(); + if(Intersect(n->volume,volume)) + { + if(n->isinternal()) + { + stack.push_back(n->childs[0]); + stack.push_back(n->childs[1]); + } + else + { + policy.Process(n); + } + } + } while(stack.size()>0); + } } // -DBVT_PREFIX -inline void btDbvt::collideRAY( const Node* root, - const btVector3& origin, - const btVector3& direction, +DBVT_PREFIX +inline void btDbvt::collideRAY( const Node* root, + const btVector3& origin, + const btVector3& direction, DBVT_IPOLICY) { DBVT_CHECKTYPE @@ -576,11 +580,11 @@ if(root) } // -DBVT_PREFIX -inline void btDbvt::collideKDOP(const Node* root, - const btVector3* normals, - const btScalar* offsets, - int count, +DBVT_PREFIX +inline void btDbvt::collideKDOP(const Node* root, + const btVector3* normals, + const btScalar* offsets, + int count, DBVT_IPOLICY) { DBVT_CHECKTYPE @@ -631,12 +635,12 @@ if(root) } // -DBVT_PREFIX -inline void btDbvt::collideOCL( const Node* root, - const btVector3* normals, - const btScalar* offsets, - const btVector3& sortaxis, - int count, +DBVT_PREFIX +inline void btDbvt::collideOCL( const Node* root, + const btVector3* normals, + const btScalar* offsets, + const btVector3& sortaxis, + int count, DBVT_IPOLICY) { DBVT_CHECKTYPE @@ -734,6 +738,7 @@ if(root) #ifdef DBVT_USE_TEMPLATE #undef DBVT_USE_TEMPLATE #endif +#undef DBVT_VIRTUAL_DESTRUCTOR #undef DBVT_VIRTUAL #undef DBVT_PREFIX #undef DBVT_IPOLICY diff --git a/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp index 2a5fc9ceb..c8a15b108 100644 --- a/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +++ b/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp @@ -334,4 +334,4 @@ void btDbvtBroadphase::printStats() #if DBVT_BP_PROFILE #undef SPC -#endif \ No newline at end of file +#endif diff --git a/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp b/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp index 91f66ff45..7219514ba 100644 --- a/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp +++ b/src/BulletCollision/BroadphaseCollision/btMultiSapBroadphase.cpp @@ -39,9 +39,9 @@ public: btMultiSapBroadphase::btMultiSapBroadphase(int /*maxProxies*/,btOverlappingPairCache* pairCache) :m_overlappingPairs(pairCache), +m_optimizedAabbTree(0), m_ownsPairCache(false), -m_invalidPair(0), -m_optimizedAabbTree(0) +m_invalidPair(0) { if (!m_overlappingPairs) { diff --git a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp index ab9df8638..359807c25 100644 --- a/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp +++ b/src/BulletCollision/BroadphaseCollision/btOverlappingPairCache.cpp @@ -491,9 +491,9 @@ void btSortedOverlappingPairCache::processAllOverlappingPairs(btOverlapCallback* btSortedOverlappingPairCache::btSortedOverlappingPairCache(): - m_overlapFilterCallback(0), m_blockedForChanges(false), - m_hasDeferredRemoval(true) + m_hasDeferredRemoval(true), + m_overlapFilterCallback(0) { int initialAllocatedSize= 2; m_overlappingPairArray.reserve(initialAllocatedSize); diff --git a/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp b/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp index 248f94448..f337b082e 100644 --- a/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp +++ b/src/BulletCollision/CollisionShapes/btHeightfieldTerrainShape.cpp @@ -21,9 +21,9 @@ subject to the following restrictions: btHeightfieldTerrainShape::btHeightfieldTerrainShape(int heightStickWidth, int heightStickLength,void* heightfieldData,btScalar maxHeight,int upAxis,bool useFloatData,bool flipQuadEdges) : m_heightStickWidth(heightStickWidth), m_heightStickLength(heightStickLength), +m_maxHeight(maxHeight), m_width((btScalar)heightStickWidth-1), m_length((btScalar)heightStickLength-1), -m_maxHeight(maxHeight), m_heightfieldDataUnknown(heightfieldData), m_useFloatData(useFloatData), m_flipQuadEdges(flipQuadEdges), diff --git a/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp b/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp index 10f9323b2..bcea97052 100644 --- a/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp +++ b/src/BulletCollision/CollisionShapes/btTriangleMesh.cpp @@ -14,7 +14,7 @@ subject to the following restrictions: */ #include "btTriangleMesh.h" -#include + btTriangleMesh::btTriangleMesh (bool use32bitIndices,bool use4componentVertices) diff --git a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp index 72e43a1d0..3ce204b18 100644 --- a/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp +++ b/src/BulletCollision/NarrowPhaseCollision/btRaycastCallback.cpp @@ -159,4 +159,4 @@ btTriangleConvexcastCallback::processTriangle (btVector3* triangle, int partId, } } } -} \ No newline at end of file +} diff --git a/src/LinearMath/btQuickprof.h b/src/LinearMath/btQuickprof.h index eec3e1514..de5dcba0e 100644 --- a/src/LinearMath/btQuickprof.h +++ b/src/LinearMath/btQuickprof.h @@ -141,7 +141,7 @@ public: SYS_TIMEBASE_GET( newTime ); //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); - return (newTime-mStartTime) / dFreq; + return (unsigned long int)((double(newTime-mStartTime)) / dFreq); #else struct timeval currentTime; @@ -200,7 +200,7 @@ public: //__asm __volatile__( "mftb %0" : "=r" (newTime) : : "memory"); SYS_TIMEBASE_GET( newTime ); - return (newTime-mStartTime) / dFreq; + return (unsigned long int)((double(newTime-mStartTime)) / dFreq); #else struct timeval currentTime;