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