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 ©) | |
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... | |
PandaNode * | node () const |
Returns the node traversed to so far. More... | |
PandaNodePipelineReader * | node_reader () |
Returns the PipelineReader for the node traversed to so far. More... | |
const PandaNodePipelineReader * | node_reader () const |
Returns the PipelineReader for the node traversed to so far. More... | |
void | operator= (const CullTraverserData ©) |
PT (GeometricBoundingVolume) _view_frustum | |
Public Attributes | |
DrawMask | _draw_mask |
WorkingNodePath | _node_path |
PandaNodePipelineReader | _node_reader |
int | _portal_depth |
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.
|
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().
void CullTraverserData::apply_transform_and_state | ( | CullTraverser * | trav | ) |
Applies the transform and state from the current node onto the current data.
This also evaluates billboards, etc.
Definition at line 39 of file cullTraverserData.cxx.
References PandaNodePipelineReader::compose_draw_mask(), SceneSetup::get_camera_node(), PandaNodePipelineReader::get_effects(), CullTraverser::get_scene(), PandaNodePipelineReader::get_state(), PandaNodePipelineReader::get_tag(), CullTraverser::get_tag_state_key(), PandaNodePipelineReader::get_transform(), PandaNodePipelineReader::has_tag(), and CullTraverser::has_tag_state_key().
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().
|
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().
|
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().
|
inline |
Returns the node traversed to so far.
Definition at line 113 of file cullTraverserData.I.
References WorkingNodePath::node().
Referenced by CharacterJointEffect::cull_callback(), CompassEffect::cull_callback(), CullTraverser::traverse_below(), and NodeCullCallbackData::upcall().
|
inline |
Returns the PipelineReader for the node traversed to so far.
Definition at line 124 of file cullTraverserData.I.
Referenced by CullTraverser::traverse_below().
|
inline |
Returns the PipelineReader for the node traversed to so far.
Definition at line 135 of file cullTraverserData.I.