Avogadro::Rendering::GeometryNode#

class GeometryNode : public Node#

The GeometryNode class is the common base of all geometry nodes.

The GeometryNode contains any Drawable objects, and is the only node type that results in anything being rendered to the screen.

Author

Marcus D. Hanwell

Public Functions

GeometryNode()#
~GeometryNode() override#
virtual void accept(Visitor&) override#

Accept a visit from our friendly visitor.

void addDrawable(Drawable *object)#

Add a drawable object to the geometry node.

Parameters:

objectDrawable object to be added.

bool removeDrawable(Drawable *node)#

Remove child node, this node will no longer be deleted.

Parameters:

nodeNode to be removed.

Returns:

True if the node was removed, false if it was not found.

Drawable *drawable(size_t index)#

Get the child Node at the specified index.

Parameters:

index – The index of the child.

Returns:

A pointer to the child node, or nullptr if the index is out of range.

inline std::vector<Drawable*> &drawables()#

Get a reference to the child nodes list.

inline const std::vector<Drawable*> drawables() const#
void clearDrawables()#

Remove all drawable objects.

void render(const Camera &camera)#

Render the drawables in the geometry node.

std::multimap<float, Identifier> hits(const Vector3f &rayOrigin, const Vector3f &rayEnd, const Vector3f &rayDirection) const#

Return the primitives that are hit by the ray.

Parameters:
  • rayOrigin – Origin of the ray.

  • rayEnd – End point of the ray.

  • rayDirection – Normalized direction of the ray.

Returns:

Sorted collection of primitives that were hit.

Core::Array<Identifier> areaHits(const Frustrum &frustrum) const#

Return the primitives within the supplied frustrum.

Protected Attributes

std::vector<Drawable*> m_drawables#