Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef CLOTHING_COLLISION_H
00013 #define CLOTHING_COLLISION_H
00014
00020 #include "ApexInterface.h"
00021
00022 namespace nvidia
00023 {
00024
00025 namespace apex
00026 {
00027 PX_PUSH_PACK_DEFAULT
00028
00029
00033 struct ClothingCollisionType
00034 {
00038 enum Enum
00039 {
00040 Plane,
00041 Convex,
00042 Sphere,
00043 Capsule,
00044 TriangleMesh
00045 };
00046 };
00047
00048
00049
00050 class ClothingPlane;
00051 class ClothingConvex;
00052 class ClothingSphere;
00053 class ClothingCapsule;
00054 class ClothingTriangleMesh;
00055
00059 class ClothingCollision : public ApexInterface
00060 {
00061 public:
00065 virtual ClothingCollisionType::Enum getType() const = 0;
00066
00070 virtual ClothingPlane* isPlane() = 0;
00071
00075 virtual ClothingConvex* isConvex() = 0;
00076
00080 virtual ClothingSphere* isSphere() = 0;
00081
00085 virtual ClothingCapsule* isCapsule() = 0;
00086
00090 virtual ClothingTriangleMesh* isTriangleMesh() = 0;
00091 };
00092
00093
00094
00098 class ClothingPlane : public ClothingCollision
00099 {
00100 public:
00104 virtual void setPlane(const PxPlane& plane) = 0;
00105
00109 virtual const PxPlane& getPlane() = 0;
00110
00114 virtual uint32_t getRefCount() const = 0;
00115 };
00116
00117
00118
00124 class ClothingConvex : public ClothingCollision
00125 {
00126 public:
00130 virtual uint32_t getNumPlanes() = 0;
00131
00135 virtual ClothingPlane** getPlanes() = 0;
00136
00142 virtual void releaseWithPlanes() = 0;
00143 };
00144
00145
00146
00150 class ClothingSphere : public ClothingCollision
00151 {
00152 public:
00156 virtual void setPosition(const PxVec3& position) = 0;
00157
00161 virtual const PxVec3& getPosition() const = 0;
00162
00170 virtual void setRadius(float radius) = 0;
00171
00175 virtual float getRadius() const = 0;
00176
00180 virtual uint32_t getRefCount() const = 0;
00181 };
00182
00183
00184
00190 class ClothingCapsule : public ClothingCollision
00191 {
00192 public:
00196 virtual ClothingSphere** getSpheres() = 0;
00197
00203 virtual void releaseWithSpheres() = 0;
00204 };
00205
00206
00207
00211 class ClothingTriangleMesh : public ClothingCollision
00212 {
00213 public:
00221 virtual uint32_t lockTriangles(const uint32_t** ids, const PxVec3** triangles) = 0;
00222
00230 virtual uint32_t lockTrianglesWrite(const uint32_t** ids, PxVec3** triangles) = 0;
00231
00235 virtual void unlockTriangles() = 0;
00236
00247 virtual void addTriangle(uint32_t id, const PxVec3& v0, const PxVec3& v1, const PxVec3& v2) = 0;
00248
00259 virtual void addTriangles(const uint32_t* ids, const PxVec3* triangleVertices, uint32_t numTriangles) = 0;
00260
00267 virtual void removeTriangle(uint32_t id) = 0;
00268
00276 virtual void removeTriangles(const uint32_t* ids, uint32_t numTriangles) = 0;
00277
00281 virtual void clearTriangles() = 0;
00282
00286 virtual void setPose(PxMat44 pose) = 0;
00287
00291 virtual const PxMat44& getPose() const = 0;
00292 };
00293
00294
00295
00296 PX_POP_PACK
00297 }
00298 }
00299
00300
00301 #endif // CLOTHING_COLLISION_H