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_NXMATERIAL
00032 #define PX_PHYSICS_NXMATERIAL
00033
00037 #include "PxPhysXConfig.h"
00038 #include "common/PxBase.h"
00039
00040 #if !PX_DOXYGEN
00041 namespace physx
00042 {
00043 #endif
00044
00045 class PxScene;
00046
00052 struct PxMaterialFlag
00053 {
00054 enum Enum
00055 {
00056
00060 eDISABLE_FRICTION = 1 << 0,
00061
00080 eDISABLE_STRONG_FRICTION = 1 << 1
00081 };
00082 };
00083
00089 typedef PxFlags<PxMaterialFlag::Enum,PxU16> PxMaterialFlags;
00090 PX_FLAGS_OPERATORS(PxMaterialFlag::Enum,PxU16)
00091
00092
00093
00112 struct PxCombineMode
00113 {
00114 enum Enum
00115 {
00116 eAVERAGE = 0,
00117 eMIN = 1,
00118 eMULTIPLY = 2,
00119 eMAX = 3,
00120 eN_VALUES = 4,
00121 ePAD_32 = 0x7fffffff
00122 };
00123 };
00124
00130 class PxMaterial : public PxBase
00131 {
00132 public:
00133
00139 virtual void release() = 0;
00140
00149 virtual PxU32 getReferenceCount() const = 0;
00150
00156 virtual void acquireReference() = 0;
00157
00169 virtual void setDynamicFriction(PxReal coef) = 0;
00170
00178 virtual PxReal getDynamicFriction() const = 0;
00179
00191 virtual void setStaticFriction(PxReal coef) = 0;
00192
00199 virtual PxReal getStaticFriction() const = 0;
00200
00212 virtual void setRestitution(PxReal rest) = 0;
00213
00223 virtual PxReal getRestitution() const = 0;
00224
00236 virtual void setFlag(PxMaterialFlag::Enum flag, bool) = 0;
00237
00238
00247 virtual void setFlags( PxMaterialFlags inFlags ) = 0;
00248
00256 virtual PxMaterialFlags getFlags() const = 0;
00257
00269 virtual void setFrictionCombineMode(PxCombineMode::Enum combMode) = 0;
00270
00280 virtual PxCombineMode::Enum getFrictionCombineMode() const = 0;
00281
00293 virtual void setRestitutionCombineMode(PxCombineMode::Enum combMode) = 0;
00294
00304 virtual PxCombineMode::Enum getRestitutionCombineMode() const = 0;
00305
00306
00307 void* userData;
00308
00309 virtual const char* getConcreteTypeName() const { return "PxMaterial"; }
00310
00311 protected:
00312 PX_INLINE PxMaterial(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags), userData(NULL) {}
00313 PX_INLINE PxMaterial(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00314 virtual ~PxMaterial() {}
00315 virtual bool isKindOf(const char* name) const { return !::strcmp("PxMaterial", name) || PxBase::isKindOf(name); }
00316
00317 };
00318
00319 #if !PX_DOXYGEN
00320 }
00321 #endif
00322
00324 #endif