/****************************************************************************** NintendoWare for CTR Maya Plugin File: NW4C_SetNoCompressNode.mel Description: set no compress node Date: 2009/11/25 Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc. All rights reserved. ******************************************************************************/ // UpdateWindow DoSearch /****************************************************************************** is scene anim object ******************************************************************************/ proc int IsSceneAnimObject(string $node) { string $type = nodeType($node); string $childs[] = `listRelatives -pa -s $node`; if (size(`ls -cameras -lights -typ environmentFog $childs`) > 0 || $type == "lookAt") { return true; } return false; } /****************************************************************************** get selected transform (except camera & light) return node size ******************************************************************************/ proc int GetSelectedXform(string $xforms[]) { clear($xforms); string $nodes[] = `ls -sl -typ transform`; for ($node in $nodes) { if (!IsSceneAnimObject($node)) { $xforms[size($xforms)] = $node; } } return size($xforms); } /****************************************************************************** no compress ******************************************************************************/ global proc int nw4cSetNoCompressNode_Get_NoCompress(string $node) { return (`attributeQuery -n $node -ex "nw4cNoCompressNode"`) ? `getAttr ($node + ".nw4cNoCompressNode")` : 0; } global proc nw4cSetNoCompressNode_Add_NoCompress(string $node) { if (!`attributeQuery -n $node -ex "nw4cNoCompressNode"`) { addAttr -ln "nw4cNoCompressNode" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetNoCompressNode_Set_NoCompress(string $node, int $val) { nw4cSetNoCompressNode_Add_NoCompress($node); setAttr ($node + ".nw4cNoCompressNode") $val; } proc SetJob_NoCompress(string $node) { if (!`attributeQuery -n $node -ex "nw4cNoCompressNode"`) { return; } scriptJob -p nw4cSetNoCompressNode_NoCompress -rp -ac ($node + ".nw4cNoCompressNode") ("optionMenuGrp -e -sl (`nw4cSetNoCompressNode_Get_NoCompress " + $node + "` + 1) nw4cSetNoCompressNode_NoCompress"); } global proc nw4cSetNoCompressNode_NoCompressCB(string $mainNode) { string $xforms[]; GetSelectedXform($xforms); int $val = `optionMenuGrp -q -sl nw4cSetNoCompressNode_NoCompress` - 1; for ($node in $xforms) { nw4cSetNoCompressNode_Set_NoCompress($node, $val); } SetJob_NoCompress($mainNode); } /****************************************************************************** update window ******************************************************************************/ global proc nw4cSetNoCompressNode_UpdateWindow() { //----------------------------------------------------------------------------- // get selection string $xforms[]; GetSelectedXform($xforms); int $enableFlag = (size($xforms) > 0); //----------------------------------------------------------------------------- // set node name string $nodesName; if ($enableFlag) { $nodesName = $xforms[0]; int $nodeSize = size($xforms); for ($inode = 1; $inode < $nodeSize; ++$inode) { if ($inode == 3) { $nodesName += ", ... (" + $nodeSize + ")"; break; } $nodesName += ", " + $xforms[$inode]; } } else { $nodesName = "(None)"; } text -e -l $nodesName nw4cSetNoCompressNode_NodeName; //----------------------------------------------------------------------------- // set current attr & change command if ($enableFlag) { string $node = $xforms[0]; optionMenuGrp -e -sl (`nw4cSetNoCompressNode_Get_NoCompress $node` + 1) -cc ("nw4cSetNoCompressNode_NoCompressCB " + $node) nw4cSetNoCompressNode_NoCompress; SetJob_NoCompress($node); } //----------------------------------------------------------------------------- // set enable state control -e -en $enableFlag nw4cSetNoCompressNode_NoCompress; } /****************************************************************************** search check CB ******************************************************************************/ global proc nw4cSetNoCompressNode_SearchCheckCB() { control -e -en (`checkBoxGrp -q -v1 nw4cSetNoCompressNode_SearchCheck` || `checkBoxGrp -q -v2 nw4cSetNoCompressNode_SearchCheck`) nw4cSetNoCompressNode_SearchBtn; } /****************************************************************************** do search ******************************************************************************/ global proc nw4cSetNoCompressNode_DoSearch() { int $searchVal1 = `checkBoxGrp -q -v1 nw4cSetNoCompressNode_SearchCheck` ? 0 : -1; int $searchVal2 = `checkBoxGrp -q -v2 nw4cSetNoCompressNode_SearchCheck` ? 1 : -1; int $nodeCount = 0; select -cl; string $xforms[] = `ls -typ transform`; for ($node in $xforms) { if (IsSceneAnimObject($node)) { continue; } int $val = nw4cSetNoCompressNode_Get_NoCompress($node); if ($val == $searchVal1 || $val == $searchVal2) { select -add $node; ++$nodeCount; } } if ($nodeCount == 0) { print "Not found\n"; } else { string $msg = "Found: " + $nodeCount + " transform node"; if ($nodeCount >= 2) { $msg += "s"; } print ($msg + "\n"); } } /****************************************************************************** main ******************************************************************************/ global proc NW4C_SetNoCompressNode() { //----------------------------------------------------------------------------- // create window int $winW = 400; int $winH = 292; if (!`window -exists nw4cSetNoCompressNode_Win`) { window -t "NW4C Set No Compress Node" -wh $winW $winH -mxb 0 -mb 1 nw4cSetNoCompressNode_Win; menu -l "Help"; menuItem -l ("Help on " + `window -q -t nw4cSetNoCompressNode_Win` + "...") -c "NW4C_ShowHelp \"html/NW4C_SetNoCompressNode.html\" \"\""; columnLayout -adj 1 -cat "both" 4 -cal "center" -rs 4; //----------------------------------------------------------------------------- // node name frameLayout -l "Selected Transform Node" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -cal "center" -rs 8; text -l "" nw4cSetNoCompressNode_NodeName; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // set frameLayout -l "Set" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; optionMenuGrp -l "" -cw 1 100 -rat 1 "both" 4 -cal 1 "right" nw4cSetNoCompressNode_NoCompress; menuItem -l "Compress this node if possible"; menuItem -l "Don't compress this node"; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // search frameLayout -l "Search" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; checkBoxGrp -l "" -ncb 2 -cw3 100 100 100 -la2 "Compress" "No Compress" -cc "nw4cSetNoCompressNode_SearchCheckCB" nw4cSetNoCompressNode_SearchCheck; rowColumnLayout -nc 2 -cw 1 220 -cw 2 150; text -l ""; // dummy button -l "Search" -c "nw4cSetNoCompressNode_DoSearch" nw4cSetNoCompressNode_SearchBtn; setParent ..; // rowColumnLayout setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // close button string $closeCmd = "deleteUI nw4cSetNoCompressNode_Win"; string $form = `formLayout -nd 100`; string $closeBtn = `button -h 26 -l "Close" -c $closeCmd`; formLayout -e -af $closeBtn "top" 0 -af $closeBtn "left" 0 -af $closeBtn "bottom" 0 -af $closeBtn "right" 0 $form; setParent ..; // formLayout setParent ..; // columnLayout setFocus $closeBtn; //----------------------------------------------------------------------------- // set selection change job scriptJob -p nw4cSetNoCompressNode_Win -e "SelectionChanged" "nw4cSetNoCompressNode_UpdateWindow"; } if (`window -q -w nw4cSetNoCompressNode_Win` < $winW) { window -e -w $winW nw4cSetNoCompressNode_Win; } if (`window -q -h nw4cSetNoCompressNode_Win` < $winH) { window -e -h $winH nw4cSetNoCompressNode_Win; } //window -e -wh $winW $winH nw4cSetNoCompressNode_Win; //----------------------------------------------------------------------------- // update window nw4cSetNoCompressNode_UpdateWindow; nw4cSetNoCompressNode_SearchCheckCB; //----------------------------------------------------------------------------- // show window showWindow nw4cSetNoCompressNode_Win; }