17 #ifndef __BT_PARALLEL_CONSTRAINT_SOLVER_H
18 #define __BT_PARALLEL_CONSTRAINT_SOLVER_H
29 #define PFX_MAX_SOLVER_PHASES 64
30 #define PFX_MAX_SOLVER_BATCHES 16
31 #define PFX_MAX_SOLVER_PAIRS 128
32 #define PFX_MIN_SOLVER_PAIRS 16
112 #if defined(__PPU__) || defined (__SPU__)
133 #include "SpuDispatch/BulletPE2ConstraintSolverSpursSupport.h"
138 float tmp[3] = {float(p[0]),float(p[1]),float(p[2])};
146 float tmp[4] = {float(p[0]),float(p[1]),float(p[2]),float(p[4])};
288 #endif //__BT_PARALLEL_CONSTRAINT_SOLVER_H
PfxConstraintPair * contactPairs
class btBarrier * barrier
class btThreadSupportInterface * m_solverThreadSupport
PfxParallelGroup * jointParallelGroup
PfxSolverBody * offsetSolverBodies
uint8_t pfxGetBroadphaseFlag(const PfxBroadphasePair &pair)
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
#define PFX_MAX_SOLVER_PHASES
btPersistentManifold * offsetContactManifolds
uint16_t get16(int elem) const
PfxParallelBatch * jointParallelBatches
#define ATTRIBUTE_ALIGNED128(a)
PfxSetupContactConstraintsIO setupContactConstraints
void SolverThreadFunc(void *userPtr, void *lsMemory)
static void btStoreVector3(const vmVector3 &src, double *p)
void set8(int elem, uint8_t data)
PfxSolveConstraintsIO solveConstraints
void pfxSetMotionMaskA(PfxBroadphasePair &pair, uint8_t i)
1D constraint along a normal axis between bodyA and bodyB. It can be combined to solve contact and fr...
PfxParallelBatch * contactParallelBatches
#define SIMD_FORCE_INLINE
uint16_t pfxGetRigidBodyIdA(const PfxBroadphasePair &pair)
uint32_t pfxGetContactId1(const PfxBroadphasePair &pair)
void set16(int elem, uint16_t data)
virtual btScalar solveGroup(btCollisionObject **bodies, int numBodies, btPersistentManifold **manifold, int numManifolds, btTypedConstraint **constraints, int numConstraints, const btContactSolverInfo &info, btIDebugDraw *debugDrawer, btDispatcher *dispatcher)
btSequentialImpulseConstraintSolver Sequentially applies impulses
bool pfxGetActive(const PfxBroadphasePair &pair)
uint32_t get32(int elem) const
uint32_t pfxGetConstraintId1(const PfxConstraintPair &pair)
void pfxSetNumConstraints(PfxConstraintPair &pair, uint8_t n)
PfxSortData16 PfxBroadphasePair
PfxParallelGroup * contactParallelGroup
void set32(int elem, uint32_t data)
The btParallelConstraintSolver performs computations on constraint rows in parallel Using the cross-p...
uint8_t pfxGetMotionMaskA(const PfxBroadphasePair &pair)
void pfxSetRigidBodyIdB(PfxBroadphasePair &pair, uint16_t i)
PfxConstraintPair * jointPairs
uint32_t criticalsectionAddr2
uint16_t pfxGetRigidBodyIdB(const PfxBroadphasePair &pair)
void pfxSetContactId(PfxBroadphasePair &pair, uint32_t i)
btParallelConstraintSolver(class btThreadSupportInterface *solverThreadSupport)
uint8_t pfxGetMotionMaskB(const PfxBroadphasePair &pair)
void * SolverlsMemoryFunc()
void pfxSetRigidBodyIdA(PfxBroadphasePair &pair, uint16_t i)
btCollisionObject can be used to manage collision detection objects.
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
struct btSolverConstraint * offsetSolverConstraints
vmVector3 mDeltaAngularVelocity
void pfxSetActive(PfxBroadphasePair &pair, bool b)
void pfxSetConstraintId(PfxConstraintPair &pair, uint32_t i)
PfxPostSolverIO postSolver
static vmQuat btReadQuat(const double *p)
The btSequentialImpulseConstraintSolver is a fast SIMD implementation of the Projected Gauss Seidel (...
#define ATTRIBUTE_ALIGNED16(a)
#define PFX_MAX_SOLVER_BATCHES
PfxSolverBody * solverBodies
void loadXYZW(Quat &quat, const float *fptr)
uint8_t pfxGetNumConstraints(const PfxConstraintPair &pair)
void pfxSetMotionMaskB(PfxBroadphasePair &pair, uint8_t i)
struct btParallelSolverMemoryCache * m_memoryCache
TypedConstraint is the baseclass for Bullet constraints and vehicles.
#define PFX_MAX_SOLVER_PAIRS
class btCriticalSection * m_criticalSection
TrbState * offsetRigStates1
btConstraintRow * offsetContactConstraintRows
PfxSortData16 PfxConstraintPair
struct btConstraintSolverIO * m_solverIO
void storeXYZ(const Vector3 &vec, float *fptr)
uint8_t get8(int elem) const
vmVector3 mDeltaLinearVelocity
static vmVector3 btReadVector3(const double *p)
void pfxSetBroadphaseFlag(PfxBroadphasePair &pair, uint8_t f)
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
virtual ~btParallelConstraintSolver()
class btBarrier * m_barrier
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
void loadXYZ(Vector3 &vec, const float *fptr)