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_NX_ACTOR
00032 #define PX_PHYSICS_NX_ACTOR
00033
00038 #include "PxPhysXConfig.h"
00039 #include "foundation/PxBounds3.h"
00040 #include "PxClient.h"
00041 #include "common/PxBase.h"
00042
00043 #if !PX_DOXYGEN
00044 namespace physx
00045 {
00046 #endif
00047
00048 class PxRigidActor;
00049 class PxRigidBody;
00050 class PxRigidStatic;
00051 class PxRigidDynamic;
00052 class PxArticulation;
00053 class PxArticulationLink;
00054
00055
00057 typedef PxU8 PxDominanceGroup;
00058
00064 struct PxActorFlag
00065 {
00066 enum Enum
00067 {
00073 eVISUALIZATION = (1<<0),
00074
00078 eDISABLE_GRAVITY = (1<<1),
00079
00085 eSEND_SLEEP_NOTIFIES = (1<<2),
00086
00103 eDISABLE_SIMULATION = (1<<3)
00104 };
00105 };
00106
00112 typedef PxFlags<PxActorFlag::Enum,PxU8> PxActorFlags;
00113 PX_FLAGS_OPERATORS(PxActorFlag::Enum,PxU8)
00114
00115
00119 struct PxActorType
00120 {
00121 enum Enum
00122 {
00127 eRIGID_STATIC,
00128
00133 eRIGID_DYNAMIC,
00134
00139 eARTICULATION_LINK,
00140
00141
00142 eACTOR_COUNT,
00143
00144 eACTOR_FORCE_DWORD = 0x7fffffff
00145 };
00146 };
00147
00154 class PxActor : public PxBase
00155 {
00156 public:
00166 virtual void release() = 0;
00167
00175 virtual PxActorType::Enum getType() const = 0;
00176
00184 virtual PxScene* getScene() const = 0;
00185
00186
00187
00200 virtual void setName(const char* name) = 0;
00201
00209 virtual const char* getName() const = 0;
00210
00220 virtual PxBounds3 getWorldBounds(float inflation=1.01f) const = 0;
00221
00236 virtual void setActorFlag(PxActorFlag::Enum flag, bool value) = 0;
00243 virtual void setActorFlags( PxActorFlags inFlags ) = 0;
00244
00254 virtual PxActorFlags getActorFlags() const = 0;
00255
00272 virtual void setDominanceGroup(PxDominanceGroup dominanceGroup) = 0;
00273
00281 virtual PxDominanceGroup getDominanceGroup() const = 0;
00282
00283
00293 virtual void setOwnerClient( PxClientID inClient ) = 0;
00294
00302 virtual PxClientID getOwnerClient() const = 0;
00303
00311 virtual PxAggregate* getAggregate() const = 0;
00312
00313
00314 void* userData;
00315
00316 protected:
00317 PX_INLINE PxActor(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags), userData(NULL) {}
00318 PX_INLINE PxActor(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00319 virtual ~PxActor() {}
00320 virtual bool isKindOf(const char* name) const { return !::strcmp("PxActor", name) || PxBase::isKindOf(name); }
00321
00322
00323 };
00324
00325 #if !PX_DOXYGEN
00326 }
00327 #endif
00328
00330 #endif