AvogadroLibs 1.99.0
Loading...
Searching...
No Matches
GroupNode Class Reference

The GroupNode class provides common API for grouping child nodes. More...

#include <avogadro/rendering/groupnode.h>

Inheritance diagram for GroupNode:
Node TransformNode

Classes

struct  NodeInfo

Public Types

enum  NodeType {
  ALL = 0 ,
  NONE = -1 ,
  UI = 1 ,
  GEOMETRY = 2
}

Public Member Functions

 GroupNode (GroupNode *parent=nullptr)
void accept (Visitor &) override
void addChild (Node *node, NodeType ui=NodeType::GEOMETRY)
 Add a child node, this node will have its parent set and will be deleted by this node upon destruction.
void addUIChild (Node *node)
 Add a child node, this node will have its parent set and will be deleted by this node upon destruction.
bool removeChild (Node *node)
 Remove child node, this node will no longer be deleted.
Nodechild (size_t index)
 Get the child Node at the specified index.
bool hasChild (Node *node) const
 check if the Node exists in this GroupNode.
size_t childCount () const
std::list< NodeInfo > & children ()
 Get a reference to the child nodes list.
const std::list< NodeInfo > & children () const
void clear ()
 Remove all non UI-children.
void clearUI ()
 Remove all UI-children.
Public Member Functions inherited from Node
const GroupNodeparent () const
 Get a pointer to the node's parent.
GroupNodeparent ()
void setVisible (bool visibility)
 Set the visibility of the node.
bool isVisible () const
 Get the current visibility of the node.
template<typename T>
T * cast ()
 Attempt to dynamic_cast to specified node type.
template<typename T>
const T * cast () const

Protected Member Functions

void clear (NodeType type)
Protected Member Functions inherited from Node
void setParent (GroupNode *parent)
 Set the parent node for the node.

Protected Attributes

std::list< NodeInfom_children
Protected Attributes inherited from Node
GroupNodem_parent
bool m_visible

Detailed Description

Author
Marcus D. Hanwell

The GroupNode may be used to group items together, but for most other purposes a more derived Node type would be the correct choice.

Member Function Documentation

◆ accept()

void accept ( Visitor & )
overridevirtual

Accept a visit from our friendly visitor.

Reimplemented from Node.

◆ addChild()

void addChild ( Node * node,
NodeType ui = NodeType::GEOMETRY )
Parameters
nodeNode to be added.

◆ addUIChild()

void addUIChild ( Node * node)
Parameters
nodeNode to be added.

◆ removeChild()

bool removeChild ( Node * node)
Parameters
nodeNode to be removed.
Returns
True if the node was removed, false if it was not found.

◆ child()

Node * child ( size_t index)
Parameters
indexThe index of the child.
Returns
A pointer to the child node, or nullptr if the index is out of range. time complexity: O(n)

◆ hasChild()

bool hasChild ( Node * node) const
Parameters
nodeNode to search.
Returns
True if the node was found, false otherwise.

◆ childCount()

size_t childCount ( ) const
Returns
The number of child nodes contained by the GroupNode.

The documentation for this class was generated from the following file: