Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef SHAPE_H
00013 #define SHAPE_H
00014
00020 #include "foundation/PxPreprocessor.h"
00021 #include "ApexUsingNamespace.h"
00022
00023 #include "ApexDefs.h"
00024
00025
00026
00027
00028
00029 namespace nvidia
00030 {
00031 namespace apex
00032 {
00033
00034 PX_PUSH_PACK_DEFAULT
00035
00036
00037 class SphereShape;
00038 class CapsuleShape;
00039 class BoxShape;
00040 class HalfSpaceShape;
00041 class RenderDebugInterface;
00042
00046 class Shape
00047 {
00048 public:
00049
00051 virtual bool intersectAgainstAABB(PxBounds3) = 0;
00052
00054 virtual PxBounds3 getAABB() const = 0;
00055
00057 virtual const BoxShape* isBoxGeom() const
00058 {
00059 return NULL;
00060 }
00061
00063 virtual const SphereShape* isSphereGeom() const
00064 {
00065 return NULL;
00066 }
00067
00069 virtual const CapsuleShape* isCapsuleGeom() const
00070 {
00071 return NULL;
00072 }
00073
00075 virtual const HalfSpaceShape* isHalfSpaceGeom() const
00076 {
00077 return NULL;
00078 }
00079
00081 virtual void releaseApexShape() = 0;
00082
00084 virtual void visualize(RenderDebugInterface* renderer) const = 0;
00085
00087 virtual PxMat44 getPose() const = 0;
00088
00090 virtual void setPose(PxMat44 pose) = 0;
00091
00093 virtual PxMat44 getPreviousPose() const = 0;
00094 };
00095
00097 class SphereShape : public Shape
00098 {
00099 public:
00101 virtual float getRadius() const = 0;
00102
00104 virtual void setRadius(float radius) = 0;
00105
00106 };
00107
00109 class CapsuleShape : public Shape
00110 {
00111 public:
00113 virtual void getDimensions(float& height, float& radius) const = 0;
00114
00116 virtual void setDimensions(float height, float radius) = 0;
00117
00118 };
00119
00121 class BoxShape : public Shape
00122 {
00123 public:
00126 virtual void setSize(PxVec3 size) = 0;
00127
00129 virtual PxVec3 getSize() const = 0;
00130
00131 };
00132
00134 class HalfSpaceShape : public Shape
00135 {
00136 public:
00138 virtual void setOriginAndNormal(PxVec3 origin, PxVec3 normal) = 0;
00139
00141 virtual PxVec3 getNormal() const = 0;
00142
00144 virtual PxVec3 getOrigin() const = 0;
00145
00147 virtual PxVec3 getPreviousOrigin() const = 0;
00148 };
00149
00150
00151 PX_POP_PACK
00152
00153 }
00154 }
00155
00156 #endif // SHAPE_H