33#include "foundation/PxAssert.h"
40#define BP_USE_AGGREGATE_GROUP_TAIL
41#define BP_FILTERING_TYPE_SHIFT_BIT 3
42#define BP_FILTERING_TYPE_MASK 7
60#ifdef BP_USE_AGGREGATE_GROUP_TAIL
61 eAGGREGATE_BASE = 0xfffffffe,
86 return Bp::FilterGroup::eSTATICS;
89 PX_FORCE_INLINE Bp::FilterGroup::Enum getFilterGroup_Dynamics(PxU32 rigidId,
bool isKinematic)
91 const PxU32 group = rigidId + Bp::FilterGroup::eDYNAMICS_BASE;
92 const PxU32 type = isKinematic ? FilterType::KINEMATIC : FilterType::DYNAMIC;
93 return Bp::FilterGroup::Enum((group<< BP_FILTERING_TYPE_SHIFT_BIT)|type);
96 PX_FORCE_INLINE Bp::FilterGroup::Enum getFilterGroup(
bool isStatic, PxU32 rigidId,
bool isKinematic)
98 return isStatic ? getFilterGroup_Statics() : getFilterGroup_Dynamics(rigidId, isKinematic);
101 PX_FORCE_INLINE bool groupFiltering(
const Bp::FilterGroup::Enum group0,
const Bp::FilterGroup::Enum group1,
const bool*
PX_RESTRICT lut)
109 PX_ASSERT((group0 & ~BP_FILTERING_TYPE_MASK)==(group1 & ~BP_FILTERING_TYPE_MASK));
113 const int type0 = group0 & BP_FILTERING_TYPE_MASK;
114 const int type1 = group1 & BP_FILTERING_TYPE_MASK;
115 return lut[type0*Bp::FilterType::COUNT+type1];
121 BpFilter(
bool discardKineKine,
bool discardStaticKine);
126 bool mLUT[Bp::FilterType::COUNT][Bp::FilterType::COUNT];
Definition BpFiltering.h:119
#define PX_RESTRICT
Definition PxPreprocessor.h:355
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39
Definition BpFiltering.h:54
Definition BpFiltering.h:68