27 EggMaterialCollection::
28 EggMaterialCollection() {
34 EggMaterialCollection::
36 _materials(copy._materials),
37 _ordered_materials(copy._ordered_materials)
46 _materials = copy._materials;
47 _ordered_materials = copy._ordered_materials;
54 EggMaterialCollection::
55 ~EggMaterialCollection() {
64 _ordered_materials.clear();
76 return node->find_materials(
this);
96 OrderedMaterials::iterator oti;
97 for (oti = _ordered_materials.begin();
98 oti != _ordered_materials.end();
101 position = node->insert(position, material);
129 if (node->
is_of_type(EggPrimitive::get_class_type())) {
133 Materials::iterator ti = _materials.find(tex);
134 if (ti == _materials.end()) {
137 _materials.insert(Materials::value_type(tex, 1));
138 _ordered_materials.push_back(tex);
146 }
else if (node->
is_of_type(EggGroupNode::get_class_type())) {
149 EggGroupNode::iterator ci;
150 for (ci = group->begin(); ci != group->end(); ++ci) {
193 return num_collapsed;
210 int num_collapsed = 0;
214 Collapser collapser(uet);
218 OrderedMaterials::const_iterator oti;
219 for (oti = _ordered_materials.begin();
220 oti != _ordered_materials.end();
224 std::pair<Collapser::const_iterator, bool> result = collapser.insert(tex);
225 if (!result.second) {
228 removed.insert(MaterialReplacement::value_type(tex, first));
235 Collapser::const_iterator ci;
236 for (ci = collapser.begin(); ci != collapser.end(); ++ci) {
240 return num_collapsed;
253 EggGroupNode::iterator ci;
254 for (ci = node->begin();
258 if (child->
is_of_type(EggPrimitive::get_class_type())) {
262 MaterialReplacement::const_iterator ri;
263 ri = replace.find(tex);
264 if (ri != replace.end()) {
270 }
else if (child->
is_of_type(EggGroupNode::get_class_type())) {
285 OrderedMaterials::const_iterator oti;
286 for (oti = _ordered_materials.begin();
287 oti != _ordered_materials.end();
291 tex->set_name(nu.
add_name(tex->get_name()));
301 sort(_ordered_materials.begin(), _ordered_materials.end(),
312 nassertr(_materials.size() == _ordered_materials.size(),
false);
316 Materials::const_iterator ti;
317 ti = _materials.find(new_tex);
318 if (ti != _materials.end()) {
323 _materials.insert(Materials::value_type(new_tex, 0));
324 _ordered_materials.push_back(new_tex);
326 nassertr(_materials.size() == _ordered_materials.size(),
false);
336 nassertr(_materials.size() == _ordered_materials.size(),
false);
338 Materials::iterator ti;
339 ti = _materials.find(material);
340 if (ti == _materials.end()) {
345 _materials.erase(ti);
347 OrderedMaterials::iterator oti;
349 oti = find(_ordered_materials.begin(), _ordered_materials.end(), ptex);
350 nassertr(oti != _ordered_materials.end(),
false);
352 _ordered_materials.erase(oti);
354 nassertr(_materials.size() == _ordered_materials.size(),
false);
366 OrderedMaterials::const_iterator oti;
367 for (oti = _ordered_materials.begin();
368 oti != _ordered_materials.end();
386 find_mref(
const std::string &mref_name)
const {
388 OrderedMaterials::const_iterator oti;
389 for (oti = _ordered_materials.begin();
390 oti != _ordered_materials.end();
393 if (tex->get_name() == mref_name) {