Panda3D
Classes | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Static Protected Member Functions

ScissorEffect Class Reference

This provides a higher-level wrapper around ScissorAttrib. More...

#include "scissorEffect.h"

Inheritance diagram for ScissorEffect:
RenderEffect TypedWritableReferenceCount TypedWritable ReferenceCount TypedObject MemoryBase MemoryBase

List of all members.

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 LVecBase4get_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 LPoint3get_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 LPoint3b
static const LPoint3 const
LPoint3
c
static bool clip = true)
static const LPoint3 const
LPoint3 const LPoint3
d
const NodePathnode = NodePath()) const
static const LPoint3 const
NodePath
node = NodePath())
static const LPoint3 const
LPoint3 const LPoint3 const
NodePath
node = NodePath())

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 TypedWritablemake_from_bam (const FactoryParams &params)
 This function is called by the BamReader's factory when a new object of type ScissorEffect is encountered in the Bam file.

Detailed Description

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.


Member Function Documentation

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().


The documentation for this class was generated from the following files:
 All Classes Functions Variables Enumerations