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_CLOTH_FABRIC
00032 #define PX_PHYSICS_NX_CLOTH_FABRIC
00033
00038 #include "common/PxBase.h"
00039
00040 #if !PX_DOXYGEN
00041 namespace physx
00042 {
00043 #endif
00044
00050 struct PX_DEPRECATED PxClothFabricPhaseType
00051 {
00052 enum Enum
00053 {
00054 eINVALID,
00055 eVERTICAL,
00056 eHORIZONTAL,
00057 eBENDING,
00058 eSHEARING,
00059 eCOUNT
00060 };
00061 };
00062
00068 struct PX_DEPRECATED PxClothFabricPhase
00069 {
00070 PxClothFabricPhase(PxClothFabricPhaseType::Enum type =
00071 PxClothFabricPhaseType::eINVALID, PxU32 index = 0);
00072
00076 PxClothFabricPhaseType::Enum phaseType;
00077
00081 PxU32 setIndex;
00082 };
00083
00084 PX_INLINE PxClothFabricPhase::PxClothFabricPhase(
00085 PxClothFabricPhaseType::Enum type, PxU32 index)
00086 : phaseType(type)
00087 , setIndex(index)
00088 {}
00089
00095 class PX_DEPRECATED PxClothFabricDesc
00096 {
00097 public:
00099 PxU32 nbParticles;
00100
00102 PxU32 nbPhases;
00104 const PxClothFabricPhase* phases;
00105
00107 PxU32 nbSets;
00109 const PxU32* sets;
00110
00112 const PxU32* indices;
00114 const PxReal* restvalues;
00115
00117 PxU32 nbTethers;
00119 const PxU32* tetherAnchors;
00121 const PxReal* tetherLengths;
00122
00124 const PxU32* triangles;
00126 PxU32 nbTriangles;
00127
00131 PX_INLINE PxClothFabricDesc();
00132
00136 PX_INLINE void setToDefault();
00137
00142 PX_INLINE bool isValid() const;
00143 };
00144
00145 PX_INLINE PxClothFabricDesc::PxClothFabricDesc()
00146 {
00147 setToDefault();
00148 }
00149
00150 PX_INLINE void PxClothFabricDesc::setToDefault()
00151 {
00152 memset(this, 0, sizeof(PxClothFabricDesc));
00153 }
00154
00155 PX_INLINE bool PxClothFabricDesc::isValid() const
00156 {
00157 return nbParticles && nbPhases && phases && restvalues && nbSets
00158 && sets && indices && (!nbTethers || (tetherAnchors && tetherLengths))
00159 && (!nbTriangles || triangles);
00160 }
00161
00162
00185 class PX_DEPRECATED PxClothFabric : public PxBase
00186 {
00187 public:
00193 virtual void release() = 0;
00194
00199 virtual PxU32 getNbParticles() const = 0;
00200
00205 virtual PxU32 getNbPhases() const = 0;
00206
00211 virtual PxU32 getNbRestvalues() const = 0;
00212
00217 virtual PxU32 getNbSets() const = 0;
00218
00223 virtual PxU32 getNbParticleIndices() const = 0;
00224
00229 virtual PxU32 getNbTethers() const = 0;
00230
00241 virtual PxU32 getPhases(PxClothFabricPhase* userPhaseBuffer, PxU32 bufferSize) const = 0;
00242
00254 virtual PxU32 getSets(PxU32* userSetBuffer, PxU32 bufferSize) const = 0;
00255
00266 virtual PxU32 getParticleIndices(PxU32* userParticleIndexBuffer, PxU32 bufferSize) const = 0;
00267
00281 virtual PxU32 getRestvalues(PxReal* userRestvalueBuffer, PxU32 bufferSize) const = 0;
00282
00295 virtual PxU32 getTetherAnchors(PxU32* userAnchorBuffer, PxU32 bufferSize) const = 0;
00296
00308 virtual PxU32 getTetherLengths(PxReal* userLengthBuffer, PxU32 bufferSize) const = 0;
00309
00310
00315 virtual void scaleRestlengths(PxReal scale) = 0;
00316
00323 virtual PxU32 getReferenceCount() const = 0;
00324
00330 virtual void acquireReference() = 0;
00331
00332
00333 virtual const char* getConcreteTypeName() const { return "PxClothFabric"; }
00334
00335 protected:
00336
00337 PX_INLINE PxClothFabric(PxType concreteType, PxBaseFlags baseFlags) : PxBase(concreteType, baseFlags) {}
00338 PX_INLINE PxClothFabric(PxBaseFlags baseFlags) : PxBase(baseFlags) {}
00339 virtual ~PxClothFabric() {}
00340 virtual bool isKindOf(const char* name) const { return !::strcmp("PxClothFabric", name) || PxBase::isKindOf(name); }
00341 };
00342
00343 #if !PX_DOXYGEN
00344 }
00345 #endif
00346
00348 #endif