Panda3D
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Friends | List of all members
EggPrimitive Class Referenceabstract

A base class for any of a number of kinds of geometry primitives: polygons, point lights, nurbs patches, parametrics curves, etc. More...

#include "eggPrimitive.h"

Inheritance diagram for EggPrimitive:
EggNode EggAttributes EggRenderMode EggNamedObject MemoryBase EggObject Namable TypedReferenceCount MemoryBase TypedObject ReferenceCount MemoryBase MemoryBase EggCompositePrimitive EggCurve EggPatch EggPoint EggPolygon EggSurface EggLine EggTriangleFan EggTriangleStrip EggNurbsCurve EggNurbsSurface

Public Types

typedef Vertices::const_iterator const_iterator
 
typedef Vertices::const_pointer const_pointer
 
typedef Vertices::const_reference const_reference
 
typedef Vertices::const_reverse_iterator const_reverse_iterator
 
typedef Vertices::difference_type difference_type
 
typedef Vertices::const_iterator iterator
 
typedef Vertices::const_pointer pointer
 
typedef Vertices::const_reference reference
 
typedef Vertices::const_reverse_iterator reverse_iterator
 
enum  Shading { S_unknown, S_overall, S_per_face, S_per_vertex }
 
typedef Vertices::size_type size_type
 
- Public Types inherited from EggRenderMode
enum  AlphaMode {
  AM_unspecified, AM_off, AM_on, AM_blend,
  AM_blend_no_occlude, AM_ms, AM_ms_mask, AM_binary,
  AM_dual, AM_premultiplied
}
 
enum  DepthTestMode { DTM_unspecified, DTM_off, DTM_on }
 
enum  DepthWriteMode { DWM_unspecified, DWM_off, DWM_on }
 
enum  VisibilityMode { VM_unspecified, VM_hidden, VM_normal }
 

Public Member Functions

 EggPrimitive (const std::string &name="")
 
 EggPrimitive (const EggPrimitive &copy)
 
void add_texture (EggTexture *texture)
 Applies the indicated texture to the primitive. More...
 
EggVertexadd_vertex (EggVertex *vertex)
 Adds the indicated vertex to the end of the primitive's list of vertices, and returns it. More...
 
virtual void apply_first_attribute ()
 Sets the first vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded. More...
 
virtual void apply_last_attribute ()
 Sets the last vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded. More...
 
iterator begin () const
 
virtual bool cleanup ()
 Cleans up modeling errors in whatever context this makes sense. More...
 
void clear ()
 Removes all of the vertices from the primitive. More...
 
void clear_connected_shading ()
 Resets the connected_shading member in this primitive, so that get_connected_shading() will recompute a new value. More...
 
void clear_material ()
 
void clear_texture ()
 Removes any texturing from the primitive. More...
 
void copy_attributes (const EggAttributes &other)
 Copies the rendering attributes from the indicated primitive. More...
 
void copy_attributes (const EggPrimitive &other)
 Copies the rendering attributes from the indicated primitive. More...
 
void copy_vertices (const EggPrimitive &other)
 Replaces the current primitive's list of vertices with a copy of the list of vertices on the other primitive. More...
 
virtual EggRenderModedetermine_alpha_mode ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has an alpha_mode other than AM_unspecified. More...
 
virtual EggRenderModedetermine_bin ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a bin specified. More...
 
virtual EggRenderModedetermine_depth_offset ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a depth_offset specified. More...
 
virtual EggRenderModedetermine_depth_test_mode ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_test_mode other than DTM_unspecified. More...
 
virtual EggRenderModedetermine_depth_write_mode ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_write_mode other than DWM_unspecified. More...
 
virtual EggRenderModedetermine_draw_order ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a draw_order specified. More...
 
virtual EggRenderModedetermine_visibility_mode ()
 Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a visibility_mode other than VM_unspecified. More...
 
bool empty () const
 
iterator end () const
 
iterator erase (iterator position)
 
iterator erase (iterator first, iterator last)
 Part of the implementaion of the EggPrimitive as an STL container. More...
 
iterator find (EggVertex *vertex)
 Returns the iterator pointing to the indicated vertex, or end() if the vertex is not part of the primitive. More...
 
virtual TypeHandle force_init_type ()
 
bool get_bface_flag () const
 
Shading get_connected_shading () const
 
EggMaterialget_material () const
 
int get_num_textures () const
 
size_t get_num_vertices () const
 
EggVertexPoolget_pool () const
 
virtual Shading get_shading () const
 
std::string get_sort_name () const
 
EggTextureget_texture () const
 
EggTextureget_texture (int n) const
 
virtual TypeHandle get_type () const
 
EggVertexget_vertex (size_t index) const
 
bool has_material () const
 
virtual bool has_normals () const
 Returns true if any of the primitives (e.g. More...
 
virtual bool has_primitives () const
 Returns true if there are any primitives (e.g. More...
 
bool has_texture () const
 Returns true if the primitive has any textures specified, false otherwise. More...
 
bool has_texture (EggTexture *texture) const
 Returns true if the primitive has the particular indicated texture, false otherwise. More...
 
bool has_vertex_color () const
 Returns true if any vertex on the primitive has a specific color set, false otherwise. More...
 
bool has_vertex_normal () const
 Returns true if any vertex on the primitive has a specific normal set, false otherwise. More...
 
iterator insert (iterator position, EggVertex *x)
 
void insert_vertex (size_t index, EggVertex *vertex)
 
virtual bool joint_has_primitives () const
 Returns true if there are any primitives (e.g. More...
 
virtual EggPrimitivemake_copy () const =0
 
EggVertexoperator [] (int index) const
 This is read-only: you can't assign directly to an indexed vertex. More...
 
EggPrimitiveoperator= (const EggPrimitive &copy)
 
virtual void post_apply_flat_attribute ()
 Intended as a followup to apply_last_attribute(), this also sets an attribute on the first vertices of the primitive, if they don't already have an attribute set, just so they end up with *something*. More...
 
reverse_iterator rbegin () const
 
void remove_doubled_verts (bool closed)
 Certain kinds of primitives, particularly polygons, don't like to have the same vertex repeated consecutively. More...
 
void remove_nonunique_verts ()
 Removes any multiple appearances of the same vertex from the primitive. More...
 
EggVertexremove_vertex (EggVertex *vertex)
 
void remove_vertex (size_t index)
 
reverse_iterator rend () const
 
void replace (iterator position, EggVertex *vertex)
 Replaces the vertex at the indicated position with the indicated vertex. More...
 
virtual void reverse_vertex_ordering ()
 Reverses the ordering of the vertices in this primitive, if appropriate, in order to change the direction the polygon appears to be facing. More...
 
void set_bface_flag (bool flag)
 
void set_material (EggMaterial *material)
 
void set_texture (EggTexture *texture)
 Replaces the current list of textures with the indicated texture. More...
 
void set_vertex (size_t index, EggVertex *vertex)
 
size_type size () const
 
void test_vref_integrity () const
 
virtual void unify_attributes (Shading shading)
 If the shading property is S_per_vertex, ensures that all vertices have a normal and a color, and the overall primitive does not. More...
 
virtual void write (std::ostream &out, int indent_level) const =0
 
- Public Member Functions inherited from EggNode
 EggNode (const std::string &name="")
 
 EggNode (const EggNode &copy)
 
void apply_texmats ()
 Applies the texture matrices to the UV's of the vertices that reference them, and then removes the texture matrices from the textures themselves. More...
 
virtual bool determine_decal ()
 Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "decal" flag set. More...
 
virtual bool determine_indexed ()
 Walks back up the hierarchy, looking for an EggGroup at this level or above that has the "indexed" scalar set. More...
 
void flatten_transforms ()
 Removes any transform and instance records from this node in the scene graph and below. More...
 
int get_depth () const
 
const LMatrix4d & get_node_frame () const
 Returns the coordinate frame of the node itself. More...
 
const LMatrix4d & get_node_frame_inv () const
 Returns the inverse of the matrix returned by get_node_frame(). More...
 
const LMatrix4d * get_node_frame_inv_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_frame_inv() matrix. More...
 
const LMatrix4d * get_node_frame_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_frame() matrix. More...
 
const LMatrix4d & get_node_to_vertex () const
 Returns the transformation matrix suitable for converting vertices in the coordinate space of the node to the appropriate coordinate space for storing in the egg file. More...
 
const LMatrix4d * get_node_to_vertex_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_node_to_vertex() matrix. More...
 
EggGroupNodeget_parent () const
 
const LMatrix4d & get_vertex_frame () const
 Returns the coordinate frame of the vertices referenced by primitives at or under this node. More...
 
const LMatrix4d & get_vertex_frame_inv () const
 Returns the inverse of the matrix returned by get_vertex_frame(). More...
 
const LMatrix4d * get_vertex_frame_inv_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_frame_inv() matrix. More...
 
const LMatrix4d * get_vertex_frame_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_frame() matrix. More...
 
const LMatrix4d & get_vertex_to_node () const
 Returns the transformation matrix suitable for converting the vertices as read from the egg file into the coordinate space of the node. More...
 
const LMatrix4d * get_vertex_to_node_ptr () const
 Returns either a NULL pointer or a unique pointer shared by nodes with the same get_vertex_to_node() matrix. More...
 
virtual bool is_anim_matrix () const
 Returns true if this node represents a table of animation transformation data, false otherwise. More...
 
virtual bool is_joint () const
 Returns true if this particular node represents a <Joint> entry or not. More...
 
bool is_local_coord () const
 Returns true if this node's vertices are not in the global coordinate space. More...
 
bool is_under_instance () const
 Returns true if there is an <Instance> node somewhere in the egg tree at or above this node, false otherwise. More...
 
bool is_under_transform () const
 Returns true if there is a <Transform> entry somewhere in the egg tree at or above this node, false otherwise. More...
 
EggNodeoperator= (const EggNode &copy)
 
bool parse_egg (const std::string &egg_syntax)
 Parses the egg syntax given in the indicate string as if it had been read from the egg file within this object's definition. More...
 
int rename_node (vector_string strip_prefix)
 Rename by stripping out the prefix. More...
 
void test_under_integrity () const
 
void transform (const LMatrix4d &mat)
 Applies the indicated transformation to the node and all of its descendants. More...
 
void transform_vertices_only (const LMatrix4d &mat)
 Applies the indicated transformation only to vertices that appear in global space within vertex pools at this node and below. More...
 
- Public Member Functions inherited from EggNamedObject
 EggNamedObject (const std::string &name="")
 
 EggNamedObject (const EggNamedObject &copy)
 
EggNamedObjectoperator= (const EggNamedObject &copy)
 
void output (std::ostream &out) const
 
void write_header (std::ostream &out, int indent_level, const char *egg_keyword) const
 Writes the first line of the egg object, e.g. More...
 
- Public Member Functions inherited from EggObject
 EggObject (const EggObject &copy)
 
virtual EggTransformas_transform ()
 Returns this object cross-cast to an EggTransform pointer, if it inherits from EggTransform, or NULL if it does not. More...
 
void clear_user_data ()
 Removes *all* user data pointers from the node. More...
 
void clear_user_data (TypeHandle type)
 Removes the user data pointer of the indicated type. More...
 
EggUserDataget_user_data () const
 Returns the user data pointer most recently stored on this object, or NULL if nothing was previously stored. More...
 
EggUserDataget_user_data (TypeHandle type) const
 Returns the user data pointer of the indicated type, if it exists, or NULL if it does not. More...
 
bool has_user_data () const
 Returns true if a generic user data pointer has recently been set and not yet cleared, false otherwise. More...
 
bool has_user_data (TypeHandle type) const
 Returns true if the user data pointer of the indicated type has been set, false otherwise. More...
 
EggObjectoperator= (const EggObject &copy)
 
void set_user_data (EggUserData *user_data)
 Sets the user data associated with this object. More...
 
- Public Member Functions inherited from TypedReferenceCount
 TypedReferenceCount (const TypedReferenceCount &copy)
 
void operator= (const TypedReferenceCount &copy)
 
- Public Member Functions inherited from TypedObject
 TypedObject (const TypedObject &copy)=default
 
TypedObjectas_typed_object ()
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
const TypedObjectas_typed_object () const
 Returns the object, upcast (if necessary) to a TypedObject pointer. More...
 
int get_best_parent_from_Set (const std::set< int > &) const
 
int get_type_index () const
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More...
 
bool is_exact_type (TypeHandle handle) const
 Returns true if the current object is the indicated type exactly. More...
 
bool is_of_type (TypeHandle handle) const
 Returns true if the current object is or derives from the indicated type. More...
 
TypedObjectoperator= (const TypedObject &copy)=default
 
- Public Member Functions inherited from ReferenceCount
int get_ref_count () const
 
WeakReferenceListget_weak_list () const
 Returns the WeakReferenceList associated with this ReferenceCount object. More...
 
bool has_weak_list () const
 Returns true if this particular ReferenceCount object has a WeakReferenceList created, false otherwise. More...
 
void local_object ()
 This function should be called, once, immediately after creating a new instance of some ReferenceCount-derived object on the stack. More...
 
void ref () const
 Explicitly increments the reference count. More...
 
bool ref_if_nonzero () const
 Atomically increases the reference count of this object if it is not zero. More...
 
bool test_ref_count_integrity () const
 Does some easy checks to make sure that the reference count isn't completely bogus. More...
 
bool test_ref_count_nonzero () const
 Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More...
 
virtual bool unref () const
 Explicitly decrements the reference count. More...
 
WeakReferenceListweak_ref ()
 Adds the indicated PointerToVoid as a weak reference to this object. More...
 
void weak_unref ()
 Removes the indicated PointerToVoid as a weak reference to this object. More...
 
- Public Member Functions inherited from Namable
 Namable (const std::string &initial_name="")
 
void clear_name ()
 Resets the Namable's name to empty. More...
 
const std::string & get_name () const
 
bool has_name () const
 Returns true if the Namable has a nonempty name set, false if the name is empty. More...
 
void output (std::ostream &out) const
 Outputs the Namable. More...
 
void set_name (const std::string &name)
 
- Public Member Functions inherited from EggAttributes
 EggAttributes (const EggAttributes &copy)
 
void clear_color ()
 
void clear_normal ()
 
int compare_to (const EggAttributes &other) const
 An ordering operator to compare two vertices for sorting order. More...
 
void copy_color (const EggAttributes &other)
 Sets this color to be the same as the other's, include morphs. More...
 
void copy_normal (const EggAttributes &other)
 Sets this normal to be the same as the other's, include morphs. More...
 
LColor get_color () const
 Returns the color set on this particular attribute. More...
 
const LNormald & get_normal () const
 
bool has_color () const
 
bool has_normal () const
 
bool matches_color (const EggAttributes &other) const
 Returns true if this color matches that of the other EggAttributes object, include the morph list. More...
 
bool matches_normal (const EggAttributes &other) const
 Returns true if this normal matches that of the other EggAttributes object, include the morph list. More...
 
EggAttributesoperator= (const EggAttributes &copy)
 
void set_color (const LColor &Color)
 
void set_normal (const LNormald &normal)
 
bool sorts_less_than (const EggAttributes &other) const
 An ordering operator to compare two vertices for sorting order. More...
 
void transform (const LMatrix4d &mat)
 Applies the indicated transformation matrix to the attributes. More...
 
void write (std::ostream &out, int indent_level) const
 Writes the attributes to the indicated output stream in Egg format. More...
 
- Public Member Functions inherited from EggRenderMode
 EggRenderMode (const EggRenderMode &copy)
 
void clear_bin ()
 Removes the bin name that was set for this particular object. More...
 
void clear_depth_offset ()
 Removes the depth-offset flag from this particular object. More...
 
void clear_draw_order ()
 Removes the draw-order flag from this particular object. More...
 
AlphaMode get_alpha_mode () const
 Returns the alpha mode that was set, or AM_unspecified if nothing was set. More...
 
std::string get_bin () const
 Returns the bin name that has been set for this particular object, if any. More...
 
int get_depth_offset () const
 Returns the "depth-offset" flag as set for this particular object. More...
 
DepthTestMode get_depth_test_mode () const
 Returns the depth_test mode that was set, or DTM_unspecified if nothing was set. More...
 
DepthWriteMode get_depth_write_mode () const
 Returns the depth_write mode that was set, or DWM_unspecified if nothing was set. More...
 
int get_draw_order () const
 Returns the "draw-order" flag as set for this particular object. More...
 
VisibilityMode get_visibility_mode () const
 Returns the visibility mode that was set, or VM_unspecified if nothing was set. More...
 
bool has_bin () const
 Returns true if a bin name has been set for this particular object. More...
 
bool has_depth_offset () const
 Returns true if the depth-offset flag has been set for this particular object. More...
 
bool has_draw_order () const
 Returns true if the draw-order flag has been set for this particular object. More...
 
bool operator != (const EggRenderMode &other) const
 
bool operator< (const EggRenderMode &other) const
 
EggRenderModeoperator= (const EggRenderMode &copy)
 
bool operator== (const EggRenderMode &other) const
 
void set_alpha_mode (AlphaMode mode)
 Specifies precisely how the transparency for this geometry should be achieved, or if it should be used. More...
 
void set_bin (const std::string &bin)
 Sets the "bin" string for this particular object. More...
 
void set_depth_offset (int bias)
 Sets the "depth-offset" flag associated with this object. More...
 
void set_depth_test_mode (DepthTestMode mode)
 Specifies whether this geometry should be tested against the depth buffer when it is drawn (assuming the rendering backend provides a depth buffer). More...
 
void set_depth_write_mode (DepthWriteMode mode)
 Specifies whether writes should be made to the depth buffer (assuming the rendering backend provides a depth buffer) when rendering this geometry. More...
 
void set_draw_order (int order)
 Sets the "draw-order" flag associated with this object. More...
 
void set_visibility_mode (VisibilityMode mode)
 Specifies whether this geometry is to be considered normally visible, or hidden. More...
 
void write (std::ostream &out, int indent_level) const
 Writes the attributes to the indicated output stream in Egg format. More...
 

Static Public Member Functions

static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from EggNode
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from EggNamedObject
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from EggObject
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from TypedObject
static TypeHandle get_class_type ()
 
static void init_type ()
 This function is declared non-inline to work around a compiler bug in g++ 2.96. More...
 
- Static Public Member Functions inherited from ReferenceCount
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from Namable
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from EggAttributes
static TypeHandle get_class_type ()
 
static void init_type ()
 
- Static Public Member Functions inherited from EggRenderMode
static TypeHandle get_class_type ()
 
static void init_type ()
 
static AlphaMode string_alpha_mode (const std::string &string)
 Returns the AlphaMode value associated with the given string representation, or AM_unspecified if the string does not match any known AlphaMode value. More...
 
static DepthTestMode string_depth_test_mode (const std::string &string)
 Returns the DepthTestMode value associated with the given string representation, or DTM_unspecified if the string does not match any known DepthTestMode value. More...
 
static DepthWriteMode string_depth_write_mode (const std::string &string)
 Returns the DepthWriteMode value associated with the given string representation, or DWM_unspecified if the string does not match any known DepthWriteMode value. More...
 
static VisibilityMode string_visibility_mode (const std::string &string)
 Returns the HiddenMode value associated with the given string representation, or VM_unspecified if the string does not match any known HiddenMode value. More...
 

Public Attributes

 clear_material
 Removes any material from the primitive. More...
 
 get_bface_flag
 Retrieves the backfacing flag of the polygon. More...
 
 get_connected_shading
 Determines what sort of shading properties this primitive's connected neighbors have. More...
 
 get_material
 Returns a pointer to the applied material, or NULL if there is no material applied. More...
 
 get_num_textures
 Returns the number of textures applied to the primitive. More...
 
 get_num_vertices
 
 get_pool
 Returns the vertex pool associated with the vertices of the primitive, or NULL if the primitive has no vertices. More...
 
 get_shading
 Returns the shading properties apparent on this particular primitive. More...
 
 get_sort_name
 Returns the name of the primitive for the purposes of sorting primitives into different groups, if there is one. More...
 
 get_texture
 Returns the first texture on the primitive, if any, or NULL if there are no textures on the primitive. More...
 
 get_vertex
 Returns a particular index based on its index number. More...
 
 has_material
 Returns true if the primitive is materiald (and get_material() will return a real pointer), false otherwise (and get_material() will return NULL). More...
 
 insert_vertex
 Inserts a vertex at the given position. More...
 
 remove_vertex
 Removes the indicated vertex from the primitive and returns it. More...
 
 set_bface_flag
 Sets the backfacing flag of the polygon. More...
 
 set_material
 Applies the indicated material to the primitive. More...
 
 set_vertex
 Replaces a particular vertex based on its index number in the list of vertices. More...
 
- Public Attributes inherited from EggNode
 get_depth
 Returns the number of nodes above this node in the egg hierarchy. More...
 
 get_parent
 
- Public Attributes inherited from TypedObject
 get_type
 
- Public Attributes inherited from ReferenceCount
 get_ref_count
 Returns the current reference count. More...
 
- Public Attributes inherited from Namable
 get_name
 
 set_name
 
- Public Attributes inherited from EggAttributes
EggMorphNormalList _dnormals
 
EggMorphColorList _drgbas
 

Friends

class EggTextureCollection
 

Detailed Description

A base class for any of a number of kinds of geometry primitives: polygons, point lights, nurbs patches, parametrics curves, etc.

Things with a set of vertices and some rendering properties like color.

An EggPrimitive is an STL-style container of pointers to EggVertex's. In fact, it IS a vector, and can be manipulated in all the ways that vectors can. However, it is necessary that all vertices belong to the same vertex pool.

Definition at line 47 of file eggPrimitive.h.

Member Function Documentation

◆ add_texture()

void EggPrimitive::add_texture ( EggTexture texture)
inline

Applies the indicated texture to the primitive.

Note that, in the case of multiple textures being applied to a single primitive, the order in which the textures are applied does not affect the rendering order; use EggTexture::set_sort() to specify that.

Definition at line 162 of file eggPrimitive.I.

Referenced by DaeMaterials::apply_to_primitive(), and set_texture().

◆ add_vertex()

EggVertex * EggPrimitive::add_vertex ( EggVertex vertex)

Adds the indicated vertex to the end of the primitive's list of vertices, and returns it.

Definition at line 654 of file eggPrimitive.cxx.

Referenced by EggVertexPool::add_unused_vertices_to_prim().

◆ apply_first_attribute()

void EggPrimitive::apply_first_attribute ( )
virtual

Sets the first vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded.

This reflects the DirectX convention of storing flat-shaded properties on the first vertex, although it is not usually a convention in Egg.

This may introduce redundant vertices to the vertex pool.

Reimplemented in EggCompositePrimitive, and EggTriangleFan.

Definition at line 450 of file eggPrimitive.cxx.

◆ apply_last_attribute()

void EggPrimitive::apply_last_attribute ( )
virtual

Sets the last vertex of the triangle (or each component) to the primitive normal and/or color, if the primitive is flat-shaded.

This reflects the OpenGL convention of storing flat-shaded properties on the last vertex, although it is not usually a convention in Egg.

This may introduce redundant vertices to the vertex pool.

Reimplemented in EggCompositePrimitive.

Definition at line 435 of file eggPrimitive.cxx.

◆ cleanup()

bool EggPrimitive::cleanup ( )
virtual

Cleans up modeling errors in whatever context this makes sense.

For instance, for a polygon, this calls remove_doubled_verts(true). For a point, it calls remove_nonunique_verts(). Returns true if the primitive is valid, or false if it is degenerate.

Reimplemented in EggCompositePrimitive, EggPoint, and EggPolygon.

Definition at line 499 of file eggPrimitive.cxx.

◆ clear()

void EggPrimitive::clear ( )
inline

Removes all of the vertices from the primitive.

Definition at line 352 of file eggPrimitive.I.

Referenced by copy_vertices().

◆ clear_connected_shading()

void EggPrimitive::clear_connected_shading ( )
inline

Resets the connected_shading member in this primitive, so that get_connected_shading() will recompute a new value.

Definition at line 84 of file eggPrimitive.I.

◆ clear_texture()

void EggPrimitive::clear_texture ( )
inline

Removes any texturing from the primitive.

Definition at line 170 of file eggPrimitive.I.

Referenced by set_texture().

◆ copy_attributes() [1/2]

void EggPrimitive::copy_attributes ( const EggAttributes other)

Copies the rendering attributes from the indicated primitive.

Definition at line 265 of file eggPrimitive.cxx.

Referenced by PT().

◆ copy_attributes() [2/2]

void EggPrimitive::copy_attributes ( const EggPrimitive other)

Copies the rendering attributes from the indicated primitive.

Definition at line 273 of file eggPrimitive.cxx.

References get_bface_flag, get_material, set_bface_flag, and set_material.

◆ copy_vertices()

void EggPrimitive::copy_vertices ( const EggPrimitive other)

Replaces the current primitive's list of vertices with a copy of the list of vertices on the other primitive.

Definition at line 704 of file eggPrimitive.cxx.

References clear().

◆ determine_alpha_mode()

EggRenderMode * EggPrimitive::determine_alpha_mode ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has an alpha_mode other than AM_unspecified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 34 of file eggPrimitive.cxx.

References EggNode::determine_alpha_mode(), EggRenderMode::get_alpha_mode(), and get_num_textures.

Referenced by EggRenderState::fill_state().

◆ determine_bin()

EggRenderMode * EggPrimitive::determine_bin ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a bin specified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 187 of file eggPrimitive.cxx.

References EggNode::determine_bin(), get_num_textures, and EggRenderMode::has_bin().

Referenced by EggRenderState::fill_state().

◆ determine_depth_offset()

EggRenderMode * EggPrimitive::determine_depth_offset ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a depth_offset specified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 139 of file eggPrimitive.cxx.

References EggNode::determine_depth_offset(), get_num_textures, and EggRenderMode::has_depth_offset().

Referenced by EggRenderState::fill_state().

◆ determine_depth_test_mode()

EggRenderMode * EggPrimitive::determine_depth_test_mode ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_test_mode other than DTM_unspecified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 91 of file eggPrimitive.cxx.

References EggNode::determine_depth_test_mode(), EggRenderMode::get_depth_test_mode(), and get_num_textures.

Referenced by EggRenderState::fill_state().

◆ determine_depth_write_mode()

EggRenderMode * EggPrimitive::determine_depth_write_mode ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a depth_write_mode other than DWM_unspecified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 67 of file eggPrimitive.cxx.

References EggNode::determine_depth_write_mode(), EggRenderMode::get_depth_write_mode(), and get_num_textures.

Referenced by EggRenderState::fill_state().

◆ determine_draw_order()

EggRenderMode * EggPrimitive::determine_draw_order ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this primitive that has a draw_order specified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 163 of file eggPrimitive.cxx.

References EggNode::determine_draw_order(), get_num_textures, and EggRenderMode::has_draw_order().

Referenced by EggRenderState::fill_state().

◆ determine_visibility_mode()

EggRenderMode * EggPrimitive::determine_visibility_mode ( )
virtual

Walks back up the hierarchy, looking for an EggGroup or EggPrimitive or some such object at this level or above this node that has a visibility_mode other than VM_unspecified.

Returns a valid EggRenderMode pointer if one is found, or NULL otherwise.

Reimplemented from EggNode.

Definition at line 115 of file eggPrimitive.cxx.

References EggNode::determine_visibility_mode(), get_num_textures, and EggRenderMode::get_visibility_mode().

Referenced by EggRenderState::fill_state().

◆ erase()

EggPrimitive::iterator EggPrimitive::erase ( iterator  first,
iterator  last 
)

Part of the implementaion of the EggPrimitive as an STL container.

Most of the rest of these functions are inline and declared in EggPrimitive.I.

Definition at line 624 of file eggPrimitive.cxx.

◆ find()

EggPrimitive::iterator EggPrimitive::find ( EggVertex vertex)

Returns the iterator pointing to the indicated vertex, or end() if the vertex is not part of the primitive.

Definition at line 643 of file eggPrimitive.cxx.

◆ has_normals()

bool EggPrimitive::has_normals ( ) const
virtual

Returns true if any of the primitives (e.g.

polygons) defined within this group or below have either face or vertex normals defined, false otherwise.

Reimplemented from EggNode.

Definition at line 603 of file eggPrimitive.cxx.

◆ has_primitives()

bool EggPrimitive::has_primitives ( ) const
virtual

Returns true if there are any primitives (e.g.

polygons) defined within this group or below, false otherwise.

Reimplemented from EggNode.

Definition at line 585 of file eggPrimitive.cxx.

◆ has_texture() [1/2]

bool EggPrimitive::has_texture ( ) const
inline

Returns true if the primitive has any textures specified, false otherwise.

This method is deprecated and is used in support of single-texturing only. New code should be written to use the multitexture variants instead.

Definition at line 128 of file eggPrimitive.I.

References get_num_textures.

Referenced by XFileMaterial::set_from_egg().

◆ has_texture() [2/2]

bool EggPrimitive::has_texture ( EggTexture texture) const
inline

Returns true if the primitive has the particular indicated texture, false otherwise.

Definition at line 137 of file eggPrimitive.I.

◆ has_vertex_color()

bool EggPrimitive::has_vertex_color ( ) const

Returns true if any vertex on the primitive has a specific color set, false otherwise.

If you call unify_attributes() first, this will also return false even if all the vertices were set to the same value (since unify_attributes() removes redundant vertex properties).

Definition at line 308 of file eggPrimitive.cxx.

◆ has_vertex_normal()

bool EggPrimitive::has_vertex_normal ( ) const

Returns true if any vertex on the primitive has a specific normal set, false otherwise.

If you call unify_attributes() first, this will also return false even if all the vertices were set to the same value (since unify_attributes() removes redundant vertex properties).

Definition at line 289 of file eggPrimitive.cxx.

◆ joint_has_primitives()

bool EggPrimitive::joint_has_primitives ( ) const
virtual

Returns true if there are any primitives (e.g.

polygons) defined within this group or below, but the search does not include nested joints.

Reimplemented from EggNode.

Definition at line 594 of file eggPrimitive.cxx.

◆ operator []()

EggVertex * EggPrimitive::operator [] ( int  index) const
inline

This is read-only: you can't assign directly to an indexed vertex.

See set_vertex() instead.

Definition at line 301 of file eggPrimitive.I.

◆ post_apply_flat_attribute()

void EggPrimitive::post_apply_flat_attribute ( )
virtual

Intended as a followup to apply_last_attribute(), this also sets an attribute on the first vertices of the primitive, if they don't already have an attribute set, just so they end up with *something*.

Reimplemented in EggCompositePrimitive.

Definition at line 462 of file eggPrimitive.cxx.

References EggAttributes::get_color().

◆ remove_doubled_verts()

void EggPrimitive::remove_doubled_verts ( bool  closed)

Certain kinds of primitives, particularly polygons, don't like to have the same vertex repeated consecutively.

Unfortunately, some modeling programs (like MultiGen) make this an easy mistake to make.

It's handy to have a function to remove these redundant vertices. If closed is true, it also checks that the first and last vertices are not the same.

This function identifies repeated vertices by position only; it does not consider any other properties, such as color or UV, significant in differentiating vertices.

Definition at line 517 of file eggPrimitive.cxx.

Referenced by EggPolygon::cleanup().

◆ remove_nonunique_verts()

void EggPrimitive::remove_nonunique_verts ( )

Removes any multiple appearances of the same vertex from the primitive.

This primarily makes sense for a point primitive, which is really a collection of points and which doesn't make sense to include the same point twice, in any order.

Definition at line 560 of file eggPrimitive.cxx.

Referenced by EggPoint::cleanup().

◆ replace()

void EggPrimitive::replace ( iterator  position,
EggVertex x 
)
inline

Replaces the vertex at the indicated position with the indicated vertex.

It is an error to call this with an invalid position iterator (e.g. end()).

Definition at line 335 of file eggPrimitive.I.

◆ reverse_vertex_ordering()

void EggPrimitive::reverse_vertex_ordering ( )
virtual

Reverses the ordering of the vertices in this primitive, if appropriate, in order to change the direction the polygon appears to be facing.

Does not adjust the surface normal, if any.

Definition at line 485 of file eggPrimitive.cxx.

◆ set_texture()

void EggPrimitive::set_texture ( EggTexture texture)
inline

Replaces the current list of textures with the indicated texture.

This method is deprecated and is used in support of single-texturing only. Please use the multitexture variant add_texture instead.

Definition at line 116 of file eggPrimitive.I.

References add_texture(), and clear_texture().

Referenced by CLwoSurface::apply_properties(), and XFileMaterial::apply_to_egg().

◆ unify_attributes()

void EggPrimitive::unify_attributes ( EggPrimitive::Shading  shading)
virtual

If the shading property is S_per_vertex, ensures that all vertices have a normal and a color, and the overall primitive does not.

If the shading property is S_per_face, and this is a composite primitive, ensures that all components have a normal and a color, and the vertices and overall primitive do not. (If this is a simple primitive, S_per_face works the same as S_overall, below).

If the shading property is S_overall, ensures that no vertices or components have a normal or a color, and the overall primitive does (if any exists at all).

After this call, either the primitive will have normals or its vertices will, but not both. Ditto for colors.

This may create redundant vertices in the vertex pool.

Reimplemented in EggCompositePrimitive.

Definition at line 337 of file eggPrimitive.cxx.

References get_shading.

Member Data Documentation

◆ clear_material

void EggPrimitive::clear_material
inline

Removes any material from the primitive.

Definition at line 115 of file eggPrimitive.h.

◆ get_bface_flag

bool EggPrimitive::get_bface_flag
inline

Retrieves the backfacing flag of the polygon.

See set_bface_flag().

Definition at line 116 of file eggPrimitive.h.

Referenced by copy_attributes().

◆ get_connected_shading

EggPrimitive::Shading EggPrimitive::get_connected_shading
inline

Determines what sort of shading properties this primitive's connected neighbors have.

To get the most accurate results, you should first call clear_connected_shading() on all connected primitives (or on all primitives in the egg file). It might also be a good idea to call remove_unused_vertices() to ensure proper connectivity.

You may find it easiest to call these other methods on the EggData root node (they are defined on EggGroupNode).

Definition at line 112 of file eggPrimitive.h.

◆ get_material

EggMaterial * EggPrimitive::get_material
inline

Returns a pointer to the applied material, or NULL if there is no material applied.

Definition at line 115 of file eggPrimitive.h.

Referenced by copy_attributes(), and XFileMaterial::set_from_egg().

◆ get_num_textures

int EggPrimitive::get_num_textures
inline

◆ get_pool

EggVertexPool * EggPrimitive::get_pool
inline

Returns the vertex pool associated with the vertices of the primitive, or NULL if the primitive has no vertices.

Definition at line 192 of file eggPrimitive.h.

◆ get_shading

EggPrimitive::Shading EggPrimitive::get_shading

Returns the shading properties apparent on this particular primitive.

This returns S_per_vertex if the vertices have colors or normals (and they are not all the same values), or for a simple primitive, S_overall otherwise. A composite primitive may also return S_per_face if the individual component primitives have colors or normals that are not all the same values.

To get the most accurate results, you should call clear_shading() on all connected primitives (or on all primitives in the egg file), followed by get_shading() on each primitive. You may find it easiest to call these methods on the EggData root node (they are defined on EggGroupNode).

Definition at line 111 of file eggPrimitive.h.

Referenced by EggCompositePrimitive::get_shading(), and unify_attributes().

◆ get_sort_name

std::string EggPrimitive::get_sort_name
inline

Returns the name of the primitive for the purposes of sorting primitives into different groups, if there is one.

Presently, this is defined as the primitive name itself, unless it begins with a digit.

Definition at line 110 of file eggPrimitive.h.

◆ get_texture

EggTexture * EggPrimitive::get_texture
inline

Returns the first texture on the primitive, if any, or NULL if there are no textures on the primitive.

Returns the nth texture that has been applied to the primitive.

This method is deprecated and is used in support of single-texturing only. New code should be written to use the multitexture variants instead.

Definition at line 100 of file eggPrimitive.h.

Referenced by XFileMaterial::set_from_egg().

◆ get_vertex

EggVertex * EggPrimitive::get_vertex
inline

Returns a particular index based on its index number.

Definition at line 187 of file eggPrimitive.h.

◆ has_material

bool EggPrimitive::has_material
inline

Returns true if the primitive is materiald (and get_material() will return a real pointer), false otherwise (and get_material() will return NULL).

Definition at line 115 of file eggPrimitive.h.

Referenced by XFileMaterial::set_from_egg().

◆ insert_vertex

void EggPrimitive::insert_vertex
inline

Inserts a vertex at the given position.

Definition at line 191 of file eggPrimitive.h.

◆ remove_vertex

void EggPrimitive::remove_vertex

Removes the indicated vertex from the primitive and returns it.

Removes the indicated vertex from the primitive.

If the vertex was not already in the primitive, does nothing and returns NULL.

Definition at line 191 of file eggPrimitive.h.

◆ set_bface_flag

void EggPrimitive::set_bface_flag
inline

Sets the backfacing flag of the polygon.

If this is true, the polygon will be rendered so that both faces are visible; if it is false, only the front face of the polygon will be visible.

Definition at line 116 of file eggPrimitive.h.

Referenced by CLwoSurface::apply_properties(), DaeMaterials::apply_to_primitive(), and copy_attributes().

◆ set_material

void EggPrimitive::set_material
inline

Applies the indicated material to the primitive.

Definition at line 115 of file eggPrimitive.h.

Referenced by CLwoSurface::apply_properties(), DaeMaterials::apply_to_primitive(), and copy_attributes().

◆ set_vertex

void EggPrimitive::set_vertex
inline

Replaces a particular vertex based on its index number in the list of vertices.

This is just a convenience function for people who don't want to mess with the iterators.

Definition at line 191 of file eggPrimitive.h.


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