mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-17 12:12:10 -04:00
add set_render_mode_thickness(), set_render_mode_perspective()
This commit is contained in:
parent
a1b75855e1
commit
1f320c8196
@ -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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user