28 EggTextureCollection::
29 EggTextureCollection() {
35 EggTextureCollection::
37 _textures(copy._textures),
38 _ordered_textures(copy._ordered_textures)
47 _textures = copy._textures;
48 _ordered_textures = copy._ordered_textures;
55 EggTextureCollection::
56 ~EggTextureCollection() {
65 _ordered_textures.clear();
77 return node->find_textures(
this);
86 return _ordered_textures.empty();
94 return _ordered_textures.size();
102 nassertr(index >= 0 && index < (
int)_ordered_textures.size(),
nullptr);
104 return _ordered_textures[index];
124 OrderedTextures::iterator oti;
125 for (oti = _ordered_textures.begin();
126 oti != _ordered_textures.end();
129 position = node->insert(position, texture);
162 if (node->
is_of_type(EggPrimitive::get_class_type())) {
166 for (
int i = 0; i < num_textures; i++) {
169 Textures::iterator ti = _textures.find(tex);
170 if (ti == _textures.end()) {
173 _textures.insert(Textures::value_type(tex, 1));
174 _ordered_textures.push_back(tex);
182 for (
int j = 0; j < i; j++) {
196 }
else if (node->
is_of_type(EggGroupNode::get_class_type())) {
199 EggGroupNode::iterator ci;
200 for (ci = group->begin(); ci != group->end(); ++ci) {
243 return num_collapsed;
260 int num_collapsed = 0;
264 Collapser collapser(uet);
268 OrderedTextures::const_iterator oti;
269 for (oti = _ordered_textures.begin();
270 oti != _ordered_textures.end();
274 std::pair<Collapser::const_iterator, bool> result = collapser.insert(tex);
275 if (!result.second) {
278 removed.insert(TextureReplacement::value_type(tex, first));
285 Collapser::const_iterator ci;
286 for (ci = collapser.begin(); ci != collapser.end(); ++ci) {
290 return num_collapsed;
303 EggGroupNode::iterator ci;
304 for (ci = node->begin();
308 if (child->
is_of_type(EggPrimitive::get_class_type())) {
310 EggPrimitive::Textures new_textures;
311 EggPrimitive::Textures::const_iterator ti;
312 for (ti = primitive->_textures.begin();
313 ti != primitive->_textures.end();
315 PT_EggTexture tex = (*ti);
316 TextureReplacement::const_iterator ri;
317 ri = replace.find(tex);
318 if (ri != replace.end()) {
320 new_textures.push_back((*ri).second);
322 new_textures.push_back(tex);
325 primitive->_textures.swap(new_textures);
327 }
else if (child->
is_of_type(EggGroupNode::get_class_type())) {
342 OrderedTextures::const_iterator oti;
343 for (oti = _ordered_textures.begin();
344 oti != _ordered_textures.end();
348 tex->set_name(nu.
add_name(tex->get_name()));
358 sort(_ordered_textures.begin(), _ordered_textures.end(),
369 sort(_ordered_textures.begin(), _ordered_textures.end(),
380 nassertr(_textures.size() == _ordered_textures.size(),
false);
382 PT_EggTexture new_tex = texture;
384 Textures::const_iterator ti;
385 ti = _textures.find(new_tex);
386 if (ti != _textures.end()) {
391 _textures.insert(Textures::value_type(new_tex, 0));
392 _ordered_textures.push_back(new_tex);
394 nassertr(_textures.size() == _ordered_textures.size(),
false);
404 nassertr(_textures.size() == _ordered_textures.size(),
false);
406 Textures::iterator ti;
407 ti = _textures.find(texture);
408 if (ti == _textures.end()) {
415 OrderedTextures::iterator oti;
416 PT_EggTexture ptex = texture;
417 oti = find(_ordered_textures.begin(), _ordered_textures.end(), ptex);
418 nassertr(oti != _ordered_textures.end(),
false);
420 _ordered_textures.erase(oti);
422 nassertr(_textures.size() == _ordered_textures.size(),
false);
434 OrderedTextures::const_iterator oti;
435 for (oti = _ordered_textures.begin();
436 oti != _ordered_textures.end();
458 OrderedTextures::const_iterator oti;
459 for (oti = _ordered_textures.begin();
460 oti != _ordered_textures.end();
463 if (tex->get_name() == tref_name) {
478 OrderedTextures::const_iterator oti;
479 for (oti = _ordered_textures.begin();
480 oti != _ordered_textures.end();