14 #ifndef GEOMVERTEXFORMAT_H
15 #define GEOMVERTEXFORMAT_H
63 virtual bool unref()
const;
65 INLINE
bool is_registered()
const;
68 MAKE_PROPERTY(registered, is_registered);
72 MAKE_PROPERTY(animation, get_animation, set_animation);
77 INLINE
size_t get_num_arrays()
const;
79 MAKE_SEQ(get_arrays, get_num_arrays, get_array);
82 void remove_array(
size_t array);
86 void remove_empty_arrays();
88 size_t get_num_columns()
const;
89 int get_array_with(
size_t i)
const;
97 MAKE_SEQ(get_columns, get_num_columns, get_column);
99 void remove_column(
const InternalName *name,
bool keep_empty_array =
false);
101 void align_columns_for_animation();
102 void maybe_align_columns_for_animation();
104 INLINE
size_t get_num_points()
const;
106 MAKE_SEQ(get_points, get_num_points, get_point);
108 INLINE
size_t get_num_vectors()
const;
110 MAKE_SEQ(get_vectors, get_num_vectors, get_vector);
112 INLINE
size_t get_num_texcoords()
const;
113 INLINE
const InternalName *get_texcoord(
size_t n)
const;
114 MAKE_SEQ(get_texcoords, get_num_texcoords, get_texcoord);
116 INLINE
size_t get_num_morphs()
const;
117 INLINE
const InternalName *get_morph_slider(
size_t n)
const;
118 INLINE
const InternalName *get_morph_base(
size_t n)
const;
119 INLINE
const InternalName *get_morph_delta(
size_t n)
const;
120 MAKE_SEQ(get_morph_sliders, get_num_morphs, get_morph_slider);
121 MAKE_SEQ(get_morph_bases, get_num_morphs, get_morph_base);
122 MAKE_SEQ(get_morph_deltas, get_num_morphs, get_morph_delta);
124 MAKE_SEQ_PROPERTY(arrays, get_num_arrays, get_array, set_array, remove_array, insert_array);
125 MAKE_SEQ_PROPERTY(points, get_num_points, get_point);
126 MAKE_SEQ_PROPERTY(vectors, get_num_vectors, get_vector);
129 MAKE_MAP_PROPERTY(columns, has_column, get_column);
130 MAKE_MAP_KEYS_SEQ(columns, get_num_columns, get_column_name);
132 void output(std::ostream &out)
const;
133 void write(std::ostream &out,
int indent_level = 0)
const;
134 void write_with_data(std::ostream &out,
int indent_level,
171 INLINE
int get_vertex_array_index()
const;
173 INLINE
int get_normal_array_index()
const;
175 INLINE
int get_color_array_index()
const;
182 INLINE
static Registry *get_registry();
183 static void make_registry();
186 void do_unregister();
195 class DataTypeRecord {
202 DataTypesByName _columns_by_name;
204 int _vertex_array_index;
206 int _normal_array_index;
208 int _color_array_index;
229 class EXPCL_PANDA_GOBJ Registry {
232 void make_standard_formats();
259 static Registry *_registry;
263 static void register_with_read_factory();
275 static void init_type() {
276 TypedWritableReferenceCount::init_type();
278 TypedWritableReferenceCount::get_class_type());
281 return get_class_type();
283 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
288 friend class GeomVertexFormat::Registry;
292 INLINE std::ostream &operator << (std::ostream &out,
const GeomVertexFormat &obj);