diff --git a/Extras/MayaPlugin/BulletMayaPlugin.vcproj b/Extras/MayaPlugin/BulletMayaPlugin.vcproj index 7de94ba9e..cb216d947 100644 --- a/Extras/MayaPlugin/BulletMayaPlugin.vcproj +++ b/Extras/MayaPlugin/BulletMayaPlugin.vcproj @@ -51,7 +51,7 @@ Name="VCCLCompilerTool" AdditionalOptions="/GR /GS /EHsc" Optimization="0" - AdditionalIncludeDirectories=".;"C:\Program Files\Autodesk\Maya2008\include";"C:\Program Files\Alias\Maya8.0\include";../../src;../../Extras\GIMPACT\include" + AdditionalIncludeDirectories=".;"C:\Program Files\Autodesk\Maya2009\include";"C:\Program Files\Autodesk\Maya2008\include";"C:\Program Files\Alias\Maya8.0\include";../../src;../../Extras\GIMPACT\include" PreprocessorDefinitions="_DEBUG;WIN32;_WINDOWS;NT_PLUGIN;REQUIRE_IOSTREAM" RuntimeLibrary="3" AssemblerListingLocation=".\Debug/" @@ -80,7 +80,7 @@ OutputFile="./BulletMayaPluginDebug.mll" LinkIncremental="2" SuppressStartupBanner="true" - AdditionalLibraryDirectories="..\..\lib;"C:\Program Files\Autodesk\Maya2008\lib";C:\develop\disney_bulletmaya\boost_1_35_0\lib;"C:\Program Files\Alias\Maya8.0\lib"" + AdditionalLibraryDirectories="..\..\lib;"C:\Program Files\Autodesk\Maya2009\lib";"C:\Program Files\Autodesk\Maya2008\lib";C:\develop\disney_bulletmaya\boost_1_35_0\lib;"C:\Program Files\Alias\Maya8.0\lib"" GenerateDebugInformation="true" ProgramDatabaseFile=".\Debug/BulletMayaPlugin.pdb" SubSystem="2" @@ -147,7 +147,7 @@ AdditionalOptions="/GR /GS /EHsc" Optimization="2" InlineFunctionExpansion="1" - AdditionalIncludeDirectories=".;"C:\Program Files\Autodesk\Maya2008\include";"C:\Program Files\Autodesk\Maya8.5\include";"C:\Program Files\Alias\Maya8.0\include";../../src;../../Extras\GIMPACT\include" + AdditionalIncludeDirectories=".;"C:\Program Files\Autodesk\Maya2009\include";"C:\Program Files\Autodesk\Maya2008\include";"C:\Program Files\Autodesk\Maya8.5\include";"C:\Program Files\Alias\Maya8.0\include";../../src;../../Extras\GIMPACT\include" PreprocessorDefinitions="NDEBUG;WIN32;_WINDOWS;NT_PLUGIN;REQUIRE_IOSTREAM" StringPooling="true" RuntimeLibrary="2" @@ -177,7 +177,7 @@ OutputFile=".\BulletMayaPlugin.mll" LinkIncremental="1" SuppressStartupBanner="true" - AdditionalLibraryDirectories="..\..\lib;"C:\Program Files\Autodesk\Maya2008\lib";"C:\Program Files\Autodesk\Maya8.5\lib";"C:\Program Files\Alias\Maya8.0\lib";C:\develop\disney_bulletmaya\boost_1_35_0\lib;$(NOINHERIT)" + AdditionalLibraryDirectories="..\..\lib;"C:\Program Files\Autodesk\Maya2009\lib";"C:\Program Files\Autodesk\Maya2008\lib";"C:\Program Files\Autodesk\Maya8.5\lib";"C:\Program Files\Alias\Maya8.0\lib";C:\develop\disney_bulletmaya\boost_1_35_0\lib;$(NOINHERIT)" ProgramDatabaseFile=".\Release/BulletMayaPlugin.pdb" SubSystem="2" ImportLibrary=".\Release/BulletMayaPlugin.lib" diff --git a/src/BulletCollision/BroadphaseCollision/btDbvt.h b/src/BulletCollision/BroadphaseCollision/btDbvt.h index 62164ad64..56c9a8fae 100644 --- a/src/BulletCollision/BroadphaseCollision/btDbvt.h +++ b/src/BulletCollision/BroadphaseCollision/btDbvt.h @@ -265,6 +265,8 @@ struct btDbvt unsigned m_opath; mutable btAlignedObjectArray m_stack; + mutable btAlignedObjectArray m_stkStack; + // Methods btDbvt(); @@ -299,22 +301,22 @@ struct btDbvt static void enumLeaves( const btDbvtNode* root, DBVT_IPOLICY); DBVT_PREFIX - static void collideTT( const btDbvtNode* root0, + void collideTT( const btDbvtNode* root0, const btDbvtNode* root1, DBVT_IPOLICY); DBVT_PREFIX - static void collideTT( const btDbvtNode* root0, + void collideTT( const btDbvtNode* root0, const btDbvtNode* root1, const btTransform& xform, DBVT_IPOLICY); DBVT_PREFIX - static void collideTT( const btDbvtNode* root0, + void collideTT( const btDbvtNode* root0, const btTransform& xform0, const btDbvtNode* root1, const btTransform& xform1, DBVT_IPOLICY); DBVT_PREFIX - static void collideTV( const btDbvtNode* root, + void collideTV( const btDbvtNode* root, const btDbvtVolume& volume, DBVT_IPOLICY); ///rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thread-safe (uses locking etc) @@ -723,25 +725,24 @@ inline void btDbvt::collideTT( const btDbvtNode* root0, DBVT_CHECKTYPE if(root0&&root1) { - btAlignedObjectArray stack; int depth=1; int treshold=DOUBLE_STACKSIZE-4; - stack.resize(DOUBLE_STACKSIZE); - stack[0]=sStkNN(root0,root1); + m_stkStack.resize(DOUBLE_STACKSIZE); + m_stkStack[0]=sStkNN(root0,root1); do { - sStkNN p=stack[--depth]; + sStkNN p=m_stkStack[--depth]; if(depth>treshold) { - stack.resize(stack.size()*2); - treshold=stack.size()-4; + m_stkStack.resize(m_stkStack.size()*2); + treshold=m_stkStack.size()-4; } if(p.a==p.b) { if(p.a->isinternal()) { - stack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); - stack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); - stack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.a->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.a->childs[1]); } } else if(Intersect(p.a->volume,p.b->volume)) @@ -750,23 +751,23 @@ inline void btDbvt::collideTT( const btDbvtNode* root0, { if(p.b->isinternal()) { - stack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); - stack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); - stack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); - stack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); } else { - stack[depth++]=sStkNN(p.a->childs[0],p.b); - stack[depth++]=sStkNN(p.a->childs[1],p.b); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b); } } else { if(p.b->isinternal()) { - stack[depth++]=sStkNN(p.a,p.b->childs[0]); - stack[depth++]=sStkNN(p.a,p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); } else { @@ -788,41 +789,40 @@ inline void btDbvt::collideTT( const btDbvtNode* root0, DBVT_CHECKTYPE if(root0&&root1) { - btAlignedObjectArray stack; int depth=1; int treshold=DOUBLE_STACKSIZE-4; - stack.resize(DOUBLE_STACKSIZE); - stack[0]=sStkNN(root0,root1); + m_stkStack.resize(DOUBLE_STACKSIZE); + m_stkStack[0]=sStkNN(root0,root1); do { sStkNN p=stack[--depth]; if(Intersect(p.a->volume,p.b->volume,xform)) { if(depth>treshold) { - stack.resize(stack.size()*2); + m_stkStack.resize(stack.size()*2); treshold=stack.size()-4; } if(p.a->isinternal()) { if(p.b->isinternal()) { - stack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); - stack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); - stack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); - stack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b->childs[1]); } else { - stack[depth++]=sStkNN(p.a->childs[0],p.b); - stack[depth++]=sStkNN(p.a->childs[1],p.b); + m_stkStack[depth++]=sStkNN(p.a->childs[0],p.b); + m_stkStack[depth++]=sStkNN(p.a->childs[1],p.b); } } else { if(p.b->isinternal()) { - stack[depth++]=sStkNN(p.a,p.b->childs[0]); - stack[depth++]=sStkNN(p.a,p.b->childs[1]); + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[0]); + m_stkStack[depth++]=sStkNN(p.a,p.b->childs[1]); } else { @@ -856,25 +856,26 @@ inline void btDbvt::collideTV( const btDbvtNode* root, if(root) { ATTRIBUTE_ALIGNED16(btDbvtVolume) volume(vol); - btAlignedObjectArray stack; - stack.reserve(SIMPLE_STACKSIZE); - stack.push_back(root); + + m_stack.resize(0); + m_stack.reserve(SIMPLE_STACKSIZE); + m_stack.push_back(root); do { - const btDbvtNode* n=stack[stack.size()-1]; - stack.pop_back(); + const btDbvtNode* n=m_stack[m_stack.size()-1]; + m_stack.pop_back(); if(Intersect(n->volume,volume)) { if(n->isinternal()) { - stack.push_back(n->childs[0]); - stack.push_back(n->childs[1]); + m_stack.push_back(n->childs[0]); + m_stack.push_back(n->childs[1]); } else { policy.Process(n); } } - } while(stack.size()>0); + } while(m_stack.size()>0); } } diff --git a/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp b/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp index 21271d51e..d2800aa98 100644 --- a/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp +++ b/src/BulletCollision/BroadphaseCollision/btDbvtBroadphase.cpp @@ -182,8 +182,8 @@ btBroadphaseProxy* btDbvtBroadphase::createProxy( const btVector3& aabbMin, { btDbvtTreeCollider collider(this); collider.proxy=proxy; - btDbvt::collideTV(m_sets[0].m_root,aabb,collider); - btDbvt::collideTV(m_sets[1].m_root,aabb,collider); + m_sets[0].collideTV(m_sets[0].m_root,aabb,collider); + m_sets[1].collideTV(m_sets[1].m_root,aabb,collider); } return(proxy); } @@ -307,8 +307,8 @@ void btDbvtBroadphase::setAabb( btBroadphaseProxy* absproxy, if(!m_deferedcollide) { btDbvtTreeCollider collider(this); - btDbvt::collideTT(m_sets[1].m_root,proxy->leaf,collider); - btDbvt::collideTT(m_sets[0].m_root,proxy->leaf,collider); + m_sets[1].collideTT(m_sets[1].m_root,proxy->leaf,collider); + m_sets[0].collideTT(m_sets[0].m_root,proxy->leaf,collider); } } } @@ -382,12 +382,12 @@ void btDbvtBroadphase::collide(btDispatcher* dispatcher) if(m_deferedcollide) { SPC(m_profiling.m_fdcollide); - btDbvt::collideTT(m_sets[0].m_root,m_sets[1].m_root,collider); + m_sets[0].collideTT(m_sets[0].m_root,m_sets[1].m_root,collider); } if(m_deferedcollide) { SPC(m_profiling.m_ddcollide); - btDbvt::collideTT(m_sets[0].m_root,m_sets[0].m_root,collider); + m_sets[0].collideTT(m_sets[0].m_root,m_sets[0].m_root,collider); } } /* clean up */ diff --git a/src/BulletSoftBody/btSoftBody.cpp b/src/BulletSoftBody/btSoftBody.cpp index 1a93dadb7..37b3c5202 100644 --- a/src/BulletSoftBody/btSoftBody.cpp +++ b/src/BulletSoftBody/btSoftBody.cpp @@ -2089,8 +2089,8 @@ void btSoftBody::applyClusters(bool drift) BT_PROFILE("ApplyClusters"); const btScalar f0=m_sst.sdt; const btScalar f1=f0/2; - btAlignedObjectArray deltas; - btAlignedObjectArray weights; + btAlignedObjectArray deltas; + btAlignedObjectArray weights; deltas.resize(m_nodes.size(),btVector3(0,0,0)); weights.resize(m_nodes.size(),0); int i; @@ -2584,7 +2584,7 @@ void btSoftBody::defaultCollisionHandler(btCollisionObject* pco) docollide.prb = prb; docollide.dynmargin = basemargin+timemargin; docollide.stamargin = basemargin; - btDbvt::collideTV(m_ndbvt.m_root,volume,docollide); + m_ndbvt.collideTV(m_ndbvt.m_root,volume,docollide); } break; case fCollision::CL_RS: @@ -2617,13 +2617,13 @@ void btSoftBody::defaultCollisionHandler(btSoftBody* psb) /* psb0 nodes vs psb1 faces */ docollide.psb[0]=this; docollide.psb[1]=psb; - btDbvt::collideTT( docollide.psb[0]->m_ndbvt.m_root, + docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, docollide.psb[1]->m_fdbvt.m_root, docollide); /* psb1 nodes vs psb0 faces */ docollide.psb[0]=psb; docollide.psb[1]=this; - btDbvt::collideTT( docollide.psb[0]->m_ndbvt.m_root, + docollide.psb[0]->m_ndbvt.collideTT( docollide.psb[0]->m_ndbvt.m_root, docollide.psb[1]->m_fdbvt.m_root, docollide); } diff --git a/src/BulletSoftBody/btSoftBodyInternals.h b/src/BulletSoftBody/btSoftBodyInternals.h index 49ad177e9..ea22241a0 100644 --- a/src/BulletSoftBody/btSoftBodyInternals.h +++ b/src/BulletSoftBody/btSoftBodyInternals.h @@ -752,7 +752,7 @@ struct btSoftColliders pr->getCollisionShape()->getAabb(pr->getInterpolationWorldTransform(),mins,maxs); volume=btDbvtVolume::FromMM(mins,maxs); volume.Expand(btVector3(1,1,1)*margin); - btDbvt::collideTV(ps->m_cdbvt.m_root,volume,*this); + ps->m_cdbvt.collideTV(ps->m_cdbvt.m_root,volume,*this); } }; // @@ -789,7 +789,7 @@ struct btSoftColliders friction = btMin(psa->m_cfg.kDF,psb->m_cfg.kDF); bodies[0] = psa; bodies[1] = psb; - btDbvt::collideTT(psa->m_cdbvt.m_root,psb->m_cdbvt.m_root,*this); + psa->m_cdbvt.collideTT(psa->m_cdbvt.m_root,psb->m_cdbvt.m_root,*this); } }; //