14#ifndef EGGCOMPOSITEPRIMITIVE_H
15#define EGGCOMPOSITEPRIMITIVE_H
35 INLINE
size_t get_num_components()
const;
38 MAKE_SEQ(get_components, get_num_components, get_component);
39 INLINE
void set_component(
size_t i,
const EggAttributes *attrib);
41 MAKE_SEQ_PROPERTY(components, get_num_components, get_component, set_component);
43 INLINE
bool triangulate_into(
EggGroupNode *container)
const;
53 virtual int get_num_lead_vertices()
const=0;
54 virtual void prepare_add_vertex(
EggVertex *vertex,
int i,
int n);
55 virtual void prepare_remove_vertex(
EggVertex *vertex,
int i,
int n);
57 virtual bool do_triangulate(
EggGroupNode *container)
const;
59 void write_body(std::ostream &out,
int indent_level)
const;
70 static void init_type() {
71 EggPrimitive::init_type();
73 EggPrimitive::get_class_type());
76 return get_class_type();
78 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
The set of attributes that may be applied to vertices as well as polygons, such as surface normal and...
The base class for primitives such as triangle strips and triangle fans, which include several compon...
A base class for nodes in the hierarchy that are not leaf nodes.
A base class for any of a number of kinds of geometry primitives: polygons, point lights,...
virtual void unify_attributes(Shading shading)
If the shading property is S_per_vertex, ensures that all vertices have a normal and a color,...
get_shading
Returns the shading properties apparent on this particular primitive.
virtual void apply_first_attribute()
Sets the first vertex of the triangle (or each component) to the primitive normal and/or color,...
virtual void post_apply_flat_attribute()
Intended as a followup to apply_last_attribute(), this also sets an attribute on the first vertices o...
virtual void apply_last_attribute()
Sets the last vertex of the triangle (or each component) to the primitive normal and/or color,...
virtual bool cleanup()
Cleans up modeling errors in whatever context this makes sense.
Any one-, two-, three-, or four-component vertex, possibly with attributes such as a normal.
TypeHandle is the identifier used to differentiate C++ class types.
This is our own Panda specialization on the default STL vector.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
void register_type(TypeHandle &type_handle, const std::string &name)
This inline function is just a convenient way to call TypeRegistry::register_type(),...