# GeomVertexWriter

from pandac.PandaModules import GeomVertexWriter

Class : GeomVertexWriter
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.

## Inheritance:

GeomVertexWriter: GeomEnums
GeomEnums:

## Methods of GeomVertexWriter:

addData1f
addData1i
addData2f
addData2i
addData3f
addData3i
addData4f
addData4i
getArray
getArrayData
getColumn
getStartRow
getVertexData
getWriteRow
hasColumn
isAtEnd
operator =
output
setColumn
setData1f
setData1i
setData2f
setData2i
setData3f
setData3i
setData4f
setData4i
setRow

## Constants in GeomEnums:

UHClient | (UsageHint)
UHStream | (UsageHint)
UHDynamic | (UsageHint)
UHStatic | (UsageHint)
UHUnspecified | (UsageHint)
GRIndexedPoint | (GeomRendering)
GRIndexedOther | (GeomRendering)
GRIndexedBits | (GeomRendering)
GRPoint | (GeomRendering)
GRPointUniformSize | (GeomRendering)
GRPerPointSize | (GeomRendering)
GRPointPerspective | (GeomRendering)
GRPointAspectRatio | (GeomRendering)
GRPointScale | (GeomRendering)
GRPointRotate | (GeomRendering)
GRPointSprite | (GeomRendering)
GRPointSpriteTexMatrix | (GeomRendering)
GRPointBits | (GeomRendering)
GRTriangleStrip | (GeomRendering)
GRTriangleFan | (GeomRendering)
GRLineStrip | (GeomRendering)
GRCompositeBits | (GeomRendering)
GRFlatFirstVertex | (GeomRendering)
GRFlatLastVertex | (GeomRendering)
GRShadeModelBits | (GeomRendering)
GRTexcoordLightVector | (GeomRendering)
SMUniform | (ShadeModel)
SMSmooth | (ShadeModel)
SMFlatFirstVertex | (ShadeModel)
SMFlatLastVertex | (ShadeModel)
PTNone | (PrimitiveType)
PTPolygons | (PrimitiveType)
PTLines | (PrimitiveType)
PTPoints | (PrimitiveType)
NTUint8 | (NumericType)
NTUint16 | (NumericType)
NTUint32 | (NumericType)
NTPackedDcba | (NumericType)
NTPackedDabc | (NumericType)
NTFloat32 | (NumericType)
COther | (Contents)
CPoint | (Contents)
CClipPoint | (Contents)
CVector | (Contents)
CTexcoord | (Contents)
CColor | (Contents)
CIndex | (Contents)
CMorphDelta | (Contents)
ATNone | (AnimationType)
ATPanda | (AnimationType)
ATHardware | (AnimationType)

addData1f void GeomVertexWriter::add_data1f(float data); Description: 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.

addData1i void GeomVertexWriter::add_data1i(int data); Description: 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.

addData2f void GeomVertexWriter::add_data2f(float x, float y); Description: 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.

addData2i void GeomVertexWriter::add_data2i(int a, int b); Description: 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.

addData3f void GeomVertexWriter::add_data3f(float x, float y, float z); Description: 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.

addData3i void GeomVertexWriter::add_data3i(int a, int b, int c); Description: 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.

addData4f void GeomVertexWriter::add_data4f(float x, float y, float z, float w); Description: 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.

addData4i void GeomVertexWriter::add_data4i(int a, int b, int c, int d); Description: 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.

getArray int GeomVertexWriter::get_array(void) const; Description: Returns the array index containing the data type that the writer is working on.

getArrayData GeomVertexArrayData *GeomVertexWriter::get_array_data(void) const; Description: Returns the particular array object that the writer is currently processing.

getColumn GeomVertexColumn const *GeomVertexWriter::get_column(void) const; Description: Returns the description of the data type that the writer is working on.

getStartRow int GeomVertexWriter::get_start_row(void) const; Description: Returns the row index at which the writer started. It will return to this row if you reset the current column.

getVertexData GeomVertexData *GeomVertexWriter::get_vertex_data(void) const; Description: Returns the vertex data object that the writer is processing. This may return NULL if the writer was constructed with just an array pointer.

getWriteRow int GeomVertexWriter::get_write_row(void) const; Description: Returns the row index to which the data will be written at the next call to set_data*() or add_data*().

hasColumn bool GeomVertexWriter::has_column(void) const; Description: Returns true if a valid data type has been successfully set, or false if the data type does not exist.

isAtEnd bool GeomVertexWriter::is_at_end(void) const; Description: 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.

operator = void GeomVertexWriter::operator =(GeomVertexWriter const &copy); Description:

output void GeomVertexWriter::output(ostream &out) const; Description:

setColumn bool GeomVertexWriter::set_column(int column); Description: 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. Description: 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.) Description: 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.)

setData1f void GeomVertexWriter::set_data1f(float data); Description: 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.

setData1i void GeomVertexWriter::set_data1i(int data); Description: 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.

setData2f void GeomVertexWriter::set_data2f(float x, float y); Description: 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.

setData2i void GeomVertexWriter::set_data2i(int a, int b); Description: 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.

setData3f void GeomVertexWriter::set_data3f(float x, float y, float z); Description: 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.

setData3i void GeomVertexWriter::set_data3i(int a, int b, int c); Description: 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.

setData4f void GeomVertexWriter::set_data4f(float x, float y, float z, float w); Description: 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.

setData4i void GeomVertexWriter::set_data4i(int a, int b, int c, int d); Description: 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.

setRow void GeomVertexWriter::set_row(int row); Description: 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.