// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Functions defined in this file (gameFbxExporterPreset.mel): // // global proc gameExp_CreateDefaultPresets() // global proc gameExp_PopulatePresetList() // global proc gameExp_CurrentPresetChanged() // global proc string gameExp_ProvideUniquePresetName(string $name) // global proc gameExp_CreatePresetDialog() // global proc gameExp_ManagePresetTemplateSelected() // global proc gameExp_CreatePreset() // global proc gameExp_RenamePreset() // global proc gameExp_DeletePreset() // global proc gameExp_SaveAttrPreset() // global proc gameExp_LoadAttrPreset() // global proc gameExp_CreateNodeAndApplyPreset(string $nodeName, string $presetFilePath) // global proc gameExp_ApplyPresetOnNode(string $nodeName, string $presetFilePath) // global proc string gameExp_GetUserPresetDirectory() // global proc string gameExp_GetDefaultsPresetDirectory() // global proc string[] gameExp_GetDefaultsPresetNames() // global proc string gameExp_GetFbxExportPresetDirectory() // global proc string gameExp_GetFbxPresetForExportType() // // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Create default presets // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_CreateDefaultPresets() { global string $gGameFbxExporterCurrentNode; $gGameFbxExporterCurrentNode = ""; int $lastTabUsed = 1; string $gameExporterNodes[] = gameExp_GetGameFbxExporterNodeList(); int $nbPresets = size($gameExporterNodes); for($i=0; $i<$nbPresets; $i++) { if(`getAttr($gameExporterNodes[$i] + ".isTheLastOneUsed")`) { $lastTabUsed = `getAttr($gameExporterNodes[$i] + ".exportTypeIndex")`; break; } } gameExp_CreateTabsComponents(); // Create default presets when no gameFbxExporter node type exist. string $defaultPresets[] = gameExp_GetDefaultsPresetNames(); if(!$nbPresets) { gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterModelPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[0] + ".mel" )); gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterAnimPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[1] + ".mel" )); } // Check for the presence of the time editor preset and create one if necessary int $foundTimeEditorPreset = false; for($i=0; $i < $nbPresets; $i++) { if (`getAttr($gameExporterNodes[$i] + ".exportTypeIndex")` == 3) { $foundTimeEditorPreset = true; break; } } // Create the time editor preset if not found if ($foundTimeEditorPreset == false) { gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterTimeEditorPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[2] + ".mel" )); } // Select the last Tab Used, "Model" by default gameExp_ChangeExportType($lastTabUsed); gameExp_PopulatePresetList(); gameExp_CreateExportTypeUIComponents(); } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Populate the preset list with the preset node name attribute. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_PopulatePresetList() { // Global variable that holds the node name of the current preset. // Used to Set/Get attributes. global string $gGameFbxExporterCurrentNode; global string $gGameFbxExporterNodes[]; clear($gGameFbxExporterNodes); if(size($gGameFbxExporterCurrentNode)) { // remember the current scene modified state gameExp_RememberSceneState(); setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneUsed") false; // Restore the scene to the remembered "modified" state gameExp_RestoreSceneState(); } $gGameFbxExporterCurrentNode = ""; // empty the optionMenu string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); string $list[] = `optionMenu -q -itemListLong $gameExporterPresetList`; string $menuName; for( $menuName in $list ) { deleteUI $menuName; } // Populate the preset list string $gameExporterNodes[]; $gameExporterNodes = gameExp_GetGameFbxExporterNodeList(); int $nbPresets = size($gameExporterNodes); int $tabSelected = `tabLayout -q -selectTabIndex gameExporterTabLayout`; int $lastKnownActivePreset = 1; for($i=0; $i<$nbPresets; $i++) { int $exportType = `getAttr($gameExporterNodes[$i] + ".exportTypeIndex")`; if($tabSelected == $exportType) { menuItem -parent $gameExporterPresetList -label (`getAttr($gameExporterNodes[$i] + ".presetName")`); $gGameFbxExporterNodes[size($gGameFbxExporterNodes)] = $gameExporterNodes[$i]; if(`getAttr($gameExporterNodes[$i] + ".isTheLastOneSelected")`) { $lastKnownActivePreset = `optionMenu -q -numberOfItems $gameExporterPresetList`; $gGameFbxExporterCurrentNode = $gameExporterNodes[$i]; } if(!size($gGameFbxExporterCurrentNode)) { $gGameFbxExporterCurrentNode = $gameExporterNodes[$i]; } } } if(size($gGameFbxExporterCurrentNode)) { // remember the current scene modified state gameExp_RememberSceneState(); // Used to reselect the preset item selected per specific export type setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneSelected") true; // Used to know which node was the last one used. setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneUsed") true; // Last known active preset or the first item of the list. optionMenu -edit -select $lastKnownActivePreset $gameExporterPresetList; // Restore the scene to the remembered "modified" state gameExp_RestoreSceneState(); } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // UI update with the preset manually selected. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_CurrentPresetChanged() { global string $gGameFbxExporterCurrentNode; global string $gGameFbxExporterNodes[]; setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneSelected") false; setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneUsed") false; string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); int $currentSelection = (`optionMenu -q -select $gameExporterPresetList` - 1 ); $gGameFbxExporterCurrentNode = $gGameFbxExporterNodes[$currentSelection]; setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneSelected") true; setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneUsed") true; gameExp_CreateExportTypeUIComponents; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Provide a unique preset name for a specific // category (Model, Animation Clips) // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string gameExp_ProvideUniquePresetName(string $name) { global string $gGameFbxExporterCurrentNode; if(size($name)) { string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); string $listMenus[] = `optionMenu -q -itemListLong $gameExporterPresetList`; string $menuPath; string $list[]; for( $menuPath in $listMenus ) { $list[size($list)] = `menuItem -q -label $menuPath`; } return gameExp_ProvideUniqueName($name, $list); } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Create the preset creation dialog // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_CreatePresetDialog() { // Get the dialog's formLayout. string $form = `setParent -q`; formLayout -e -width 175 $form; textFieldGrp -columnWidth 1 70 -columnWidth 2 154 -label (getPluginResource( "gameFbxExporter", "kGameExporterCreatePresetNameLabel" )) -placeholderText (getPluginResource( "gameFbxExporter", "kGameExporterCreatePresetPrompt" )) -textChangedCommand ("button -e -enable `size \"#1\"` btnOk") newPresetName; text -label (getPluginResource( "gameFbxExporter", "kGameExporterUseTemplatePreset" )) defaultSettingsAvailableTitle; string $prefix = (getPluginResource( "gameFbxExporter", "kGameExporterNewPrefix" )); optionMenu -changeCommand("textFieldGrp -edit -text (\""+ $prefix + "#1\") newPresetName") defaultSettingsAvailable; // Fixed position for formated preset name : Model and Animation menuItem -label (getPluginResource( "gameFbxExporter", "kGameExporterModelPresetName" )); menuItem -label (getPluginResource( "gameFbxExporter", "kGameExporterAnimPresetName" )); menuItem -label (getPluginResource( "gameFbxExporter", "kGameExporterTimeEditorPresetName" )); string $ppath = gameExp_GetUserPresetDirectory(); if( `file -q -ex $ppath` ) { string $fileList[] = `getFileList -folder $ppath -filespec "*.mel"`; if(size($fileList)) { string $file; for ( $file in $fileList ) { string $presetName = `substitute ".mel" $file ""`; menuItem -label $presetName; } } } button -enable false -label (getPluginResource( "gameFbxExporter", "kGameExporterOkLabel" )) -command ("gameExp_ManagePresetTemplateSelected") btnOk; button -label (getPluginResource( "gameFbxExporter", "kGameExporterCancelLabel" )) -command ("layoutDialog -dismiss \"\"") btnCancel; textFieldGrp -edit -text ($prefix + (`optionMenu -query -value defaultSettingsAvailable`)) newPresetName; formLayout -edit -attachForm newPresetName "top" 5 -attachForm newPresetName "left" 0 -attachControl defaultSettingsAvailableTitle "top" 10 newPresetName -attachForm defaultSettingsAvailableTitle "left" 7 -attachControl defaultSettingsAvailable "top" 5 newPresetName -attachControl defaultSettingsAvailable "left" 5 defaultSettingsAvailableTitle -attachForm defaultSettingsAvailable "right" 5 -attachControl btnOk "top" 10 defaultSettingsAvailable -attachForm btnOk "left" 35 -attachPosition btnOk "bottom" 10 0 -attachControl btnCancel "top" 10 defaultSettingsAvailable -attachControl btnCancel "left" 10 btnOk $form; setParent ..; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // On preset creation, manage selected preset template // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_ManagePresetTemplateSelected() { // Get Default presets name string $defaultPresets[] = gameExp_GetDefaultsPresetNames(); int $index = `optionMenu -q -select defaultSettingsAvailable`; string $name = ($index > size($defaultPresets) ? `optionMenu -q -value defaultSettingsAvailable` : $defaultPresets[$index-1]); // Returned string "presetname:filename" layoutDialog -dismiss (`textFieldGrp -q -text newPresetName` + ":" + $name); } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Create a preset (create a new gameFbxExporter node) // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_CreatePreset() { string $result = `layoutDialog -title (getPluginResource( "gameFbxExporter", "kGameExporterCreatePresetDialog" )) -uiScript "gameExp_CreatePresetDialog" -parent gameExporterWindow`; if (size($result) > 0 && $result != "dismiss") { string $buffer[]; $numTokens = `tokenize $result ":" $buffer`; if($numTokens > 1) { string $presetFilePath; string $ppath = gameExp_GetDefaultsPresetDirectory(); $presetFilePath = ($ppath + "/" + $buffer[1] + ".mel"); if( !`file -q -ex $presetFilePath` ) { string $ppath = gameExp_GetUserPresetDirectory(); $presetFilePath = ($ppath + "/" + $buffer[1] + ".mel"); } gameExp_CreateNodeAndApplyPreset($buffer[0], $presetFilePath); } } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Rename a preset (rename the current node) // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_RenamePreset() { global string $gGameFbxExporterCurrentNode; string $ok = getPluginResource( "gameFbxExporter", "kGameExporterOkLabel" ); string $cancel = getPluginResource( "gameFbxExporter", "kGameExporterCancelLabel" ); string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); string $presetName = `optionMenu -q -value $gameExporterPresetList`; string $result = `promptDialog -parent gameExporterWindow -title (getPluginResource( "gameFbxExporter", "kGameExporterRenamePresetDialog" )) -message (getPluginResource( "gameFbxExporter", "kGameExporterRenamePresetNameLabel" )) -text $presetName -button $ok -button $cancel -defaultButton $ok -cancelButton $cancel -dismissString $cancel`; if ($result == $ok) { string $text = `promptDialog -query -text`; int $index = `optionMenu -query -select $gameExporterPresetList`; // Turn off undo undoInfo -stateWithoutFlush false; setAttr($gGameFbxExporterCurrentNode + ".presetName") -type "string" `gameExp_ProvideUniquePresetName($text)`; // Restore undo undoInfo -stateWithoutFlush true; gameExp_PopulatePresetList(); } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Delete a preset (delete the current node) // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_DeletePreset() { global string $gGameFbxExporterCurrentNode; // Validate if we are about to delete the last node of an export type int $nodeExportType = `getAttr($gGameFbxExporterCurrentNode + ".exportTypeIndex")`; int $nbNodeOfExportType = 0; string $nodeLst[] = gameExp_GetGameFbxExporterNodeList(); for($i=0; $i < size($nodeLst); $i++ ) { if(`getAttr($nodeLst[$i] + ".exportTypeIndex")` == $nodeExportType) { $nbNodeOfExportType++; } } string $yes = getPluginResource( "gameFbxExporter", "kGameExporterYesLabel" ); string $no = getPluginResource( "gameFbxExporter", "kGameExporterNoLabel" ); string $msg = ( $nbNodeOfExportType > 1 ? getPluginResource( "gameFbxExporter", "kGameExporterDeletePresetMsg" ) : ( $nodeExportType == 1 ? getPluginResource( "gameFbxExporter", "kGameExporterLastModelPreset" ) : ( $nodeExportType == 2 ? getPluginResource( "gameFbxExporter", "kGameExporterLastAnimationPreset" ) : getPluginResource( "gameFbxExporter", "kGameExporterLastTEPreset" )))); string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); string $presetName = `optionMenu -q -value $gameExporterPresetList`; $msg = `format -s ("\"" + $presetName + "\"") $msg`; string $result = `confirmDialog -parent gameExporterWindow -title (getPluginResource( "gameFbxExporter", "kGameExporterDeletePresetDialog" )) -message $msg -button $yes -button $no -defaultButton $yes -cancelButton $no -dismissString $no`; if ($result == $yes) { delete $gGameFbxExporterCurrentNode; $gGameFbxExporterCurrentNode = ""; if($nbNodeOfExportType > 1) { gameExp_PopulatePresetList(); gameExp_CreateExportTypeUIComponents(); } else { // empty the optionMenu to not create an iterated unique name with the remaining name in the list string $gameExporterPresetList = gameExp_GetPrefixedName("gameExporterPresetList"); string $list[] = `optionMenu -q -itemListLong $gameExporterPresetList`; string $menuName; for( $menuName in $list ) { deleteUI $menuName; } // Last node of an export type has been deleted. Re-Create a new default one. string $defaultPresets[] = gameExp_GetDefaultsPresetNames(); if($nodeExportType == 1) { gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterModelPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[0] + ".mel" )); } else if ($nodeExportType == 2) { gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterAnimPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[1] + ".mel" )); } else if ($nodeExportType == 3) { gameExp_CreateNodeAndApplyPreset((getPluginResource( "gameFbxExporter", "kGameExporterTimeEditorPresetName" )), (gameExp_GetDefaultsPresetDirectory() + "/" + $defaultPresets[2] + ".mel" )); } } } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Save a preset file. // Save in a file all attribute names and values for a specific node. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_SaveAttrPreset() { global string $gGameFbxExporterCurrentNode; string $ppath = gameExp_GetUserPresetDirectory(); string $fileFilter = (getPluginResource( "gameFbxExporter", "kGameExporterSaveMelScriptFiles" )) + " (*.mel)"; string $userChoice[] = `fileDialog2 -fileMode 0 -startingDirectory $ppath -fileFilter $fileFilter -caption (getPluginResource( "gameFbxExporter", "kGameExporterSavePresetTitle" )) -okCaption (getPluginResource( "gameFbxExporter", "kGameExporterSavePresetButton" ))`; if( size($userChoice) && ($userChoice[0] != "") ) { if(!`exists createAttrPreset`){ eval ( "source \"saveAttrPreset.mel\"" ); } string $psetCommand = createAttrPreset( $gGameFbxExporterCurrentNode ); // Maya LT supports fwriteAllText and not fopen if(`fwriteAllText $userChoice[0] $psetCommand`) { string $errorMsg = getPluginResource( "gameFbxExporter", "kGameExporterSaveAttrPresetError" ); $errorMsg = `format -s $userChoice[0] $errorMsg`; error($errorMsg); } } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Load a preset file. // A preset file uses special mel command to match a node attribute name // and replaces its value with the one saved in the preset file. // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_LoadAttrPreset() { string $ppath = gameExp_GetUserPresetDirectory(); string $fileFilter = (getPluginResource( "gameFbxExporter", "kGameExporterSaveMelScriptFiles" )) + " (*.mel)"; string $userChoice[] = `fileDialog2 -fileMode 1 -startingDirectory $ppath -fileFilter $fileFilter -caption (getPluginResource( "gameFbxExporter", "kGameExporterLoadPresetTitle" )) -okCaption (getPluginResource( "gameFbxExporter", "kGameExporterLoadPresetButton" ))`; if( size($userChoice) && ($userChoice[0] != "") ) { string $nodeName = basenameEx($userChoice[0]); gameExp_CreateNodeAndApplyPreset($nodeName, $userChoice[0]); } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Create a new preset (new gameFbxExporter Node) and apply a preset // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_CreateNodeAndApplyPreset(string $nodeName, string $presetFilePath) { global string $gGameFbxExporterCurrentNode; // Turn off undo, if the user undo the node creation the UI will stay with an // invalid node. undoInfo -stateWithoutFlush false; // keep the value of the current namespace string $currentNS = `namespaceInfo -currentNamespace`; // set the namespace to the root namespace -set ":"; // Create a new gameFbxExporter node. string $gameExporterNodeName = "gameExporterPreset#"; string $createdName = `createNode gameFbxExporter -skipSelect -name $gameExporterNodeName`; if($currentNS != ":") { // set back the namespace namespace -set $currentNS; } gameExp_ApplyPresetOnNode($createdName, $presetFilePath); // Update UI int $tabSelected = `tabLayout -q -selectTabIndex gameExporterTabLayout`; int $exportType = `getAttr($createdName + ".exportTypeIndex")`; if($tabSelected != $exportType) { gameExp_ChangeExportType($exportType); } setAttr($createdName + ".presetName") -type "string" `gameExp_ProvideUniquePresetName($nodeName)`; // Restore undo undoInfo -stateWithoutFlush true; if(size($gGameFbxExporterCurrentNode) && (`getAttr($gGameFbxExporterCurrentNode + ".exportTypeIndex")` == $exportType)) { setAttr($gGameFbxExporterCurrentNode + ".isTheLastOneSelected") false; } setAttr($createdName + ".isTheLastOneSelected") true; gameExp_PopulatePresetList(); gameExp_CreateExportTypeUIComponents(); } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Apply a preset on a specified node // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc gameExp_ApplyPresetOnNode(string $nodeName, string $presetFilePath) { // Apply preset values to that node if specified. if(size($presetFilePath) && size($nodeName)) { // Global variables used by the preset mechanism. global string $gAEAttrPresetCurrentTarget; global float $gAEAttrPresetBlend; // Name of the node that we will match the attribute name // and apply the preset values. $gAEAttrPresetCurrentTarget = $nodeName; // We always blend the value at 100% in our use of the preset mechanism. $gAEAttrPresetBlend = 1; eval ( "source \"" + $presetFilePath + "\"" ); } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Returns the user preset directory // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string gameExp_GetUserPresetDirectory() { string $ppath = `internalVar -userPrefDir`; $ppath = substitute( "/prefs", $ppath, ""); $ppath = $ppath + "presets/attrPresets/gameFbxExporter"; if( !`file -q -ex $ppath` ) { // create the user preset directory sysFile -makeDir $ppath; } return $ppath; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Returns the defaults preset directory // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string gameExp_GetDefaultsPresetDirectory() { string $ppath = `getenv MAYA_LOCATION`; $ppath = ($ppath + "/scripts/gameFbxExporterPresets"); return $ppath; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Returns the list of default preset directory // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string[] gameExp_GetDefaultsPresetNames() { // Default presets // We could have browsed the preset folder and populated the list // but I want them in a specific order. string $defaultPresets[] = { "model_defaults" , "animationClips_defaults" , "timeEditorClips_defaults" }; return $defaultPresets; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Returns the export FBX preset directory // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string gameExp_GetFbxExportPresetDirectory() { string $ppath = `getenv MAYA_LOCATION`; if(`about -mac`) { // On mac, that specific plug-ins folder is at the same level as the maya executable $ppath = ($ppath + "/../.."); } $ppath = ($ppath + "/plug-ins/fbx/plug-ins/FBX/Presets/export"); return $ppath; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // Returns the game Fbx Exporter FBX preset for the export type selected // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- global proc string gameExp_GetFbxPresetForExportType() { global string $gGameFbxExporterCurrentNode; int $exportType = `getAttr($gGameFbxExporterCurrentNode + ".exportTypeIndex")`; if ($exportType == 1) return "Autodesk_ME_ModelGame.gamefbxexportpreset"; else if ($exportType == 2) return "Autodesk_ME_AnimationClipsGame.gamefbxexportpreset"; else return "Autodesk_ME_TimeEditorClipsGame.gamefbxexportpreset"; }