36 explicit RopeNode(
const std::string &name);
41 virtual void output(std::ostream &out)
const;
42 virtual void write(std::ostream &out,
int indent_level = 0)
const;
97 INLINE
void set_render_mode(RenderMode render_mode);
98 INLINE RenderMode get_render_mode()
const;
100 INLINE
void set_uv_mode(UVMode uv_mode);
101 INLINE UVMode get_uv_mode()
const;
103 INLINE
void set_uv_direction(
bool u_dominant);
104 INLINE
bool get_uv_direction()
const;
106 INLINE
void set_uv_scale(PN_stdfloat scale);
107 INLINE PN_stdfloat get_uv_scale()
const;
109 INLINE
void set_normal_mode(NormalMode normal_mode);
110 INLINE NormalMode get_normal_mode()
const;
112 INLINE
void set_tube_up(
const LVector3 &tube_up);
113 INLINE
const LVector3 &get_tube_up()
const;
115 INLINE
void set_use_vertex_color(
bool flag);
116 INLINE
bool get_use_vertex_color()
const;
117 INLINE
static int get_vertex_color_dimension();
119 INLINE
void set_num_subdiv(
int num_subdiv);
120 INLINE
int get_num_subdiv()
const;
122 INLINE
void set_num_slices(
int num_slices);
123 INLINE
int get_num_slices()
const;
125 INLINE
void set_use_vertex_thickness(
bool flag);
126 INLINE
bool get_use_vertex_thickness()
const;
127 INLINE
static int get_vertex_thickness_dimension();
129 INLINE
void set_thickness(PN_stdfloat thickness);
130 INLINE PN_stdfloat get_thickness()
const;
132 INLINE
void set_matrix(
const LMatrix4 &matrix);
133 INLINE
void clear_matrix();
134 INLINE
bool has_matrix()
const;
135 INLINE
const LMatrix4 &get_matrix()
const;
137 void reset_bound(
const NodePath &rel_to);
140 MAKE_PROPERTY(curve, get_curve, set_curve);
141 MAKE_PROPERTY(render_mode, get_render_mode, set_render_mode);
142 MAKE_PROPERTY(uv_mode, get_uv_mode, set_uv_mode);
143 MAKE_PROPERTY(uv_direction, get_uv_direction, set_uv_direction);
144 MAKE_PROPERTY(uv_scale, get_uv_scale, set_uv_scale);
145 MAKE_PROPERTY(normal_mode, get_normal_mode, set_normal_mode);
146 MAKE_PROPERTY(tube_up, get_tube_up, set_tube_up);
147 MAKE_PROPERTY(use_vertex_color, get_use_vertex_color, set_use_vertex_color);
148 MAKE_PROPERTY(vertex_color_dimension, get_vertex_color_dimension);
149 MAKE_PROPERTY(num_subdiv, get_num_subdiv, set_num_subdiv);
150 MAKE_PROPERTY(num_slices, get_num_slices, set_num_slices);
151 MAKE_PROPERTY(use_vertex_thickness, get_use_vertex_thickness, set_use_vertex_thickness);
152 MAKE_PROPERTY(vertex_thickness_dimension, get_vertex_thickness_dimension);
153 MAKE_PROPERTY(thickness, get_thickness, set_thickness);
154 MAKE_PROPERTY2(matrix, has_matrix, get_matrix, set_matrix, clear_matrix);
157 virtual void compute_internal_bounds(CPT(
BoundingVolume) &internal_bounds,
158 int &internal_vertices,
160 Thread *current_thread)
const;
167 Thread *current_thread)
const;
180 UnalignedLVecBase4 _c;
181 PN_stdfloat _thickness;
187 int get_connected_segments(CurveSegments &curve_segments,
191 const CurveSegments &curve_segments,
192 int num_curve_verts)
const;
194 const LVector3 &camera_vec,
195 const CurveSegments &curve_segments,
199 int &num_verts_per_slice,
200 const CurveSegments &curve_segments,
204 static void compute_tangent(LVector3 &tangent,
const CurveSegment &segment,
206 static PN_stdfloat compute_uv_t(PN_stdfloat &dist,
const UVMode &uv_mode,
207 PN_stdfloat uv_scale,
const CurveSegment &segment,
213 class EXPCL_PANDA_PARAMETRICS CData :
public CycleData {
216 INLINE CData(
const CData ©);
221 return RopeNode::get_class_type();
225 RenderMode _render_mode;
228 PN_stdfloat _uv_scale;
229 NormalMode _normal_mode;
233 bool _use_vertex_color;
236 bool _use_vertex_thickness;
237 PN_stdfloat _thickness;
247 static void register_with_read_factory();
258 static void init_type() {
259 PandaNode::init_type();
261 PandaNode::get_class_type());
264 return get_class_type();
266 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A basic node of the scene graph or data graph.
This is the fundamental interface for extracting binary objects from a Bam file, as generated by a Ba...
A single page of data maintained by a PipelineCycler.
This class is an abstraction for evaluating NURBS curves.
Base class for objects that can be written to and read from Bam files.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual TypeHandle get_parent_type() const
Returns the type of the container that owns the CycleData.
This collects together the pieces of data that are accumulated for each node while walking the scene ...
This class draws a visible representation of the NURBS curve stored in its NurbsCurveEvaluator.
This is the fundamental interface for writing binary objects to a Bam file, to be extracted later by ...
This template class calls PipelineCycler::read_unlocked(), and then provides a transparent read-only ...
This is our own Panda specialization on the default STL vector.
This is an abstract class for any volume in any sense which can be said to define the locality of ref...
A lightweight class that represents a single element that may be timed and/or counted via stats.
virtual void write_datagram(BamWriter *, Datagram &) const
Writes the contents of this object to the datagram for shipping out to a Bam file.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
This defines the actual numeric vertex data stored in a Geom, in the structure defined by a particula...
An instance of this class is passed to the Factory when requesting it to do its business and construc...
This template class calls PipelineCycler::write() in the constructor and PipelineCycler::release_writ...
virtual PandaNode * make_copy() const
Returns a newly-allocated PandaNode that is a shallow copy of this one.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
virtual void fillin(DatagramIterator &scan, BamReader *manager)
This internal function is intended to be called by each class's make_from_bam() method to read in all...
A thread; that is, a lightweight process.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
A class to retrieve the individual data elements previously stored in a Datagram.
TypeHandle is the identifier used to differentiate C++ class types.
virtual bool safe_to_transform() const
Returns true if it is generally safe to transform this particular kind of PandaNode by calling the xf...
An ordered list of data elements, formatted in memory for transmission over a socket or writing to a ...
virtual bool is_renderable() const
Returns true if there is some value to visiting this particular node during the cull traversal for an...
The result of a NurbsCurveEvaluator.
NodePath is the fundamental system for disambiguating instances, and also provides a higher-level int...
This object performs a depth-first traversal of the scene graph, with optional view-frustum culling,...