18 EggPrimitive(
const std::string &name):
EggNode(name) {
20 _connected_shading = S_unknown;
31 _textures(copy._textures),
32 _material(copy._material),
36 _connected_shading = S_unknown;
44 EggNode::operator = (copy);
45 EggAttributes::operator = (copy);
46 EggRenderMode::operator = (copy);
48 _textures = copy._textures;
49 _material = copy._material;
51 _connected_shading = S_unknown;
72 const std::string &name = get_name();
73 if (!name.empty() && !isdigit(name[0])) {
85 _connected_shading = S_unknown;
102 if (_connected_shading == S_unknown) {
103 ((
EggPrimitive *)
this)->set_connected_shading(S_unknown,
this);
106 return _connected_shading;
138 PT_EggTexture t = texture;
139 return (std::find(_textures.begin(), _textures.end(), t) != _textures.end());
163 _textures.push_back(texture);
179 return _textures.size();
187 nassertr(n >= 0 && n < (
int)_textures.size(),
nullptr);
197 _material = material;
224 return _material !=
nullptr;
251 INLINE EggPrimitive::iterator EggPrimitive::
253 return _vertices.begin();
259 INLINE EggPrimitive::iterator EggPrimitive::
261 return _vertices.end();
267 INLINE EggPrimitive::reverse_iterator EggPrimitive::
269 return _vertices.rbegin();
275 INLINE EggPrimitive::reverse_iterator EggPrimitive::
277 return _vertices.rend();
283 INLINE
bool EggPrimitive::
285 return _vertices.empty();
291 INLINE EggPrimitive::size_type EggPrimitive::
293 return _vertices.size();
302 nassertr(index >= 0 && index < (
int)
size(),
nullptr);
303 return *(begin() + index);
309 INLINE EggPrimitive::iterator EggPrimitive::
310 insert(iterator position,
EggVertex *x) {
311 prepare_add_vertex(x, position - _vertices.begin(), _vertices.size() + 1);
312 iterator i = _vertices.insert((Vertices::iterator &)position, x);
313 x->test_pref_integrity();
314 test_vref_integrity();
321 INLINE EggPrimitive::iterator EggPrimitive::
322 erase(iterator position) {
323 prepare_remove_vertex(*position, position - _vertices.begin(), _vertices.size());
324 iterator i = _vertices.erase((Vertices::iterator &)position);
325 test_vref_integrity();
336 nassertv(position != end());
340 prepare_remove_vertex(*position, -1, -1);
341 prepare_add_vertex(x, -1, -1);
342 *(Vertices::iterator &)position = x;
344 x->test_pref_integrity();
345 test_vref_integrity();
353 erase(begin(), end());
359 INLINE
size_t EggPrimitive::
360 get_num_vertices()
const {
371 nassertv(index <
size());
372 replace(begin() + index, vertex);
380 if (index > _vertices.size()) {
381 index = _vertices.size();
383 _vertices.insert(_vertices.begin() + index, vertex);
391 nassertr(index <
size(),
nullptr);
392 return *(begin() + index);
401 return empty() ? nullptr : _vertices.front()->get_pool();