AGX Dynamics 2.42.2.1
Loading...
Searching...
No Matches
GeometryContactEntity.h
Go to the documentation of this file.
1/*
2Copyright 2007-2025. Algoryx Simulation AB.
3
4All AGX source code, intellectual property, documentation, sample code,
5tutorials, scene files and technical white papers, are copyrighted, proprietary
6and confidential material of Algoryx Simulation AB. You may not download, read,
7store, distribute, publish, copy or otherwise disseminate, use or expose this
8material unless having a written signed agreement with Algoryx Simulation AB, or
9having been advised so by Algoryx Simulation AB for a time limited evaluation,
10or having purchased a valid commercial license from Algoryx Simulation AB.
11
12Algoryx Simulation AB disclaims all responsibilities for loss or damage caused
13from using this software, unless otherwise stated in written agreements with
14Algoryx Simulation AB.
15*/
16
18// AUTOMATICALLY GENERATED ENTITY, DO NOT EDIT! //
20
21#ifndef GENERATED_AGX_PHYSICS_GEOMETRYCONTACT_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_GEOMETRYCONTACT_H_PLUGIN
23
24#define AGX_ENTITY_WRAPPER 1
25
26
27#ifdef _MSC_VER
28# pragma warning(push)
29// warning C4505: 'agxData::VectorAttributeT<T>::print' : unreferenced local function has been removed
30# pragma warning( disable : 4505 )
31// warning C4251: 'X' : class 'Y' needs to have dll-interface to be used by clients of class 'Z'
32# pragma warning( disable : 4251 )
33// warning C4355: 'this' : used in base member initializer list
34# pragma warning( disable : 4355 )
35// marked as __forceinline not inlined
36# pragma warning( disable: 4714 )
37#endif
38
39#include <agxData/EntityModel.h>
41#include <agxData/EntityRef.h>
42#include <agxData/EntityPtr.h>
44#include <agx/Integer.h>
45#include <agx/Real.h>
46#include <agx/macros.h>
52#include <agx/Integer.h>
53
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; }}
60
61namespace agx
62{
63 namespace Physics
64 {
65
66 class GeometryContactModel;
67 class GeometryContactData;
68 class GeometryContactPtr;
69 class GeometryContactInstance;
70 class GeometryContactSemantics;
71
72
74
80 {
81 public:
83
84 GeometryContactModel(const agx::String& name = "GeometryContact");
85
88
91
94
96 virtual void shutdownCleanup() override;
97
98
99
100 /* Attributes */
113
114 protected:
116 virtual agxData::EntityData* createData(agxData::EntityStorage* storage) override;
117 virtual void configure(agx::TiXmlElement* eEntity) override;
118 virtual void initAttributeAccessors() override;
119 virtual void construct(agxData::EntityPtr instance) override;
121 };
122
123
125 #ifndef AGX_PHYSICS_GEOMETRYCONTACT_DATA_SET_OVERRIDE
126 #define AGX_PHYSICS_GEOMETRYCONTACT_DATA_SET
127 class AGXPHYSICS_EXPORT GeometryContactData : public agx::Physics::ContactData
128 {
129 public:
130 GeometryContactInstance operator[] (size_t index);
131
132 public:
141 agxData::Array< agx::Bool > immediately;
142 agxData::Array< agx::Bool > hasSurfaceVelocity;
143 agxData::Array< agx::Bool > hasInternalMaterial;
145 agxData::Array< void* > customData;
146
147 public:
148 typedef agx::Physics::GeometryPtr geometry1Type;
149 typedef agx::Physics::GeometryPtr geometry2Type;
150 typedef agx::Physics::RigidBodyPtr body1Type;
151 typedef agx::Physics::RigidBodyPtr body2Type;
153 typedef agx::Physics::BroadPhasePairPtr broadPhasePairType;
154 typedef agx::Bool enabledType;
155 typedef agx::Bool immediatelyType;
156 typedef agx::Bool hasSurfaceVelocityType;
157 typedef agx::Bool hasInternalMaterialType;
158 typedef agx::Bool usingPPGSType;
159 typedef void* customDataType;
160
161 public:
162 GeometryContactData(agxData::EntityStorage* storage);
163 GeometryContactData();
164
165 protected:
166 virtual ~GeometryContactData() {}
167 virtual void setNumElements(agx::Index numElements) override;
168
169 private:
170 GeometryContactData& operator= (const GeometryContactData&) { return *this; }
171
172 };
173 #endif
175
176
178 class AGXPHYSICS_EXPORT GeometryContactSemantics : public agx::Physics::ContactSemantics
179 {
180 public:
181
182 // Automatic getters
183 agx::Physics::GeometryPtr const& getGeometry1() const;
184 agx::Physics::GeometryPtr const& getGeometry2() const;
185 agx::Physics::RigidBodyPtr const& getBody1() const;
186 agx::Physics::RigidBodyPtr const& getBody2() const;
188 agx::Physics::BroadPhasePairPtr const& getBroadPhasePair() const;
189 agx::Bool const& getEnabled() const;
190 agx::Bool const& getImmediately() const;
191 agx::Bool const& getHasSurfaceVelocity() const;
192 agx::Bool const& getHasInternalMaterial() const;
193 agx::Bool const& getUsingPPGS() const;
194 void* const& getCustomData() const;
195
196 // Semantics defined by explicit kernels
197
198 // Automatic setters
199 void setGeometry1(agx::Physics::GeometryPtr const& value);
200 void setGeometry2(agx::Physics::GeometryPtr const& value);
201 void setBody1(agx::Physics::RigidBodyPtr const& value);
202 void setBody2(agx::Physics::RigidBodyPtr const& value);
203 void setPoints(agxData::Array< agx::Physics::ContactPointPtr > const& value);
204 void setBroadPhasePair(agx::Physics::BroadPhasePairPtr const& value);
205 void setEnabled(agx::Bool const& value);
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);
211
212
213 protected:
214 friend class GeometryContactPtr;
215 friend class GeometryContactInstance;
216 GeometryContactSemantics();
217 };
219
220
221
224 class CALLABLE GeometryContactPtr : public agx::Physics::ContactPtr
225 {
226 public:
228 typedef GeometryContactData DataType;
229 typedef GeometryContactInstance InstanceType;
230
231 public:
238 AGXPHYSICS_EXPORT GeometryContactInstance instance();
239 AGXPHYSICS_EXPORT const GeometryContactInstance instance() const;
240
241 AGXPHYSICS_EXPORT GeometryContactSemantics* operator->();
242 AGXPHYSICS_EXPORT const GeometryContactSemantics* operator->() const;
243
244 GeometryContactData* getData();
245 const GeometryContactData* getData() const;
246
247
252
257
262
267
272
277
282
287
292
297
302
306 AGXPHYSICS_EXPORT void* const& customData() const;
307
308 };
309
310
312 class AGXPHYSICS_EXPORT GeometryContactInstance : public agx::Physics::ContactInstance
313 {
314 public:
315 GeometryContactInstance();
316 GeometryContactInstance(GeometryContactData* data, agx::Index index);
317 GeometryContactInstance(agxData::EntityStorage *storage, agx::Index index);
318 GeometryContactInstance(const agxData::EntityInstance& other);
319 GeometryContactInstance(const agxData::EntityPtr& ptr);
320
321 GeometryContactData* getData();
322 const GeometryContactData* getData() const;
323
324 public:
326 agx::Physics::GeometryPtr& geometry1();
328 agx::Physics::GeometryPtr const& geometry1() const;
329
331 agx::Physics::GeometryPtr& geometry2();
333 agx::Physics::GeometryPtr const& geometry2() const;
334
338 agx::Physics::RigidBodyPtr const& body1() const;
339
343 agx::Physics::RigidBodyPtr const& body2() const;
344
349
351 agx::Physics::BroadPhasePairPtr& broadPhasePair();
353 agx::Physics::BroadPhasePairPtr const& broadPhasePair() const;
354
356 agx::Bool& enabled();
358 agx::Bool const& enabled() const;
359
361 agx::Bool& immediately();
363 agx::Bool const& immediately() const;
364
366 agx::Bool& hasSurfaceVelocity();
368 agx::Bool const& hasSurfaceVelocity() const;
369
371 agx::Bool& hasInternalMaterial();
373 agx::Bool const& hasInternalMaterial() const;
374
376 agx::Bool& usingPPGS();
378 agx::Bool const& usingPPGS() const;
379
381 void*& customData();
383 void* const& customData() const;
384
385 };
387
388
389
392
393
394
396 /* Implementation */
397 //-----------------------------------------------------------------------------------------------------
398 //-----------------------------------------------------------------------------------------------------
399 inline GeometryContactInstance agx::Physics::GeometryContactData::operator[] (size_t index) { return GeometryContactInstance(this, (agx::Index)index); }
400 //-----------------------------------------------------------------------------------------------------
402 AGX_FORCE_INLINE GeometryContactPtr::GeometryContactPtr(agxData::EntityStorage* storage, agx::Index id) : agx::Physics::ContactPtr(storage, id) {}
403 AGX_FORCE_INLINE GeometryContactPtr::GeometryContactPtr(const agxData::EntityPtr& ptr) : agx::Physics::ContactPtr(ptr)
404 {
406 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
407 EntityPtr::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
408 }
409
410 AGX_FORCE_INLINE GeometryContactPtr::GeometryContactPtr(const agxData::EntityInstance& instance) : agx::Physics::ContactPtr(instance)
411 {
413 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
414 EntityPtr::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
415 }
416
417 AGX_FORCE_INLINE GeometryContactPtr& GeometryContactPtr::operator= (const agxData::EntityPtr& ptr)
418 {
420 agxAssertN(!ptr || ptr.isInstanceOf(GeometryContactModel::instance()),
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());
423 return *this;
424 }
425
426 AGX_FORCE_INLINE GeometryContactPtr& GeometryContactPtr::operator= (const agxData::EntityInstance& instance)
427 {
429 agxAssertN(!instance || instance.isInstanceOf(GeometryContactModel::instance()),
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());
432 return *this;
433 }
434
435 inline GeometryContactInstance GeometryContactPtr::instance() { return agxData::EntityPtr::instance(); }
436 inline const GeometryContactInstance GeometryContactPtr::instance() const { return agxData::EntityPtr::instance(); }
437 AGX_FORCE_INLINE GeometryContactSemantics* GeometryContactPtr::operator->() { return (GeometryContactSemantics* )this; }
438 AGX_FORCE_INLINE const GeometryContactSemantics* GeometryContactPtr::operator->() const { return (const GeometryContactSemantics* )this; }
439 AGX_FORCE_INLINE GeometryContactData* GeometryContactPtr::getData() { return static_cast<GeometryContactData* >(agxData::EntityPtr::getData()); }
440 AGX_FORCE_INLINE const GeometryContactData* GeometryContactPtr::getData() const { return static_cast<const GeometryContactData* >(agxData::EntityPtr::getData()); }
441
442 AGX_FORCE_INLINE agx::Physics::GeometryPtr& GeometryContactPtr::geometry1() { verifyIndex(); return getData()->geometry1[calculateIndex()]; }
443 AGX_FORCE_INLINE agx::Physics::GeometryPtr const& GeometryContactPtr::geometry1() const { verifyIndex(); return getData()->geometry1[calculateIndex()]; }
444
445 AGX_FORCE_INLINE agx::Physics::GeometryPtr& GeometryContactPtr::geometry2() { verifyIndex(); return getData()->geometry2[calculateIndex()]; }
446 AGX_FORCE_INLINE agx::Physics::GeometryPtr const& GeometryContactPtr::geometry2() const { verifyIndex(); return getData()->geometry2[calculateIndex()]; }
447
448 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr& GeometryContactPtr::body1() { verifyIndex(); return getData()->body1[calculateIndex()]; }
449 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr const& GeometryContactPtr::body1() const { verifyIndex(); return getData()->body1[calculateIndex()]; }
450
451 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr& GeometryContactPtr::body2() { verifyIndex(); return getData()->body2[calculateIndex()]; }
452 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr const& GeometryContactPtr::body2() const { verifyIndex(); return getData()->body2[calculateIndex()]; }
453
454 AGX_FORCE_INLINE agxData::Array< agx::Physics::ContactPointPtr >& GeometryContactPtr::points() { verifyIndex(); return getData()->points[calculateIndex()]; }
455 AGX_FORCE_INLINE agxData::Array< agx::Physics::ContactPointPtr > const& GeometryContactPtr::points() const { verifyIndex(); return getData()->points[calculateIndex()]; }
456
457 AGX_FORCE_INLINE agx::Physics::BroadPhasePairPtr& GeometryContactPtr::broadPhasePair() { verifyIndex(); return getData()->broadPhasePair[calculateIndex()]; }
458 AGX_FORCE_INLINE agx::Physics::BroadPhasePairPtr const& GeometryContactPtr::broadPhasePair() const { verifyIndex(); return getData()->broadPhasePair[calculateIndex()]; }
459
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()]; }
462
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()]; }
465
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()]; }
468
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()]; }
471
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()]; }
474
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()]; }
477
478 //-----------------------------------------------------------------------------------------------------
479 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance() {}
480 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance(GeometryContactData* data, agx::Index index) : agx::Physics::ContactInstance(data, index) {}
481 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance(agxData::EntityStorage* storage, agx::Index index) : agx::Physics::ContactInstance(storage, index) {}
482 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance(const agxData::EntityInstance& other) : agx::Physics::ContactInstance(other)
483 {
485 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
486 EntityInstance::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
487 }
488
489 AGX_FORCE_INLINE GeometryContactInstance::GeometryContactInstance(const agxData::EntityPtr& ptr) : agx::Physics::ContactInstance(ptr)
490 {
492 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
493 EntityInstance::getModel()->fullPath().c_str(), GeometryContactModel::instance()->fullPath().c_str());
494 }
495
496
497 AGX_FORCE_INLINE GeometryContactData* GeometryContactInstance::getData() { return static_cast<GeometryContactData* >(agxData::EntityInstance::getData()); }
498 AGX_FORCE_INLINE const GeometryContactData* GeometryContactInstance::getData() const { return static_cast<const GeometryContactData* >(agxData::EntityInstance::getData()); }
499
500 AGX_FORCE_INLINE agx::Physics::GeometryPtr& GeometryContactInstance::geometry1() { verifyIndex(); return getData()->geometry1[getIndex()]; }
501 AGX_FORCE_INLINE agx::Physics::GeometryPtr const& GeometryContactInstance::geometry1() const { verifyIndex(); return getData()->geometry1[getIndex()]; }
502
503 AGX_FORCE_INLINE agx::Physics::GeometryPtr& GeometryContactInstance::geometry2() { verifyIndex(); return getData()->geometry2[getIndex()]; }
504 AGX_FORCE_INLINE agx::Physics::GeometryPtr const& GeometryContactInstance::geometry2() const { verifyIndex(); return getData()->geometry2[getIndex()]; }
505
506 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr& GeometryContactInstance::body1() { verifyIndex(); return getData()->body1[getIndex()]; }
507 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr const& GeometryContactInstance::body1() const { verifyIndex(); return getData()->body1[getIndex()]; }
508
509 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr& GeometryContactInstance::body2() { verifyIndex(); return getData()->body2[getIndex()]; }
510 AGX_FORCE_INLINE agx::Physics::RigidBodyPtr const& GeometryContactInstance::body2() const { verifyIndex(); return getData()->body2[getIndex()]; }
511
512 AGX_FORCE_INLINE agxData::Array< agx::Physics::ContactPointPtr >& GeometryContactInstance::points() { verifyIndex(); return getData()->points[getIndex()]; }
513 AGX_FORCE_INLINE agxData::Array< agx::Physics::ContactPointPtr > const& GeometryContactInstance::points() const { verifyIndex(); return getData()->points[getIndex()]; }
514
515 AGX_FORCE_INLINE agx::Physics::BroadPhasePairPtr& GeometryContactInstance::broadPhasePair() { verifyIndex(); return getData()->broadPhasePair[getIndex()]; }
516 AGX_FORCE_INLINE agx::Physics::BroadPhasePairPtr const& GeometryContactInstance::broadPhasePair() const { verifyIndex(); return getData()->broadPhasePair[getIndex()]; }
517
518 AGX_FORCE_INLINE agx::Bool& GeometryContactInstance::enabled() { verifyIndex(); return getData()->enabled[getIndex()]; }
519 AGX_FORCE_INLINE agx::Bool const& GeometryContactInstance::enabled() const { verifyIndex(); return getData()->enabled[getIndex()]; }
520
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()]; }
523
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()]; }
526
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()]; }
529
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()]; }
532
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()]; }
535
536 //-----------------------------------------------------------------------------------------------------
537 AGX_FORCE_INLINE GeometryContactSemantics::GeometryContactSemantics() {}
538 //-----------------------------------------------------------------------------------------------------
540 }
541}
542
543AGX_TYPE_BINDING(agx::Physics::GeometryContactPtr, "Physics.GeometryContactPtr")
544AGX_TYPE_BINDING(agx::Physics::GeometryContactInstance, "Physics.GeometryContactInstance")
545
546#ifdef _MSC_VER
547# pragma warning(pop)
548#endif
549
550#undef AGX_ENTITY_WRAPPER
551#undef AGX_ENTITY_NAMESPACE
552#endif
553
#define AGX_DECLARE_POINTER_TYPES(type)
Definition: Referenced.h:254
#define AGX_TYPE_BINDING(_Type, _Name)
Definition: Type.h:179
#define AGXPHYSICS_EXPORT
Type-specific Array used for fast access into the data held by a Buffer.
Definition: Array.h:107
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...
Definition: EntityPtr.h:52
EntityPtr & operator=(const EntityPtr &other)=default
bool isInstanceOf(agxData::EntityModel *model) const
agxData::EntityData * getData()
agxData::EntityInstance instance()
Definition: EntityPtr.h:269
Data storage for a collection of entity instances of a specified EntityModel.
Definition: EntityStorage.h:73
agx::String fullPath() const
Pointer to a entity instance of type Physics.BroadPhasePair.
Abstract description of the data attributes for the Physics.Contact entity.
Definition: ContactEntity.h:71
Pointer to a entity instance of type Physics.Contact.
Abstract description of the data attributes for the Physics.GeometryContact entity.
static GeometryContactPtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
static agxData::ScalarAttributeT< agx::Physics::RigidBodyPtr > * body1Attribute
static agxData::ScalarAttributeT< agx::Physics::BroadPhasePairPtr > * broadPhasePairAttribute
static agxData::EntityStorage * defaultStorage()
static agxData::ScalarAttributeT< agx::Bool > * usingPPGSAttribute
static agxData::ScalarAttributeT< agx::Bool > * immediatelyAttribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
GeometryContactModel(const agx::String &name="GeometryContact")
virtual void construct(agxData::EntityPtr instance) override
void construct(agx::Physics::GeometryContactPtr geometryContact)
static agxData::PointerAttributeT< void * > * customDataAttribute
static agxData::ScalarAttributeT< agx::Physics::GeometryPtr > * geometry1Attribute
static agxData::ScalarAttributeT< agx::Bool > * hasSurfaceVelocityAttribute
static agxData::ArrayAttributeT< agx::Physics::ContactPointPtr > * pointsAttribute
static agxData::ScalarAttributeT< agx::Bool > * enabledAttribute
static GeometryContactModel * instance()
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
virtual void configure(agx::TiXmlElement *eEntity) override
virtual void initAttributeAccessors() override
static agxData::ScalarAttributeT< agx::Physics::GeometryPtr > * geometry2Attribute
static agxData::ScalarAttributeT< agx::Bool > * hasInternalMaterialAttribute
static agxData::ScalarAttributeT< agx::Physics::RigidBodyPtr > * body2Attribute
A geometry contact hold contact information between two geometries.
GeometryContactData * getData()
AGXPHYSICS_EXPORT agx::Physics::RigidBodyPtr & body1()
body1 is the rigid body of geometry1, can be assumed to be a valid rigid body.
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr const & geometry2() const
AGXPHYSICS_EXPORT agx::Bool & hasInternalMaterial()
AGXPHYSICS_EXPORT void *& customData()
AGXPHYSICS_EXPORT agx::Bool const & immediately() const
AGXPHYSICS_EXPORT agx::Bool & hasSurfaceVelocity()
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr const & geometry1() const
AGXPHYSICS_EXPORT const GeometryContactInstance instance() const
AGXPHYSICS_EXPORT agx::Physics::RigidBodyPtr const & body1() const
body1 is the rigid body of geometry1, can be assumed to be a valid rigid body.
AGXPHYSICS_EXPORT agx::Bool & enabled()
AGXPHYSICS_EXPORT GeometryContactPtr()
AGXPHYSICS_EXPORT agx::Bool & usingPPGS()
AGXPHYSICS_EXPORT GeometryContactPtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT agxData::Array< agx::Physics::ContactPointPtr > & points()
The list of contact points.
AGXPHYSICS_EXPORT agx::Bool const & usingPPGS() const
AGXPHYSICS_EXPORT const GeometryContactSemantics * operator->() const
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr & geometry2()
AGXPHYSICS_EXPORT agx::Bool const & hasInternalMaterial() const
AGXPHYSICS_EXPORT agx::Physics::BroadPhasePairPtr & broadPhasePair()
AGXPHYSICS_EXPORT agxData::Array< agx::Physics::ContactPointPtr > const & points() const
The list of contact points.
AGXPHYSICS_EXPORT agx::Physics::RigidBodyPtr & body2()
body2 is the rigid body of geometry2, can be NULL.
AGXPHYSICS_EXPORT agx::Bool & immediately()
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr & geometry1()
AGXPHYSICS_EXPORT agx::Physics::RigidBodyPtr const & body2() const
body2 is the rigid body of geometry2, can be NULL.
AGXPHYSICS_EXPORT agx::Physics::BroadPhasePairPtr const & broadPhasePair() const
AGXPHYSICS_EXPORT agx::Bool const & hasSurfaceVelocity() const
AGXPHYSICS_EXPORT GeometryContactPtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT agx::Bool const & enabled() const
AGXPHYSICS_EXPORT GeometryContactPtr(agxData::EntityStorage *storage, agx::Index id)
AGXPHYSICS_EXPORT void *const & customData() const
AGXPHYSICS_EXPORT GeometryContactSemantics * operator->()
const GeometryContactData * getData() const
AGXPHYSICS_EXPORT GeometryContactInstance instance()
Pointer to a entity instance of type Physics.Geometry.
Pointer to a entity instance of type Physics.RigidBody.
Vector containing 'raw' data.
Definition: agx/Vector.h:246
#define agxAssertN(expr, format,...)
Definition: debug.h:145
#define DOXYGEN_END_INTERNAL_BLOCK()
Definition: macros.h:89
#define CALLABLE
Definition: macros.h:72
#define DOXYGEN_START_INTERNAL_BLOCK()
Definition: macros.h:88
#define AGX_FORCE_INLINE
Definition: macros.h:58
Contains classes for low level data storage for AGX.
Definition: Container.h:23
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
bool Bool
Definition: Integer.h:40
UInt32 Index
Definition: Integer.h:44