openvrml::bounded_volume_node Class Reference

Abstract base class for nodes that represent a bounded volume in the scene graph. More...

#include <openvrml/node.h>

Inheritance diagram for openvrml::bounded_volume_node:

Public Member Functions

virtual ~bounded_volume_node () throw ()
 Destroy.
const openvrml::bounding_volumebounding_volume () const
 Get this node's bounding volume.
- Public Member Functions inherited from openvrml::node
virtual ~node ()=0 throw ()
 Destructor.
void add_ref () const throw ()
 Increment the reference count.
void remove_ref () const throw ()
 Decrement the reference count.
void release () const throw ()
 Decrement the reference count; destroy the instance if the count drops to zero.
size_t use_count () const throw ()
 The number of owning references to the instance.
const node_typetype () const throw ()
 The type information object for the node.
const std::string & id () const throw ()
 Retrieve the name of this node.
void id (const std::string &node_id) throw ( std::bad_alloc )
 Set the name of the node.
const openvrml::scopescope () const throw ()
 Get the scope to which the node belongs.
openvrml::scenescene () const throw ()
 Get the scene with which the node is associated.
const std::vector
< boost::intrusive_ptr< node > > & 
impl_nodes () const throw ()
 Get the implementation nodes of a PROTO instance.
std::ostream & print (std::ostream &out, size_t indent) const
 Pretty print.
void initialize (openvrml::scene &scene, double timestamp) throw ( std::bad_alloc )
 Initialize the node.
std::auto_ptr< field_valuefield (const std::string &id) const throw ( unsupported_interface , std::bad_alloc )
 Generalized field accessor.
openvrml::event_listenerevent_listener (const std::string &id) throw ( unsupported_interface )
 Get an event listener.
openvrml::event_emitterevent_emitter (const std::string &id) throw ( unsupported_interface )
 Get an event emitter.
void shutdown (double timestamp) throw ()
 Shut down the node.
bool modified () const throw ( boost::thread_resource_error )
 Determine whether the node has been modified.
void modified (bool value) throw ( boost::thread_resource_error )
 Set the modified flag.

Protected Member Functions

 bounded_volume_node (const node_type &type, const boost::shared_ptr< openvrml::scope > &scope) throw ()
 Construct.
void bounding_volume_dirty (bool value)
 Set whether the node's bounding volume needs to be recalculated.
bool bounding_volume_dirty () const
 Whether the node's bounding volume needs to be recalculated.
virtual const
openvrml::bounding_volume
do_bounding_volume () const
 Called by bounding_volume.
- Protected Member Functions inherited from openvrml::node
 node (const node_type &type, const boost::shared_ptr< openvrml::scope > &scope) throw ()
 Construct.
boost::shared_mutex & scene_mutex ()
 The scene mutex.

Private Member Functions

virtual bounded_volume_nodeto_bounded_volume () throw ()
 Cast to an bounded_volume_node.

Additional Inherited Members

- Static Public Attributes inherited from openvrml::node
static const
boost::intrusive_ptr< node
self_tag
 Special value used when initializing a script_node.
- Static Protected Member Functions inherited from openvrml::node
static void emit_event (openvrml::event_emitter &emitter, double timestamp) throw ( std::bad_alloc )
 Emit an event.

Detailed Description

Abstract base class for nodes that represent a bounded volume in the scene graph.

Constructor & Destructor Documentation

openvrml::bounded_volume_node::~bounded_volume_node ( ) throw ()
virtual

Destroy.

openvrml::bounded_volume_node::bounded_volume_node ( const node_type type,
const boost::shared_ptr< openvrml::scope > &  scope 
) throw ()
protected

Construct.

Parameters
[in]typethe node_type associated with the node.
[in]scopethe scope the node belongs to.

Member Function Documentation

const openvrml::bounding_volume & openvrml::bounded_volume_node::bounding_volume ( ) const

Get this node's bounding volume.

Nodes that have no bounding volume, or have a difficult to calculate bvolume (like, say, Extrusion or Billboard) can just return an infinite bsphere. Note that returning an infinite bvolume means that all the node's ancestors will also end up with an infinite bvolume, and will never be culled.

Delegates to do_bounding_volume.

Returns
a maximized bounding volume.
void openvrml::bounded_volume_node::bounding_volume_dirty ( bool  value)
protected

Set whether the node's bounding volume needs to be recalculated.

Indicate that a node's bounding volume needs to be recalculated (or not). If a node's bounding volume is invalid, then the bounding volumes of all that node's ancestors are also invalid. Normally, the node itself will determine when its bounding volume needs updating.

Parameters
[in]valuetrue if the node's bounding volume should be recalculated; false otherwise.
bool openvrml::bounded_volume_node::bounding_volume_dirty ( ) const
protected

Whether the node's bounding volume needs to be recalculated.

Returns
true if the node's bounding volume needs to be recalculated; false otherwise.
const openvrml::bounding_volume & openvrml::bounded_volume_node::do_bounding_volume ( ) const
protectedvirtual

Called by bounding_volume.

Returns
a maximized bounding volume.
openvrml::bounded_volume_node * openvrml::bounded_volume_node::to_bounded_volume ( ) throw ()
privatevirtual

Cast to an bounded_volume_node.

Returns
a pointer to this bounded_volume_node.