EggMaterialCollection¶
from panda3d.egg import EggMaterialCollection
-
class
EggMaterialCollection
¶ This is a collection of materials by MRef name. It can extract the materials from an egg file and sort them all together; it can also manage the creation of unique materials and the assignment of unique MRef names.
Inheritance diagram
-
__init__
()¶
-
__init__
(copy: EggMaterialCollection)
-
addMaterial
(material: EggMaterial) → bool¶ Explicitly adds a new material to the collection. Returns true if the material was added, false if it was already there or if there was some error.
-
assign
(copy: EggMaterialCollection) → EggMaterialCollection¶
-
collapseEquivalentMaterials
(eq: int, node: EggGroupNode) → int¶ Walks through the collection and collapses together any separate materials that are equivalent according to the indicated equivalence factor, eq (see
EggMaterial.isEquivalentTo()
). The return value is the number of materials removed.This flavor of
collapseEquivalentMaterials()
automatically adjusts all the primitives in the egg hierarchy to refer to the new material pointers.
-
collapseEquivalentMaterials
(eq: int, removed: MaterialReplacement) → int Walks through the collection and collapses together any separate materials that are equivalent according to the indicated equivalence factor, eq (see
EggMaterial.isEquivalentTo()
). The return value is the number of materials removed.This flavor of
collapseEquivalentMaterials()
does not adjust any primitives in the egg hierarchy; instead, it fills up the ‘removed’ map with an entry for each removed material, mapping it back to the equivalent retained material. It’s up to the user to then callreplaceMaterials()
with this map, if desired, to apply these changes to the egg hierarchy.
-
createUniqueMaterial
(copy: EggMaterial, eq: int) → EggMaterial¶ createUniqueMaterial()
creates a new material if there is not already one equivalent (according to eq, seeEggMaterial.isEquivalentTo()
) to the indicated material, or returns the existing one if there is.
-
extractMaterials
(node: EggGroupNode) → int¶ Walks the egg hierarchy beginning at the indicated node, and removes any
EggMaterials
encountered in the hierarchy, adding them to the collection. Returns the number ofEggMaterials
encountered.
-
findMref
(mref_name: str) → EggMaterial¶ Returns the material with the indicated MRef name, or NULL if no material matches.
-
findUsedMaterials
(node: EggNode) → int¶ Walks the egg hierarchy beginning at the indicated node, looking for materials that are referenced by primitives but are not already members of the collection, adding them to the collection.
If this is called following
extractMaterials()
, it can be used to pick up any additional material references that appeared in the egg hierarchy (but whoseEggMaterial
node was not actually part of the hierarchy).If this is called in lieu of
extractMaterials()
, it will fill up the collection with all of the referenced materials (and only the referenced materials), without destructively removing theEggMaterials
from the hierarchy.This also has the side effect of incrementing the internal usage count for a material in the collection each time a material reference is encountered. This side effect is taken advantage of by
removeUnusedMaterials()
.
-
removeMaterial
(material: EggMaterial) → bool¶ Explicitly removes a material from the collection. Returns true if the material was removed, false if it wasn’t there or if there was some error.
-
removeUnusedMaterials
(node: EggNode) → None¶ Removes any materials from the collection that aren’t referenced by any primitives in the indicated egg hierarchy. This also, incidentally, adds materials to the collection that had been referenced by primitives but had not previously appeared in the collection.
-
static
replaceMaterials
(node: EggGroupNode, replace: MaterialReplacement) → None¶ Walks the egg hierarchy, changing out any reference to a material appearing on the left side of the map with its corresponding material on the right side. This is most often done following a call to
collapseEquivalentMaterials()
. It does not directly affect the Collection.
-