# Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics

[Home] [Tutorials] [All Classes] [Grouped Classes]

# vl::ActorTreeAbstract Class Reference

The ActorTreeAbstract class implements the interface of a generic tree containing Actor[s] in its nodes. More...

`#include <ActorTreeAbstract.hpp>`

Inheritance diagram for vl::ActorTreeAbstract:

List of all members.

## Public Member Functions

virtual const char * | className ()
| Returns the name of the class.
| ActorTreeAbstract ()
virtual int | childrenCount () const =0
| Returns the number of child nodes of an ActorTreeAbstract node.
virtual ActorTreeAbstract * | child (int i)=0
| Returns the i-th child node of an ActorTreeAbstract node.
virtual const ActorTreeAbstract * | child (int i) const =0
| Returns the i-th child node of an ActorTreeAbstract node.
const ActorTreeAbstract * | parent () const
| Returns the parent of a node.
ActorTreeAbstract * | parent ()
| Returns the parent of a node.
const ActorCollection * | actors () const
| Returns the actors contained in a ActorTree node.
ActorCollection * | actors ()
| Returns the actors contained in a ActorTree node.
const AABB & | aabb () const
| Returns the bounding box of a node. Such bounding box contains both the bounding boxes of the node's Actor[s] and of the child nodes.
void | computeAABB ()
| Recursively computes the bounding box of a node so that it includes the bounding boxes of the node's Actor[s] and of the child nodes.
void | appendActors (ActorCollection &list)
| Extracts all the Actor[s] contained in th ActorTree hierarchy and appends them to the given ActorCollection.
void | appendVisibleActors (ActorCollection &list, const Camera *camera, unsigned enable_mask=0xFFFFFFFF)
| Extracts the enabled and visible Actor[s] contained in th ActorTree hierarchy and appends them to the given ActorCollection.
ActorTreeAbstract * | eraseActor (Actor *actor)
| Removes the given Actor from the ActorTreeAbstract.
Actor * | addActor (Renderable *renderable, Effect *eff, Transform *tr=NULL)
| Utility function that adds an Actor and binds it to the given Renderable, Effect and Transform.
Actor * | addActor (Actor *actor)
| Utility function equivalent to 'actors()->push_back(actor)'.
void | setParent (ActorTreeAbstract *p)
| For internal use only.

## Static Public Member Functions

static void | prepareActors (ActorCollection &actors)
| Updates the Transform and the bounds of the given Actor[s].

## Protected Attributes

ActorTreeAbstract * | mParent
ActorCollection | mActors
AABB | mAABB

## Detailed Description

The ActorTreeAbstract class implements the interface of a generic tree containing Actor[s] in its nodes.

The interface of ActorTreeAbstract allows you to:

- Modify the Actor[s] contained in each node
- Traverse the tree and visit its nodes
- Compute the AABB of a single node or of the whole tree

Does not allow you to:

- Add new nodes to the tree

See also:
  - ActorKdTree
  - ActorTree

## Constructor & Destructor Documentation

ActorTreeAbstract::ActorTreeAbstract | ( |  | ) |

## Member Function Documentation

virtual const char* vl::ActorTreeAbstract::className | ( |  | ) | `[inline, virtual]`

Returns the name of the class.

Reimplemented from vl::Object.

Reimplemented in vl::ActorKdTree, and vl::ActorTree.

virtual int vl::ActorTreeAbstract::childrenCount | ( |  | ) | const`[pure virtual]`

Returns the number of child nodes of an ActorTreeAbstract node.

Implemented in vl::ActorKdTree, and vl::ActorTree.

virtual ActorTreeAbstract* vl::ActorTreeAbstract::child | ( | int | i | ) | `[pure virtual]`

Returns the i-th child node of an ActorTreeAbstract node.

Implemented in vl::ActorKdTree, and vl::ActorTree.

virtual const ActorTreeAbstract* vl::ActorTreeAbstract::child | ( | int | i | ) | const`[pure virtual]`

Returns the i-th child node of an ActorTreeAbstract node.

Implemented in vl::ActorKdTree, and vl::ActorTree.

const ActorTreeAbstract* vl::ActorTreeAbstract::parent | ( |  | ) | const`[inline]`

Returns the parent of a node.

ActorTreeAbstract* vl::ActorTreeAbstract::parent | ( |  | ) | `[inline]`

Returns the parent of a node.

const ActorCollection* vl::ActorTreeAbstract::actors | ( |  | ) | const`[inline]`

Returns the actors contained in a ActorTree node.

ActorCollection* vl::ActorTreeAbstract::actors | ( |  | ) | `[inline]`

Returns the actors contained in a ActorTree node.

const AABB& vl::ActorTreeAbstract::aabb | ( |  | ) | const`[inline]`

Returns the bounding box of a node. Such bounding box contains both the bounding boxes of the node's Actor[s] and of the child nodes.

void ActorTreeAbstract::computeAABB | ( |  | ) |

Recursively computes the bounding box of a node so that it includes the bounding boxes of the node's Actor[s] and of the child nodes.

void ActorTreeAbstract::appendActors | ( | ActorCollection & | list | ) |

Extracts all the Actor[s] contained in th ActorTree hierarchy and appends them to the given ActorCollection.

void ActorTreeAbstract::appendVisibleActors | ( | ActorCollection & | list,
|  | const Camera * | camera,
|  | unsigned | enable_mask = `0xFFFFFFFF` |
| ) |  |  |

Extracts the enabled and visible Actor[s] contained in th ActorTree hierarchy and appends them to the given ActorCollection.

This function implements a hierarchycal frustum culling algorithm that culls the nodes of the bounding box tree first and then the single Actor[s] contained in the nodes that could not be culled. See also Actor::enableMask()

ActorTreeAbstract * ActorTreeAbstract::eraseActor | ( | Actor * | actor | ) |

Removes the given Actor from the ActorTreeAbstract.

Actor * ActorTreeAbstract::addActor | ( | Renderable * | renderable,
|  | Effect * | eff,
|  | Transform * | tr = `NULL` |
| ) |  |  |

Utility function that adds an Actor and binds it to the given Renderable, Effect and Transform.

Actor * ActorTreeAbstract::addActor | ( | Actor * | actor | ) |

Utility function equivalent to 'actors()->push_back(actor)'.

void ActorTreeAbstract::prepareActors | ( | ActorCollection & | actors | ) | `[static]`

Updates the Transform and the bounds of the given Actor[s].

Before you create a bounding box tree or a kd-tree of Actor[s] you have to make sure that their Transform and bounding volumes are up-to-date. This is an utility function that lets you do that in a simple an quick way.

void vl::ActorTreeAbstract::setParent | ( | ActorTreeAbstract * | p | ) | `[inline]`

For internal use only.

## Member Data Documentation

ActorTreeAbstract* vl::ActorTreeAbstract::mParent`[protected]`

ActorCollection vl::ActorTreeAbstract::mActors`[protected]`

AABB vl::ActorTreeAbstract::mAABB`[protected]`

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

- E:/VisualizationLibrary/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vl/ActorTreeAbstract.hpp
- E:/VisualizationLibrary/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vl/ActorTreeAbstract.cpp

Visualization Library v2009.07 Reference Documentation
Copyright 2005-2009 Michele Bosi. All rights reserved.
Updated on Mon Aug 10 21:41:33 2009.
Permission is granted to use this page to write and publish articles regarding Visualization Library.