21#ifndef GENERATED_AGX_PHYSICS_GEOMETRY_SHAPE_H_PLUGIN
22#define GENERATED_AGX_PHYSICS_GEOMETRY_SHAPE_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; }}
108 virtual void configure(agx::TiXmlElement* eEntity)
override;
116 #ifndef AGX_PHYSICS_GEOMETRY_SHAPE_DATA_SET_OVERRIDE
117 #define AGX_PHYSICS_GEOMETRY_SHAPE_DATA_SET
121 ShapeInstance operator[] (
size_t index);
147 virtual ~ShapeData() {}
148 virtual void setNumElements(
agx::Index numElements)
override;
151 ShapeData& operator= (
const ShapeData&) {
return *
this; }
185 friend class ShapePtr;
186 friend class ShapeInstance;
265 ShapeInstance(ShapeData* data,
agx::Index index);
270 ShapeData* getData();
271 const ShapeData* getData()
const;
323 inline ShapeInstance
agx::Physics::Geometry::ShapeData::operator[] (
size_t index) {
return ShapeInstance(
this, (
agx::Index)index); }
330 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
337 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
345 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
346 EntityPtr::getModel()->fullPath().c_str(), ShapeModel::instance()->fullPath().c_str());
354 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
355 EntityPtr::getModel()->fullPath().c_str(), ShapeModel::instance()->fullPath().c_str());
361 AGX_FORCE_INLINE ShapeSemantics* ShapePtr::operator->() {
return (ShapeSemantics* )
this; }
362 AGX_FORCE_INLINE const ShapeSemantics* ShapePtr::operator->()
const {
return (
const ShapeSemantics* )
this; }
370 AGX_FORCE_INLINE agx::Bool const& ShapePtr::inGroup()
const { verifyIndex();
return getData()->inGroup[calculateIndex()]; }
382 AGX_FORCE_INLINE agx::UInt32 const& ShapePtr::modifiedCount()
const { verifyIndex();
return getData()->modifiedCount[calculateIndex()]; }
394 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
401 "Entity type mismatch. Storage contains entity data for type \'%s\', instance pointer is of type \'%s\'",
413 AGX_FORCE_INLINE agx::Bool const& ShapeInstance::inGroup()
const { verifyIndex();
return getData()->inGroup[getIndex()]; }
425 AGX_FORCE_INLINE agx::UInt32 const& ShapeInstance::modifiedCount()
const { verifyIndex();
return getData()->modifiedCount[getIndex()]; }
445#undef AGX_ENTITY_WRAPPER
446#undef AGX_ENTITY_NAMESPACE
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGX_TYPE_BINDING(_Type, _Name)
#define AGXPHYSICS_EXPORT
Axis aligned bounding box implementation.
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.Geometry.
Abstract description of the data attributes for the Physics.Geometry.Shape entity.
static agxData::ScalarAttributeT< agx::Bool > * inGroupAttribute
static ShapePtr createInstance()
Create and return a pointer to a new instance in the default storage for this entity model.
static agxData::ScalarAttributeT< agx::AffineMatrix4x4 > * transformAttribute
static agxData::EntityStorage * defaultStorage()
static agxData::ScalarAttributeT< agx::Physics::GeometryPtr > * geometryAttribute
virtual void shutdownCleanup() override
This is part of internal cleanup and should not be called by users.
virtual void initAttributeAccessors() override
static ShapeModel * instance()
virtual agxData::EntityData * createData(agxData::EntityStorage *storage) override
static agxData::ScalarAttributeT< agx::UInt8 > * typeAttribute
ShapeModel(const agx::String &name="Shape")
virtual void configure(agx::TiXmlElement *eEntity) override
static agxData::PointerAttributeT< agxCollide::Shape * > * modelAttribute
void construct(agx::Physics::Geometry::ShapePtr shape)
static agxData::ScalarAttributeT< agx::UInt32 > * modifiedCountAttribute
virtual void construct(agxData::EntityPtr instance) override
static agxData::ScalarAttributeT< agxCollide::BoundingAABB > * boundingAABBAttribute
Pointer to a entity instance of type Physics.Geometry.Shape.
AGXPHYSICS_EXPORT agx::UInt8 & type()
AGXPHYSICS_EXPORT const ShapeSemantics * operator->() const
AGXPHYSICS_EXPORT agx::Bool const & inGroup() const
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 & transform()
AGXPHYSICS_EXPORT ShapePtr(agxData::EntityStorage *storage, agx::Index id)
AGXPHYSICS_EXPORT ShapeInstance instance()
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr & geometry()
AGXPHYSICS_EXPORT agx::UInt8 const & type() const
AGXPHYSICS_EXPORT ShapePtr()
ShapeInstance InstanceType
AGXPHYSICS_EXPORT agx::UInt32 & modifiedCount()
AGXPHYSICS_EXPORT agx::UInt32 const & modifiedCount() const
AGXPHYSICS_EXPORT agxCollide::Shape *& model()
AGXPHYSICS_EXPORT agxCollide::Shape *const & model() const
AGXPHYSICS_EXPORT agx::Bool & inGroup()
AGXPHYSICS_EXPORT ShapeSemantics * operator->()
AGXPHYSICS_EXPORT agx::Physics::GeometryPtr const & geometry() const
const ShapeData * getData() const
AGXPHYSICS_EXPORT agxCollide::BoundingAABB const & boundingAABB() const
AGXPHYSICS_EXPORT agxCollide::BoundingAABB & boundingAABB()
AGXPHYSICS_EXPORT agx::AffineMatrix4x4 const & transform() const
AGXPHYSICS_EXPORT ShapePtr(const agxData::EntityPtr &ptr)
AGXPHYSICS_EXPORT ShapePtr(const agxData::EntityInstance &instance)
AGXPHYSICS_EXPORT const ShapeInstance instance() const
Abstract description of the data attributes for the Referenced entity.
Pointer to a entity instance of type Referenced.
Vector containing 'raw' data.
#define agxAssertN(expr, format,...)
#define DOXYGEN_END_INTERNAL_BLOCK()
#define DOXYGEN_START_INTERNAL_BLOCK()
This namespace consists of a set of classes for handling geometric intersection tests including boole...
Contains classes for low level data storage for AGX.
agxData::EntityRef< ShapePtr > ShapeRef
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
AGXCORE_EXPORT Model * getModel(const Path &path, const Path &_namespace=Path())