Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

maya: Allow more than three eggObjectTypes in a Maya model #1134

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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