Panda3D
|
This provides a higher-level wrapper around ScissorAttrib. More...
#include "scissorEffect.h"
Classes | |
class | PointDef |
Public Member Functions | |
CPT (RenderEffect) add_point(const LPoint3 &point | |
virtual | CPT (RenderEffect) xform(const LMatrix4 &mat) const |
virtual void | cull_callback (CullTraverser *trav, CullTraverserData &data, CPT(TransformState)&node_transform, CPT(RenderState)&node_state) const |
If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time. | |
virtual TypeHandle | force_init_type () |
bool | get_clip () const |
Returns true if this ScissorEffect actually enables scissoring, or false if it culls only. | |
const LVecBase4 & | get_frame () const |
If is_screen() returns true, this method may be called to query the screen-based scissor frame. | |
NodePath | get_node (int n) const |
Returns the node to which the nth point is relative, or empty NodePath to indicate the current node. | |
int | get_num_points () const |
Returns the number of node-based scissor points. | |
const LPoint3 & | get_point (int n) const |
If is_screen() returns false, then get_num_points() and get_point() may be called to query the node-based scissor frame. | |
virtual TypeHandle | get_type () const |
virtual bool | has_cull_callback () const |
Should be overridden by derived classes to return true if cull_callback() has been defined. | |
bool | is_screen () const |
Returns true if the ScissorEffect is a screen-based effect, meaning get_frame() has a meaningful value, but get_a() and get_b() do not. | |
MAKE_SEQ (get_points, get_num_points, get_point) | |
MAKE_SEQ (get_nodes, get_num_points, get_node) | |
virtual void | output (ostream &out) const |
virtual void | write_datagram (BamWriter *manager, Datagram &dg) |
Writes the contents of this object to the datagram for shipping out to a Bam file. | |
Static Public Member Functions | |
static | CPT (RenderEffect) make_screen(const LVecBase4 &frame |
static | CPT (RenderEffect) make_node(bool clip |
static | CPT (RenderEffect) make_node(const LPoint3 &a |
static | CPT (RenderEffect) make_node(const LPoint3 &a |
static TypeHandle | get_class_type () |
static void | init_type () |
static void | register_with_read_factory () |
Tells the BamReader how to create objects of type ScissorEffect. | |
Public Attributes | |
static const LPoint3 & | b |
static const LPoint3 const LPoint3 & | c |
static bool | clip = true) |
static const LPoint3 const LPoint3 const LPoint3 & | d |
static const LPoint3 const NodePath & | node = NodePath()) |
static const LPoint3 const LPoint3 const LPoint3 const NodePath & | node = NodePath()) |
const NodePath & | node = NodePath()) const |
Protected Member Functions | |
virtual int | compare_to_impl (const RenderEffect *other) const |
Intended to be overridden by derived ScissorEffect types to return a unique number indicating whether this ScissorEffect is equivalent to the other one. | |
void | fillin (DatagramIterator &scan, BamReader *manager) |
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new ScissorEffect. | |
Static Protected Member Functions | |
static TypedWritable * | make_from_bam (const FactoryParams ¶ms) |
This function is called by the BamReader's factory when a new object of type ScissorEffect is encountered in the Bam file. |
This provides a higher-level wrapper around ScissorAttrib.
It allows for the scissor region to be defined via points relative to the current node, and also performs culling based on the scissor region.
Definition at line 32 of file scissorEffect.h.
int ScissorEffect::compare_to_impl | ( | const RenderEffect * | other | ) | const [protected, virtual] |
Intended to be overridden by derived ScissorEffect types to return a unique number indicating whether this ScissorEffect is equivalent to the other one.
This should return 0 if the two ScissorEffect objects are equivalent, a number less than zero if this one should be sorted before the other one, and a number greater than zero otherwise.
This will only be called with two ScissorEffect objects whose get_type() functions return the same.
Reimplemented from RenderEffect.
Definition at line 333 of file scissorEffect.cxx.
References LVecBase4f::compare_to().
void ScissorEffect::cull_callback | ( | CullTraverser * | trav, |
CullTraverserData & | data, | ||
CPT(TransformState)& | node_transform, | ||
CPT(RenderState)& | node_state | ||
) | const [virtual] |
If has_cull_callback() returns true, this function will be called during the cull traversal to perform any additional operations that should be performed at cull time.
This may include additional manipulation of render state or additional visible/invisible decisions, or any other arbitrary operation.
At the time this function is called, the current node's transform and state have not yet been applied to the net_transform and net_state. This callback may modify the node_transform and node_state to apply an effective change to the render state at this level.
Reimplemented from RenderEffect.
Definition at line 237 of file scissorEffect.cxx.
References SceneSetup::get_lens(), Lens::get_projection_mat(), CullTraverser::get_scene(), and is_screen().
void ScissorEffect::fillin | ( | DatagramIterator & | scan, |
BamReader * | manager | ||
) | [protected, virtual] |
This internal function is called by make_from_bam to read in all of the relevant data from the BamFile for the new ScissorEffect.
Reimplemented from RenderEffect.
Definition at line 429 of file scissorEffect.cxx.
References DatagramIterator::get_bool(), DatagramIterator::get_uint16(), and LVecBase4f::read_datagram().
Referenced by make_from_bam().
bool ScissorEffect::get_clip | ( | ) | const [inline] |
Returns true if this ScissorEffect actually enables scissoring, or false if it culls only.
Definition at line 88 of file scissorEffect.I.
const LVecBase4 & ScissorEffect::get_frame | ( | ) | const [inline] |
If is_screen() returns true, this method may be called to query the screen-based scissor frame.
This is a series of left, right, bottom, top, representing the scissor frame relative to the current DisplayRegion. See ScissorAttrib.
Definition at line 38 of file scissorEffect.I.
NodePath ScissorEffect::get_node | ( | int | n | ) | const [inline] |
Returns the node to which the nth point is relative, or empty NodePath to indicate the current node.
Definition at line 76 of file scissorEffect.I.
int ScissorEffect::get_num_points | ( | ) | const [inline] |
Returns the number of node-based scissor points.
See get_point().
Definition at line 49 of file scissorEffect.I.
const LPoint3 & ScissorEffect::get_point | ( | int | n | ) | const [inline] |
If is_screen() returns false, then get_num_points() and get_point() may be called to query the node-based scissor frame.
These return n points (at least two), which are understood to be in the space of this node, and which define any opposite corners of the scissor frame.
Definition at line 64 of file scissorEffect.I.
References LPoint3f::zero().
bool ScissorEffect::has_cull_callback | ( | ) | const [virtual] |
Should be overridden by derived classes to return true if cull_callback() has been defined.
Otherwise, returns false to indicate cull_callback() does not need to be called for this effect during the cull traversal.
Reimplemented from RenderEffect.
Definition at line 215 of file scissorEffect.cxx.
bool ScissorEffect::is_screen | ( | ) | const [inline] |
Returns true if the ScissorEffect is a screen-based effect, meaning get_frame() has a meaningful value, but get_a() and get_b() do not.
Definition at line 24 of file scissorEffect.I.
Referenced by cull_callback().
TypedWritable * ScissorEffect::make_from_bam | ( | const FactoryParams & | params | ) | [static, protected] |
This function is called by the BamReader's factory when a new object of type ScissorEffect is encountered in the Bam file.
It should create the ScissorEffect and extract its information from the file.
Definition at line 410 of file scissorEffect.cxx.
References fillin(), and LVecBase4f::zero().
Referenced by register_with_read_factory().
void ScissorEffect::register_with_read_factory | ( | ) | [static] |
Tells the BamReader how to create objects of type ScissorEffect.
Definition at line 374 of file scissorEffect.cxx.
References BamReader::get_factory(), make_from_bam(), and Factory< Type >::register_factory().
void ScissorEffect::write_datagram | ( | BamWriter * | manager, |
Datagram & | dg | ||
) | [virtual] |
Writes the contents of this object to the datagram for shipping out to a Bam file.
Reimplemented from RenderEffect.
Definition at line 385 of file scissorEffect.cxx.
References Datagram::add_bool(), Datagram::add_uint16(), and LVecBase4f::write_datagram().