#define JPH_NAMESPACE_END
Definition Core.h:414
#define JPH_NAMESPACE_BEGIN
Definition Core.h:408
#define JPH_IF_ENABLE_ASSERTS(...)
Definition IssueReporting.h:35
ID of a body. This is a way of reasoning about bodies in a multithreaded simulation while avoiding ra...
Definition BodyID.h:13
Base class interface for locking a body. Usually you will use BodyLockRead / BodyLockWrite / BodyLock...
Definition BodyLockInterface.h:17
virtual void UnlockRead(SharedMutex *inMutex) const =0
BodyManager & mBodyManager
Definition BodyLockInterface.h:53
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const =0
BodyLockInterface(BodyManager &inBodyManager)
Constructor.
Definition BodyLockInterface.h:23
Body * TryGetBody(const BodyID &inBodyID) const
Convert body ID to body.
Definition BodyLockInterface.h:50
virtual void UnlockRead(MutexMask inMutexMask) const =0
MutexMask GetAllBodiesMutexMask() const
Get the mask needed to lock all bodies.
Definition BodyLockInterface.h:35
BodyManager::MutexMask MutexMask
Redefine MutexMask.
Definition BodyLockInterface.h:20
virtual void UnlockWrite(SharedMutex *inMutex) const =0
virtual SharedMutex * LockRead(const BodyID &inBodyID) const =0
virtual void LockWrite(MutexMask inMutexMask) const =0
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const =0
virtual ~BodyLockInterface()=default
virtual void LockRead(MutexMask inMutexMask) const =0
virtual void UnlockWrite(MutexMask inMutexMask) const =0
Implementation that uses the body manager to lock the correct mutex for a body.
Definition BodyLockInterface.h:78
virtual void UnlockWrite(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:102
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:95
virtual void UnlockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:118
virtual void UnlockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:128
virtual void LockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:123
virtual void UnlockRead(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:90
virtual SharedMutex * LockRead(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:83
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const override
Definition BodyLockInterface.h:108
virtual void LockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:113
Implementation that performs no locking (assumes the lock has already been taken)
Definition BodyLockInterface.h:58
virtual void LockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:72
virtual MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const override
Definition BodyLockInterface.h:69
virtual void UnlockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:71
virtual SharedMutex * LockRead(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:63
virtual void UnlockWrite(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:66
virtual SharedMutex * LockWrite(const BodyID &inBodyID) const override
Definition BodyLockInterface.h:65
virtual void UnlockWrite(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:73
virtual void UnlockRead(SharedMutex *inMutex) const override
Definition BodyLockInterface.h:64
virtual void LockRead(MutexMask inMutexMask) const override
Definition BodyLockInterface.h:70
Class that contains all bodies.
Definition BodyManager.h:44
void LockWrite(MutexMask inMutexMask) const
Definition BodyManager.cpp:718
void UnlockWrite(MutexMask inMutexMask) const
Definition BodyManager.cpp:728
void UnlockRead(MutexMask inMutexMask) const
Definition BodyManager.cpp:708
MutexMask GetMutexMask(const BodyID *inBodies, int inNumber) const
Definition BodyManager.cpp:676
MutexMask GetAllBodiesMutexMask() const
Definition BodyManager.h:183
SharedMutex & GetMutexForBody(const BodyID &inID) const
Access the mutex for a single body.
Definition BodyManager.h:176
void LockRead(MutexMask inMutexMask) const
Definition BodyManager.cpp:698
const Body * TryGetBody(const BodyID &inID) const
Access a body, will return a nullptr if the body ID is no longer valid (not protected by lock)
Definition BodyManager.h:148
uint64 MutexMask
Bodies are protected using an array of mutexes (so a fixed number, not 1 per body)....
Definition BodyManager.h:179
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
static void sLockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:68
static void sUnlock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:61
static void sUnlockShared(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:75
static void sLock(LockType &inMutex JPH_IF_ENABLE_ASSERTS(, PhysicsLockContext inContext, EPhysicsLockTypes inType))
Definition PhysicsLock.h:54