Skip to content

Commit

Permalink
maya: Allow more than three eggObjectTypes in a Maya model
Browse files Browse the repository at this point in the history
Closes #1134
  • Loading branch information
darktohka authored and rdb committed Mar 31, 2021
1 parent fa73657 commit 73a2d29
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 42 deletions.
50 changes: 15 additions & 35 deletions 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
Expand Down Expand Up @@ -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;
}
}
24 changes: 17 additions & 7 deletions pandatool/src/mayaegg/mayaNodeTree.cxx
Expand Up @@ -32,6 +32,8 @@
#include <maya/MGlobal.h>
#include "post_maya_include.h"

#include <sstream>

using std::string;

/**
Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 73a2d29

Please sign in to comment.