/****************************************************************************** NintendoWare for CTR Maya Plugin File: NW4C_SetForceExportKey.mel Description: set force export key Date: 2011/02/01 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); } /****************************************************************************** force export translate key ******************************************************************************/ global proc int nw4cSetForceExportKey_Get_ForceExportTranslateKey(string $node) { return (`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) ? `getAttr ($node + ".nw4cForceExportTranslateKey")` : 0; } global proc nw4cSetForceExportKey_Add_ForceExportTranslateKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) { addAttr -ln "nw4cForceExportTranslateKey" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetForceExportKey_Set_ForceExportTranslateKey(string $node, int $val) { nw4cSetForceExportKey_Add_ForceExportTranslateKey($node); setAttr ($node + ".nw4cForceExportTranslateKey") $val; } proc SetJob_ForceExportTranslateKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) { return; } scriptJob -p nw4cSetForceExportKey_ForceExportTranslateKey -rp -ac ($node + ".nw4cForceExportTranslateKey") ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportTranslateKey " + $node + "`) nw4cSetForceExportKey_ForceExportTranslateKey"); } global proc nw4cSetForceExportKey_ForceExportTranslateKeyCB(string $mainNode) { string $xforms[]; GetSelectedXform($xforms); int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportTranslateKey`; for ($node in $xforms) { nw4cSetForceExportKey_Set_ForceExportTranslateKey($node, $val); } SetJob_ForceExportTranslateKey($mainNode); } /****************************************************************************** force export rotate key ******************************************************************************/ global proc int nw4cSetForceExportKey_Get_ForceExportRotateKey(string $node) { return (`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) ? `getAttr ($node + ".nw4cForceExportRotateKey")` : 0; } global proc nw4cSetForceExportKey_Add_ForceExportRotateKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) { addAttr -ln "nw4cForceExportRotateKey" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetForceExportKey_Set_ForceExportRotateKey(string $node, int $val) { nw4cSetForceExportKey_Add_ForceExportRotateKey($node); setAttr ($node + ".nw4cForceExportRotateKey") $val; } proc SetJob_ForceExportRotateKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) { return; } scriptJob -p nw4cSetForceExportKey_ForceExportRotateKey -rp -ac ($node + ".nw4cForceExportRotateKey") ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportRotateKey " + $node + "`) nw4cSetForceExportKey_ForceExportRotateKey"); } global proc nw4cSetForceExportKey_ForceExportRotateKeyCB(string $mainNode) { string $xforms[]; GetSelectedXform($xforms); int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportRotateKey`; for ($node in $xforms) { nw4cSetForceExportKey_Set_ForceExportRotateKey($node, $val); } SetJob_ForceExportRotateKey($mainNode); } /****************************************************************************** force export scale key ******************************************************************************/ global proc int nw4cSetForceExportKey_Get_ForceExportScaleKey(string $node) { return (`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) ? `getAttr ($node + ".nw4cForceExportScaleKey")` : 0; } global proc nw4cSetForceExportKey_Add_ForceExportScaleKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) { addAttr -ln "nw4cForceExportScaleKey" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetForceExportKey_Set_ForceExportScaleKey(string $node, int $val) { nw4cSetForceExportKey_Add_ForceExportScaleKey($node); setAttr ($node + ".nw4cForceExportScaleKey") $val; } proc SetJob_ForceExportScaleKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) { return; } scriptJob -p nw4cSetForceExportKey_ForceExportScaleKey -rp -ac ($node + ".nw4cForceExportScaleKey") ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportScaleKey " + $node + "`) nw4cSetForceExportKey_ForceExportScaleKey"); } global proc nw4cSetForceExportKey_ForceExportScaleKeyCB(string $mainNode) { string $xforms[]; GetSelectedXform($xforms); int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportScaleKey`; for ($node in $xforms) { nw4cSetForceExportKey_Set_ForceExportScaleKey($node, $val); } SetJob_ForceExportScaleKey($mainNode); } /****************************************************************************** force export visibility key ******************************************************************************/ global proc int nw4cSetForceExportKey_Get_ForceExportVisibilityKey(string $node) { return (`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) ? `getAttr ($node + ".nw4cForceExportVisibilityKey")` : 0; } global proc nw4cSetForceExportKey_Add_ForceExportVisibilityKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) { addAttr -ln "nw4cForceExportVisibilityKey" -at "bool" -dv 0 -h 1 $node; } } global proc nw4cSetForceExportKey_Set_ForceExportVisibilityKey(string $node, int $val) { nw4cSetForceExportKey_Add_ForceExportVisibilityKey($node); setAttr ($node + ".nw4cForceExportVisibilityKey") $val; } proc SetJob_ForceExportVisibilityKey(string $node) { if (!`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) { return; } scriptJob -p nw4cSetForceExportKey_ForceExportVisibilityKey -rp -ac ($node + ".nw4cForceExportVisibilityKey") ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportVisibilityKey " + $node + "`) nw4cSetForceExportKey_ForceExportVisibilityKey"); } global proc nw4cSetForceExportKey_ForceExportVisibilityKeyCB(string $mainNode) { string $xforms[]; GetSelectedXform($xforms); int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportVisibilityKey`; for ($node in $xforms) { nw4cSetForceExportKey_Set_ForceExportVisibilityKey($node, $val); } SetJob_ForceExportVisibilityKey($mainNode); } /****************************************************************************** update window ******************************************************************************/ global proc nw4cSetForceExportKey_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 nw4cSetForceExportKey_NodeName; //----------------------------------------------------------------------------- // set current attr & change command if ($enableFlag) { string $node = $xforms[0]; checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportTranslateKey $node`) -cc ("nw4cSetForceExportKey_ForceExportTranslateKeyCB " + $node) nw4cSetForceExportKey_ForceExportTranslateKey; SetJob_ForceExportTranslateKey($node); checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportRotateKey $node`) -cc ("nw4cSetForceExportKey_ForceExportRotateKeyCB " + $node) nw4cSetForceExportKey_ForceExportRotateKey; SetJob_ForceExportRotateKey($node); checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportScaleKey $node`) -cc ("nw4cSetForceExportKey_ForceExportScaleKeyCB " + $node) nw4cSetForceExportKey_ForceExportScaleKey; SetJob_ForceExportScaleKey($node); checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportVisibilityKey $node`) -cc ("nw4cSetForceExportKey_ForceExportVisibilityKeyCB " + $node) nw4cSetForceExportKey_ForceExportVisibilityKey; SetJob_ForceExportVisibilityKey($node); } //----------------------------------------------------------------------------- // set enable state control -e -en $enableFlag nw4cSetForceExportKey_ForceExportTranslateKey; control -e -en $enableFlag nw4cSetForceExportKey_ForceExportRotateKey; control -e -en $enableFlag nw4cSetForceExportKey_ForceExportScaleKey; control -e -en $enableFlag nw4cSetForceExportKey_ForceExportVisibilityKey; } /****************************************************************************** search check CB ******************************************************************************/ global proc nw4cSetForceExportKey_SearchCheckCB() { control -e -en (`checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportTranslateKey` || `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportTranslateKey` || `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportRotateKey` || `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportRotateKey` || `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportScaleKey` || `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportScaleKey` || `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportVisibilityKey` || `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportVisibilityKey`) nw4cSetForceExportKey_SearchBtn; } /****************************************************************************** do search ******************************************************************************/ global proc nw4cSetForceExportKey_DoSearch() { int $searchTranslate1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportTranslateKey` ? 0 : -1; // off int $searchTranslate2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportTranslateKey` ? 1 : -1; // on int $searchRotate1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportRotateKey` ? 0 : -1; // off int $searchRotate2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportRotateKey` ? 1 : -1; // on int $searchScale1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportScaleKey` ? 0 : -1; // off int $searchScale2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportScaleKey` ? 1 : -1; // on int $searchVisibility1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportVisibilityKey` ? 0 : -1; // off int $searchVisibility2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportVisibilityKey` ? 1 : -1; // on int $andFlag = (`radioButtonGrp -q -sl nw4cSetForceExportKey_SearchLogic` == 1); int $nodeCount = 0; select -cl; string $xforms[] = `ls -typ transform`; for ($node in $xforms) { if (IsSceneAnimObject($node)) { continue; } int $translate = nw4cSetForceExportKey_Get_ForceExportTranslateKey($node); int $translateMatch = $translate == $searchTranslate1 || $translate == $searchTranslate2 || ($andFlag && $searchTranslate1 == -1 && $searchTranslate2 == -1); int $rotate = nw4cSetForceExportKey_Get_ForceExportRotateKey($node); int $rotateMatch = $rotate == $searchRotate1 || $rotate == $searchRotate2 || ($andFlag && $searchRotate1 == -1 && $searchRotate2 == -1); int $scale = nw4cSetForceExportKey_Get_ForceExportScaleKey($node); int $scaleMatch = $scale == $searchScale1 || $scale == $searchScale2 || ($andFlag && $searchScale1 == -1 && $searchScale2 == -1); int $visibility = nw4cSetForceExportKey_Get_ForceExportVisibilityKey($node); int $visibilityMatch = $visibility == $searchVisibility1 || $visibility == $searchVisibility2 || ($andFlag && $searchVisibility1 == -1 && $searchVisibility2 == -1); int $match = ($andFlag) ? ($translateMatch && $rotateMatch && $scaleMatch && $visibilityMatch): ($translateMatch || $rotateMatch || $scaleMatch || $visibilityMatch); if ($match) { 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_SetForceExportKey() { //----------------------------------------------------------------------------- // create window int $wd = 400; int $ht = 430; if (!`window -exists nw4cSetForceExportKey_Win`) { window -t "NW4C Set Force Export Key" -wh $wd $ht -mxb 0 -mb 1 nw4cSetForceExportKey_Win; menu -l "Help"; menuItem -l ("Help on " + `window -q -t nw4cSetForceExportKey_Win` + "...") -c "NW4C_ShowHelp \"html/NW4C_SetForceExportKey.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 "" nw4cSetForceExportKey_NodeName; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // set frameLayout -l "Set" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; checkBoxGrp -ncb 1 -l "" -l1 "Force Export Translate Key" -v1 0 -cw2 110 180 nw4cSetForceExportKey_ForceExportTranslateKey; checkBoxGrp -ncb 1 -l "" -l1 "Force Export Rotate Key" -v1 0 -cw2 110 180 nw4cSetForceExportKey_ForceExportRotateKey; checkBoxGrp -ncb 1 -l "" -l1 "Force Export Scale Key" -v1 0 -cw2 110 180 nw4cSetForceExportKey_ForceExportScaleKey; checkBoxGrp -ncb 1 -l "" -l1 "Force Export Visibility Key" -v1 0 -cw2 110 180 nw4cSetForceExportKey_ForceExportVisibilityKey; setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // search frameLayout -l "Search" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; columnLayout -adj 1 -rs 8; checkBoxGrp -l "Force Export Translate Key" -ncb 2 -cw3 210 60 60 -la2 "Off" "On" -cc "nw4cSetForceExportKey_SearchCheckCB" nw4cSetForceExportKey_SearchForceExportTranslateKey; checkBoxGrp -l "Force Export Rotate Key" -ncb 2 -cw3 210 60 60 -la2 "Off" "On" -cc "nw4cSetForceExportKey_SearchCheckCB" nw4cSetForceExportKey_SearchForceExportRotateKey; checkBoxGrp -l "Force Export Scale Key" -ncb 2 -cw3 210 60 60 -la2 "Off" "On" -cc "nw4cSetForceExportKey_SearchCheckCB" nw4cSetForceExportKey_SearchForceExportScaleKey; checkBoxGrp -l "Force Export Visibility Key" -ncb 2 -cw3 210 60 60 -la2 "Off" "On" -cc "nw4cSetForceExportKey_SearchCheckCB" nw4cSetForceExportKey_SearchForceExportVisibilityKey; rowColumnLayout -nc 2 -cw 1 220 -cw 2 150; radioButtonGrp -l "" -nrb 2 -cw3 124 50 50 -rat 2 "both" 0 -rat 3 "both" 0 -la2 "and" "or" -sl 1 nw4cSetForceExportKey_SearchLogic; button -l "Search" -c "nw4cSetForceExportKey_DoSearch" nw4cSetForceExportKey_SearchBtn; setParent ..; // rowColumnLayout setParent ..; // columnLayout setParent ..; // formLayout //----------------------------------------------------------------------------- // close button string $closeCmd = "deleteUI nw4cSetForceExportKey_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 nw4cSetForceExportKey_Win -e "SelectionChanged" "nw4cSetForceExportKey_UpdateWindow"; } if (`window -q -w nw4cSetForceExportKey_Win` < $wd) { window -e -w $wd nw4cSetForceExportKey_Win; } if (`window -q -h nw4cSetForceExportKey_Win` < $ht) { window -e -h $ht nw4cSetForceExportKey_Win; } //window -e -wh $wd $ht nw4cSetForceExportKey_Win; //----------------------------------------------------------------------------- // update window nw4cSetForceExportKey_UpdateWindow; nw4cSetForceExportKey_SearchCheckCB; //----------------------------------------------------------------------------- // show window showWindow nw4cSetForceExportKey_Win; }