1/****************************************************************************** 2 NintendoWare for CTR Maya Plugin 3 4 File: NW4C_SetForceExportKey.mel 5 Description: set force export key 6 Date: 2011/02/01 7 8 Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc. All rights reserved. 9******************************************************************************/ 10 11// UpdateWindow DoSearch 12 13/****************************************************************************** 14 is scene anim object 15******************************************************************************/ 16proc int IsSceneAnimObject(string $node) 17{ 18 string $type = nodeType($node); 19 string $childs[] = `listRelatives -pa -s $node`; 20 if (size(`ls -cameras -lights -typ environmentFog $childs`) > 0 || 21 $type == "lookAt") 22 { 23 return true; 24 } 25 return false; 26} 27 28/****************************************************************************** 29 get selected transform (except camera & light) 30 31 return node size 32******************************************************************************/ 33proc int GetSelectedXform(string $xforms[]) 34{ 35 clear($xforms); 36 37 string $nodes[] = `ls -sl -typ transform`; 38 for ($node in $nodes) 39 { 40 if (!IsSceneAnimObject($node)) 41 { 42 $xforms[size($xforms)] = $node; 43 } 44 } 45 46 return size($xforms); 47} 48 49/****************************************************************************** 50 force export translate key 51******************************************************************************/ 52global proc int nw4cSetForceExportKey_Get_ForceExportTranslateKey(string $node) 53{ 54 return (`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) ? 55 `getAttr ($node + ".nw4cForceExportTranslateKey")` : 0; 56} 57 58global proc nw4cSetForceExportKey_Add_ForceExportTranslateKey(string $node) 59{ 60 if (!`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) 61 { 62 addAttr -ln "nw4cForceExportTranslateKey" -at "bool" -dv 0 -h 1 $node; 63 } 64} 65 66global proc nw4cSetForceExportKey_Set_ForceExportTranslateKey(string $node, int $val) 67{ 68 nw4cSetForceExportKey_Add_ForceExportTranslateKey($node); 69 setAttr ($node + ".nw4cForceExportTranslateKey") $val; 70} 71 72proc SetJob_ForceExportTranslateKey(string $node) 73{ 74 if (!`attributeQuery -n $node -ex "nw4cForceExportTranslateKey"`) 75 { 76 return; 77 } 78 scriptJob -p nw4cSetForceExportKey_ForceExportTranslateKey -rp -ac ($node + ".nw4cForceExportTranslateKey") 79 ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportTranslateKey " 80 + $node + "`) nw4cSetForceExportKey_ForceExportTranslateKey"); 81} 82 83global proc nw4cSetForceExportKey_ForceExportTranslateKeyCB(string $mainNode) 84{ 85 string $xforms[]; 86 GetSelectedXform($xforms); 87 int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportTranslateKey`; 88 for ($node in $xforms) 89 { 90 nw4cSetForceExportKey_Set_ForceExportTranslateKey($node, $val); 91 } 92 SetJob_ForceExportTranslateKey($mainNode); 93} 94 95/****************************************************************************** 96 force export rotate key 97******************************************************************************/ 98global proc int nw4cSetForceExportKey_Get_ForceExportRotateKey(string $node) 99{ 100 return (`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) ? 101 `getAttr ($node + ".nw4cForceExportRotateKey")` : 0; 102} 103 104global proc nw4cSetForceExportKey_Add_ForceExportRotateKey(string $node) 105{ 106 if (!`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) 107 { 108 addAttr -ln "nw4cForceExportRotateKey" -at "bool" -dv 0 -h 1 $node; 109 } 110} 111 112global proc nw4cSetForceExportKey_Set_ForceExportRotateKey(string $node, int $val) 113{ 114 nw4cSetForceExportKey_Add_ForceExportRotateKey($node); 115 setAttr ($node + ".nw4cForceExportRotateKey") $val; 116} 117 118proc SetJob_ForceExportRotateKey(string $node) 119{ 120 if (!`attributeQuery -n $node -ex "nw4cForceExportRotateKey"`) 121 { 122 return; 123 } 124 scriptJob -p nw4cSetForceExportKey_ForceExportRotateKey -rp -ac ($node + ".nw4cForceExportRotateKey") 125 ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportRotateKey " 126 + $node + "`) nw4cSetForceExportKey_ForceExportRotateKey"); 127} 128 129global proc nw4cSetForceExportKey_ForceExportRotateKeyCB(string $mainNode) 130{ 131 string $xforms[]; 132 GetSelectedXform($xforms); 133 int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportRotateKey`; 134 for ($node in $xforms) 135 { 136 nw4cSetForceExportKey_Set_ForceExportRotateKey($node, $val); 137 } 138 SetJob_ForceExportRotateKey($mainNode); 139} 140 141/****************************************************************************** 142 force export scale key 143******************************************************************************/ 144global proc int nw4cSetForceExportKey_Get_ForceExportScaleKey(string $node) 145{ 146 return (`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) ? 147 `getAttr ($node + ".nw4cForceExportScaleKey")` : 0; 148} 149 150global proc nw4cSetForceExportKey_Add_ForceExportScaleKey(string $node) 151{ 152 if (!`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) 153 { 154 addAttr -ln "nw4cForceExportScaleKey" -at "bool" -dv 0 -h 1 $node; 155 } 156} 157 158global proc nw4cSetForceExportKey_Set_ForceExportScaleKey(string $node, int $val) 159{ 160 nw4cSetForceExportKey_Add_ForceExportScaleKey($node); 161 setAttr ($node + ".nw4cForceExportScaleKey") $val; 162} 163 164proc SetJob_ForceExportScaleKey(string $node) 165{ 166 if (!`attributeQuery -n $node -ex "nw4cForceExportScaleKey"`) 167 { 168 return; 169 } 170 scriptJob -p nw4cSetForceExportKey_ForceExportScaleKey -rp -ac ($node + ".nw4cForceExportScaleKey") 171 ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportScaleKey " 172 + $node + "`) nw4cSetForceExportKey_ForceExportScaleKey"); 173} 174 175global proc nw4cSetForceExportKey_ForceExportScaleKeyCB(string $mainNode) 176{ 177 string $xforms[]; 178 GetSelectedXform($xforms); 179 int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportScaleKey`; 180 for ($node in $xforms) 181 { 182 nw4cSetForceExportKey_Set_ForceExportScaleKey($node, $val); 183 } 184 SetJob_ForceExportScaleKey($mainNode); 185} 186 187/****************************************************************************** 188 force export visibility key 189******************************************************************************/ 190global proc int nw4cSetForceExportKey_Get_ForceExportVisibilityKey(string $node) 191{ 192 return (`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) ? 193 `getAttr ($node + ".nw4cForceExportVisibilityKey")` : 0; 194} 195 196global proc nw4cSetForceExportKey_Add_ForceExportVisibilityKey(string $node) 197{ 198 if (!`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) 199 { 200 addAttr -ln "nw4cForceExportVisibilityKey" -at "bool" -dv 0 -h 1 $node; 201 } 202} 203 204global proc nw4cSetForceExportKey_Set_ForceExportVisibilityKey(string $node, int $val) 205{ 206 nw4cSetForceExportKey_Add_ForceExportVisibilityKey($node); 207 setAttr ($node + ".nw4cForceExportVisibilityKey") $val; 208} 209 210proc SetJob_ForceExportVisibilityKey(string $node) 211{ 212 if (!`attributeQuery -n $node -ex "nw4cForceExportVisibilityKey"`) 213 { 214 return; 215 } 216 scriptJob -p nw4cSetForceExportKey_ForceExportVisibilityKey -rp -ac ($node + ".nw4cForceExportVisibilityKey") 217 ("checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportVisibilityKey " 218 + $node + "`) nw4cSetForceExportKey_ForceExportVisibilityKey"); 219} 220 221global proc nw4cSetForceExportKey_ForceExportVisibilityKeyCB(string $mainNode) 222{ 223 string $xforms[]; 224 GetSelectedXform($xforms); 225 int $val = `checkBoxGrp -q -v1 nw4cSetForceExportKey_ForceExportVisibilityKey`; 226 for ($node in $xforms) 227 { 228 nw4cSetForceExportKey_Set_ForceExportVisibilityKey($node, $val); 229 } 230 SetJob_ForceExportVisibilityKey($mainNode); 231} 232 233/****************************************************************************** 234 update window 235******************************************************************************/ 236global proc nw4cSetForceExportKey_UpdateWindow() 237{ 238 //----------------------------------------------------------------------------- 239 // get selection 240 string $xforms[]; 241 GetSelectedXform($xforms); 242 int $enableFlag = (size($xforms) > 0); 243 244 //----------------------------------------------------------------------------- 245 // set node name 246 string $nodesName; 247 if ($enableFlag) 248 { 249 $nodesName = $xforms[0]; 250 int $nodeSize = size($xforms); 251 for ($inode = 1; $inode < $nodeSize; ++$inode) 252 { 253 if ($inode == 3) 254 { 255 $nodesName += ", ... (" + $nodeSize + ")"; 256 break; 257 } 258 $nodesName += ", " + $xforms[$inode]; 259 } 260 } 261 else 262 { 263 $nodesName = "(None)"; 264 } 265 text -e -l $nodesName nw4cSetForceExportKey_NodeName; 266 267 //----------------------------------------------------------------------------- 268 // set current attr & change command 269 if ($enableFlag) 270 { 271 string $node = $xforms[0]; 272 273 checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportTranslateKey $node`) 274 -cc ("nw4cSetForceExportKey_ForceExportTranslateKeyCB " + $node) 275 nw4cSetForceExportKey_ForceExportTranslateKey; 276 SetJob_ForceExportTranslateKey($node); 277 278 checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportRotateKey $node`) 279 -cc ("nw4cSetForceExportKey_ForceExportRotateKeyCB " + $node) 280 nw4cSetForceExportKey_ForceExportRotateKey; 281 SetJob_ForceExportRotateKey($node); 282 283 checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportScaleKey $node`) 284 -cc ("nw4cSetForceExportKey_ForceExportScaleKeyCB " + $node) 285 nw4cSetForceExportKey_ForceExportScaleKey; 286 SetJob_ForceExportScaleKey($node); 287 288 checkBoxGrp -e -v1 (`nw4cSetForceExportKey_Get_ForceExportVisibilityKey $node`) 289 -cc ("nw4cSetForceExportKey_ForceExportVisibilityKeyCB " + $node) 290 nw4cSetForceExportKey_ForceExportVisibilityKey; 291 SetJob_ForceExportVisibilityKey($node); 292 } 293 294 //----------------------------------------------------------------------------- 295 // set enable state 296 control -e -en $enableFlag nw4cSetForceExportKey_ForceExportTranslateKey; 297 control -e -en $enableFlag nw4cSetForceExportKey_ForceExportRotateKey; 298 control -e -en $enableFlag nw4cSetForceExportKey_ForceExportScaleKey; 299 control -e -en $enableFlag nw4cSetForceExportKey_ForceExportVisibilityKey; 300} 301 302/****************************************************************************** 303 search check CB 304******************************************************************************/ 305global proc nw4cSetForceExportKey_SearchCheckCB() 306{ 307 control -e -en 308 (`checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportTranslateKey` || 309 `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportTranslateKey` || 310 `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportRotateKey` || 311 `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportRotateKey` || 312 `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportScaleKey` || 313 `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportScaleKey` || 314 `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportVisibilityKey` || 315 `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportVisibilityKey`) 316 nw4cSetForceExportKey_SearchBtn; 317} 318 319/****************************************************************************** 320 do search 321******************************************************************************/ 322global proc nw4cSetForceExportKey_DoSearch() 323{ 324 int $searchTranslate1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportTranslateKey` ? 325 0 : -1; // off 326 int $searchTranslate2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportTranslateKey` ? 327 1 : -1; // on 328 int $searchRotate1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportRotateKey` ? 329 0 : -1; // off 330 int $searchRotate2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportRotateKey` ? 331 1 : -1; // on 332 int $searchScale1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportScaleKey` ? 333 0 : -1; // off 334 int $searchScale2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportScaleKey` ? 335 1 : -1; // on 336 int $searchVisibility1 = `checkBoxGrp -q -v1 nw4cSetForceExportKey_SearchForceExportVisibilityKey` ? 337 0 : -1; // off 338 int $searchVisibility2 = `checkBoxGrp -q -v2 nw4cSetForceExportKey_SearchForceExportVisibilityKey` ? 339 1 : -1; // on 340 341 int $andFlag = (`radioButtonGrp -q -sl nw4cSetForceExportKey_SearchLogic` == 1); 342 343 int $nodeCount = 0; 344 select -cl; 345 string $xforms[] = `ls -typ transform`; 346 for ($node in $xforms) 347 { 348 if (IsSceneAnimObject($node)) 349 { 350 continue; 351 } 352 int $translate = nw4cSetForceExportKey_Get_ForceExportTranslateKey($node); 353 int $translateMatch = 354 $translate == $searchTranslate1 || 355 $translate == $searchTranslate2 || 356 ($andFlag && $searchTranslate1 == -1 && $searchTranslate2 == -1); 357 358 int $rotate = nw4cSetForceExportKey_Get_ForceExportRotateKey($node); 359 int $rotateMatch = 360 $rotate == $searchRotate1 || 361 $rotate == $searchRotate2 || 362 ($andFlag && $searchRotate1 == -1 && $searchRotate2 == -1); 363 364 int $scale = nw4cSetForceExportKey_Get_ForceExportScaleKey($node); 365 int $scaleMatch = 366 $scale == $searchScale1 || 367 $scale == $searchScale2 || 368 ($andFlag && $searchScale1 == -1 && $searchScale2 == -1); 369 370 int $visibility = nw4cSetForceExportKey_Get_ForceExportVisibilityKey($node); 371 int $visibilityMatch = 372 $visibility == $searchVisibility1 || 373 $visibility == $searchVisibility2 || 374 ($andFlag && $searchVisibility1 == -1 && $searchVisibility2 == -1); 375 376 int $match = ($andFlag) ? 377 ($translateMatch && $rotateMatch && $scaleMatch && $visibilityMatch): 378 ($translateMatch || $rotateMatch || $scaleMatch || $visibilityMatch); 379 if ($match) 380 { 381 select -add $node; 382 ++$nodeCount; 383 } 384 } 385 386 if ($nodeCount == 0) 387 { 388 print "Not found\n"; 389 } 390 else 391 { 392 string $msg = "Found: " + $nodeCount + " transform node"; 393 if ($nodeCount >= 2) 394 { 395 $msg += "s"; 396 } 397 print ($msg + "\n"); 398 } 399} 400 401/****************************************************************************** 402 main 403******************************************************************************/ 404global proc NW4C_SetForceExportKey() 405{ 406 //----------------------------------------------------------------------------- 407 // create window 408 int $wd = 400; 409 int $ht = 430; 410 if (!`window -exists nw4cSetForceExportKey_Win`) 411 { 412 window -t "NW4C Set Force Export Key" -wh $wd $ht -mxb 0 -mb 1 413 nw4cSetForceExportKey_Win; 414 menu -l "Help"; 415 menuItem -l ("Help on " + `window -q -t nw4cSetForceExportKey_Win` + "...") 416 -c "NW4C_ShowHelp \"html/NW4C_SetForceExportKey.html\" \"\""; 417 418 columnLayout -adj 1 -cat "both" 4 -cal "center" -rs 4; 419 420 //----------------------------------------------------------------------------- 421 // node name 422 frameLayout -l "Selected Transform Node" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 423 columnLayout -adj 1 -cal "center" -rs 8; 424 425 text -l "" nw4cSetForceExportKey_NodeName; 426 427 setParent ..; // columnLayout 428 setParent ..; // formLayout 429 430 //----------------------------------------------------------------------------- 431 // set 432 frameLayout -l "Set" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 433 columnLayout -adj 1 -rs 8; 434 435 checkBoxGrp -ncb 1 -l "" 436 -l1 "Force Export Translate Key" -v1 0 437 -cw2 110 180 438 nw4cSetForceExportKey_ForceExportTranslateKey; 439 440 checkBoxGrp -ncb 1 -l "" 441 -l1 "Force Export Rotate Key" -v1 0 442 -cw2 110 180 443 nw4cSetForceExportKey_ForceExportRotateKey; 444 445 checkBoxGrp -ncb 1 -l "" 446 -l1 "Force Export Scale Key" -v1 0 447 -cw2 110 180 448 nw4cSetForceExportKey_ForceExportScaleKey; 449 450 checkBoxGrp -ncb 1 -l "" 451 -l1 "Force Export Visibility Key" -v1 0 452 -cw2 110 180 453 nw4cSetForceExportKey_ForceExportVisibilityKey; 454 455 setParent ..; // columnLayout 456 setParent ..; // formLayout 457 458 //----------------------------------------------------------------------------- 459 // search 460 frameLayout -l "Search" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 461 columnLayout -adj 1 -rs 8; 462 463 checkBoxGrp -l "Force Export Translate Key" -ncb 2 -cw3 210 60 60 464 -la2 "Off" "On" 465 -cc "nw4cSetForceExportKey_SearchCheckCB" 466 nw4cSetForceExportKey_SearchForceExportTranslateKey; 467 468 checkBoxGrp -l "Force Export Rotate Key" -ncb 2 -cw3 210 60 60 469 -la2 "Off" "On" 470 -cc "nw4cSetForceExportKey_SearchCheckCB" 471 nw4cSetForceExportKey_SearchForceExportRotateKey; 472 473 checkBoxGrp -l "Force Export Scale Key" -ncb 2 -cw3 210 60 60 474 -la2 "Off" "On" 475 -cc "nw4cSetForceExportKey_SearchCheckCB" 476 nw4cSetForceExportKey_SearchForceExportScaleKey; 477 478 checkBoxGrp -l "Force Export Visibility Key" -ncb 2 -cw3 210 60 60 479 -la2 "Off" "On" 480 -cc "nw4cSetForceExportKey_SearchCheckCB" 481 nw4cSetForceExportKey_SearchForceExportVisibilityKey; 482 483 rowColumnLayout -nc 2 -cw 1 220 -cw 2 150; 484 radioButtonGrp -l "" -nrb 2 -cw3 124 50 50 485 -rat 2 "both" 0 486 -rat 3 "both" 0 487 -la2 "and" "or" -sl 1 488 nw4cSetForceExportKey_SearchLogic; 489 button -l "Search" 490 -c "nw4cSetForceExportKey_DoSearch" 491 nw4cSetForceExportKey_SearchBtn; 492 setParent ..; // rowColumnLayout 493 494 setParent ..; // columnLayout 495 setParent ..; // formLayout 496 497 //----------------------------------------------------------------------------- 498 // close button 499 string $closeCmd = "deleteUI nw4cSetForceExportKey_Win"; 500 string $form = `formLayout -nd 100`; 501 string $closeBtn = `button -h 26 -l "Close" -c $closeCmd`; 502 formLayout -e 503 -af $closeBtn "top" 0 504 -af $closeBtn "left" 0 505 -af $closeBtn "bottom" 0 506 -af $closeBtn "right" 0 507 $form; 508 setParent ..; // formLayout 509 510 setParent ..; // columnLayout 511 512 setFocus $closeBtn; 513 514 //----------------------------------------------------------------------------- 515 // set selection change job 516 scriptJob -p nw4cSetForceExportKey_Win 517 -e "SelectionChanged" "nw4cSetForceExportKey_UpdateWindow"; 518 } 519 if (`window -q -w nw4cSetForceExportKey_Win` < $wd) 520 { 521 window -e -w $wd nw4cSetForceExportKey_Win; 522 } 523 if (`window -q -h nw4cSetForceExportKey_Win` < $ht) 524 { 525 window -e -h $ht nw4cSetForceExportKey_Win; 526 } 527 //window -e -wh $wd $ht nw4cSetForceExportKey_Win; 528 529 //----------------------------------------------------------------------------- 530 // update window 531 nw4cSetForceExportKey_UpdateWindow; 532 nw4cSetForceExportKey_SearchCheckCB; 533 534 //----------------------------------------------------------------------------- 535 // show window 536 showWindow nw4cSetForceExportKey_Win; 537} 538