21#ifndef GENERATED_AGX_PHYSICS_CONTACT_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_CONTACT_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 )
51namespace agx {
namespace Physics {
class ContactMaterialPtr; }}
61 class ContactInstance;
62 class ContactSemantics;
100 virtual void configure(agx::TiXmlElement* eEntity)
override;
108 #ifndef AGX_PHYSICS_CONTACT_DATA_SET_OVERRIDE
109 #define AGX_PHYSICS_CONTACT_DATA_SET
113 ContactInstance operator[] (
size_t index);
133 virtual ~ContactData() {}
134 virtual void setNumElements(
agx::Index numElements)
override;
137 ContactData& operator= (
const ContactData&) {
return *
this; }
160 void setContactZoneIndex(
agx::UInt32 const& value);
165 friend class ContactPtr;
166 friend class ContactInstance;
227 ContactInstance(ContactData* data,
agx::Index index);
232 ContactData* getData();
233 const ContactData* getData()
const;
270 inline ContactInstance
agx::Physics::ContactData::operator[] (
size_t index) {
return ContactInstance(
this, (
agx::Index)index); }
277 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
284 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
292 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
293 EntityPtr::getModel()->fullPath().c_str(), ContactModel::instance()->fullPath().c_str());
301 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
302 EntityPtr::getModel()->fullPath().c_str(), ContactModel::instance()->fullPath().c_str());
308 AGX_FORCE_INLINE ContactSemantics* ContactPtr::operator->() {
return (ContactSemantics* )
this; }
309 AGX_FORCE_INLINE const ContactSemantics* ContactPtr::operator->()
const {
return (
const ContactSemantics* )
this; }
313 AGX_FORCE_INLINE agx::UInt32& ContactPtr::constraintIndex() { verifyIndex();
return getData()->constraintIndex[calculateIndex()]; }
314 AGX_FORCE_INLINE agx::UInt32 const& ContactPtr::constraintIndex()
const { verifyIndex();
return getData()->constraintIndex[calculateIndex()]; }
319 AGX_FORCE_INLINE agx::UInt32& ContactPtr::contactZoneIndex() { verifyIndex();
return getData()->contactZoneIndex[calculateIndex()]; }
320 AGX_FORCE_INLINE agx::UInt32 const& ContactPtr::contactZoneIndex()
const { verifyIndex();
return getData()->contactZoneIndex[calculateIndex()]; }
322 AGX_FORCE_INLINE agx::UInt16& ContactPtr::contactZoneSlot() { verifyIndex();
return getData()->contactZoneSlot[calculateIndex()]; }
323 AGX_FORCE_INLINE agx::UInt16 const& ContactPtr::contactZoneSlot()
const { verifyIndex();
return getData()->contactZoneSlot[calculateIndex()]; }
332 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
339 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
348 AGX_FORCE_INLINE agx::UInt32 const& ContactInstance::constraintIndex()
const { verifyIndex();
return getData()->constraintIndex[getIndex()]; }
353 AGX_FORCE_INLINE agx::UInt32& ContactInstance::contactZoneIndex() { verifyIndex();
return getData()->contactZoneIndex[getIndex()]; }
354 AGX_FORCE_INLINE agx::UInt32 const& ContactInstance::contactZoneIndex()
const { verifyIndex();
return getData()->contactZoneIndex[getIndex()]; }
357 AGX_FORCE_INLINE agx::UInt16 const& ContactInstance::contactZoneSlot()
const { verifyIndex();
return getData()->contactZoneSlot[getIndex()]; }
373#undef AGX_ENTITY_WRAPPER
374#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.Interaction entity.
Pointer to a entity instance of type Physics.Interaction.
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.