This object performs a depth-first traversal of the scene graph, with optional view-frustum culling, collecting CullState and searching for GeomNodes. More...
#include "portalClipper.h"
 
  
| Public Member Functions | |
| PortalClipper (GeometricBoundingVolume *frustum, SceneSetup *scene_setup) | |
| void | draw_camera_frustum () | 
| Draw the current camera frustum in white color.  More... | |
| void | draw_current_portal () | 
| _portal_node is the current portal, draw it.  More... | |
| void | draw_hexahedron (BoundingHexahedron *frustum) | 
| Given the BoundingHexahedron draw it using lines.  More... | |
| void | draw_lines () | 
| Draw all the lines in the buffer Cyan portal is the original geometry of the portal Yellow portal is the AA minmax & clipped portal Blue frustum is the frustum through portal White frustum is the camera frustum.  More... | |
| void | draw_to (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) | 
| Draws a line segment from the pen's last position (the last call to move_to or draw_to) to the indicated point.  More... | |
| void | draw_to (const LVecBase3 &v) | 
| Draws a line segment from the pen's last position (the last call to move_to or draw_to) to the indicated point.  More... | |
| virtual TypeHandle | force_init_type () | 
| const RenderState * | get_clip_state () const | 
| Returns the stored clip state.  More... | |
| BoundingHexahedron * | get_reduced_frustum () const | 
| Return the reduced frustum.  More... | |
| void | get_reduced_viewport (LPoint2 &min, LPoint2 &max) const | 
| Return the reduced viewport.  More... | |
| virtual TypeHandle | get_type () const | 
| bool | is_facing_view (const LPlane &portal_plane) | 
| checks if the portal plane (in camera space) is facing the camera's near plane  More... | |
| bool | is_partial_portal_in_view () | 
| bool | is_whole_portal_in_view (const LMatrix4 &cmat) | 
| checks if portal_node is within the view frustum.  More... | |
| void | move_to (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z) | 
| Moves the pen to the given point without drawing a line.  More... | |
| void | move_to (const LVecBase3 &v) | 
| Moves the pen to the given point without drawing a line.  More... | |
| bool | prepare_portal (const NodePath &node_path) | 
| Given the portal draw the frustum with line segs for now.  More... | |
| PT (GeomNode) _previous | |
| void | set_clip_state (const RenderState *clip_state) | 
| Set the clip state of the current portal node This is done to remember the state for the child portal nodes.  More... | |
| void | set_reduced_frustum (BoundingHexahedron *bh) | 
| Set the current view frustum that is being calculated by the portal clipper.  More... | |
| void | set_reduced_viewport (const LPoint2 &min, const LPoint2 &max) | 
| Set the current viewport that is being used by the portal clipper.  More... | |
|  Public Member Functions inherited from TypedObject | |
| TypedObject (const TypedObject ©)=default | |
| TypedObject * | as_typed_object () | 
| Returns the object, upcast (if necessary) to a TypedObject pointer.  More... | |
| const TypedObject * | as_typed_object () const | 
| Returns the object, upcast (if necessary) to a TypedObject pointer.  More... | |
| int | get_best_parent_from_Set (const std::set< int > &) const | 
| int | get_type_index () const | 
| Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.  More... | |
| bool | is_exact_type (TypeHandle handle) const | 
| Returns true if the current object is the indicated type exactly.  More... | |
| bool | is_of_type (TypeHandle handle) const | 
| Returns true if the current object is or derives from the indicated type.  More... | |
| TypedObject & | operator= (const TypedObject ©)=default | 
| Static Public Member Functions | |
| static TypeHandle | get_class_type () | 
| static void | init_type () | 
|  Static Public Member Functions inherited from TypedObject | |
| static TypeHandle | get_class_type () | 
| static void | init_type () | 
| This function is declared non-inline to work around a compiler bug in g++ 2.96.  More... | |
| Public Attributes | |
| SceneSetup * | _scene_setup | 
|  Public Attributes inherited from TypedObject | |
| get_type | |
This object performs a depth-first traversal of the scene graph, with optional view-frustum culling, collecting CullState and searching for GeomNodes.
Each renderable Geom encountered is passed along with its associated RenderState to the CullHandler object.
Definition at line 49 of file portalClipper.h.
| 
 | inline | 
Draw the current camera frustum in white color.
Definition at line 75 of file portalClipper.I.
| void PortalClipper::draw_current_portal | ( | ) | 
_portal_node is the current portal, draw it.
Definition at line 131 of file portalClipper.cxx.
References draw_to(), PortalNode::get_vertex, and move_to().
| void PortalClipper::draw_hexahedron | ( | BoundingHexahedron * | frustum | ) | 
Given the BoundingHexahedron draw it using lines.
Definition at line 104 of file portalClipper.cxx.
References draw_to(), BoundingHexahedron::get_point, and move_to().
| void PortalClipper::draw_lines | ( | ) | 
Draw all the lines in the buffer Cyan portal is the original geometry of the portal Yellow portal is the AA minmax & clipped portal Blue frustum is the frustum through portal White frustum is the camera frustum.
Definition at line 145 of file portalClipper.cxx.
References GeomVertexWriter::add_data3(), GeomVertexWriter::add_data4(), and GeomVertexFormat::get_v3cp().
| 
 | inline | 
Draws a line segment from the pen's last position (the last call to move_to or draw_to) to the indicated point.
move_to() and draw_to() only update tables; the actual drawing is performed when create() is called.
Definition at line 66 of file portalClipper.I.
References draw_to().
Referenced by draw_current_portal(), draw_hexahedron(), and draw_to().
| void PortalClipper::draw_to | ( | const LVecBase3 & | v | ) | 
Draws a line segment from the pen's last position (the last call to move_to or draw_to) to the indicated point.
move_to() and draw_to() only update tables; the actual drawing is performed when create() is called.
Definition at line 84 of file portalClipper.cxx.
References move_to().
| 
 | inline | 
Returns the stored clip state.
Definition at line 111 of file portalClipper.I.
| 
 | inline | 
Return the reduced frustum.
Definition at line 93 of file portalClipper.I.
| 
 | inline | 
Return the reduced viewport.
Definition at line 130 of file portalClipper.I.
| 
 | inline | 
checks if the portal plane (in camera space) is facing the camera's near plane
Definition at line 142 of file portalClipper.I.
| 
 | inline | 
checks if portal_node is within the view frustum.
If so, then the portal is worth considering. This is a 2nd level test to weed out most of the portals
Definition at line 153 of file portalClipper.I.
| 
 | inline | 
Moves the pen to the given point without drawing a line.
When followed by draw_to(), this marks the first point of a line segment; when followed by move_to() or create(), this creates a single point.
Definition at line 56 of file portalClipper.I.
Referenced by draw_current_portal(), draw_hexahedron(), and draw_to().
| void PortalClipper::move_to | ( | const LVecBase3 & | v | ) | 
Moves the pen to the given point without drawing a line.
When followed by draw_to(), this marks the first point of a line segment; when followed by move_to() or create(), this creates a single point.
Definition at line 69 of file portalClipper.cxx.
| bool PortalClipper::prepare_portal | ( | const NodePath & | node_path | ) | 
Given the portal draw the frustum with line segs for now.
More functionalities coming up
Definition at line 203 of file portalClipper.cxx.
References TypedObject::is_of_type(), and NodePath::node().
| 
 | inline | 
Set the clip state of the current portal node This is done to remember the state for the child portal nodes.
Definition at line 103 of file portalClipper.I.
| 
 | inline | 
Set the current view frustum that is being calculated by the portal clipper.
Definition at line 85 of file portalClipper.I.
| 
 | inline | 
Set the current viewport that is being used by the portal clipper.
Definition at line 120 of file portalClipper.I.
 1.8.15
 1.8.15