17#ifndef AGXUTIL_COLLECT_BODIES_AND_WIRES_VISITOR_H
18#define AGXUTIL_COLLECT_BODIES_AND_WIRES_VISITOR_H
67 m_bodies.insert(body);
78 if ( listener ==
nullptr )
82 if (wire ==
nullptr || m_wires.contains( wire ) || wire->getConstraint() ==
nullptr)
86 for (
auto it = constraint->getBeginIterator(); it != constraint->getEndIterator(); ++it) {
87 auto rb = (*it)->getRigidBody();
89 m_bodies.insert( rb );
91 m_userWireNodes.push_back( *it );
#define AGXPHYSICS_EXPORT
Class for visiting all elements in a tree of Assemblies.
virtual void visit(agx::Constraint *)
An assembly is a collection of basic simulation objects, such as rigid bodies, constraints,...
virtual void traverse(AssemblyVisitor *visitor)
Traverse the assembly tree recursively using a visitor.
An EventListener can be associated to a Simulation and triggered upon various events.
This visitor will visit each rigid body and wire in an assembly (or collection) and extract them to a...
RigidBodyPtrSetVector m_bodies
virtual ~CollectBodiesAndWiresVisitor()
Destructor.
WireNodeRefVector m_userWireNodes
const WireNodeRefVector & getUserWireNodes() const
virtual void visit(agxSDK::EventListener *listener)
CollectBodiesAndWiresVisitor()
Constructor.
virtual void visit(const agxSDK::EventListener *listener) const
const WirePtrSetVector & getWires() const
virtual void visit(const agx::RigidBody *body) const
WirePtrSetVector & getWires()
const RigidBodyPtrSetVector & getBodies() const
RigidBodyPtrSetVector & getBodies()
virtual void visit(const agxSDK::Assembly *assembly) const
virtual void visit(agxSDK::Assembly *assembly)
virtual void visit(agx::RigidBody *body)
Interface and placeholder of controllers/helpers for wires.
agxWire::WireDistanceCompositeConstraint * getConstraint() const
static agx::Bool isLumpedNode(const agx::RigidBody *rb)
T * asSafe()
Safe subclass casting, return nullptr if template type does not match.
The rigid body class, combining a geometric model and a frame of reference.
bool isPowerlineBody() const
The agxUtil namespace contain classes and methods for utility functionality.