00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef PX_PHYSICS_EXTENSIONS_DEFAULTSIMULATIONFILTERSHADER_H
00032 #define PX_PHYSICS_EXTENSIONS_DEFAULTSIMULATIONFILTERSHADER_H
00033
00037 #include "PxPhysXConfig.h"
00038
00039 #include "PxFiltering.h"
00040
00041 #if !PX_DOXYGEN
00042 namespace physx
00043 {
00044 #endif
00045
00046 class PxActor;
00047
00070 class PxGroupsMask
00071 {
00072 public:
00073 PX_INLINE PxGroupsMask():bits0(0),bits1(0),bits2(0),bits3(0) {}
00074 PX_INLINE ~PxGroupsMask() {}
00075
00076 PxU16 bits0, bits1, bits2, bits3;
00077 };
00078
00084 struct PxFilterOp
00085 {
00086 enum Enum
00087 {
00088 PX_FILTEROP_AND,
00089 PX_FILTEROP_OR,
00090 PX_FILTEROP_XOR,
00091 PX_FILTEROP_NAND,
00092 PX_FILTEROP_NOR,
00093 PX_FILTEROP_NXOR,
00094 PX_FILTEROP_SWAP_AND
00095 };
00096 };
00097
00116 PxFilterFlags PxDefaultSimulationFilterShader(
00117 PxFilterObjectAttributes attributes0,
00118 PxFilterData filterData0,
00119 PxFilterObjectAttributes attributes1,
00120 PxFilterData filterData1,
00121 PxPairFlags& pairFlags,
00122 const void* constantBlock,
00123 PxU32 constantBlockSize);
00124
00137 bool PxGetGroupCollisionFlag(const PxU16 group1, const PxU16 group2);
00138
00150 void PxSetGroupCollisionFlag(const PxU16 group1, const PxU16 group2, const bool enable);
00151
00163 PxU16 PxGetGroup(const PxActor& actor);
00164
00175 void PxSetGroup(PxActor& actor, const PxU16 collisionGroup);
00176
00186 void PxGetFilterOps(PxFilterOp::Enum& op0, PxFilterOp::Enum& op1, PxFilterOp::Enum& op2);
00187
00197 void PxSetFilterOps(const PxFilterOp::Enum& op0, const PxFilterOp::Enum& op1, const PxFilterOp::Enum& op2);
00198
00206 bool PxGetFilterBool();
00207
00215 void PxSetFilterBool(const bool enable);
00216
00225 void PxGetFilterConstants(PxGroupsMask& c0, PxGroupsMask& c1);
00226
00235 void PxSetFilterConstants(const PxGroupsMask& c0, const PxGroupsMask& c1);
00236
00246 PxGroupsMask PxGetGroupsMask(const PxActor& actor);
00247
00256 void PxSetGroupsMask(PxActor& actor, const PxGroupsMask& mask);
00257
00258 #if !PX_DOXYGEN
00259 }
00260 #endif
00261
00263 #endif