diff --git a/src/BulletMultiThreaded/Makefile.original b/src/BulletMultiThreaded/Makefile.original index cff0cb336..ea134416c 100644 --- a/src/BulletMultiThreaded/Makefile.original +++ b/src/BulletMultiThreaded/Makefile.original @@ -28,6 +28,9 @@ ifeq "$(__ARCH_BITS__)" "64" else SPU_DEFFLAGS= -DUSE_LIBSPE2 -D__SPU__ endif + +SPU_DEFFLAGS+=-DUSE_PE_BOX_BOX + SPU_GCC=$(USE_CCACHE) /usr/bin/spu-gcc SPU_INCLUDEDIR= -Ivectormath/scalar/cpp -I. -I$(CELL_SYSROOT)/usr/spu/include -I../../src -I$(NARROWPHASEDIR) #SPU_CFLAGS= $(DEBUGFLAG) -W -Wall -Winline -Os -c -include spu_intrinsics.h -include stdbool.h diff --git a/src/BulletMultiThreaded/PpuAddressSpace.h b/src/BulletMultiThreaded/PpuAddressSpace.h index 0f453fcbf..93c83648c 100644 --- a/src/BulletMultiThreaded/PpuAddressSpace.h +++ b/src/BulletMultiThreaded/PpuAddressSpace.h @@ -1,6 +1,13 @@ #ifndef __PPU_ADDRESS_SPACE_H #define __PPU_ADDRESS_SPACE_H + +#ifdef WIN32 +//stop those casting warnings until we have a better solution for ppu_address_t / void* / uint64 conversions +#pragma warning (disable: 4311) +#pragma warning (disable: 4312) +#endif //WIN32 + #ifdef USE_ADDR64 typedef uint64_t ppu_address_t; #else diff --git a/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp b/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp index 6d9b503e1..41a99c622 100644 --- a/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp +++ b/src/BulletMultiThreaded/SpuNarrowPhaseCollisionTask/SpuGatheringCollisionTask.cpp @@ -981,7 +981,9 @@ void processCollisionTask(void* userPtr, void* lsMemPtr) #endif ) { +//#define USE_PE_BOX_BOX 1 #ifdef USE_PE_BOX_BOX + { //getCollisionMargin0 btScalar margin0 = lsMem.getlocalCollisionAlgorithm()->getCollisionMargin0(); diff --git a/src/BulletMultiThreaded/SpuSolverTask/SpuParallellSolverTask.cpp b/src/BulletMultiThreaded/SpuSolverTask/SpuParallellSolverTask.cpp index 2927812e8..24eba629d 100644 --- a/src/BulletMultiThreaded/SpuSolverTask/SpuParallellSolverTask.cpp +++ b/src/BulletMultiThreaded/SpuSolverTask/SpuParallellSolverTask.cpp @@ -491,7 +491,7 @@ static void solveFriction ( btSolverBody& bodyA, btSolverBody& bodyB, btSolverCo j1 = constraint.m_appliedImpulse - oldTangentImpulse; } - j1*=0.9; + if (bodyA.m_invMass > 0) { bodyA.m_linearVelocity += constraint.m_contactNormal*bodyA.m_invMass*j1; @@ -1134,7 +1134,7 @@ void processSolverTask(void* userPtr, void* lsMemory) constraint.m_penetration *= (taskDesc.m_commandData.m_manifoldSetup.m_solverInfo.m_erp/taskDesc.m_commandData.m_manifoldSetup.m_solverInfo.m_timeStep); constraint.m_restitution = rest; - constraint.m_appliedImpulse = cp.m_appliedImpulse*0.85; + constraint.m_appliedImpulse = cp.m_appliedImpulse*taskDesc.m_commandData.m_manifoldSetup.m_solverInfo.m_warmstartingFactor; if (constraint.m_appliedImpulse!= 0.f) { if (solverBodyA)