21#ifndef GENERATED_AGX_PHYSICS_PARTICLEPAIRCONTACT_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_PARTICLEPAIRCONTACT_H_PLUGIN
24#define AGX_ENTITY_WRAPPER 1
30# pragma warning( disable : 4505 )
32# pragma warning( disable : 4251 )
34# pragma warning( disable : 4355 )
36# pragma warning( disable: 4714 )
58 class ParticlePairContactModel;
59 class ParticlePairContactData;
60 class ParticlePairContactPtr;
61 class ParticlePairContactInstance;
62 class ParticlePairContactSemantics;
113 virtual void configure(agx::TiXmlElement* eEntity)
override;
121 #ifndef AGX_PHYSICS_PARTICLEPAIRCONTACT_DATA_SET_OVERRIDE
122 #define AGX_PHYSICS_PARTICLEPAIRCONTACT_DATA_SET
123 class AGXPHYSICS_EXPORT ParticlePairContactData :
public agx::Physics::ContactData
126 ParticlePairContactInstance operator[] (
size_t index);
169 ParticlePairContactData();
172 virtual ~ParticlePairContactData() {}
173 virtual void setNumElements(
agx::Index numElements)
override;
176 ParticlePairContactData& operator= (
const ParticlePairContactData&) {
return *
this; }
201 agx::Real const& getImpactNormalForce()
const;
202 agx::Real const& getContactEnergy()
const;
221 void setLocalForce(
agx::Vec3 const& value);
222 void setImpactNormalForce(
agx::Real const& value);
223 void setContactEnergy(
agx::Real const& value);
224 void setIsImpacting(
agx::Bool const& value);
230 friend class ParticlePairContactPtr;
231 friend class ParticlePairContactInstance;
232 ParticlePairContactSemantics();
261 const ParticlePairContactData*
getData()
const;
356 ParticlePairContactInstance();
357 ParticlePairContactInstance(ParticlePairContactData* data,
agx::Index index);
362 ParticlePairContactData* getData();
363 const ParticlePairContactData* getData()
const;
429 agx::Real const& impactNormalForce()
const;
465 inline ParticlePairContactInstance
agx::Physics::ParticlePairContactData::operator[] (
size_t index) {
return ParticlePairContactInstance(
this, (
agx::Index)index); }
472 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
479 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
487 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
488 EntityPtr::getModel()->fullPath().c_str(), ParticlePairContactModel::instance()->fullPath().c_str());
496 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
497 EntityPtr::getModel()->fullPath().c_str(), ParticlePairContactModel::instance()->fullPath().c_str());
503 AGX_FORCE_INLINE ParticlePairContactSemantics* ParticlePairContactPtr::operator->() {
return (ParticlePairContactSemantics* )
this; }
504 AGX_FORCE_INLINE const ParticlePairContactSemantics* ParticlePairContactPtr::operator->()
const {
return (
const ParticlePairContactSemantics* )
this; }
508 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactPtr::particle1() { verifyIndex();
return getData()->particle1[calculateIndex()]; }
509 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactPtr::particle1()
const { verifyIndex();
return getData()->particle1[calculateIndex()]; }
511 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactPtr::particle2() { verifyIndex();
return getData()->particle2[calculateIndex()]; }
512 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactPtr::particle2()
const { verifyIndex();
return getData()->particle2[calculateIndex()]; }
514 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactPtr::particleId1() { verifyIndex();
return getData()->particleId1[calculateIndex()]; }
515 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactPtr::particleId1()
const { verifyIndex();
return getData()->particleId1[calculateIndex()]; }
517 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactPtr::particleId2() { verifyIndex();
return getData()->particleId2[calculateIndex()]; }
518 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactPtr::particleId2()
const { verifyIndex();
return getData()->particleId2[calculateIndex()]; }
520 AGX_FORCE_INLINE agx::Bool& ParticlePairContactPtr::enabled() { verifyIndex();
return getData()->enabled[calculateIndex()]; }
521 AGX_FORCE_INLINE agx::Bool const& ParticlePairContactPtr::enabled()
const { verifyIndex();
return getData()->enabled[calculateIndex()]; }
523 AGX_FORCE_INLINE agx::Vec3& ParticlePairContactPtr::point() { verifyIndex();
return getData()->point[calculateIndex()]; }
524 AGX_FORCE_INLINE agx::Vec3 const& ParticlePairContactPtr::point()
const { verifyIndex();
return getData()->point[calculateIndex()]; }
527 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactPtr::normal()
const { verifyIndex();
return getData()->normal[calculateIndex()]; }
529 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactPtr::tangentU() { verifyIndex();
return getData()->tangentU[calculateIndex()]; }
530 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactPtr::tangentU()
const { verifyIndex();
return getData()->tangentU[calculateIndex()]; }
532 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactPtr::tangentV() { verifyIndex();
return getData()->tangentV[calculateIndex()]; }
533 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactPtr::tangentV()
const { verifyIndex();
return getData()->tangentV[calculateIndex()]; }
535 AGX_FORCE_INLINE agx::Real& ParticlePairContactPtr::depth() { verifyIndex();
return getData()->depth[calculateIndex()]; }
536 AGX_FORCE_INLINE agx::Real const& ParticlePairContactPtr::depth()
const { verifyIndex();
return getData()->depth[calculateIndex()]; }
538 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactPtr::velocity() { verifyIndex();
return getData()->velocity[calculateIndex()]; }
539 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactPtr::velocity()
const { verifyIndex();
return getData()->velocity[calculateIndex()]; }
541 AGX_FORCE_INLINE agx::Vec3& ParticlePairContactPtr::localForce() { verifyIndex();
return getData()->localForce[calculateIndex()]; }
542 AGX_FORCE_INLINE agx::Vec3 const& ParticlePairContactPtr::localForce()
const { verifyIndex();
return getData()->localForce[calculateIndex()]; }
544 AGX_FORCE_INLINE agx::Real& ParticlePairContactPtr::impactNormalForce() { verifyIndex();
return getData()->impactNormalForce[calculateIndex()]; }
545 AGX_FORCE_INLINE agx::Real const& ParticlePairContactPtr::impactNormalForce()
const { verifyIndex();
return getData()->impactNormalForce[calculateIndex()]; }
547 AGX_FORCE_INLINE agx::Real& ParticlePairContactPtr::contactEnergy() { verifyIndex();
return getData()->contactEnergy[calculateIndex()]; }
548 AGX_FORCE_INLINE agx::Real const& ParticlePairContactPtr::contactEnergy()
const { verifyIndex();
return getData()->contactEnergy[calculateIndex()]; }
550 AGX_FORCE_INLINE agx::Bool& ParticlePairContactPtr::isImpacting() { verifyIndex();
return getData()->isImpacting[calculateIndex()]; }
551 AGX_FORCE_INLINE agx::Bool const& ParticlePairContactPtr::isImpacting()
const { verifyIndex();
return getData()->isImpacting[calculateIndex()]; }
553 AGX_FORCE_INLINE agx::Real32& ParticlePairContactPtr::timeStamp() { verifyIndex();
return getData()->timeStamp[calculateIndex()]; }
554 AGX_FORCE_INLINE agx::Real32 const& ParticlePairContactPtr::timeStamp()
const { verifyIndex();
return getData()->timeStamp[calculateIndex()]; }
556 AGX_FORCE_INLINE agx::Real32& ParticlePairContactPtr::charContactTime() { verifyIndex();
return getData()->charContactTime[calculateIndex()]; }
557 AGX_FORCE_INLINE agx::Real32 const& ParticlePairContactPtr::charContactTime()
const { verifyIndex();
return getData()->charContactTime[calculateIndex()]; }
560 AGX_FORCE_INLINE ParticlePairContactInstance::ParticlePairContactInstance() {}
561 AGX_FORCE_INLINE ParticlePairContactInstance::ParticlePairContactInstance(ParticlePairContactData* data,
agx::Index index) :
agx::Physics::ContactInstance(data, index) {}
566 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
573 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
582 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactInstance::particle1()
const { verifyIndex();
return getData()->particle1[getIndex()]; }
585 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactInstance::particle2()
const { verifyIndex();
return getData()->particle2[getIndex()]; }
587 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactInstance::particleId1() { verifyIndex();
return getData()->particleId1[getIndex()]; }
588 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactInstance::particleId1()
const { verifyIndex();
return getData()->particleId1[getIndex()]; }
590 AGX_FORCE_INLINE agx::UInt32& ParticlePairContactInstance::particleId2() { verifyIndex();
return getData()->particleId2[getIndex()]; }
591 AGX_FORCE_INLINE agx::UInt32 const& ParticlePairContactInstance::particleId2()
const { verifyIndex();
return getData()->particleId2[getIndex()]; }
593 AGX_FORCE_INLINE agx::Bool& ParticlePairContactInstance::enabled() { verifyIndex();
return getData()->enabled[getIndex()]; }
594 AGX_FORCE_INLINE agx::Bool const& ParticlePairContactInstance::enabled()
const { verifyIndex();
return getData()->enabled[getIndex()]; }
597 AGX_FORCE_INLINE agx::Vec3 const& ParticlePairContactInstance::point()
const { verifyIndex();
return getData()->point[getIndex()]; }
600 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactInstance::normal()
const { verifyIndex();
return getData()->normal[getIndex()]; }
602 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactInstance::tangentU() { verifyIndex();
return getData()->tangentU[getIndex()]; }
603 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactInstance::tangentU()
const { verifyIndex();
return getData()->tangentU[getIndex()]; }
605 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactInstance::tangentV() { verifyIndex();
return getData()->tangentV[getIndex()]; }
606 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactInstance::tangentV()
const { verifyIndex();
return getData()->tangentV[getIndex()]; }
609 AGX_FORCE_INLINE agx::Real const& ParticlePairContactInstance::depth()
const { verifyIndex();
return getData()->depth[getIndex()]; }
611 AGX_FORCE_INLINE agx::Vec3f& ParticlePairContactInstance::velocity() { verifyIndex();
return getData()->velocity[getIndex()]; }
612 AGX_FORCE_INLINE agx::Vec3f const& ParticlePairContactInstance::velocity()
const { verifyIndex();
return getData()->velocity[getIndex()]; }
614 AGX_FORCE_INLINE agx::Vec3& ParticlePairContactInstance::localForce() { verifyIndex();
return getData()->localForce[getIndex()]; }
615 AGX_FORCE_INLINE agx::Vec3 const& ParticlePairContactInstance::localForce()
const { verifyIndex();
return getData()->localForce[getIndex()]; }
617 AGX_FORCE_INLINE agx::Real& ParticlePairContactInstance::impactNormalForce() { verifyIndex();
return getData()->impactNormalForce[getIndex()]; }
618 AGX_FORCE_INLINE agx::Real const& ParticlePairContactInstance::impactNormalForce()
const { verifyIndex();
return getData()->impactNormalForce[getIndex()]; }
620 AGX_FORCE_INLINE agx::Real& ParticlePairContactInstance::contactEnergy() { verifyIndex();
return getData()->contactEnergy[getIndex()]; }
621 AGX_FORCE_INLINE agx::Real const& ParticlePairContactInstance::contactEnergy()
const { verifyIndex();
return getData()->contactEnergy[getIndex()]; }
623 AGX_FORCE_INLINE agx::Bool& ParticlePairContactInstance::isImpacting() { verifyIndex();
return getData()->isImpacting[getIndex()]; }
624 AGX_FORCE_INLINE agx::Bool const& ParticlePairContactInstance::isImpacting()
const { verifyIndex();
return getData()->isImpacting[getIndex()]; }
627 AGX_FORCE_INLINE agx::Real32 const& ParticlePairContactInstance::timeStamp()
const { verifyIndex();
return getData()->timeStamp[getIndex()]; }
629 AGX_FORCE_INLINE agx::Real32& ParticlePairContactInstance::charContactTime() { verifyIndex();
return getData()->charContactTime[getIndex()]; }
630 AGX_FORCE_INLINE agx::Real32 const& ParticlePairContactInstance::charContactTime()
const { verifyIndex();
return getData()->charContactTime[getIndex()]; }
633 AGX_FORCE_INLINE ParticlePairContactSemantics::ParticlePairContactSemantics() {}
640AGX_TYPE_BINDING(
agx::Physics::ParticlePairContactInstance, "Physics.ParticlePairContactInstance")
646#undef AGX_ENTITY_WRAPPER
647#undef AGX_ENTITY_NAMESPACE
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGX_TYPE_BINDING(_Type, _Name)
#define AGXPHYSICS_EXPORT
Type-specific Array used for fast access into the data held by a Buffer.
Entity instance provides access to a single instance in an EntityStorage.
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
Accessor to a entity instance stored in a EntityStorage, to allow SOA (structure of arrays) data to b...
EntityPtr & operator=(const EntityPtr &other)=default
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
agxData::EntityInstance instance()
Data storage for a collection of entity instances of a specified EntityModel.
agx::String fullPath() const
Abstract description of the data attributes for the Physics.ParticlePairContact entity.
ParticlePairContactModel(const agx::String &name="ParticlePairContact")
static agxData::ScalarAttributeT< agx::Vec3f > * tangentVAttribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
static ParticlePairContactPtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
virtual void initAttributeAccessors() override
static agxData::ScalarAttributeT< agx::Bool > * isImpactingAttribute
static agxData::ScalarAttributeT< agx::Vec3f > * velocityAttribute
void construct(agx::Physics::ParticlePairContactPtr particlePairContact)
virtual void configure(agx::TiXmlElement *eEntity) override
static agxData::ScalarAttributeT< agx::Bool > * enabledAttribute
static agxData::ScalarAttributeT< agx::Real32 > * timeStampAttribute
static ParticlePairContactModel * instance()
static agxData::ScalarAttributeT< agx::Real > * impactNormalForceAttribute
virtual void construct(agxData::EntityPtr instance) override
static agxData::ScalarAttributeT< agx::Vec3f > * normalAttribute
virtual ~ParticlePairContactModel()
static agxData::ScalarAttributeT< agx::Real > * depthAttribute
static agxData::ScalarAttributeT< agx::Real > * contactEnergyAttribute
static agxData::EntityStorage * defaultStorage()
static agxData::ScalarAttributeT< agx::UInt32 > * particle2Attribute
static agxData::ScalarAttributeT< agx::UInt32 > * particleId2Attribute
static agxData::ScalarAttributeT< agx::Vec3 > * pointAttribute
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
static agxData::ScalarAttributeT< agx::UInt32 > * particle1Attribute
ParticlePairContactPtr PtrT
static agxData::ScalarAttributeT< agx::Vec3f > * tangentUAttribute
static agxData::ScalarAttributeT< agx::UInt32 > * particleId1Attribute
static agxData::ScalarAttributeT< agx::Real32 > * charContactTimeAttribute
static agxData::ScalarAttributeT< agx::Vec3 > * localForceAttribute
Pointer to a entity instance of type Physics.ParticlePairContact.
AGXPHYSICS_EXPORT agx::Real const & contactEnergy() const
AGXPHYSICS_EXPORT agx::Vec3 const & point() const
AGXPHYSICS_EXPORT agx::Vec3f & tangentV()
AGXPHYSICS_EXPORT agx::Vec3 & point()
AGXPHYSICS_EXPORT agx::Bool & enabled()
AGXPHYSICS_EXPORT agx::Vec3 & localForce()
AGXPHYSICS_EXPORT agx::Vec3f & normal()
ParticlePairContactData * getData()
ParticlePairContactModel ModelType
AGXPHYSICS_EXPORT agx::Real32 const & timeStamp() const
AGXPHYSICS_EXPORT ParticlePairContactSemantics * operator->()
const ParticlePairContactData * getData() const
AGXPHYSICS_EXPORT agx::Vec3f const & tangentU() const
AGXPHYSICS_EXPORT ParticlePairContactPtr()
AGXPHYSICS_EXPORT ParticlePairContactPtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT agx::Vec3f const & tangentV() const
AGXPHYSICS_EXPORT agx::Real & depth()
AGXPHYSICS_EXPORT agx::UInt32 & particle2()
AGXPHYSICS_EXPORT agx::Vec3f const & velocity() const
AGXPHYSICS_EXPORT agx::UInt32 & particleId2()
AGXPHYSICS_EXPORT agx::UInt32 const & particleId2() const
AGXPHYSICS_EXPORT agx::Real const & depth() const
AGXPHYSICS_EXPORT ParticlePairContactInstance instance()
AGXPHYSICS_EXPORT agx::Vec3f & velocity()
AGXPHYSICS_EXPORT agx::UInt32 const & particleId1() const
AGXPHYSICS_EXPORT const ParticlePairContactInstance instance() const
AGXPHYSICS_EXPORT agx::Vec3f & tangentU()
AGXPHYSICS_EXPORT ParticlePairContactPtr(agxData::EntityStorage *storage, agx::Index id)
AGXPHYSICS_EXPORT agx::Real & impactNormalForce()
AGXPHYSICS_EXPORT agx::Real32 const & charContactTime() const
AGXPHYSICS_EXPORT agx::UInt32 const & particle2() const
AGXPHYSICS_EXPORT ParticlePairContactPtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT agx::UInt32 const & particle1() const
ParticlePairContactData DataType
AGXPHYSICS_EXPORT agx::Real const & impactNormalForce() const
AGXPHYSICS_EXPORT agx::Bool const & isImpacting() const
AGXPHYSICS_EXPORT agx::Bool & isImpacting()
AGXPHYSICS_EXPORT agx::Real32 & timeStamp()
AGXPHYSICS_EXPORT agx::Real & contactEnergy()
AGXPHYSICS_EXPORT const ParticlePairContactSemantics * operator->() const
AGXPHYSICS_EXPORT agx::UInt32 & particle1()
AGXPHYSICS_EXPORT agx::Bool const & enabled() const
ParticlePairContactInstance InstanceType
AGXPHYSICS_EXPORT agx::UInt32 & particleId1()
AGXPHYSICS_EXPORT agx::Vec3f const & normal() const
AGXPHYSICS_EXPORT agx::Real32 & charContactTime()
AGXPHYSICS_EXPORT agx::Vec3 const & localForce() const
Vector containing 'raw' data.
#define agxAssertN(expr, format,...)
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
Contains classes for low level data storage for AGX.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.