25 void Init(
uint32 inMaxActiveBodies);
28 void PrepareContactConstraints(
uint32 inMaxContactConstraints,
TempAllocator *inTempAllocator);
49 void GetBodiesInIsland(
uint32 inIslandIndex,
BodyID *&outBodiesBegin,
BodyID *&outBodiesEnd)
const;
50 bool GetConstraintsInIsland(
uint32 inIslandIndex,
uint32 *&outConstraintsBegin,
uint32 *&outConstraintsEnd)
const;
51 bool GetContactsInIsland(
uint32 inIslandIndex,
uint32 *&outContactsBegin,
uint32 *&outContactsEnd)
const;
57#ifdef JPH_TRACK_SIMULATION_STATS
60 atomic<uint64> mVelocityConstraintTicks = 0;
61 atomic<uint64> mPositionConstraintTicks = 0;
62 atomic<uint64> mUpdateBoundsTicks = 0;
63 uint8 mNumVelocitySteps = 0;
64 uint8 mNumPositionSteps = 0;
65 bool mIsLargeIsland =
false;
69 IslandStats & GetIslandStats(
uint32 inIslandIndex) {
return mIslandStats[inIslandIndex]; }
77 uint32 GetLowestBodyIndex(
uint32 inActiveBodyIndex)
const;
79#ifdef JPH_VALIDATE_ISLAND_BUILDER
81 void ValidateIslands(
uint32 inNumActiveBodies)
const;
96 atomic<uint32> mLinkedTo;
101 BodyLink * mBodyLinks =
nullptr;
102 uint32 * mConstraintLinks =
nullptr;
103 uint32 * mContactLinks =
nullptr;
106 BodyID * mBodyIslands =
nullptr;
107 uint32 * mBodyIslandEnds =
nullptr;
109 uint32 * mConstraintIslands =
nullptr;
110 uint32 * mConstraintIslandEnds =
nullptr;
112 uint32 * mContactIslands =
nullptr;
113 uint32 * mContactIslandEnds =
nullptr;
115 uint32 * mIslandsSorted =
nullptr;
117 uint8 * mNumPositionSteps =
nullptr;
119#ifdef JPH_TRACK_SIMULATION_STATS
120 IslandStats * mIslandStats =
nullptr;
125 uint32 mNumActiveBodies = 0;
126 uint32 mNumConstraints = 0;
131#ifdef JPH_VALIDATE_ISLAND_BUILDER
133 struct LinkValidation
139 LinkValidation * mLinkValidation =
nullptr;
140 atomic<uint32> mNumLinkValidation;
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
void SetNumPositionSteps(uint32 inIslandIndex, uint inNumPositionSteps)
The number of position iterations for each island.
Definition IslandBuilder.h:54