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