21#ifndef GENERATED_AGX_PHYSICS_GEOMETRYCONTACT_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_GEOMETRYCONTACT_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 {
class GeometryPtr; }}
55namespace agx {
namespace Physics {
class GeometryPtr; }}
56namespace agx {
namespace Physics {
class RigidBodyPtr; }}
57namespace agx {
namespace Physics {
class RigidBodyPtr; }}
58namespace agx {
namespace Physics {
class BroadPhasePairPtr; }}
59namespace agx {
namespace Physics {
class ContactPointPtr; }}
66 class GeometryContactModel;
67 class GeometryContactData;
68 class GeometryContactPtr;
69 class GeometryContactInstance;
70 class GeometryContactSemantics;
117 virtual void configure(agx::TiXmlElement* eEntity)
override;
125 #ifndef AGX_PHYSICS_GEOMETRYCONTACT_DATA_SET_OVERRIDE
126 #define AGX_PHYSICS_GEOMETRYCONTACT_DATA_SET
130 GeometryContactInstance operator[] (
size_t index);
156 typedef agx::Bool hasSurfaceVelocityType;
157 typedef agx::Bool hasInternalMaterialType;
159 typedef void* customDataType;
163 GeometryContactData();
166 virtual ~GeometryContactData() {}
167 virtual void setNumElements(
agx::Index numElements)
override;
170 GeometryContactData& operator= (
const GeometryContactData&) {
return *
this; }
191 agx::Bool const& getHasSurfaceVelocity()
const;
192 agx::Bool const& getHasInternalMaterial()
const;
194 void*
const& getCustomData()
const;
206 void setImmediately(
agx::Bool const& value);
207 void setHasSurfaceVelocity(
agx::Bool const& value);
208 void setHasInternalMaterial(
agx::Bool const& value);
209 void setUsingPPGS(
agx::Bool const& value);
210 void setCustomData(
void*
const& value);
214 friend class GeometryContactPtr;
215 friend class GeometryContactInstance;
216 GeometryContactSemantics();
315 GeometryContactInstance();
316 GeometryContactInstance(GeometryContactData* data,
agx::Index index);
321 GeometryContactData* getData();
322 const GeometryContactData* getData()
const;
368 agx::Bool const& hasSurfaceVelocity()
const;
373 agx::Bool const& hasInternalMaterial()
const;
383 void*
const& customData()
const;
399 inline GeometryContactInstance
agx::Physics::GeometryContactData::operator[] (
size_t index) {
return GeometryContactInstance(
this, (
agx::Index)index); }
406 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
413 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
421 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
422 EntityPtr::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
430 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
431 EntityPtr::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
437 AGX_FORCE_INLINE GeometryContactSemantics* GeometryContactPtr::operator->() {
return (GeometryContactSemantics* )
this; }
438 AGX_FORCE_INLINE const GeometryContactSemantics* GeometryContactPtr::operator->()
const {
return (
const GeometryContactSemantics* )
this; }
460 AGX_FORCE_INLINE agx::Bool& GeometryContactPtr::enabled() { verifyIndex();
return getData()->enabled[calculateIndex()]; }
461 AGX_FORCE_INLINE agx::Bool const& GeometryContactPtr::enabled()
const { verifyIndex();
return getData()->enabled[calculateIndex()]; }
463 AGX_FORCE_INLINE agx::Bool& GeometryContactPtr::immediately() { verifyIndex();
return getData()->immediately[calculateIndex()]; }
464 AGX_FORCE_INLINE agx::Bool const& GeometryContactPtr::immediately()
const { verifyIndex();
return getData()->immediately[calculateIndex()]; }
466 AGX_FORCE_INLINE agx::Bool& GeometryContactPtr::hasSurfaceVelocity() { verifyIndex();
return getData()->hasSurfaceVelocity[calculateIndex()]; }
467 AGX_FORCE_INLINE agx::Bool const& GeometryContactPtr::hasSurfaceVelocity()
const { verifyIndex();
return getData()->hasSurfaceVelocity[calculateIndex()]; }
469 AGX_FORCE_INLINE agx::Bool& GeometryContactPtr::hasInternalMaterial() { verifyIndex();
return getData()->hasInternalMaterial[calculateIndex()]; }
470 AGX_FORCE_INLINE agx::Bool const& GeometryContactPtr::hasInternalMaterial()
const { verifyIndex();
return getData()->hasInternalMaterial[calculateIndex()]; }
472 AGX_FORCE_INLINE agx::Bool& GeometryContactPtr::usingPPGS() { verifyIndex();
return getData()->usingPPGS[calculateIndex()]; }
473 AGX_FORCE_INLINE agx::Bool const& GeometryContactPtr::usingPPGS()
const { verifyIndex();
return getData()->usingPPGS[calculateIndex()]; }
475 AGX_FORCE_INLINE void*& GeometryContactPtr::customData() { verifyIndex();
return getData()->customData[calculateIndex()]; }
476 AGX_FORCE_INLINE void*
const& GeometryContactPtr::customData()
const { verifyIndex();
return getData()->customData[calculateIndex()]; }
480 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance(GeometryContactData* data,
agx::Index index) :
agx::Physics::ContactInstance(data, index) {}
485 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
492 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
519 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::enabled()
const { verifyIndex();
return getData()->enabled[getIndex()]; }
521 AGX_FORCE_INLINE agx::Bool& GeometryContactInstance::immediately() { verifyIndex();
return getData()->immediately[getIndex()]; }
522 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::immediately()
const { verifyIndex();
return getData()->immediately[getIndex()]; }
524 AGX_FORCE_INLINE agx::Bool& GeometryContactInstance::hasSurfaceVelocity() { verifyIndex();
return getData()->hasSurfaceVelocity[getIndex()]; }
525 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::hasSurfaceVelocity()
const { verifyIndex();
return getData()->hasSurfaceVelocity[getIndex()]; }
527 AGX_FORCE_INLINE agx::Bool& GeometryContactInstance::hasInternalMaterial() { verifyIndex();
return getData()->hasInternalMaterial[getIndex()]; }
528 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::hasInternalMaterial()
const { verifyIndex();
return getData()->hasInternalMaterial[getIndex()]; }
530 AGX_FORCE_INLINE agx::Bool& GeometryContactInstance::usingPPGS() { verifyIndex();
return getData()->usingPPGS[getIndex()]; }
531 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::usingPPGS()
const { verifyIndex();
return getData()->usingPPGS[getIndex()]; }
533 AGX_FORCE_INLINE void*& GeometryContactInstance::customData() { verifyIndex();
return getData()->customData[getIndex()]; }
534 AGX_FORCE_INLINE void*
const& GeometryContactInstance::customData()
const { verifyIndex();
return getData()->customData[getIndex()]; }
550#undef AGX_ENTITY_WRAPPER
551#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
Pointer to a entity instance of type Physics.BroadPhasePair.
Pointer to a entity instance of type Physics.Geometry.
Pointer to a entity instance of type Physics.RigidBody.
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.