Jolt Physics
A multi core friendly Game Physics Engine
|
Structure that describes the resulting splits from the large island splitter. More...
#include <LargeIslandSplitter.h>
Public Types | |
enum | EIterationStatus : uint64 { StatusIterationMask = 0xffff000000000000 , StatusIterationShift = 48 , StatusSplitMask = 0x0000ffff00000000 , StatusSplitShift = 32 , StatusItemMask = 0x00000000ffffffff } |
Public Member Functions | |
uint | GetNumSplits () const |
void | GetConstraintsInSplit (uint inSplitIndex, uint32 &outConstraintsBegin, uint32 &outConstraintsEnd) const |
void | GetContactsInSplit (uint inSplitIndex, uint32 &outContactsBegin, uint32 &outContactsEnd) const |
void | ResetStatus () |
Reset current status so that no work can be picked up from this split. | |
void | StartFirstBatch () |
Make the first batch available to other threads. | |
EStatus | FetchNextBatch (uint32 &outConstraintsBegin, uint32 &outConstraintsEnd, uint32 &outContactsBegin, uint32 &outContactsEnd, bool &outFirstIteration) |
Fetch the next batch to process. | |
void | MarkBatchProcessed (uint inNumProcessed, bool &outLastIteration, bool &outFinalBatch) |
Mark a batch as processed. | |
Static Public Member Functions | |
static int | sGetIteration (uint64 inStatus) |
static uint | sGetSplit (uint64 inStatus) |
static uint | sGetItem (uint64 inStatus) |
Public Attributes | |
Split | mSplits [cNumSplits] |
Data per split. | |
uint32 | mIslandIndex |
Index of the island that was split. | |
uint | mNumSplits |
Number of splits that were created (excluding the non-parallel split) | |
int | mNumIterations |
Number of iterations to do. | |
int | mNumVelocitySteps |
Number of velocity steps to do (cached for 2nd sub step) | |
int | mNumPositionSteps |
Number of position steps to do. | |
atomic< uint64 > | mStatus |
Status of the split, see EIterationStatus. | |
atomic< uint > | mItemsProcessed |
Number of items that have been marked as processed. | |
Structure that describes the resulting splits from the large island splitter.
JPH_NAMESPACE_BEGIN LargeIslandSplitter::EStatus LargeIslandSplitter::Splits::FetchNextBatch | ( | uint32 & | outConstraintsBegin, |
uint32 & | outConstraintsEnd, | ||
uint32 & | outContactsBegin, | ||
uint32 & | outContactsEnd, | ||
bool & | outFirstIteration | ||
) |
Fetch the next batch to process.
|
inline |
|
inline |
|
inline |
void LargeIslandSplitter::Splits::MarkBatchProcessed | ( | uint | inNumProcessed, |
bool & | outLastIteration, | ||
bool & | outFinalBatch | ||
) |
Mark a batch as processed.
|
inline |
Reset current status so that no work can be picked up from this split.
|
inlinestatic |
|
inline |
Make the first batch available to other threads.
uint32 LargeIslandSplitter::Splits::mIslandIndex |
Index of the island that was split.
atomic<uint> LargeIslandSplitter::Splits::mItemsProcessed |
Number of items that have been marked as processed.
int LargeIslandSplitter::Splits::mNumIterations |
Number of iterations to do.
int LargeIslandSplitter::Splits::mNumPositionSteps |
Number of position steps to do.
uint LargeIslandSplitter::Splits::mNumSplits |
Number of splits that were created (excluding the non-parallel split)
int LargeIslandSplitter::Splits::mNumVelocitySteps |
Number of velocity steps to do (cached for 2nd sub step)
Split LargeIslandSplitter::Splits::mSplits[cNumSplits] |
Data per split.
atomic<uint64> LargeIslandSplitter::Splits::mStatus |
Status of the split, see EIterationStatus.