minor interface tweaks

This commit is contained in:
David Rose 2003-11-10 19:24:17 +00:00
parent f4903270ea
commit 8eaa2efe72
3 changed files with 61 additions and 41 deletions

View File

@ -28,7 +28,7 @@ CData() {
_render_mode = RopeNode::RM_thread; _render_mode = RopeNode::RM_thread;
_uv_mode = RopeNode::UV_none; _uv_mode = RopeNode::UV_none;
_u_dominant = true; _u_dominant = true;
_uv_scale.set(1.0f, 1.0f); _uv_scale = 1.0f;
_use_vertex_color = false; _use_vertex_color = false;
_num_subdiv = 10; _num_subdiv = 10;
_thickness = 1.0f; _thickness = 1.0f;
@ -54,7 +54,7 @@ CData(const RopeNode::CData &copy) :
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_curve // Function: set_curve
// Access: Public // Access: Published
// Description: Sets the particular curve represented by the // Description: Sets the particular curve represented by the
// RopeNode. // RopeNode.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -66,7 +66,7 @@ set_curve(NurbsCurveEvaluator *curve) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_curve // Function: get_curve
// Access: Public // Access: Published
// Description: Returns the curve represented by the RopeNode. // Description: Returns the curve represented by the RopeNode.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE NurbsCurveEvaluator *RopeNode:: INLINE NurbsCurveEvaluator *RopeNode::
@ -77,7 +77,7 @@ get_curve() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_render_mode // Function: set_render_mode
// Access: Public // Access: Published
// Description: Specifies the method used to render the rope. The // Description: Specifies the method used to render the rope. The
// simplest is RM_thread, which just draws a one-pixel // simplest is RM_thread, which just draws a one-pixel
// line segment. // line segment.
@ -90,7 +90,7 @@ set_render_mode(RopeNode::RenderMode render_mode) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_render_mode // Function: get_render_mode
// Access: Public // Access: Published
// Description: Returns the method used to render the rope. See // Description: Returns the method used to render the rope. See
// set_render_mode(). // set_render_mode().
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -102,7 +102,7 @@ get_render_mode() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_uv_mode // Function: set_uv_mode
// Access: Public // Access: Published
// Description: Specifies the algorithm to use to generate UV's for // Description: Specifies the algorithm to use to generate UV's for
// the rope. // the rope.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -114,7 +114,7 @@ set_uv_mode(RopeNode::UVMode uv_mode) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_uv_mode // Function: get_uv_mode
// Access: Public // Access: Published
// Description: Returns the algorithm to use to generate UV's for the // Description: Returns the algorithm to use to generate UV's for the
// rope. // rope.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -126,7 +126,7 @@ get_uv_mode() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_uv_direction // Function: set_uv_direction
// Access: Public // Access: Published
// Description: Specify true to vary the U coordinate down the length // Description: Specify true to vary the U coordinate down the length
// of the rope, or false to vary the V coordinate. // of the rope, or false to vary the V coordinate.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -138,7 +138,7 @@ set_uv_direction(bool u_dominant) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_uv_direction // Function: get_uv_direction
// Access: Public // Access: Published
// Description: Returns true if the rope runs down the U coordinate // Description: Returns true if the rope runs down the U coordinate
// of the texture, or false if it runs down the V // of the texture, or false if it runs down the V
// coordinate. // coordinate.
@ -151,23 +151,42 @@ get_uv_direction() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_uv_scale // Function: set_uv_scale
// Access: Public // Access: Published
// Description: Specifies an additional scaling factor to apply to // Description: Specifies an additional scaling factor to apply to
// generated UV's for the rope. // generated UV's for the rope. This is a deprecated
// interface; use set_uv_scale() that accepts a single
// float, instead.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE void RopeNode:: INLINE void RopeNode::
set_uv_scale(const LVecBase2f &uv_scale) { set_uv_scale(const LVecBase2f &uv_scale) {
if (get_uv_direction()) {
set_uv_scale(uv_scale[0]);
} else {
set_uv_scale(uv_scale[1]);
}
}
////////////////////////////////////////////////////////////////////
// Function: set_uv_scale
// Access: Published
// Description: Specifies an additional scaling factor to apply to
// generated UV's along the rope. This scale factor is
// applied in whichever direction is along the rope, as
// specified by set_uv_direction().
////////////////////////////////////////////////////////////////////
INLINE void RopeNode::
set_uv_scale(float uv_scale) {
CDWriter cdata(_cycler); CDWriter cdata(_cycler);
cdata->_uv_scale = uv_scale; cdata->_uv_scale = uv_scale;
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_uv_scale // Function: get_uv_scale
// Access: Public // Access: Published
// Description: Returns the scaling factor to apply to generated UV's // Description: Returns the scaling factor to apply to generated UV's
// for the rope. // for the rope.
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
INLINE const LVecBase2f &RopeNode:: INLINE float RopeNode::
get_uv_scale() const { get_uv_scale() const {
CDReader cdata(_cycler); CDReader cdata(_cycler);
return cdata->_uv_scale; return cdata->_uv_scale;
@ -175,7 +194,7 @@ get_uv_scale() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_use_vertex_color // Function: set_use_vertex_color
// Access: Public // Access: Published
// Description: Sets the "use vertex color" flag. When this is true, // Description: Sets the "use vertex color" flag. When this is true,
// the R, G, B, A vertex color is assumed to be stored // the R, G, B, A vertex color is assumed to be stored
// as the dimensions 0, 1, 2, 3, respectively, of the // as the dimensions 0, 1, 2, 3, respectively, of the
@ -191,7 +210,7 @@ set_use_vertex_color(bool flag) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_use_vertex_color // Function: get_use_vertex_color
// Access: Public // Access: Published
// Description: Returns the "use vertex color" flag. See // Description: Returns the "use vertex color" flag. See
// set_use_vertex_color(). // set_use_vertex_color().
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -203,7 +222,7 @@ get_use_vertex_color() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_num_subdiv // Function: set_num_subdiv
// Access: Public // Access: Published
// Description: Specifies the number of subdivisions per cubic // Description: Specifies the number of subdivisions per cubic
// segment (that is, per unique knot value) to draw in a // segment (that is, per unique knot value) to draw in a
// fixed uniform tesselation of the curve. // fixed uniform tesselation of the curve.
@ -217,7 +236,7 @@ set_num_subdiv(int num_subdiv) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_num_subdiv // Function: get_num_subdiv
// Access: Public // Access: Published
// Description: Returns the number of subdivisions per cubic segment // Description: Returns the number of subdivisions per cubic segment
// to draw. See set_num_subdiv(). // to draw. See set_num_subdiv().
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -229,7 +248,7 @@ get_num_subdiv() const {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: set_thickness // Function: set_thickness
// Access: Public // Access: Published
// Description: Specifies the thickness of the rope, in pixels or in // Description: Specifies the thickness of the rope, in pixels or in
// spatial units, depending on the render mode. See // spatial units, depending on the render mode. See
// set_render_mode(). // set_render_mode().
@ -243,7 +262,7 @@ set_thickness(float thickness) {
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
// Function: get_thickness // Function: get_thickness
// Access: Public // Access: Published
// Description: Returns the thickness of the rope. See // Description: Returns the thickness of the rope. See
// set_thickness(). // set_thickness().
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

View File

@ -267,7 +267,7 @@ void RopeNode::
render_thread(CullTraverser *trav, CullTraverserData &data, render_thread(CullTraverser *trav, CullTraverserData &data,
NurbsCurveResult *result) { NurbsCurveResult *result) {
UVMode uv_mode = get_uv_mode(); UVMode uv_mode = get_uv_mode();
LVecBase2f uv_scale = get_uv_scale(); float uv_scale = get_uv_scale();
bool u_dominant = get_uv_direction(); bool u_dominant = get_uv_direction();
bool use_vertex_color = get_use_vertex_color(); bool use_vertex_color = get_use_vertex_color();
@ -300,9 +300,9 @@ render_thread(CullTraverser *trav, CullTraverserData &data,
case UV_parametric: case UV_parametric:
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(t * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(t * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(0.0f, t * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, t * uv_scale));
} }
break; break;
@ -312,9 +312,9 @@ render_thread(CullTraverser *trav, CullTraverserData &data,
dist += vec.length(); dist += vec.length();
} }
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(dist * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(dist * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(0.0f, dist * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, dist * uv_scale));
} }
break; break;
@ -324,9 +324,9 @@ render_thread(CullTraverser *trav, CullTraverserData &data,
dist += vec.length_squared(); dist += vec.length_squared();
} }
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(dist * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(dist * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(0.0f, dist * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, dist * uv_scale));
} }
break; break;
} }
@ -381,7 +381,7 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
float radius = thickness * 0.5f; float radius = thickness * 0.5f;
UVMode uv_mode = get_uv_mode(); UVMode uv_mode = get_uv_mode();
bool u_dominant = get_uv_direction(); bool u_dominant = get_uv_direction();
LVecBase2f uv_scale = get_uv_scale(); float uv_scale = get_uv_scale();
// We can't just build one tristrip per segment. Instead, we should // We can't just build one tristrip per segment. Instead, we should
// build one continuous tristrip for all connected segments, so we // build one continuous tristrip for all connected segments, so we
@ -462,11 +462,11 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
case UV_parametric: case UV_parametric:
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(t * uv_scale[0], uv_scale[1])); uvs.push_back(TexCoordf(t * uv_scale, 1.0f));
uvs.push_back(TexCoordf(t * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(t * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(uv_scale[0], t * uv_scale[1])); uvs.push_back(TexCoordf(1.0f, t * uv_scale));
uvs.push_back(TexCoordf(0.0f, t * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, t * uv_scale));
} }
break; break;
@ -476,11 +476,11 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
dist += vec.length(); dist += vec.length();
} }
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(dist * uv_scale[0], thickness * uv_scale[1])); uvs.push_back(TexCoordf(dist * uv_scale, 1.0f));
uvs.push_back(TexCoordf(dist * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(dist * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(thickness * uv_scale[0], dist * uv_scale[1])); uvs.push_back(TexCoordf(1.0f, dist * uv_scale));
uvs.push_back(TexCoordf(0.0f, dist * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, dist * uv_scale));
} }
break; break;
@ -490,11 +490,11 @@ render_billboard(CullTraverser *trav, CullTraverserData &data,
dist += vec.length_squared(); dist += vec.length_squared();
} }
if (u_dominant) { if (u_dominant) {
uvs.push_back(TexCoordf(dist * uv_scale[0], thickness * uv_scale[1])); uvs.push_back(TexCoordf(dist * uv_scale, 1.0f));
uvs.push_back(TexCoordf(dist * uv_scale[0], 0.0f)); uvs.push_back(TexCoordf(dist * uv_scale, 0.0f));
} else { } else {
uvs.push_back(TexCoordf(thickness * uv_scale[0], dist * uv_scale[1])); uvs.push_back(TexCoordf(1.0f, dist * uv_scale));
uvs.push_back(TexCoordf(0.0f, dist * uv_scale[1])); uvs.push_back(TexCoordf(0.0f, dist * uv_scale));
} }
break; break;
} }

View File

@ -96,7 +96,8 @@ PUBLISHED:
INLINE bool get_uv_direction() const; INLINE bool get_uv_direction() const;
INLINE void set_uv_scale(const LVecBase2f &uv_scale); INLINE void set_uv_scale(const LVecBase2f &uv_scale);
INLINE const LVecBase2f &get_uv_scale() const; INLINE void set_uv_scale(float scale);
INLINE float get_uv_scale() const;
INLINE void set_use_vertex_color(bool flag); INLINE void set_use_vertex_color(bool flag);
INLINE bool get_use_vertex_color() const; INLINE bool get_use_vertex_color() const;
@ -133,7 +134,7 @@ private:
RenderMode _render_mode; RenderMode _render_mode;
UVMode _uv_mode; UVMode _uv_mode;
bool _u_dominant; bool _u_dominant;
LVecBase2f _uv_scale; float _uv_scale;
bool _use_vertex_color; bool _use_vertex_color;
int _num_subdiv; int _num_subdiv;
float _thickness; float _thickness;