29#ifndef NP_MPM_MATERIAL_H
30#define NP_MPM_MATERIAL_H
32#include "common/PxSerialFramework.h"
33#include "foundation/PxUserAllocated.h"
34#include "foundation/PxUtilities.h"
35#include "CmRefCountable.h"
36#include "PxsMPMMaterialCore.h"
37#include "PxMPMMaterial.h"
41#if PX_ENABLE_FEATURES_UNDER_CONSTRUCTION
47 class NpMPMMaterial :
public PxMPMMaterial,
public PxUserAllocated
57 NpMPMMaterial(PxBaseFlags baseFlags) : PxMPMMaterial(baseFlags), mMaterial(PxEmpty) {}
58 virtual void resolveReferences(PxDeserializationContext&
context);
59 static NpMPMMaterial* createObject(PxU8*& address, PxDeserializationContext&
context);
60 static void getBinaryMetaData(PxOutputStream& stream);
62 void preExportDataReset() { Cm::RefCountable_preExportDataReset(*
this); }
63 void exportExtraData(PxSerializationContext&) {}
64 void importExtraData(PxDeserializationContext&) {}
65 virtual void requiresObjects(PxProcessPxBaseCallback&) {}
67 NpMPMMaterial(
const PxsMPMMaterialCore& desc);
68 virtual ~NpMPMMaterial();
76 virtual PxU32 getReferenceCount() const
PX_OVERRIDE;
81 virtual
void setFriction(PxReal friction)
PX_OVERRIDE;
83 virtual
void setDamping(PxReal damping)
PX_OVERRIDE;
85 virtual
void setAdhesion(PxReal adhesion)
PX_OVERRIDE;
87 virtual
void setGravityScale(PxReal scale)
PX_OVERRIDE;
89 virtual
void setAdhesionRadiusScale(PxReal scale)
PX_OVERRIDE;
90 virtual PxReal getAdhesionRadiusScale() const
PX_OVERRIDE;
94 virtual
void setStretchAndShearDamping(PxReal stretchAndShearDamping)
PX_OVERRIDE;
95 virtual PxReal getStretchAndShearDamping() const
PX_OVERRIDE;
96 virtual
void setRotationalDamping(PxReal rotationalDamping)
PX_OVERRIDE;
97 virtual PxReal getRotationalDamping() const
PX_OVERRIDE;
100 virtual
void setMaterialModel(PxMPMMaterialModel::Enum)
PX_OVERRIDE;
101 virtual PxMPMMaterialModel::Enum getMaterialModel() const
PX_OVERRIDE;
102 virtual
void setCuttingFlags(PxMPMCuttingFlags cuttingFlags)
PX_OVERRIDE;
103 virtual PxMPMCuttingFlags getCuttingFlags() const
PX_OVERRIDE;
104 virtual
void setSandFrictionAngle(PxReal sandFrictionAngle)
PX_OVERRIDE;
105 virtual PxReal getSandFrictionAngle() const
PX_OVERRIDE;
106 virtual
void setYieldStress(PxReal yieldStress)
PX_OVERRIDE;
113 virtual PxReal getYoungsModulus() const
PX_OVERRIDE;
118 virtual
void setCriticalCompression(PxReal)
PX_OVERRIDE;
119 virtual PxReal getCriticalCompression() const
PX_OVERRIDE;
120 virtual
void setCriticalStretch(PxReal)
PX_OVERRIDE;
121 virtual PxReal getCriticalStretch() const
PX_OVERRIDE;
122 virtual
void setTensileDamageSensitivity(PxReal)
PX_OVERRIDE;
123 virtual PxReal getTensileDamageSensitivity() const
PX_OVERRIDE;
124 virtual
void setCompressiveDamageSensitivity(PxReal)
PX_OVERRIDE;
125 virtual PxReal getCompressiveDamageSensitivity() const
PX_OVERRIDE;
126 virtual
void setAttractiveForceResidual(PxReal)
PX_OVERRIDE;
127 virtual PxReal getAttractiveForceResidual() const
PX_OVERRIDE;
130 PX_FORCE_INLINE static
void getMaterialIndices(NpMPMMaterial*const* materials, PxU16* materialIndices, PxU32 materialCount);
138 PxsMPMMaterialCore mMaterial;
141 PX_FORCE_INLINE void NpMPMMaterial::getMaterialIndices(NpMPMMaterial*const* materials, PxU16* materialIndices, PxU32 materialCount)
143 for (PxU32 i = 0; i < materialCount; i++)
144 materialIndices[i] =
static_cast<NpMPMMaterial*
>(materials[i])->mMaterial.mMaterialIndex;
#define PX_FORCE_INLINE
Definition PxPreprocessor.h:335
#define PX_OVERRIDE
Definition PxPreprocessor.h:375
#define PX_INLINE
Definition PxPreprocessor.h:320
Sorts an array of objects in ascending order, assuming that the predicate implements the < operator:
Definition PxBoxController.h:39