44    int                     GetBit(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
 const 
   49        if (inSubGroup1 > inSubGroup2)
 
   50            swap(inSubGroup1, inSubGroup2);
 
   57        return (inSubGroup2 * (inSubGroup2 - 1)) / 2 + inSubGroup1;
 
   63        mNumSubGroups(inNumSubGroups)
 
   66        int table_size = ((inNumSubGroups * (inNumSubGroups - 1)) / 2 + 7) / 8;
 
   67        mTable.resize(table_size, 0xff);
 
   76        int bit = GetBit(inSubGroup1, inSubGroup2);
 
   77        mTable[bit >> 3] &= (0xff ^ (1 << (bit & 0b111)));
 
   83        int bit = GetBit(inSubGroup1, inSubGroup2);
 
   84        mTable[bit >> 3] |= 1 << (bit & 0b111);
 
   91        int bit = GetBit(inSubGroup1, inSubGroup2);
 
   92        return (mTable[bit >> 3] & (1 << (bit & 0b111))) != 0;
 
#define JPH_EXPORT
Definition: Core.h:236
 
unsigned int uint
Definition: Core.h:452
 
#define JPH_NAMESPACE_END
Definition: Core.h:378
 
#define JPH_NAMESPACE_BEGIN
Definition: Core.h:372
 
#define JPH_ASSERT(...)
Definition: IssueReporting.h:33
 
#define JPH_DECLARE_SERIALIZABLE_VIRTUAL(linkage, class_name)
Definition: SerializableObject.h:109
 
Definition: CollisionGroup.h:20
 
GroupID GetGroupID() const
Definition: CollisionGroup.h:54
 
SubGroupID GetSubGroupID() const
Definition: CollisionGroup.h:65
 
static const GroupID cInvalidGroup
Definition: CollisionGroup.h:27
 
uint32 GroupID
Definition: CollisionGroup.h:24
 
const GroupFilter * GetGroupFilter() const
Get the collision group filter.
Definition: CollisionGroup.h:43
 
uint32 SubGroupID
Definition: CollisionGroup.h:25
 
Abstract class that checks if two CollisionGroups collide.
Definition: GroupFilter.h:18
 
virtual void SaveBinaryState(StreamOut &inStream) const
Saves the contents of the group filter in binary form to inStream.
Definition: GroupFilter.cpp:17
 
virtual void RestoreBinaryState(StreamIn &inStream)
This function should not be called directly, it is used by sRestoreFromBinaryState.
Definition: GroupFilter.cpp:22
 
Definition: GroupFilterTable.h:36
 
void DisableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
Disable collision between two sub groups.
Definition: GroupFilterTable.h:74
 
void EnableCollision(SubGroupID inSubGroup1, SubGroupID inSubGroup2)
Enable collision between two sub groups.
Definition: GroupFilterTable.h:81
 
GroupFilterTable(const GroupFilterTable &inRHS)
Copy constructor.
Definition: GroupFilterTable.h:71
 
virtual bool CanCollide(const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override
Checks if two CollisionGroups collide.
Definition: GroupFilterTable.h:96
 
GroupFilterTable(uint inNumSubGroups=0)
Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except ...
Definition: GroupFilterTable.h:62
 
bool IsCollisionEnabled(SubGroupID inSubGroup1, SubGroupID inSubGroup2) const
Check if the collision between two subgroups is enabled.
Definition: GroupFilterTable.h:88
 
Simple binary input stream.
Definition: StreamIn.h:13
 
Simple binary output stream.
Definition: StreamOut.h:13