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_RIGIDACTOR
00032 #define PX_PHYSICS_NX_RIGIDACTOR
00033
00037 #include "PxActor.h"
00038 #include "PxShape.h"
00039
00040 #if !PX_DOXYGEN
00041 namespace physx
00042 {
00043 #endif
00044
00045 class PxConstraint;
00046 class PxMaterial;
00047 class PxGeometry;
00048
00057 class PxRigidActor : public PxActor
00058 {
00059 public:
00076 virtual void release() = 0;
00077
00078
00079
00092 virtual PxTransform getGlobalPose() const = 0;
00093
00119 virtual void setGlobalPose(const PxTransform& pose, bool autowake = true) = 0;
00120
00121
00122
00158 PX_DEPRECATED virtual PxShape* createShape(const PxGeometry& geometry, PxMaterial*const* materials, PxU16 materialCount, PxShapeFlags shapeFlags = PxShapeFlag::eVISUALIZATION | PxShapeFlag::eSCENE_QUERY_SHAPE | PxShapeFlag::eSIMULATION_SHAPE) = 0;
00159
00190 PX_DEPRECATED PX_FORCE_INLINE PxShape* createShape(const PxGeometry& geometry, const PxMaterial& material, PxShapeFlags shapeFlags = PxShapeFlag::eVISUALIZATION | PxShapeFlag::eSCENE_QUERY_SHAPE | PxShapeFlag::eSIMULATION_SHAPE)
00191 {
00192 PxMaterial* materialPtr = const_cast<PxMaterial*>(&material);
00193 return createShape(geometry, &materialPtr, 1, shapeFlags);
00194 }
00195
00213 virtual void attachShape(PxShape& shape) = 0;
00214
00215
00226 virtual void detachShape(PxShape& shape, bool wakeOnLostTouch = true) = 0;
00227
00228
00238 virtual PxU32 getNbShapes() const = 0;
00239
00240
00257 virtual PxU32 getShapes(PxShape** userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const = 0;
00258
00259
00272 virtual PxU32 getNbConstraints() const = 0;
00273
00274
00289 virtual PxU32 getConstraints(PxConstraint** userBuffer, PxU32 bufferSize, PxU32 startIndex=0) const = 0;
00290
00291 protected:
00292 PX_INLINE PxRigidActor(PxType concreteType, PxBaseFlags baseFlags) : PxActor(concreteType, baseFlags) {}
00293 PX_INLINE PxRigidActor(PxBaseFlags baseFlags) : PxActor(baseFlags) {}
00294 virtual ~PxRigidActor() {}
00295 virtual bool isKindOf(const char* name) const { return !::strcmp("PxRigidActor", name) || PxActor::isKindOf(name); }
00296 };
00297
00298
00299 #if !PX_DOXYGEN
00300 }
00301 #endif
00302
00304 #endif