Panda3D
Loading...
Searching...
No Matches
Public Member Functions | List of all members
GeomVertexWriter Class Reference

This object provides a high-level interface for quickly writing a sequence of numeric values from a vertex table. More...

#include "geomVertexWriter.h"

Inheritance diagram for GeomVertexWriter:
GeomEnums GeomVertexRewriter

Public Member Functions

 GeomVertexWriter (const GeomVertexWriter &copy)
 
 GeomVertexWriter (GeomVertexArrayData *array_data, int column, Thread *current_thread=Thread::get_current_thread())
 Constructs a new writer to process the vertices of the indicated array only.
 
 GeomVertexWriter (GeomVertexArrayData *array_data, Thread *current_thread=Thread::get_current_thread())
 Constructs a new writer to process the vertices of the indicated array only.
 
 GeomVertexWriter (GeomVertexData *vertex_data, CPT_InternalName name, Thread *current_thread=Thread::get_current_thread())
 Constructs a new writer to process the vertices of the indicated data object.
 
 GeomVertexWriter (GeomVertexData *vertex_data, Thread *current_thread=Thread::get_current_thread())
 Constructs a new writer to process the vertices of the indicated data object.
 
 GeomVertexWriter (GeomVertexDataPipelineWriter *data_writer, const InternalName *name)
 Constructs a new writer to process the vertices of the indicated data object.
 
 GeomVertexWriter (Thread *current_thread=Thread::get_current_thread())
 Constructs an invalid GeomVertexWriter.
 
void add_data1 (PN_stdfloat data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void add_data1d (double data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void add_data1f (float data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void add_data1i (int data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void add_data2 (const LVecBase2 &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2 (PN_stdfloat x, PN_stdfloat y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2d (const LVecBase2d &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2d (double x, double y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2f (const LVecBase2f &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2f (float x, float y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2i (const LVecBase2i &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data2i (int a, int b)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void add_data3 (const LVecBase3 &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3 (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3d (const LVecBase3d &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3d (double x, double y, double z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3f (const LVecBase3f &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3f (float x, float y, float z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3i (const LVecBase3i &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data3i (int a, int b, int c)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void add_data4 (const LVecBase4 &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4 (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4d (const LVecBase4d &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4d (double x, double y, double z, double w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4f (const LVecBase4f &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4f (float x, float y, float z, float w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4i (const LVecBase4i &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_data4i (int a, int b, int c, int d)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void add_matrix3 (const LMatrix3 &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void add_matrix3d (const LMatrix3d &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void add_matrix3f (const LMatrix3f &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void add_matrix4 (const LMatrix4 &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void add_matrix4d (const LMatrix4d &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void add_matrix4f (const LMatrix4f &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void clear ()
 Resets the GeomVertexWriter to the initial state.
 
int get_array () const
 Returns the array index containing the data type that the writer is working on.
 
GeomVertexArrayDataget_array_data () const
 Returns the particular array object that the writer is currently processing.
 
GeomVertexArrayDataHandleget_array_handle () const
 Returns the write handle to the array object that the writer is currently processing.
 
const GeomVertexColumnget_column () const
 Returns the description of the data type that the writer is working on.
 
Threadget_current_thread () const
 Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this object.
 
int get_start_row () const
 Returns the row index at which the writer started.
 
size_t get_stride () const
 Returns the per-row stride (bytes between consecutive rows) of the underlying vertex array.
 
GeomVertexDataget_vertex_data () const
 Returns the vertex data object that the writer is processing.
 
int get_write_row () const
 Returns the row index to which the data will be written at the next call to set_data*() or add_data*().
 
bool has_column () const
 Returns true if a valid data type has been successfully set, or false if the data type does not exist.
 
bool is_at_end () const
 Returns true if the writer is currently at the end of the list of vertices, false otherwise.
 
void operator= (const GeomVertexWriter &copy)
 
void output (std::ostream &out) const
 
bool reserve_num_rows (int num_rows)
 This ensures that enough memory space for num_rows is allocated, so that you may add up to num_rows rows without causing a new memory allocation.
 
bool set_column (CPT_InternalName name)
 Sets up the writer to use the data type with the indicated name.
 
bool set_column (int array, const GeomVertexColumn *column)
 Sets up the writer to use the indicated column description on the given array.
 
bool set_column (int column)
 Sets up the writer to use the nth data type of the GeomVertexFormat, numbering from 0.
 
void set_data1 (PN_stdfloat data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void set_data1d (double data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void set_data1f (float data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void set_data1i (int data)
 Sets the write row to a particular 1-component value, and advances the write row.
 
void set_data2 (const LVecBase2 &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2 (PN_stdfloat x, PN_stdfloat y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2d (const LVecBase2d &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2d (double x, double y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2f (const LVecBase2f &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2f (float x, float y)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2i (const LVecBase2i &data)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data2i (int a, int b)
 Sets the write row to a particular 2-component value, and advances the write row.
 
void set_data3 (const LVecBase3 &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3 (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3d (const LVecBase3d &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3d (double x, double y, double z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3f (const LVecBase3f &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3f (float x, float y, float z)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3i (const LVecBase3i &data)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data3i (int a, int b, int c)
 Sets the write row to a particular 3-component value, and advances the write row.
 
void set_data4 (const LVecBase4 &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4 (PN_stdfloat x, PN_stdfloat y, PN_stdfloat z, PN_stdfloat w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4d (const LVecBase4d &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4d (double x, double y, double z, double w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4f (const LVecBase4f &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4f (float x, float y, float z, float w)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4i (const LVecBase4i &data)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_data4i (int a, int b, int c, int d)
 Sets the write row to a particular 4-component value, and advances the write row.
 
void set_matrix3 (const LMatrix3 &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void set_matrix3d (const LMatrix3d &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void set_matrix3f (const LMatrix3f &mat)
 Sets the write row to a 3-by-3 matrix, and advances the write row.
 
void set_matrix4 (const LMatrix4 &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void set_matrix4d (const LMatrix4d &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void set_matrix4f (const LMatrix4f &mat)
 Sets the write row to a 4-by-4 matrix, and advances the write row.
 
void set_row (int row)
 Sets the start row to the indicated value.
 
void set_row_unsafe (int row)
 Sets the start row to the indicated value, without internal checks.
 

Additional Inherited Members

- Public Types inherited from GeomEnums
enum  AnimationType { AT_none , AT_panda , AT_hardware }
 
enum  Contents {
  C_other , C_point , C_clip_point , C_vector ,
  C_texcoord , C_color , C_index , C_morph_delta ,
  C_matrix , C_normal
}
 
enum  GeomRendering {
  GR_indexed_point = 0x00001 , GR_indexed_other = 0x10000 , GR_indexed_bits = 0x10001 , GR_point = 0x00002 ,
  GR_point_uniform_size = 0x00004 , GR_per_point_size = 0x00008 , GR_point_perspective = 0x00010 , GR_point_aspect_ratio = 0x00020 ,
  GR_point_scale = 0x00040 , GR_point_rotate = 0x00080 , GR_point_sprite = 0x00100 , GR_point_sprite_tex_matrix = 0x00200 ,
  GR_point_bits = 0x003fe , GR_triangle_strip = 0x00400 , GR_triangle_fan = 0x00800 , GR_line_strip = 0x01000 ,
  GR_composite_bits = 0x01c00 , GR_strip_cut_index = 0x20000 , GR_flat_first_vertex = 0x02000 , GR_flat_last_vertex = 0x04000 ,
  GR_shade_model_bits = 0x06000 , GR_render_mode_wireframe = 0x40000 , GR_render_mode_point = 0x80000 , GR_adjacency = 0x100000
}
 
enum  NumericType {
  NT_uint8 , NT_uint16 , NT_uint32 , NT_packed_dcba ,
  NT_packed_dabc , NT_float32 , NT_float64 , NT_stdfloat ,
  NT_int8 , NT_int16 , NT_int32 , NT_packed_ufloat
}
 
enum  PrimitiveType {
  PT_none , PT_polygons , PT_lines , PT_points ,
  PT_patches
}
 
enum  ShadeModel { SM_uniform , SM_smooth , SM_flat_first_vertex , SM_flat_last_vertex }
 
enum  UsageHint {
  UH_client , UH_stream , UH_dynamic , UH_static ,
  UH_unspecified
}
 

Detailed Description

This object provides a high-level interface for quickly writing a sequence of numeric values from a vertex table.

This object can be used both to replace existing vertices in the table, or to extend the table with new vertices. The set_data*() family of methods can only be used to replace existing data; it is an error to allow these to run past the end of the data. The add_data*() family of methods, on the other hand, can be used to replace existing data or add new data; if you call set_row() into the middle of existing data the add_data*() methods will behave like the corresponding set_data*(), but if they run past the end of existing data they will quietly add new vertices.

Like GeomVertexReader, the writer is particularly optimized for writing a single column of data values for a series of vertices, without changing columns between each number. Although you can also use one GeomVertexWriter to write across the columns if it is convenient, by calling set_column() repeatedly at each vertex, it is faster to write down the columns, and to use a different GeomVertexWriter for each column.

Note that, like a GeomVertexReader, a GeomVertexWriter does not keep a reference count to the actual vertex data buffer. This means that it is important not to keep a GeomVertexWriter object around over a long period of time in which the data buffer is likely to be deallocated; it is intended for making a quick pass over the data in one session.

It also means that you should create any GeomVertexWriters *before* creating GeomVertexReaders on the same data, since the writer itself might cause the vertex buffer to be deallocated. Better yet, use a GeomVertexRewriter if you are going to create both of them anyway.

Definition at line 55 of file geomVertexWriter.h.

Constructor & Destructor Documentation

◆ GeomVertexWriter() [1/7]

GeomVertexWriter::GeomVertexWriter ( Thread * current_thread = Thread::get_current_thread())
inline

Constructs an invalid GeomVertexWriter.

You must use the assignment operator to assign a valid GeomVertexWriter to this object before you can use it.

Definition at line 19 of file geomVertexWriter.I.

Referenced by clear().

◆ GeomVertexWriter() [2/7]

GeomVertexWriter::GeomVertexWriter ( GeomVertexData * vertex_data,
Thread * current_thread = Thread::get_current_thread() )
inline

Constructs a new writer to process the vertices of the indicated data object.

Definition at line 31 of file geomVertexWriter.I.

◆ GeomVertexWriter() [3/7]

GeomVertexWriter::GeomVertexWriter ( GeomVertexData * vertex_data,
CPT_InternalName name,
Thread * current_thread = Thread::get_current_thread() )
inline

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

Definition at line 44 of file geomVertexWriter.I.

References set_column().

◆ GeomVertexWriter() [4/7]

GeomVertexWriter::GeomVertexWriter ( GeomVertexArrayData * array_data,
Thread * current_thread = Thread::get_current_thread() )
inline

Constructs a new writer to process the vertices of the indicated array only.

Definition at line 58 of file geomVertexWriter.I.

◆ GeomVertexWriter() [5/7]

GeomVertexWriter::GeomVertexWriter ( GeomVertexArrayData * array_data,
int column,
Thread * current_thread = Thread::get_current_thread() )
inline

Constructs a new writer to process the vertices of the indicated array only.

Definition at line 71 of file geomVertexWriter.I.

References set_column().

◆ GeomVertexWriter() [6/7]

GeomVertexWriter::GeomVertexWriter ( GeomVertexDataPipelineWriter * data_writer,
const InternalName * name )
inline

Constructs a new writer to process the vertices of the indicated data object.

This flavor creates the writer specifically to process the named data type.

Definition at line 86 of file geomVertexWriter.I.

References GeomVertexFormat::get_array_with(), and GeomVertexFormat::get_column.

◆ GeomVertexWriter() [7/7]

GeomVertexWriter::GeomVertexWriter ( const GeomVertexWriter & copy)
inline

Definition at line 102 of file geomVertexWriter.I.

◆ ~GeomVertexWriter()

GeomVertexWriter::~GeomVertexWriter ( )
inline

Definition at line 139 of file geomVertexWriter.I.

Member Function Documentation

◆ add_data1()

void GeomVertexWriter::add_data1 ( PN_stdfloat data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1083 of file geomVertexWriter.I.

References add_data1d(), and add_data1f().

◆ add_data1d()

void GeomVertexWriter::add_data1d ( double data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 947 of file geomVertexWriter.I.

References has_column().

Referenced by add_data1().

◆ add_data1f()

void GeomVertexWriter::add_data1f ( float data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 811 of file geomVertexWriter.I.

References has_column().

Referenced by add_data1().

◆ add_data1i()

void GeomVertexWriter::add_data1i ( int data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1227 of file geomVertexWriter.I.

References has_column().

Referenced by GeomPrimitive::pack_vertices(), and PT().

◆ add_data2() [1/2]

void GeomVertexWriter::add_data2 ( const LVecBase2 & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1115 of file geomVertexWriter.I.

References add_data2d(), and add_data2f().

◆ add_data2() [2/2]

void GeomVertexWriter::add_data2 ( PN_stdfloat x,
PN_stdfloat y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1099 of file geomVertexWriter.I.

References add_data2d(), and add_data2f().

Referenced by WindowFramework::load_default_model(), PT(), PT(), PT(), PT(), MeshDrawer2D::quad_raw(), and MeshDrawer::tri().

◆ add_data2d() [1/2]

void GeomVertexWriter::add_data2d ( const LVecBase2d & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 972 of file geomVertexWriter.I.

References has_column().

◆ add_data2d() [2/2]

void GeomVertexWriter::add_data2d ( double x,
double y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 960 of file geomVertexWriter.I.

References add_data2d().

Referenced by add_data2(), add_data2(), and add_data2d().

◆ add_data2f() [1/2]

void GeomVertexWriter::add_data2f ( const LVecBase2f & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 836 of file geomVertexWriter.I.

References has_column().

◆ add_data2f() [2/2]

void GeomVertexWriter::add_data2f ( float x,
float y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 824 of file geomVertexWriter.I.

References add_data2f().

Referenced by add_data2(), add_data2(), add_data2f(), PfmVizzer::generate_vis_points(), PT(), and PhysxSoftBodyNode::set_from_geom().

◆ add_data2i() [1/2]

void GeomVertexWriter::add_data2i ( const LVecBase2i & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1252 of file geomVertexWriter.I.

References has_column().

◆ add_data2i() [2/2]

void GeomVertexWriter::add_data2i ( int a,
int b )
inline

Sets the write row to a particular 2-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1240 of file geomVertexWriter.I.

References add_data2i().

Referenced by add_data2i().

◆ add_data3() [1/2]

void GeomVertexWriter::add_data3 ( const LVecBase3 & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1147 of file geomVertexWriter.I.

References add_data3d(), and add_data3f().

◆ add_data3() [2/2]

void GeomVertexWriter::add_data3 ( PN_stdfloat x,
PN_stdfloat y,
PN_stdfloat z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1131 of file geomVertexWriter.I.

References add_data3d(), and add_data3f().

Referenced by PortalClipper::draw_lines(), MeshDrawer::end(), MeshDrawer2D::end(), WindowFramework::load_default_model(), PT(), PT(), PT(), PT(), PT(), PT(), PT(), PT(), MeshDrawer2D::quad_raw(), and MeshDrawer::tri().

◆ add_data3d() [1/2]

void GeomVertexWriter::add_data3d ( const LVecBase3d & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 997 of file geomVertexWriter.I.

References has_column().

◆ add_data3d() [2/2]

void GeomVertexWriter::add_data3d ( double x,
double y,
double z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 985 of file geomVertexWriter.I.

References add_data3d().

Referenced by add_data3(), add_data3(), add_data3d(), and PT().

◆ add_data3f() [1/2]

void GeomVertexWriter::add_data3f ( const LVecBase3f & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 861 of file geomVertexWriter.I.

References has_column().

◆ add_data3f() [2/2]

void GeomVertexWriter::add_data3f ( float x,
float y,
float z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 849 of file geomVertexWriter.I.

References add_data3f().

Referenced by add_data3(), add_data3(), add_data3f(), PfmVizzer::generate_vis_points(), PT(), and PhysxSoftBodyNode::set_from_geom().

◆ add_data3i() [1/2]

void GeomVertexWriter::add_data3i ( const LVecBase3i & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1277 of file geomVertexWriter.I.

References has_column().

◆ add_data3i() [2/2]

void GeomVertexWriter::add_data3i ( int a,
int b,
int c )
inline

Sets the write row to a particular 3-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1265 of file geomVertexWriter.I.

References add_data3i().

Referenced by add_data3i().

◆ add_data4() [1/2]

void GeomVertexWriter::add_data4 ( const LVecBase4 & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1179 of file geomVertexWriter.I.

References add_data4d(), and add_data4f().

◆ add_data4() [2/2]

void GeomVertexWriter::add_data4 ( PN_stdfloat x,
PN_stdfloat y,
PN_stdfloat z,
PN_stdfloat w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1163 of file geomVertexWriter.I.

References add_data4d(), and add_data4f().

Referenced by PT(), MeshDrawer2D::quad_raw(), and MeshDrawer::tri().

◆ add_data4d() [1/2]

void GeomVertexWriter::add_data4d ( const LVecBase4d & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1022 of file geomVertexWriter.I.

References has_column().

◆ add_data4d() [2/2]

void GeomVertexWriter::add_data4d ( double x,
double y,
double z,
double w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1010 of file geomVertexWriter.I.

References add_data4d().

Referenced by add_data4(), add_data4(), add_data4d(), and PT().

◆ add_data4f() [1/2]

void GeomVertexWriter::add_data4f ( const LVecBase4f & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 886 of file geomVertexWriter.I.

References has_column().

◆ add_data4f() [2/2]

void GeomVertexWriter::add_data4f ( float x,
float y,
float z,
float w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 874 of file geomVertexWriter.I.

References add_data4f().

Referenced by add_data4(), add_data4(), and add_data4f().

◆ add_data4i() [1/2]

void GeomVertexWriter::add_data4i ( const LVecBase4i & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1302 of file geomVertexWriter.I.

References has_column().

◆ add_data4i() [2/2]

void GeomVertexWriter::add_data4i ( int a,
int b,
int c,
int d )
inline

Sets the write row to a particular 4-component value, and advances the write row.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1290 of file geomVertexWriter.I.

References add_data4i().

Referenced by add_data4i(), and PT().

◆ add_matrix3()

void GeomVertexWriter::add_matrix3 ( const LMatrix3 & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1195 of file geomVertexWriter.I.

References add_matrix3d(), and add_matrix3f().

◆ add_matrix3d()

void GeomVertexWriter::add_matrix3d ( const LMatrix3d & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1035 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by add_matrix3().

◆ add_matrix3f()

void GeomVertexWriter::add_matrix3f ( const LMatrix3f & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 899 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by add_matrix3().

◆ add_matrix4()

void GeomVertexWriter::add_matrix4 ( const LMatrix4 & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1211 of file geomVertexWriter.I.

References add_matrix4d(), and add_matrix4f().

◆ add_matrix4d()

void GeomVertexWriter::add_matrix4d ( const LMatrix4d & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 1058 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by add_matrix4().

◆ add_matrix4f()

void GeomVertexWriter::add_matrix4f ( const LMatrix4f & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

If the write row advances past the end of data, implicitly adds a new row to the data.

Definition at line 922 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by add_matrix4().

◆ clear()

void GeomVertexWriter::clear ( )
inline

Resets the GeomVertexWriter to the initial state.

Definition at line 243 of file geomVertexWriter.I.

References GeomVertexWriter().

Referenced by GeomVertexRewriter::clear().

◆ get_array()

int GeomVertexWriter::get_array ( ) const
inline

Returns the array index containing the data type that the writer is working on.

Definition at line 261 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_array().

◆ get_array_data()

GeomVertexArrayData * GeomVertexWriter::get_array_data ( ) const
inline

Returns the particular array object that the writer is currently processing.

Definition at line 156 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_array_data().

◆ get_array_handle()

GeomVertexArrayDataHandle * GeomVertexWriter::get_array_handle ( ) const
inline

Returns the write handle to the array object that the writer is currently processing.

This low-level call should be used with caution; be careful with modifying the data in the handle out from under the GeomVertexWriter.

Definition at line 166 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_array_handle().

◆ get_column()

const GeomVertexColumn * GeomVertexWriter::get_column ( ) const
inline

Returns the description of the data type that the writer is working on.

Definition at line 269 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_column(), and GeomVertexRewriter::has_column().

◆ get_current_thread()

Thread * GeomVertexWriter::get_current_thread ( ) const
inline

Returns the Thread pointer of the currently-executing thread, as passed to the constructor of this object.

Definition at line 185 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_current_thread().

◆ get_start_row()

int GeomVertexWriter::get_start_row ( ) const
inline

Returns the row index at which the writer started.

It will return to this row if you reset the current column.

Definition at line 310 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_start_row().

◆ get_stride()

size_t GeomVertexWriter::get_stride ( ) const
inline

Returns the per-row stride (bytes between consecutive rows) of the underlying vertex array.

This low-level information is normally not needed to use the GeomVertexWriter directly.

Definition at line 176 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_stride().

◆ get_vertex_data()

GeomVertexData * GeomVertexWriter::get_vertex_data ( ) const
inline

Returns the vertex data object that the writer is processing.

This may return NULL if the writer was constructed with just an array pointer.

Definition at line 147 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::get_vertex_data().

◆ get_write_row()

int GeomVertexWriter::get_write_row ( ) const
inline

Returns the row index to which the data will be written at the next call to set_data*() or add_data*().

Definition at line 319 of file geomVertexWriter.I.

◆ has_column()

bool GeomVertexWriter::has_column ( ) const
inline

◆ is_at_end()

bool GeomVertexWriter::is_at_end ( ) const
inline

Returns true if the writer is currently at the end of the list of vertices, false otherwise.

If this is true, another call to set_data*() will result in a crash, but another call to add_data*() will add a new row.

Definition at line 329 of file geomVertexWriter.I.

Referenced by GeomVertexRewriter::is_at_end().

◆ operator=()

void GeomVertexWriter::operator= ( const GeomVertexWriter & copy)
inline

Definition at line 121 of file geomVertexWriter.I.

◆ output()

void GeomVertexWriter::output ( std::ostream & out) const

Definition at line 93 of file geomVertexWriter.cxx.

◆ reserve_num_rows()

bool GeomVertexWriter::reserve_num_rows ( int num_rows)

This ensures that enough memory space for num_rows is allocated, so that you may add up to num_rows rows without causing a new memory allocation.

This is a performance optimization only; it is especially useful when you know the number of rows you will be adding ahead of time.

Definition at line 69 of file geomVertexWriter.cxx.

◆ set_column() [1/3]

bool GeomVertexWriter::set_column ( CPT_InternalName name)
inline

Sets up the writer to use the data type with the indicated name.

This also resets the write number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Definition at line 224 of file geomVertexWriter.I.

References GeomVertexFormat::get_array_with(), and GeomVertexFormat::get_column.

◆ set_column() [2/3]

bool GeomVertexWriter::set_column ( int array,
const GeomVertexColumn * column )

Sets up the writer to use the indicated column description on the given array.

This also resets the current write row number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Definition at line 32 of file geomVertexWriter.cxx.

◆ set_column() [3/3]

bool GeomVertexWriter::set_column ( int column)
inline

Sets up the writer to use the nth data type of the GeomVertexFormat, numbering from 0.

This also resets the write row number to the start row (the same value passed to a previous call to set_row(), or 0 if set_row() was never called.)

The return value is true if the data type is valid, false otherwise.

Definition at line 200 of file geomVertexWriter.I.

References GeomVertexFormat::get_array_with(), and GeomVertexFormat::get_column.

Referenced by GeomVertexWriter(), GeomVertexWriter(), GeomVertexData::copy_from(), PT(), GeomVertexRewriter::set_column(), GeomVertexRewriter::set_column(), and GeomVertexRewriter::set_column().

◆ set_data1()

void GeomVertexWriter::set_data1 ( PN_stdfloat data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 594 of file geomVertexWriter.I.

References set_data1d(), and set_data1f().

◆ set_data1d()

void GeomVertexWriter::set_data1d ( double data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 467 of file geomVertexWriter.I.

References has_column().

Referenced by set_data1().

◆ set_data1f()

void GeomVertexWriter::set_data1f ( float data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 340 of file geomVertexWriter.I.

References has_column().

Referenced by set_data1().

◆ set_data1i()

void GeomVertexWriter::set_data1i ( int data)
inline

Sets the write row to a particular 1-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 729 of file geomVertexWriter.I.

References has_column().

Referenced by GeomPrimitive::add_consecutive_vertices(), and PT().

◆ set_data2() [1/2]

void GeomVertexWriter::set_data2 ( const LVecBase2 & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 624 of file geomVertexWriter.I.

References set_data2d(), and set_data2f().

◆ set_data2() [2/2]

void GeomVertexWriter::set_data2 ( PN_stdfloat x,
PN_stdfloat y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 609 of file geomVertexWriter.I.

References set_data2d(), and set_data2f().

Referenced by CMotionTrail::add_geometry_quad(), CMotionTrail::add_geometry_quad(), and PT().

◆ set_data2d() [1/2]

void GeomVertexWriter::set_data2d ( const LVecBase2d & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 490 of file geomVertexWriter.I.

References has_column().

◆ set_data2d() [2/2]

void GeomVertexWriter::set_data2d ( double x,
double y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 479 of file geomVertexWriter.I.

References set_data2d().

Referenced by set_data2(), set_data2(), and set_data2d().

◆ set_data2f() [1/2]

void GeomVertexWriter::set_data2f ( const LVecBase2f & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 363 of file geomVertexWriter.I.

References has_column().

◆ set_data2f() [2/2]

void GeomVertexWriter::set_data2f ( float x,
float y )
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 352 of file geomVertexWriter.I.

References set_data2f().

Referenced by set_data2(), set_data2(), and set_data2f().

◆ set_data2i() [1/2]

void GeomVertexWriter::set_data2i ( const LVecBase2i & data)
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 752 of file geomVertexWriter.I.

References has_column().

◆ set_data2i() [2/2]

void GeomVertexWriter::set_data2i ( int a,
int b )
inline

Sets the write row to a particular 2-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 741 of file geomVertexWriter.I.

References set_data2i().

Referenced by set_data2i().

◆ set_data3() [1/2]

void GeomVertexWriter::set_data3 ( const LVecBase3 & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 654 of file geomVertexWriter.I.

References set_data3d(), and set_data3f().

◆ set_data3() [2/2]

void GeomVertexWriter::set_data3 ( PN_stdfloat x,
PN_stdfloat y,
PN_stdfloat z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 639 of file geomVertexWriter.I.

References set_data3d(), and set_data3f().

Referenced by BulletDebugNode::add_for_draw(), CMotionTrail::add_geometry_quad(), CMotionTrail::add_geometry_quad(), BulletSoftBodyNode::do_sync_b2p(), STBasicTerrain::fill_vertices(), PT(), PT(), PT(), and LineSegs::set_vertex().

◆ set_data3d() [1/2]

void GeomVertexWriter::set_data3d ( const LVecBase3d & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 513 of file geomVertexWriter.I.

References has_column().

◆ set_data3d() [2/2]

void GeomVertexWriter::set_data3d ( double x,
double y,
double z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 502 of file geomVertexWriter.I.

References set_data3d().

Referenced by PT(), set_data3(), set_data3(), and set_data3d().

◆ set_data3f() [1/2]

void GeomVertexWriter::set_data3f ( const LVecBase3f & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 386 of file geomVertexWriter.I.

References has_column().

◆ set_data3f() [2/2]

void GeomVertexWriter::set_data3f ( float x,
float y,
float z )
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 375 of file geomVertexWriter.I.

References set_data3f().

Referenced by set_data3(), set_data3(), and set_data3f().

◆ set_data3i() [1/2]

void GeomVertexWriter::set_data3i ( const LVecBase3i & data)
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 775 of file geomVertexWriter.I.

References has_column().

◆ set_data3i() [2/2]

void GeomVertexWriter::set_data3i ( int a,
int b,
int c )
inline

Sets the write row to a particular 3-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 764 of file geomVertexWriter.I.

References set_data3i().

Referenced by set_data3i().

◆ set_data4() [1/2]

void GeomVertexWriter::set_data4 ( const LVecBase4 & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 684 of file geomVertexWriter.I.

References set_data4d(), and set_data4f().

◆ set_data4() [2/2]

void GeomVertexWriter::set_data4 ( PN_stdfloat x,
PN_stdfloat y,
PN_stdfloat z,
PN_stdfloat w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 669 of file geomVertexWriter.I.

References set_data4d(), and set_data4f().

Referenced by BulletDebugNode::add_for_draw(), CMotionTrail::add_geometry_quad(), CMotionTrail::add_geometry_quad(), GeomTransformer::apply_texture_colors(), GeomVertexData::copy_from(), and GeomTransformer::transform_texcoords().

◆ set_data4d() [1/2]

void GeomVertexWriter::set_data4d ( const LVecBase4d & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 536 of file geomVertexWriter.I.

References has_column().

◆ set_data4d() [2/2]

void GeomVertexWriter::set_data4d ( double x,
double y,
double z,
double w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 525 of file geomVertexWriter.I.

References set_data4d().

Referenced by PT(), set_data4(), set_data4(), and set_data4d().

◆ set_data4f() [1/2]

void GeomVertexWriter::set_data4f ( const LVecBase4f & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 409 of file geomVertexWriter.I.

References has_column().

◆ set_data4f() [2/2]

void GeomVertexWriter::set_data4f ( float x,
float y,
float z,
float w )
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 398 of file geomVertexWriter.I.

References set_data4f().

Referenced by PT(), set_data4(), set_data4(), and set_data4f().

◆ set_data4i() [1/2]

void GeomVertexWriter::set_data4i ( const LVecBase4i & data)
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 798 of file geomVertexWriter.I.

References has_column().

◆ set_data4i() [2/2]

void GeomVertexWriter::set_data4i ( int a,
int b,
int c,
int d )
inline

Sets the write row to a particular 4-component value, and advances the write row.

It is an error for the write row to advance past the end of data.

Definition at line 787 of file geomVertexWriter.I.

References set_data4i().

Referenced by GeomVertexData::copy_from(), and set_data4i().

◆ set_matrix3()

void GeomVertexWriter::set_matrix3 ( const LMatrix3 & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 699 of file geomVertexWriter.I.

References set_matrix3d(), and set_matrix3f().

◆ set_matrix3d()

void GeomVertexWriter::set_matrix3d ( const LMatrix3d & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 548 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by set_matrix3().

◆ set_matrix3f()

void GeomVertexWriter::set_matrix3f ( const LMatrix3f & mat)
inline

Sets the write row to a 3-by-3 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 421 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by set_matrix3().

◆ set_matrix4()

void GeomVertexWriter::set_matrix4 ( const LMatrix4 & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 714 of file geomVertexWriter.I.

References set_matrix4d(), and set_matrix4f().

◆ set_matrix4d()

void GeomVertexWriter::set_matrix4d ( const LMatrix4d & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 570 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by set_matrix4().

◆ set_matrix4f()

void GeomVertexWriter::set_matrix4f ( const LMatrix4f & mat)
inline

Sets the write row to a 4-by-4 matrix, and advances the write row.

This is a special method that can only be used on matrix columns.

It is an error for the write row to advance past the end of data.

Definition at line 443 of file geomVertexWriter.I.

References GeomVertexColumn::get_contents(), GeomVertexColumn::get_element_stride(), GeomVertexColumn::get_num_elements(), and has_column().

Referenced by set_matrix4().

◆ set_row()

void GeomVertexWriter::set_row ( int row)
inline

Sets the start row to the indicated value.

The writer will begin writing to the indicated row; each subsequent set_data*() call will store the data into the subsequent row. If set_column() is called, the writer will return to this row.

Definition at line 298 of file geomVertexWriter.I.

References has_column().

Referenced by PT(), and GeomVertexRewriter::set_row().

◆ set_row_unsafe()

void GeomVertexWriter::set_row_unsafe ( int row)
inline

Sets the start row to the indicated value, without internal checks.

This is the same as set_row(), but it does not check for the possibility that the array has been reallocated internally for some reason; use only when you are confident that the array is unchanged and you really need every bit of available performance.

Definition at line 284 of file geomVertexWriter.I.

References has_column().

Referenced by GeomPrimitive::add_consecutive_vertices(), GeomVertexRewriter::set_row_unsafe(), and LineSegs::set_vertex().


The documentation for this class was generated from the following files: