Jolt Physics
A multi core friendly Game Physics Engine
|
#include <GroupFilterTable.h>
Public Member Functions | |
GroupFilterTable (uint inNumSubGroups=0) | |
Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except when the sub group ID is the same. | |
GroupFilterTable (const GroupFilterTable &inRHS) | |
Copy constructor. | |
void | DisableCollision (SubGroupID inSubGroup1, SubGroupID inSubGroup2) |
Disable collision between two sub groups. | |
void | EnableCollision (SubGroupID inSubGroup1, SubGroupID inSubGroup2) |
Enable collision between two sub groups. | |
bool | IsCollisionEnabled (SubGroupID inSubGroup1, SubGroupID inSubGroup2) const |
Check if the collision between two subgroups is enabled. | |
virtual bool | CanCollide (const CollisionGroup &inGroup1, const CollisionGroup &inGroup2) const override |
Checks if two CollisionGroups collide. | |
virtual void | SaveBinaryState (StreamOut &inStream) const override |
Saves the contents of the group filter in binary form to inStream. | |
Public Member Functions inherited from GroupFilter | |
virtual | ~GroupFilter () override=default |
Virtual destructor. | |
Public Member Functions inherited from SerializableObject | |
virtual | ~SerializableObject ()=default |
Constructor. | |
Public Member Functions inherited from NonCopyable | |
NonCopyable ()=default | |
NonCopyable (const NonCopyable &)=delete | |
void | operator= (const NonCopyable &)=delete |
Public Member Functions inherited from RefTarget< GroupFilter > | |
RefTarget ()=default | |
Constructor. | |
RefTarget (const RefTarget &) | |
~RefTarget () | |
assert no one is referencing us | |
void | SetEmbedded () const |
RefTarget & | operator= (const RefTarget &) |
Assignment operator. | |
uint32 | GetRefCount () const |
Get current refcount of this object. | |
void | AddRef () const |
Add or release a reference to this object. | |
void | Release () const |
Protected Member Functions | |
virtual void | RestoreBinaryState (StreamIn &inStream) override |
This function should not be called directly, it is used by sRestoreFromBinaryState. | |
Additional Inherited Members | |
Public Types inherited from GroupFilter | |
using | GroupFilterResult = Result<Ref<GroupFilter>> |
Static Public Member Functions inherited from GroupFilter | |
static GroupFilterResult | sRestoreFromBinaryState (StreamIn &inStream) |
Creates a GroupFilter of the correct type and restores its contents from the binary stream inStream. | |
Static Public Member Functions inherited from RefTarget< GroupFilter > | |
static int | sInternalGetRefCountOffset () |
INTERNAL HELPER FUNCTION USED BY SERIALIZATION. | |
Protected Attributes inherited from RefTarget< GroupFilter > | |
atomic< uint32 > | mRefCount |
Current reference count. | |
Static Protected Attributes inherited from RefTarget< GroupFilter > | |
static constexpr uint32 | cEmbedded |
A large value that gets added to the refcount to mark the object as embedded. | |
Implementation of GroupFilter that stores a bit table with one bit per sub shape ID pair to determine if they collide or not
The collision rules:
For N = 6 sub groups the table will look like:
sub group 1 ---> sub group 2 x..... | ox.... | oox... V ooox.. oooox. ooooox
The total number of bits we need to store is (N * (N - 1)) / 2
|
inlineexplicit |
Constructs the table with inNumSubGroups subgroups, initially all collision pairs are enabled except when the sub group ID is the same.
|
inline |
Copy constructor.
|
inlineoverridevirtual |
Checks if two CollisionGroups collide.
Implements GroupFilter.
|
inline |
Disable collision between two sub groups.
|
inline |
Enable collision between two sub groups.
|
inline |
Check if the collision between two subgroups is enabled.
This function should not be called directly, it is used by sRestoreFromBinaryState.
Reimplemented from GroupFilter.
Saves the contents of the group filter in binary form to inStream.
Reimplemented from GroupFilter.