Visualization Library v1.0.3

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

VL     Star     Watch     Fork     Issue

[Download] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Static Public Member Functions | Protected Attributes

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:
vl::Object vl::ActorKdTree vl::ActorTree

List of all members.

Public Member Functions

 ActorTreeAbstract ()
virtual int childrenCount () const =0
 Returns the number of child nodes of an ActorTreeAbstract node.
virtual ActorTreeAbstractchild (int i)=0
 Returns the i-th child node of an ActorTreeAbstract node.
virtual const ActorTreeAbstractchild (int i) const =0
 Returns the i-th child node of an ActorTreeAbstract node.
const ActorTreeAbstractparent () const
 Returns the parent of a node.
ActorTreeAbstractparent ()
 Returns the parent of a node.
const ActorCollectionactors () const
 Returns the actors contained in a ActorTree node.
ActorCollectionactors ()
 Returns the actors contained in a ActorTree node.
const AABBaabb () 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 extractActors (ActorCollection &list)
 Extracts all the Actor[s] contained in th ActorTree hierarchy and appends them to the given ActorCollection.
void extractVisibleActors (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.
ActorTreeAbstracteraseActor (Actor *actor)
 Removes the given Actor from the ActorTreeAbstract.
ActoraddActor (Renderable *renderable, Effect *eff, Transform *tr=NULL)
 Utility function that adds an Actor and binds it to the given Renderable, Effect and Transform.
ActoraddActor (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

ActorTreeAbstractmParent
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:

Does not allow you to:

See also:

Definition at line 55 of file ActorTreeAbstract.hpp.


Constructor & Destructor Documentation

ActorTreeAbstract::ActorTreeAbstract (  )

Member Function Documentation

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.

Referenced by computeAABB(), eraseActor(), extractActors(), and extractVisibleActors().

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.

Referenced by computeAABB(), eraseActor(), extractActors(), and extractVisibleActors().

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.

Definition at line 70 of file ActorTreeAbstract.hpp.

Referenced by vl::ActorTree::addChild(), and vl::ActorTree::setChild().

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

Returns the parent of a node.

Definition at line 72 of file ActorTreeAbstract.hpp.

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

Returns the actors contained in a ActorTree node.

Definition at line 77 of file ActorTreeAbstract.hpp.

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.

Definition at line 80 of file ActorTreeAbstract.hpp.

Referenced by computeAABB(), and extractVisibleActors().

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.

Definition at line 45 of file ActorTreeAbstract.cpp.

References aabb(), actors(), vl::Collection< T >::at(), vl::Actor::boundingBox(), child(), childrenCount(), computeAABB(), vl::Actor::computeBounds(), mAABB, and vl::Collection< T >::size().

Referenced by computeAABB().

void ActorTreeAbstract::extractActors ( ActorCollection list )

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

Definition at line 64 of file ActorTreeAbstract.cpp.

References actors(), child(), childrenCount(), extractActors(), vl::Collection< T >::push_back(), and vl::Collection< T >::size().

Referenced by extractActors(), and vl::ActorKdTree::rebuildKdTree().

void ActorTreeAbstract::extractVisibleActors ( 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()

Definition at line 73 of file ActorTreeAbstract.cpp.

References aabb(), actors(), vl::Collection< T >::at(), child(), childrenCount(), vl::Actor::computeBounds(), vl::Frustum::cull(), vl::Actor::enableMask(), extractVisibleActors(), vl::Camera::frustum(), vl::Collection< T >::push_back(), vl::Collection< T >::size(), and VL_CHECK.

Referenced by vl::SceneManagerBVH< ActorTree >::extractVisibleActors(), and extractVisibleActors().

ActorTreeAbstract * ActorTreeAbstract::eraseActor ( Actor actor )
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.

Definition at line 113 of file ActorTreeAbstract.cpp.

References actors(), vl::ref< T >::get(), and vl::Collection< T >::push_back().

Actor * ActorTreeAbstract::addActor ( Actor actor )

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

Definition at line 120 of file ActorTreeAbstract.cpp.

References actors(), and vl::Collection< T >::push_back().

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.

Definition at line 126 of file ActorTreeAbstract.cpp.

References vl::Collection< T >::size().

Referenced by vl::ActorKdTree::buildKdTree().

void vl::ActorTreeAbstract::setParent ( ActorTreeAbstract p ) [inline]

For internal use only.

Definition at line 118 of file ActorTreeAbstract.hpp.

Referenced by vl::ActorTree::addChild(), vl::ActorTree::eraseAllChildren(), and vl::ActorTree::eraseChild().


Member Data Documentation

Definition at line 121 of file ActorTreeAbstract.hpp.

Referenced by ActorTreeAbstract().

Definition at line 122 of file ActorTreeAbstract.hpp.

Referenced by ActorTreeAbstract().

Definition at line 123 of file ActorTreeAbstract.hpp.

Referenced by computeAABB().


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

Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:08.
Permission is granted to use this page to write and publish articles regarding Visualization Library.