EggVertex
-
class EggVertex
Bases:
EggObject
,EggAttributes
Any one-, two-, three-, or four-component vertex, possibly with attributes such as a normal.
Inheritance diagram
-
EggVertex(void)
-
EggVertex(EggVertex const ©)
Copies all properties of the vertex except its vertex pool, index number, and group membership.
-
void clear_aux(void)
-
void clear_aux(std::string const &name)
Removes all auxiliary data from the vertex.
Removes the named auxiliary data from the vertex.
-
void clear_grefs(void)
Removes all group references from the vertex, so that it is not assigned to any group.
-
void clear_uv(void)
-
void clear_uv(std::string const &name)
Removes all UV coordinate pairs from the vertex.
Removes the named UV coordinate pair from the vertex, along with any UV morphs.
-
int compare_to(EggVertex const &other) const
An ordering operator to compare two vertices for sorting order. This imposes an arbitrary ordering useful to identify unique vertices.
Group membership is not considered in this comparison. This is somewhat problematic, but cannot easily be helped, because considering group membership would make it difficult to add and remove groups from vertices. It also makes it impossible to meaningfully compare with a concrete
EggVertex
object (which cannot have group memberships).However, this is not altogether bad, because two vertices that are identical in all other properties should generally also be identical in group memberships, else the vertices will tend to fly apart when the joints animate.
-
void copy_grefs_from(EggVertex const &other)
Copies all the group references from the other vertex onto this one. This assigns the current vertex to exactly the same groups, with exactly the same memberships, as the given one.
Warning: only an
EggVertex
allocated from the free store may have groups assigned to it. Do not attempt to call this on a temporary concreteEggVertex
object; a core dump will certainly result.
-
LVecBase4d const &get_aux(std::string const &name) const
Returns the named auxiliary data quadruple on the vertex. It is an error to call this if has_aux(name) returned false.
-
EggVertexAux const *get_aux_obj(std::string const &name) const
Returns the named
EggVertexAux
object, which defines the auxiliary data for this name. This object might be shared between multiple vertices. You should not attempt to modify this object; instead, call modify_aux_object to return a modifiable pointer.
-
static TypeHandle get_class_type(void)
-
int get_external_index(void) const
Returns the number set by
set_external_index()
. Seeset_external_index()
.
-
int get_external_index2(void) const
Returns the number set by
set_external_index2()
. Seeset_external_index2()
.
-
int get_index(void) const
Returns the index number of the vertex within its pool.
-
int get_num_dimensions(void) const
get_pos[123] return the pos as the corresponding type. It is an error to call any of these without first verifying that get_num_dimensions() matches the desired type. However,
get_pos4()
may always be called; it returns the pos as a four-component point in homogeneous space (with a 1.0 in the last position if the pos has fewer than four components).Returns the number of dimensions the vertex uses. Usually this will be 3, but it may be 1, 2, 3, or 4.
-
int get_num_global_coord(void) const
Returns the number of primitives that own this vertex whose vertices are interpreted in the global coordinate system.
-
int get_num_local_coord(void) const
Returns the number of primitives that own this vertex whose vertices are interpreted to be in a local coordinate system.
-
EggVertexPool *get_pool(void) const
Returns the vertex pool this vertex belongs in. This may be NULL if the vertex has not been added to a pool.
-
double get_pos1(void) const
Only valid if
get_num_dimensions()
returns 1. Returns the position as a one-dimensional value.
-
LPoint2d get_pos2(void) const
Only valid if
get_num_dimensions()
returns 2. Returns the position as a two-dimensional value.
-
LVertexd get_pos3(void) const
Valid if
get_num_dimensions()
returns 3 or 4. Returns the position as a three-dimensional value.
-
LPoint4d get_pos4(void) const
This is always valid, regardless of the value of
get_num_dimensions
. It returns the position as a four-dimensional value. If the pos has fewer than four dimensions, this value represents the pos extended into four- dimensional homogenous space, e.g. by adding 1 as the fourth component.
-
LTexCoordd get_uv(void) const
-
LTexCoordd get_uv(std::string const &name) const
Returns the unnamed UV coordinate pair on the vertex. It is an error to call this if
has_uv()
has returned false.This is the more restrictive interface, and is generally useful only in the absence of multitexturing; see get_uv(name) for the interface that supports multitexturing.
Returns the named UV coordinate pair on the vertex. It is an error to call this if has_uv(name) returned false.
-
EggVertexUV const *get_uv_obj(std::string const &name) const
Returns the named
EggVertexUV
object, which defines both the UV coordinate pair for this name and the UV morphs. This object might be shared between multiple vertices. You should not attempt to modify this object; instead, call modify_uv_object to return a modifiable pointer.
-
LTexCoord3d const &get_uvw(std::string const &name) const
Returns the named UV coordinate triple on the vertex. It is an error to call this if has_uvw(name) returned false.
-
bool has_aux(void) const
-
bool has_aux(std::string const &name) const
Returns true if the vertex has any auxiliary data, false otherwise.
Returns true if the vertex has the named auxiliary data quadruple.
-
bool has_gref(EggGroup const *group) const
Returns true if the indicated group references this vertex, false otherwise.
-
int has_pref(EggPrimitive const *prim) const
Returns the number of times the vertex appears in the indicated primitive, or 0 if it does not appear.
-
bool has_uv(void) const
-
bool has_uv(std::string const &name) const
Returns true if the vertex has an unnamed UV coordinate pair, false otherwise.
This is the more restrictive interface, and is generally useful only in the absence of multitexturing; see has_uv(name) for the interface that supports multitexturing.
Returns true if the vertex has the named UV coordinate pair, and the named UV coordinate pair is 2-d, false otherwise.
-
bool has_uvw(std::string const &name) const
Returns true if the vertex has the named UV coordinate triple, and the named UV coordinate triple is 3-d, false otherwise.
-
bool is_forward_reference(void) const
Returns true if the vertex is a forward reference to some vertex that hasn’t been defined yet. In this case, the vertex may not have any properties filled in yet.
This can only happen if you implicitly create a vertex via
EggVertexPool::get_forward_vertex()
. Presumably, when the vertex pool is later filled in, this vertex will be replaced with real data.
-
static PointerTo<EggVertex> make_average(EggVertex const *first, EggVertex const *second)
Creates a new vertex that lies in between the two given vertices. The attributes for the UV sets they have in common are averaged.
Both vertices need to be either in no pool, or in the same pool. In the latter case, the new vertex will be placed in that pool.
-
EggVertexAux *modify_aux_obj(std::string const &name)
Returns a modifiable pointer to the named
EggVertexAux
object, which defines the auxiliary data for this name. Returns NULL if there is no such named UV object.
-
EggVertexUV *modify_uv_obj(std::string const &name)
Returns a modifiable pointer to the named
EggVertexUV
object, which defines both the UV coordinate pair for this name and the UV morphs. Returns NULL if there is no such named UV object.
-
void output(std::ostream &out) const
-
void set_aux(std::string const &name, LVecBase4d const &aux)
Sets the indicated auxiliary data quadruple on the vertex. This replaces any auxiliary data with the same name already on the vertex.
-
void set_aux_obj(EggVertexAux *vertex_aux)
Sets the indicated
EggVertexAux
on the vertex. This replaces any auxiliary data with the same name already on the vertex.
-
void set_external_index(int external_index)
Sets a special index number that is associated with the
EggVertex
(but is not written to the egg file). This number is not interpreted by any egg code; it is simply maintained along with the vertex. It is used to differentiate otherwise identical vertices inEggVertexPool::create_unique_vertex()
, however.The intention of this number is as an aid for file converters, to associate an
EggVertex
back to the index number of the original source vertex.
-
void set_external_index2(int external_index2)
Similar to
set_external_index()
, but this is a different number which may be used for a different purpose by the calling code. The egg library does not assign any meaning to this number or use it in any way.
-
void set_pos(double pos)
-
void set_pos(LPoint4d const &pos)
The pos might have 1, 2, 3, or 4 dimensions. That complicates things a bit.
Sets the vertex position. This variant sets the vertex to a one- dimensional value.
Sets the vertex position. This variant sets the vertex to a two- dimensional value.
Sets the vertex position. This variant sets the vertex to a three- dimensional value.
Sets the vertex position. This variant sets the vertex to a four- dimensional value.
-
void set_pos4(LPoint4d const &pos)
This special flavor of
set_pos()
sets the vertex as a four-component value, but does not change the set number of dimensions. It’s handy for retrieving the vertex position viaget_pos4
, manipulating it, then storing it back again, without worrying about the number of dimensions it actually had.
-
void set_uv(LTexCoordd const &texCoord)
-
void set_uv(std::string const &name, LTexCoordd const &texCoord)
Replaces the unnamed UV coordinate pair on the vertex with the indicated value.
This is the more restrictive interface, and is generally useful only in the absence of multitexturing; see set_uv(name, uv) for the interface that supports multitexturing.
Sets the indicated UV coordinate pair on the vertex. This replaces any UV coordinate pair with the same name already on the vertex, but preserves UV morphs.
-
void set_uv_obj(EggVertexUV *vertex_uv)
Sets the indicated
EggVertexUV
on the vertex. This replaces any UV coordinate pair with the same name already on the vertex, including UV morphs.
-
void set_uvw(std::string const &name, LTexCoord3d const &texCoord)
Sets the indicated UV coordinate triple on the vertex. This replaces any UV coordinate pair or triple with the same name already on the vertex, but preserves UV morphs.
-
bool sorts_less_than(EggVertex const &other) const
An ordering operator to compare two vertices for sorting order. This imposes an arbitrary ordering useful to identify unique vertices.
-
void test_gref_integrity(void) const
-
void test_pref_integrity(void) const
-
void write(std::ostream &out, int indent_level) const
Writes the vertex to the indicated output stream in Egg format.
-
EggVertex(void)