diff --git a/pandatool/src/maya/eggObjectFlags.mel b/pandatool/src/maya/eggObjectFlags.mel index 696ee5dff6a..7ad070d7fd3 100644 --- a/pandatool/src/maya/eggObjectFlags.mel +++ b/pandatool/src/maya/eggObjectFlags.mel @@ -1,6 +1,6 @@ // -// This is a sample mel script to flag a Maya node with one, two, or -// three eggObjectTypes* attributes. These attributes are used to tag +// This is a sample mel script to flag a Maya node with at least +// one eggObjectTypes* attribute. These attributes are used to tag // geometry with special meaning to Panda. There are a handful of // attribute values that are predefined within Panda, but you can also // make up your own attribute values, and define an arbitrary egg @@ -28,42 +28,22 @@ // direct/src/configfiles/direct.prc.pp for examples of this. // -global proc eggObjectFlags() -{ -string $sel[] =`ls -sl`; -for ($i in $sel) - { - string $attrName = "eggObjectTypes"; +global proc eggObjectFlags() { + string $sel[] =`ls -sl`; // Modify this line as needed to add your own object types. string $eggFlags = "none:portal:polylight:seq24:seq12:indexed:model:dcs:barrier:sphere:tube:trigger:trigger-sphere:bubble:ghost:keep-all-uvsets"; - - string $object = ($i + ".eggObjectTypes"); - - if( `objExists ($object + "1")` ) - { - - if( `objExists ($object + "2")` ) - { - - if( `objExists ($object + "3")` ) - { - warning("No More Egg Object Types Supported"); - } - else - { - addAttr -ln ($attrName + "3") -k 1 -at "enum" -en ($eggFlags) $i; - } - - } - else - { - addAttr -ln ($attrName + "2") -k 1 -at "enum" -en ($eggFlags) $i; - } - } - else - { - addAttr -ln ($attrName + "1") -k 1 -at "enum" -en ($eggFlags) $i; + + for ($i in $sel) { + string $attrName = "eggObjectTypes"; + string $object = ($i + "." + $attrName); + + int $num = 1; + + while (`objExists ($object + $num)`) { + $num++; } + + addAttr -ln ($attrName + $num) -k 1 -at "enum" -en ($eggFlags) $i; } } diff --git a/pandatool/src/mayaegg/mayaNodeTree.cxx b/pandatool/src/mayaegg/mayaNodeTree.cxx index f80a3c95c1e..8b12dea910e 100644 --- a/pandatool/src/mayaegg/mayaNodeTree.cxx +++ b/pandatool/src/mayaegg/mayaNodeTree.cxx @@ -32,6 +32,8 @@ #include #include "post_maya_include.h" +#include + using std::string; /** @@ -341,13 +343,21 @@ get_egg_group(MayaNodeDesc *node_desc) { MObject dag_object = node_desc->get_dag_path().node(); string object_type; LVector3d value; - if (get_enum_attribute(dag_object, "eggObjectTypes1", object_type)) { - egg_group->add_object_type(object_type); - } - if (get_enum_attribute(dag_object, "eggObjectTypes2", object_type)) { - egg_group->add_object_type(object_type); - } - if (get_enum_attribute(dag_object, "eggObjectTypes3", object_type)) { + + for (unsigned int i = 1; ; i++) { + std::ostringstream attr; + attr << "eggObjectTypes" << i; + + if (!get_enum_attribute(dag_object, attr.str(), object_type)) { + if (i < 3) { + // Support out-of-order legacy object types. + continue; + } + + // We have run out of object types to add. + break; + } + egg_group->add_object_type(object_type); }