Panda3D
 All Classes Functions Variables Enumerations
Public Member Functions | Public Attributes | List of all members
CullTraverserData Class Reference

This collects together the pieces of data that are accumulated for each node while walking the scene graph during the cull traversal. More...

#include "cullTraverserData.h"

Public Member Functions

 CullTraverserData (const NodePath &start, const TransformState *net_transform, const RenderState *state, GeometricBoundingVolume *view_frustum, Thread *current_thread)
 
 CullTraverserData (const CullTraverserData &copy)
 
 CullTraverserData (const CullTraverserData &parent, PandaNode *child)
 This constructor creates a CullTraverserData object that reflects the next node down in the traversal. More...
 
void apply_transform_and_state (CullTraverser *trav)
 Applies the transform and state from the current node onto the current data. More...
 
void apply_transform_and_state (CullTraverser *trav, CPT(TransformState) node_transform, CPT(RenderState) node_state, CPT(RenderEffects) node_effects, const RenderAttrib *off_clip_planes)
 Applies the indicated transform and state changes (e.g. More...
 
 CPT (TransformState) get_modelview_transform(const CullTraverser *trav) const
 
 CPT (TransformState) get_internal_transform(const CullTraverser *trav) const
 
 CPT (TransformState) _net_transform
 
 CPT (RenderState) _state
 
 CPT (CullPlanes) _cull_planes
 
const TransformState * get_net_transform (const CullTraverser *trav) const
 
bool is_in_view (const DrawMask &camera_mask)
 Returns true if the current node is within the view frustum, false otherwise. More...
 
bool is_this_node_hidden (const DrawMask &camera_mask) const
 Returns true if this particular node is hidden, even though we might be traversing past this node to find a child node that has had show_through() called for it. More...
 
PandaNodenode () const
 Returns the node traversed to so far. More...
 
PandaNodePipelineReadernode_reader ()
 Returns the PipelineReader for the node traversed to so far. More...
 
const PandaNodePipelineReadernode_reader () const
 Returns the PipelineReader for the node traversed to so far. More...
 
void operator= (const CullTraverserData &copy)
 
 PT (GeometricBoundingVolume) _view_frustum
 

Public Attributes

DrawMask _draw_mask
 
WorkingNodePath _node_path
 
PandaNodePipelineReader _node_reader
 
int _portal_depth
 

Detailed Description

This collects together the pieces of data that are accumulated for each node while walking the scene graph during the cull traversal.

Having this as a separate object simplifies the parameter list to CullTraverser::r_traverse(), as well as to other functions like PandaNode::cull_callback(). It also makes it easier to add cull parameters, and provides a place to abstract out some of the cull behavior (like view-frustum culling).

Definition at line 45 of file cullTraverserData.h.

Constructor & Destructor Documentation

CullTraverserData::CullTraverserData ( const CullTraverserData parent,
PandaNode child 
)
inline

This constructor creates a CullTraverserData object that reflects the next node down in the traversal.

Definition at line 82 of file cullTraverserData.I.

References PandaNodePipelineReader::check_cached().

Member Function Documentation

void CullTraverserData::apply_transform_and_state ( CullTraverser trav)
void CullTraverserData::apply_transform_and_state ( CullTraverser trav,
CPT(TransformState)  node_transform,
CPT(RenderState node_state,
CPT(RenderEffects node_effects,
const RenderAttrib off_clip_planes 
)

Applies the indicated transform and state changes (e.g.

as extracted from a node) onto the current data. This also evaluates billboards, etc.

Definition at line 66 of file cullTraverserData.cxx.

References RenderEffects::cull_callback(), RenderState::get_attrib(), RenderEffects::get_effect(), and RenderEffects::has_cull_callback().

bool CullTraverserData::is_in_view ( const DrawMask camera_mask)
inline

Returns true if the current node is within the view frustum, false otherwise.

If the node's bounding volume falls completely within the view frustum, this will also reset the view frustum pointer, saving some work for future nodes.

Definition at line 182 of file cullTraverserData.I.

References PandaNodePipelineReader::compare_draw_mask(), and PandaNodePipelineReader::get_transform().

bool CullTraverserData::is_this_node_hidden ( const DrawMask camera_mask) const
inline

Returns true if this particular node is hidden, even though we might be traversing past this node to find a child node that has had show_through() called for it.

If this returns true, the node should not be rendered.

Definition at line 215 of file cullTraverserData.I.

References PandaNode::get_overall_bit().

Referenced by CullTraverser::traverse_below().

PandaNode * CullTraverserData::node ( ) const
inline
PandaNodePipelineReader * CullTraverserData::node_reader ( )
inline

Returns the PipelineReader for the node traversed to so far.

Definition at line 124 of file cullTraverserData.I.

Referenced by CullTraverser::traverse_below().

const PandaNodePipelineReader * CullTraverserData::node_reader ( ) const
inline

Returns the PipelineReader for the node traversed to so far.

Definition at line 135 of file cullTraverserData.I.


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