add set_render_mode_thickness(), set_render_mode_perspective()

This commit is contained in:
David Rose 2006-05-12 20:37:21 +00:00
parent a1b75855e1
commit 1f320c8196
2 changed files with 75 additions and 4 deletions

View File

@ -4490,7 +4490,9 @@ get_fog() const {
void NodePath::
set_render_mode_wireframe(int priority) {
nassertv_always(!is_empty());
node()->set_attrib(RenderModeAttrib::make(RenderModeAttrib::M_wireframe), priority);
float thickness = get_render_mode_thickness();
bool perspective = get_render_mode_perspective();
node()->set_attrib(RenderModeAttrib::make(RenderModeAttrib::M_wireframe, thickness, perspective), priority);
}
////////////////////////////////////////////////////////////////////
@ -4503,7 +4505,53 @@ set_render_mode_wireframe(int priority) {
void NodePath::
set_render_mode_filled(int priority) {
nassertv_always(!is_empty());
node()->set_attrib(RenderModeAttrib::make(RenderModeAttrib::M_filled), priority);
float thickness = get_render_mode_thickness();
bool perspective = get_render_mode_perspective();
node()->set_attrib(RenderModeAttrib::make(RenderModeAttrib::M_filled, thickness, perspective), priority);
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::set_render_mode_perspective
// Access: Published
// Description: Sets up the point geometry at this level and below to
// render as perspective sprites (that is, billboarded
// quads). The thickness, as specified with
// set_render_mode_thickness(), is the width of each
// point in 3-D units, unless it is overridden on a
// per-vertex basis. This does not affect geometry
// other than points.
//
// If you want the quads to be individually textured,
// you should also set a TexGenAttrib::M_point_sprite on
// the node.
////////////////////////////////////////////////////////////////////
void NodePath::
set_render_mode_perspective(bool perspective, int priority) {
nassertv_always(!is_empty());
RenderModeAttrib::Mode mode = get_render_mode();
float thickness = get_render_mode_thickness();
node()->set_attrib(RenderModeAttrib::make(mode, thickness, perspective), priority);
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::set_render_mode_thickness
// Access: Published
// Description: Sets up the point geometry at this level and below to
// render as thick points (that is, billboarded
// quads). The thickness is in pixels, unless
// set_render_mode_perspective is also true, in which
// case it is in 3-D units.
//
// If you want the quads to be individually textured,
// you should also set a TexGenAttrib::M_point_sprite on
// the node.
////////////////////////////////////////////////////////////////////
void NodePath::
set_render_mode_thickness(float thickness, int priority) {
nassertv_always(!is_empty());
RenderModeAttrib::Mode mode = get_render_mode();
bool perspective = get_render_mode_perspective();
node()->set_attrib(RenderModeAttrib::make(mode, thickness, perspective), priority);
}
////////////////////////////////////////////////////////////////////
@ -4573,7 +4621,7 @@ get_render_mode() const {
// Access: Published
// Description: Returns the render mode thickness that has been
// specifically set on this node via set_render_mode(),
// or 0.0 if nothing has been set.
// or 1.0 if nothing has been set.
////////////////////////////////////////////////////////////////////
float NodePath::
get_render_mode_thickness() const {
@ -4585,7 +4633,27 @@ get_render_mode_thickness() const {
return ta->get_thickness();
}
return 0.0f;
return 1.0f;
}
////////////////////////////////////////////////////////////////////
// Function: NodePath::get_render_mode_perspective
// Access: Published
// Description: Returns the flag that has been set on this node via
// set_render_mode_perspective(), or false if no flag
// has been set.
////////////////////////////////////////////////////////////////////
bool NodePath::
get_render_mode_perspective() const {
nassertr_always(!is_empty(), 0.0f);
const RenderAttrib *attrib =
node()->get_attrib(RenderModeAttrib::get_class_type());
if (attrib != (const RenderAttrib *)NULL) {
const RenderModeAttrib *ta = DCAST(RenderModeAttrib, attrib);
return ta->get_perspective();
}
return false;
}
////////////////////////////////////////////////////////////////////

View File

@ -694,11 +694,14 @@ PUBLISHED:
void set_render_mode_wireframe(int priority = 0);
void set_render_mode_filled(int priority = 0);
void set_render_mode_thickness(float thickness, int priority = 0);
void set_render_mode_perspective(bool perspective, int priority = 0);
void set_render_mode(RenderModeAttrib::Mode mode, float thickness, int priority = 0);
void clear_render_mode();
bool has_render_mode() const;
RenderModeAttrib::Mode get_render_mode() const;
float get_render_mode_thickness() const;
bool get_render_mode_perspective() const;
void set_two_sided(bool two_sided, int priority = 0);
void clear_two_sided();