103 bool isGroup()
const;
108 ShapeGroup* asGroup();
113 const ShapeGroup* asGroup()
const;
124 virtual bool hasSupportFunction()
const;
182 const Geometry* getGeometry()
const;
205 void store(
agxStream::OutputArchive& out ) const override;
206 void restore(
agxStream::InputArchive& in ) override;
239 agx::UInt32 incrementModifiedCount();
254 friend class ShapeGroup;
260 virtual
void setGeometry(
Geometry* geometry);
261 virtual
void transfer(
Space* space);
263 virtual
void updateGeometryPtr();
266 friend class
agx::InternalData;
270 agx::Referenced* getInternalData() const;
275 void setInternalData(
agx::Referenced* data );
280 void syncronizeShapeIndex();
287 ShapeGroup* m_parent;
289 agx::ref_ptr<
agx::Referenced> m_internalData;
301 virtual Shape *clone()
const override;
304 void removeChild(
Shape* shape);
305 void removeChild(
size_t index);
316 size_t getNumChildren()
const;
317 Shape* getChild(
size_t index);
318 const Shape* getChild(
size_t index)
const;
340 virtual agx::Real getVolume()
const override;
343 virtual agx::Vec3 getCenter()
const override;
346 virtual const BoundingAABB& updateBoundingVolume()
override;
349 virtual BoundingAABB calculateLocalBound()
const override;
356 virtual ~ShapeGroup();
362 virtual void updateGeometryPtr()
override;
363 virtual void setGeometry(
Geometry* geometry)
override;
364 virtual void transfer(
Space* space)
override;
376 const Shape* getShape()
const;
379 bool isValid()
const;
398 return m_entity.type();
402 return getType() == GROUP;
407 return static_cast<ShapeGroup*
>(
this);
411 return const_cast<Shape*
>(
this)->asGroup();
428 return m_entity.transform();
433 return m_entity.boundingAABB();
443 return m_children.size();
447 return m_children[index];
451 return m_children[index];
455 return getEntity().childTransforms()[index];
475 return m_entity.modifiedCount();
480 return ++m_entity.modifiedCount();
487 return m_shapes[m_index];
492 return const_cast<ShapeIterator*
>(
this)->getShape();
498 return m_transforms[m_index];
503 return m_index < m_shapes.size();
512 inline bool Shape::hasSupportFunction()
const
529 return m_internalData;
#define AGX_DECLARE_POINTER_TYPES(type)
#define AGXSTREAM_DECLARE_ABSTRACT_SERIALIZABLE(T)
Use this in a pure abstract Serializable class to add the required methods Important: Use full namesp...
#define AGXSTREAM_DECLARE_SERIALIZABLE(T)
Use this in a Serializable class to add the required methods Important: Use full namespace in the dec...
#define AGXPHYSICS_EXPORT
#define AGX_DECLARE_VECTOR_TYPES(type)
Axis aligned bounding box implementation.
The geometry representation used by the collision detection engine.
Class for storing rendering information for a Shape.
Type
Define the type of a Shape.
virtual Shape * clone() const
Create a clone.
virtual void propagateTransform(const agx::AffineMatrix4x4 &transform)
const char * getTypeName() const
virtual agx::Real calculateBoundingRadius(BoundingAABB &localAABB) const
Calculate the bounding volume (AABB) into localAABB and calculate the bounding radius based on the ne...
virtual BoundingAABB calculateLocalBound() const =0
Calculate the bounding volume in the local coordinate system.
agx::AffineMatrix4x4 getLocalTransform() const
virtual agx::Real getVolume() const =0
Return the volume of the shape.
virtual const BoundingAABB & updateBoundingVolume()=0
Calculate the bounding volume based on the current Shape parameters including transformation.
static const char * getTypeName(agx::UInt8 type)
virtual agx::SPDMatrix3x3 calculateInertia(agx::Real mass) const =0
Calculate the inertia for the shape given a mass.
This class contains all Geometries and performs Broad Phase and Narrow Phase collision detection to c...
This class is an abstract base class for all classes that can be stored and retrieved from an Archive...
Pointer to a entity instance of type Physics.Geometry.ShapeGroup.
Pointer to a entity instance of type Physics.Geometry.Shape.
Base class providing referencing counted objects.
Specialized type of matrices for holding symmetric positive definite matrices.
Vector containing 'raw' data.
#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...
agx::Vector< agx::ref_ptr< Shape > > ShapeRefVector
AGXCORE_EXPORT EntityModel * getEntity(const agx::Path &path)
Get a entity with a specified path.
This namespace contain classes for streaming classes into archives, ASCII, binary for storage (serial...
The agxTerrain namespace contains a 3D model for a dynamic deformable Terrain and related classes.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
Vec3T< Real > Vec3
The object holding 3 dimensional vectors and providing basic arithmetic.