21#ifndef GENERATED_AGX_PHYSICS_CONTACTPOINT_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_CONTACTPOINT_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 )
54namespace agx {
namespace Physics {
namespace Geometry {
class ShapePtr; }}}
55namespace agx {
namespace Physics {
namespace Geometry {
class ShapePtr; }}}
62 class ContactPointModel;
63 class ContactPointData;
64 class ContactPointPtr;
65 class ContactPointInstance;
66 class ContactPointSemantics;
125 virtual void configure(agx::TiXmlElement* eEntity)
override;
133 #ifndef AGX_PHYSICS_CONTACTPOINT_DATA_SET_OVERRIDE
134 #define AGX_PHYSICS_CONTACTPOINT_DATA_SET
138 ContactPointInstance operator[] (
size_t index);
178 typedef agx::Vec2 tangentialCohesionType;
192 typedef agx::Real elasticRestLengthShape1Type;
193 typedef agx::Real elasticRestLengthShape2Type;
200 virtual ~ContactPointData() {}
201 virtual void setNumElements(
agx::Index numElements)
override;
204 ContactPointData& operator= (
const ContactPointData&) {
return *
this; }
226 agx::Vec2 const& getTangentialCohesion()
const;
227 agx::Real const& getYoungsModulus()
const;
230 agx::Real const& getMaxNormalForce()
const;
240 agx::Real const& getElasticRestLengthShape1()
const;
241 agx::Real const& getElasticRestLengthShape2()
const;
253 void setRestitution(
agx::Vec3 const& value);
254 void setFriction(
agx::Vec2 const& value);
255 void setTangentialCohesion(
agx::Vec2 const& value);
256 void setYoungsModulus(
agx::Real const& value);
257 void setLocalForce(
agx::Vec3 const& value);
259 void setMaxNormalForce(
agx::Real const& value);
263 void setFaceFeature1(
agx::UInt8 const& value);
264 void setFaceFeature2(
agx::UInt8 const& value);
269 void setElasticRestLengthShape1(
agx::Real const& value);
270 void setElasticRestLengthShape2(
agx::Real const& value);
274 friend class ContactPointPtr;
275 friend class ContactPointInstance;
276 ContactPointSemantics();
440 ContactPointInstance();
441 ContactPointInstance(ContactPointData* data,
agx::Index index);
446 ContactPointData* getData();
447 const ContactPointData* getData()
const;
498 agx::Vec2 const& tangentialCohesion()
const;
568 agx::Real const& elasticRestLengthShape1()
const;
573 agx::Real const& elasticRestLengthShape2()
const;
589 inline ContactPointInstance
agx::Physics::ContactPointData::operator[] (
size_t index) {
return ContactPointInstance(
this, (
agx::Index)index); }
596 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
603 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
611 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
612 EntityPtr::getModel()->fullPath().c_str(), ContactPointModel::instance()->fullPath().c_str());
620 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
621 EntityPtr::getModel()->fullPath().c_str(), ContactPointModel::instance()->fullPath().c_str());
627 AGX_FORCE_INLINE ContactPointSemantics* ContactPointPtr::operator->() {
return (ContactPointSemantics* )
this; }
628 AGX_FORCE_INLINE const ContactPointSemantics* ContactPointPtr::operator->()
const {
return (
const ContactPointSemantics* )
this; }
633 AGX_FORCE_INLINE agx::Vec3 const& ContactPointPtr::point()
const { verifyIndex();
return getData()->point[calculateIndex()]; }
636 AGX_FORCE_INLINE agx::Vec3f const& ContactPointPtr::normal()
const { verifyIndex();
return getData()->normal[calculateIndex()]; }
639 AGX_FORCE_INLINE agx::Vec3f const& ContactPointPtr::tangentU()
const { verifyIndex();
return getData()->tangentU[calculateIndex()]; }
642 AGX_FORCE_INLINE agx::Vec3f const& ContactPointPtr::tangentV()
const { verifyIndex();
return getData()->tangentV[calculateIndex()]; }
645 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::depth()
const { verifyIndex();
return getData()->depth[calculateIndex()]; }
648 AGX_FORCE_INLINE agx::UInt8 const& ContactPointPtr::state()
const { verifyIndex();
return getData()->state[calculateIndex()]; }
651 AGX_FORCE_INLINE agx::Vec3f const& ContactPointPtr::velocity()
const { verifyIndex();
return getData()->velocity[calculateIndex()]; }
653 AGX_FORCE_INLINE agx::Vec3& ContactPointPtr::restitution() { verifyIndex();
return getData()->restitution[calculateIndex()]; }
654 AGX_FORCE_INLINE agx::Vec3 const& ContactPointPtr::restitution()
const { verifyIndex();
return getData()->restitution[calculateIndex()]; }
657 AGX_FORCE_INLINE agx::Vec2 const& ContactPointPtr::friction()
const { verifyIndex();
return getData()->friction[calculateIndex()]; }
659 AGX_FORCE_INLINE agx::Vec2& ContactPointPtr::tangentialCohesion() { verifyIndex();
return getData()->tangentialCohesion[calculateIndex()]; }
660 AGX_FORCE_INLINE agx::Vec2 const& ContactPointPtr::tangentialCohesion()
const { verifyIndex();
return getData()->tangentialCohesion[calculateIndex()]; }
662 AGX_FORCE_INLINE agx::Real& ContactPointPtr::youngsModulus() { verifyIndex();
return getData()->youngsModulus[calculateIndex()]; }
663 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::youngsModulus()
const { verifyIndex();
return getData()->youngsModulus[calculateIndex()]; }
665 AGX_FORCE_INLINE agx::Vec3& ContactPointPtr::localForce() { verifyIndex();
return getData()->localForce[calculateIndex()]; }
666 AGX_FORCE_INLINE agx::Vec3 const& ContactPointPtr::localForce()
const { verifyIndex();
return getData()->localForce[calculateIndex()]; }
669 AGX_FORCE_INLINE agx::Vec4i8 const& ContactPointPtr::indexSet()
const { verifyIndex();
return getData()->indexSet[calculateIndex()]; }
671 AGX_FORCE_INLINE agx::Real& ContactPointPtr::maxNormalForce() { verifyIndex();
return getData()->maxNormalForce[calculateIndex()]; }
672 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::maxNormalForce()
const { verifyIndex();
return getData()->maxNormalForce[calculateIndex()]; }
675 AGX_FORCE_INLINE agx::Bool const& ContactPointPtr::enabled()
const { verifyIndex();
return getData()->enabled[calculateIndex()]; }
678 AGX_FORCE_INLINE agx::UInt32 const& ContactPointPtr::faceIndex1()
const { verifyIndex();
return getData()->faceIndex1[calculateIndex()]; }
681 AGX_FORCE_INLINE agx::UInt32 const& ContactPointPtr::faceIndex2()
const { verifyIndex();
return getData()->faceIndex2[calculateIndex()]; }
683 AGX_FORCE_INLINE agx::UInt8& ContactPointPtr::faceFeature1() { verifyIndex();
return getData()->faceFeature1[calculateIndex()]; }
684 AGX_FORCE_INLINE agx::UInt8 const& ContactPointPtr::faceFeature1()
const { verifyIndex();
return getData()->faceFeature1[calculateIndex()]; }
686 AGX_FORCE_INLINE agx::UInt8& ContactPointPtr::faceFeature2() { verifyIndex();
return getData()->faceFeature2[calculateIndex()]; }
687 AGX_FORCE_INLINE agx::UInt8 const& ContactPointPtr::faceFeature2()
const { verifyIndex();
return getData()->faceFeature2[calculateIndex()]; }
696 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::area()
const { verifyIndex();
return getData()->area[calculateIndex()]; }
699 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::volume()
const { verifyIndex();
return getData()->volume[calculateIndex()]; }
701 AGX_FORCE_INLINE agx::Real& ContactPointPtr::elasticRestLengthShape1() { verifyIndex();
return getData()->elasticRestLengthShape1[calculateIndex()]; }
702 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::elasticRestLengthShape1()
const { verifyIndex();
return getData()->elasticRestLengthShape1[calculateIndex()]; }
704 AGX_FORCE_INLINE agx::Real& ContactPointPtr::elasticRestLengthShape2() { verifyIndex();
return getData()->elasticRestLengthShape2[calculateIndex()]; }
705 AGX_FORCE_INLINE agx::Real const& ContactPointPtr::elasticRestLengthShape2()
const { verifyIndex();
return getData()->elasticRestLengthShape2[calculateIndex()]; }
714 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
721 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
730 AGX_FORCE_INLINE agx::Vec3 const& ContactPointInstance::point()
const { verifyIndex();
return getData()->point[getIndex()]; }
733 AGX_FORCE_INLINE agx::Vec3f const& ContactPointInstance::normal()
const { verifyIndex();
return getData()->normal[getIndex()]; }
736 AGX_FORCE_INLINE agx::Vec3f const& ContactPointInstance::tangentU()
const { verifyIndex();
return getData()->tangentU[getIndex()]; }
739 AGX_FORCE_INLINE agx::Vec3f const& ContactPointInstance::tangentV()
const { verifyIndex();
return getData()->tangentV[getIndex()]; }
742 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::depth()
const { verifyIndex();
return getData()->depth[getIndex()]; }
745 AGX_FORCE_INLINE agx::UInt8 const& ContactPointInstance::state()
const { verifyIndex();
return getData()->state[getIndex()]; }
748 AGX_FORCE_INLINE agx::Vec3f const& ContactPointInstance::velocity()
const { verifyIndex();
return getData()->velocity[getIndex()]; }
750 AGX_FORCE_INLINE agx::Vec3& ContactPointInstance::restitution() { verifyIndex();
return getData()->restitution[getIndex()]; }
751 AGX_FORCE_INLINE agx::Vec3 const& ContactPointInstance::restitution()
const { verifyIndex();
return getData()->restitution[getIndex()]; }
754 AGX_FORCE_INLINE agx::Vec2 const& ContactPointInstance::friction()
const { verifyIndex();
return getData()->friction[getIndex()]; }
756 AGX_FORCE_INLINE agx::Vec2& ContactPointInstance::tangentialCohesion() { verifyIndex();
return getData()->tangentialCohesion[getIndex()]; }
757 AGX_FORCE_INLINE agx::Vec2 const& ContactPointInstance::tangentialCohesion()
const { verifyIndex();
return getData()->tangentialCohesion[getIndex()]; }
759 AGX_FORCE_INLINE agx::Real& ContactPointInstance::youngsModulus() { verifyIndex();
return getData()->youngsModulus[getIndex()]; }
760 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::youngsModulus()
const { verifyIndex();
return getData()->youngsModulus[getIndex()]; }
762 AGX_FORCE_INLINE agx::Vec3& ContactPointInstance::localForce() { verifyIndex();
return getData()->localForce[getIndex()]; }
763 AGX_FORCE_INLINE agx::Vec3 const& ContactPointInstance::localForce()
const { verifyIndex();
return getData()->localForce[getIndex()]; }
766 AGX_FORCE_INLINE agx::Vec4i8 const& ContactPointInstance::indexSet()
const { verifyIndex();
return getData()->indexSet[getIndex()]; }
768 AGX_FORCE_INLINE agx::Real& ContactPointInstance::maxNormalForce() { verifyIndex();
return getData()->maxNormalForce[getIndex()]; }
769 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::maxNormalForce()
const { verifyIndex();
return getData()->maxNormalForce[getIndex()]; }
772 AGX_FORCE_INLINE agx::Bool const& ContactPointInstance::enabled()
const { verifyIndex();
return getData()->enabled[getIndex()]; }
775 AGX_FORCE_INLINE agx::UInt32 const& ContactPointInstance::faceIndex1()
const { verifyIndex();
return getData()->faceIndex1[getIndex()]; }
778 AGX_FORCE_INLINE agx::UInt32 const& ContactPointInstance::faceIndex2()
const { verifyIndex();
return getData()->faceIndex2[getIndex()]; }
780 AGX_FORCE_INLINE agx::UInt8& ContactPointInstance::faceFeature1() { verifyIndex();
return getData()->faceFeature1[getIndex()]; }
781 AGX_FORCE_INLINE agx::UInt8 const& ContactPointInstance::faceFeature1()
const { verifyIndex();
return getData()->faceFeature1[getIndex()]; }
783 AGX_FORCE_INLINE agx::UInt8& ContactPointInstance::faceFeature2() { verifyIndex();
return getData()->faceFeature2[getIndex()]; }
784 AGX_FORCE_INLINE agx::UInt8 const& ContactPointInstance::faceFeature2()
const { verifyIndex();
return getData()->faceFeature2[getIndex()]; }
793 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::area()
const { verifyIndex();
return getData()->area[getIndex()]; }
796 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::volume()
const { verifyIndex();
return getData()->volume[getIndex()]; }
798 AGX_FORCE_INLINE agx::Real& ContactPointInstance::elasticRestLengthShape1() { verifyIndex();
return getData()->elasticRestLengthShape1[getIndex()]; }
799 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::elasticRestLengthShape1()
const { verifyIndex();
return getData()->elasticRestLengthShape1[getIndex()]; }
801 AGX_FORCE_INLINE agx::Real& ContactPointInstance::elasticRestLengthShape2() { verifyIndex();
return getData()->elasticRestLengthShape2[getIndex()]; }
802 AGX_FORCE_INLINE agx::Real const& ContactPointInstance::elasticRestLengthShape2()
const { verifyIndex();
return getData()->elasticRestLengthShape2[getIndex()]; }
818#undef AGX_ENTITY_WRAPPER
819#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()
An abstract description of a data entity stored using SOA (structure of arrays) pattern in a EntitySt...
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
Pointer to a entity instance of type Physics.Geometry.Shape.
A class holding 4 dimensional vectors and providing basic arithmetic.
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.