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.