// Filename: cullTraverser.I // Created by: drose (23Feb02) // //////////////////////////////////////////////////////////////////// // // PANDA 3D SOFTWARE // Copyright (c) Carnegie Mellon University. All rights reserved. // // All use of this software is subject to the terms of the revised BSD // license. You should have received a copy of this license along // with this source code in a file named "LICENSE." // //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_gsg // Access: Published // Description: Returns the GraphicsStateGuardian in effect. //////////////////////////////////////////////////////////////////// INLINE GraphicsStateGuardianBase *CullTraverser:: get_gsg() const { return _gsg; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_current_thread // Access: Published // Description: Returns the currently-executing thread object, as // passed to the CullTraverser constructor. //////////////////////////////////////////////////////////////////// INLINE Thread *CullTraverser:: get_current_thread() const { return _current_thread; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_scene // Access: Published // Description: Returns the SceneSetup object. //////////////////////////////////////////////////////////////////// INLINE SceneSetup *CullTraverser:: get_scene() const { return _scene_setup; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::has_tag_state_key // Access: Published // Description: Returns true if a nonempty tag state key has been // specified for the scene's camera, false otherwise. //////////////////////////////////////////////////////////////////// INLINE bool CullTraverser:: has_tag_state_key() const { return _has_tag_state_key; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_tag_state_key // Access: Published // Description: Returns the tag state key that has been specified for // the scene's camera, if any. //////////////////////////////////////////////////////////////////// INLINE const string &CullTraverser:: get_tag_state_key() const { return _tag_state_key; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_camera_transform // Access: Published // Description: Returns the position of the camera relative to the // starting node. //////////////////////////////////////////////////////////////////// INLINE const TransformState *CullTraverser:: get_camera_transform() const { return _scene_setup->get_camera_transform(); } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_world_transform // Access: Published // Description: Returns the position of the starting node relative // to the camera. This is the inverse of the camera // transform. // // Note that this value is always the position of the // starting node, not the current node, even if it is // sampled during a traversal. To get the transform of // the current node use // CullTraverserData::get_modelview_transform(). //////////////////////////////////////////////////////////////////// INLINE const TransformState *CullTraverser:: get_world_transform() const { return _scene_setup->get_world_transform(); } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_initial_state // Access: Published // Description: Returns the initial RenderState at the top of the // scene graph we are traversing, or the empty state if // the initial state was never set. //////////////////////////////////////////////////////////////////// INLINE const RenderState *CullTraverser:: get_initial_state() const { return _initial_state; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_depth_offset_decals // Access: Published // Description: Returns the depth_offset_decals flag. See // set_depth_offset_decals(). //////////////////////////////////////////////////////////////////// INLINE bool CullTraverser:: get_depth_offset_decals() const { return _depth_offset_decals; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::set_camera_mask // Access: Published // Description: Changes the visibility mask for the camera viewing // the scene. This is normally set automatically // at the time setup_scene() is called; you should // change this only if you want to render some set of // objects different from what the camera normally would // draw. //////////////////////////////////////////////////////////////////// INLINE void CullTraverser:: set_camera_mask(const DrawMask &camera_mask) { _camera_mask = camera_mask; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_camera_mask // Access: Published // Description: Returns the visibility mask from the camera viewing // the scene. //////////////////////////////////////////////////////////////////// INLINE const DrawMask &CullTraverser:: get_camera_mask() const { return _camera_mask; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::set_view_frustum // Access: Published // Description: Specifies the bounding volume that corresponds to the // view frustum. Any primitives that fall entirely // outside of this volume are not drawn. //////////////////////////////////////////////////////////////////// INLINE void CullTraverser:: set_view_frustum(GeometricBoundingVolume *view_frustum) { _view_frustum = view_frustum; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_view_frustum // Access: Published // Description: Returns the bounding volume that corresponds to the // view frustum, or NULL if the view frustum is not in // use or has not been set. // // Note that the view frustum returned here is always in // the coordinate space of the starting node, not the // current node, even if it is sampled during a // traversal. To get the view frustum in the current // node's coordinate space, check in the current // CullTraverserData. //////////////////////////////////////////////////////////////////// INLINE GeometricBoundingVolume *CullTraverser:: get_view_frustum() const { return _view_frustum; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::set_cull_handler // Access: Published // Description: Specifies the object that will receive the culled // Geoms. This must be set before calling traverse(). //////////////////////////////////////////////////////////////////// INLINE void CullTraverser:: set_cull_handler(CullHandler *cull_handler) { _cull_handler = cull_handler; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_cull_handler // Access: Published // Description: Returns the object that will receive the culled // Geoms. //////////////////////////////////////////////////////////////////// INLINE CullHandler *CullTraverser:: get_cull_handler() const { return _cull_handler; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::set_portal_clipper // Access: Published // Description: Specifies _portal_clipper object pointer that // subsequent traverse() or traverse_below may use. //////////////////////////////////////////////////////////////////// INLINE void CullTraverser:: set_portal_clipper(PortalClipper *portal_clipper) { _portal_clipper = portal_clipper; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_portal_clipper // Access: Published // Description: Returns the _portal_clipper pointer //////////////////////////////////////////////////////////////////// INLINE PortalClipper *CullTraverser:: get_portal_clipper() const { return _portal_clipper; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::get_effective_incomplete_render // Access: Published // Description: Returns true if the cull traversal is effectively in // incomplete_render state, considering both the GSG's // incomplete_render and the current DisplayRegion's // incomplete_render flags. This returns the flag // during the cull traversal; see // GSG::get_effective_incomplete_render() for this same // flag during the draw traversal. //////////////////////////////////////////////////////////////////// INLINE bool CullTraverser:: get_effective_incomplete_render() const { return _effective_incomplete_render; } //////////////////////////////////////////////////////////////////// // Function: CullTraverser::flush_level // Access: Published, Static // Description: Flushes the PStatCollectors used during traversal. //////////////////////////////////////////////////////////////////// INLINE void CullTraverser:: flush_level() { _nodes_pcollector.flush_level(); _geom_nodes_pcollector.flush_level(); _geoms_pcollector.flush_level(); _geoms_occluded_pcollector.flush_level(); }