1/****************************************************************************** 2 NintendoWare for CTR Maya Plugin 3 4 File: NW4C_SetNoCompressNode.mel 5 Description: set no compress node 6 Date: 2009/11/25 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 no compress 51******************************************************************************/ 52global proc int nw4cSetNoCompressNode_Get_NoCompress(string $node) 53{ 54 return (`attributeQuery -n $node -ex "nw4cNoCompressNode"`) ? 55 `getAttr ($node + ".nw4cNoCompressNode")` : 0; 56} 57 58global proc nw4cSetNoCompressNode_Add_NoCompress(string $node) 59{ 60 if (!`attributeQuery -n $node -ex "nw4cNoCompressNode"`) 61 { 62 addAttr -ln "nw4cNoCompressNode" -at "bool" -dv 0 -h 1 $node; 63 } 64} 65 66global proc nw4cSetNoCompressNode_Set_NoCompress(string $node, int $val) 67{ 68 nw4cSetNoCompressNode_Add_NoCompress($node); 69 setAttr ($node + ".nw4cNoCompressNode") $val; 70} 71 72proc SetJob_NoCompress(string $node) 73{ 74 if (!`attributeQuery -n $node -ex "nw4cNoCompressNode"`) 75 { 76 return; 77 } 78 scriptJob -p nw4cSetNoCompressNode_NoCompress -rp -ac ($node + ".nw4cNoCompressNode") 79 ("optionMenuGrp -e -sl (`nw4cSetNoCompressNode_Get_NoCompress " 80 + $node + "` + 1) nw4cSetNoCompressNode_NoCompress"); 81} 82 83global proc nw4cSetNoCompressNode_NoCompressCB(string $mainNode) 84{ 85 string $xforms[]; 86 GetSelectedXform($xforms); 87 88 int $val = `optionMenuGrp -q -sl nw4cSetNoCompressNode_NoCompress` - 1; 89 for ($node in $xforms) 90 { 91 nw4cSetNoCompressNode_Set_NoCompress($node, $val); 92 } 93 SetJob_NoCompress($mainNode); 94} 95 96/****************************************************************************** 97 update window 98******************************************************************************/ 99global proc nw4cSetNoCompressNode_UpdateWindow() 100{ 101 //----------------------------------------------------------------------------- 102 // get selection 103 string $xforms[]; 104 GetSelectedXform($xforms); 105 int $enableFlag = (size($xforms) > 0); 106 107 //----------------------------------------------------------------------------- 108 // set node name 109 string $nodesName; 110 if ($enableFlag) 111 { 112 $nodesName = $xforms[0]; 113 int $nodeSize = size($xforms); 114 for ($inode = 1; $inode < $nodeSize; ++$inode) 115 { 116 if ($inode == 3) 117 { 118 $nodesName += ", ... (" + $nodeSize + ")"; 119 break; 120 } 121 $nodesName += ", " + $xforms[$inode]; 122 } 123 } 124 else 125 { 126 $nodesName = "(None)"; 127 } 128 text -e -l $nodesName nw4cSetNoCompressNode_NodeName; 129 130 //----------------------------------------------------------------------------- 131 // set current attr & change command 132 if ($enableFlag) 133 { 134 string $node = $xforms[0]; 135 136 optionMenuGrp -e -sl (`nw4cSetNoCompressNode_Get_NoCompress $node` + 1) 137 -cc ("nw4cSetNoCompressNode_NoCompressCB " + $node) 138 nw4cSetNoCompressNode_NoCompress; 139 140 SetJob_NoCompress($node); 141 } 142 143 //----------------------------------------------------------------------------- 144 // set enable state 145 control -e -en $enableFlag nw4cSetNoCompressNode_NoCompress; 146} 147 148/****************************************************************************** 149 search check CB 150******************************************************************************/ 151global proc nw4cSetNoCompressNode_SearchCheckCB() 152{ 153 control -e -en 154 (`checkBoxGrp -q -v1 nw4cSetNoCompressNode_SearchCheck` || 155 `checkBoxGrp -q -v2 nw4cSetNoCompressNode_SearchCheck`) 156 nw4cSetNoCompressNode_SearchBtn; 157} 158 159/****************************************************************************** 160 do search 161******************************************************************************/ 162global proc nw4cSetNoCompressNode_DoSearch() 163{ 164 int $searchVal1 = `checkBoxGrp -q -v1 nw4cSetNoCompressNode_SearchCheck` ? 165 0 : -1; 166 int $searchVal2 = `checkBoxGrp -q -v2 nw4cSetNoCompressNode_SearchCheck` ? 167 1 : -1; 168 169 int $nodeCount = 0; 170 select -cl; 171 string $xforms[] = `ls -typ transform`; 172 for ($node in $xforms) 173 { 174 if (IsSceneAnimObject($node)) 175 { 176 continue; 177 } 178 int $val = nw4cSetNoCompressNode_Get_NoCompress($node); 179 if ($val == $searchVal1 || $val == $searchVal2) 180 { 181 select -add $node; 182 ++$nodeCount; 183 } 184 } 185 186 if ($nodeCount == 0) 187 { 188 print "Not found\n"; 189 } 190 else 191 { 192 string $msg = "Found: " + $nodeCount + " transform node"; 193 if ($nodeCount >= 2) 194 { 195 $msg += "s"; 196 } 197 print ($msg + "\n"); 198 } 199} 200 201/****************************************************************************** 202 main 203******************************************************************************/ 204global proc NW4C_SetNoCompressNode() 205{ 206 //----------------------------------------------------------------------------- 207 // create window 208 int $winW = 400; 209 int $winH = 292; 210 if (!`window -exists nw4cSetNoCompressNode_Win`) 211 { 212 window -t "NW4C Set No Compress Node" -wh $winW $winH -mxb 0 -mb 1 213 nw4cSetNoCompressNode_Win; 214 menu -l "Help"; 215 menuItem -l ("Help on " + `window -q -t nw4cSetNoCompressNode_Win` + "...") 216 -c "NW4C_ShowHelp \"html/NW4C_SetNoCompressNode.html\" \"\""; 217 218 columnLayout -adj 1 -cat "both" 4 -cal "center" -rs 4; 219 220 //----------------------------------------------------------------------------- 221 // node name 222 frameLayout -l "Selected Transform Node" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 223 columnLayout -adj 1 -cal "center" -rs 8; 224 225 text -l "" nw4cSetNoCompressNode_NodeName; 226 227 setParent ..; // columnLayout 228 setParent ..; // formLayout 229 230 //----------------------------------------------------------------------------- 231 // set 232 frameLayout -l "Set" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 233 columnLayout -adj 1 -rs 8; 234 235 optionMenuGrp -l "" 236 -cw 1 100 -rat 1 "both" 4 -cal 1 "right" 237 nw4cSetNoCompressNode_NoCompress; 238 menuItem -l "Compress this node if possible"; 239 menuItem -l "Don't compress this node"; 240 241 setParent ..; // columnLayout 242 setParent ..; // formLayout 243 244 //----------------------------------------------------------------------------- 245 // search 246 frameLayout -l "Search" -cll 0 -cl 0 -bv 1 -bs "etchedIn"; 247 columnLayout -adj 1 -rs 8; 248 249 checkBoxGrp -l "" -ncb 2 -cw3 100 100 100 250 -la2 "Compress" "No Compress" 251 -cc "nw4cSetNoCompressNode_SearchCheckCB" 252 nw4cSetNoCompressNode_SearchCheck; 253 rowColumnLayout -nc 2 -cw 1 220 -cw 2 150; 254 text -l ""; // dummy 255 button -l "Search" 256 -c "nw4cSetNoCompressNode_DoSearch" 257 nw4cSetNoCompressNode_SearchBtn; 258 setParent ..; // rowColumnLayout 259 260 setParent ..; // columnLayout 261 setParent ..; // formLayout 262 263 //----------------------------------------------------------------------------- 264 // close button 265 string $closeCmd = "deleteUI nw4cSetNoCompressNode_Win"; 266 string $form = `formLayout -nd 100`; 267 string $closeBtn = `button -h 26 -l "Close" -c $closeCmd`; 268 formLayout -e 269 -af $closeBtn "top" 0 270 -af $closeBtn "left" 0 271 -af $closeBtn "bottom" 0 272 -af $closeBtn "right" 0 273 $form; 274 setParent ..; // formLayout 275 276 setParent ..; // columnLayout 277 278 setFocus $closeBtn; 279 280 //----------------------------------------------------------------------------- 281 // set selection change job 282 scriptJob -p nw4cSetNoCompressNode_Win 283 -e "SelectionChanged" "nw4cSetNoCompressNode_UpdateWindow"; 284 } 285 if (`window -q -w nw4cSetNoCompressNode_Win` < $winW) 286 { 287 window -e -w $winW nw4cSetNoCompressNode_Win; 288 } 289 if (`window -q -h nw4cSetNoCompressNode_Win` < $winH) 290 { 291 window -e -h $winH nw4cSetNoCompressNode_Win; 292 } 293 //window -e -wh $winW $winH nw4cSetNoCompressNode_Win; 294 295 //----------------------------------------------------------------------------- 296 // update window 297 nw4cSetNoCompressNode_UpdateWindow; 298 nw4cSetNoCompressNode_SearchCheckCB; 299 300 //----------------------------------------------------------------------------- 301 // show window 302 showWindow nw4cSetNoCompressNode_Win; 303} 304