Skip to content

Commit 11ca5b7

Browse files
authored
Merge pull request #517 from Unity-Technologies/UT-3285-integration-fails-if-settings-file-missing
Ut 3285 integration fails if settings file missing
2 parents 74c7267 + 79245ed commit 11ca5b7

File tree

1 file changed

+89
-7
lines changed

1 file changed

+89
-7
lines changed

Integrations/Autodesk/maya/scripts/unityCommands.mel

Lines changed: 89 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,49 @@ global string $UnityFbxStripNamespaceAttr = "unityFbxStripNamespaces";
66
global string $UnityFbxNamespaceAttr = "unityFbxNamespace";
77
global string $UnityExportSetNameFormat = "^1s_UnityExportSet";
88

9+
global string $UnityModuleName = "UnityFbxForMaya";
10+
11+
global string $UnityImportSettingsOptionVar = "UnityFbxImportSettings";
12+
global string $UnityExportSettingsOptionVar = "UnityFbxExportSettings";
13+
14+
global string $UnityDefaultImportSettingsFileName = "unityFbxImportSettings.mel";
15+
global string $UnityDefaultExportSettingsFileName = "unityFbxExportSettings.mel";
16+
17+
global string $UnityDefaultImportSettings = "\
18+
FBXResetImport;\n\
19+
FBXImportAxisConversionEnable -v true;\n\
20+
FBXImportCameras -v true;\n\
21+
FBXImportLights -v true;\n\
22+
FBXImportSetTake -takeIndex -1;\n\
23+
// Add and update animation\n\
24+
FBXImportMode -v merge;";
25+
26+
global string $UnityDefaultExportSettings = "\
27+
FBXResetExport;\n\
28+
// FBX file format\n\
29+
FBXExportInAscii -v false;\n\
30+
FBXExportFileVersion -v FBX201600;\n\
31+
\n\
32+
// Geometry\n\
33+
FBXExportSmoothMesh -v false;\n\
34+
FBXExportInstances -v true;\n\
35+
FBXExportReferencedAssetsContent -v false;\n\
36+
\n\
37+
// Animation\n\
38+
FBXExportAnimationOnly -v false;\n\
39+
\n\
40+
FBXExportCameras -v true;\n\
41+
FBXExportLights -v true;\n\
42+
\n\
43+
FBXExportEmbeddedTextures -v false;\n\
44+
\n\
45+
// Units\n\
46+
FBXExportScaleFactor 1;\n\
47+
FBXExportConvertUnitString cm;\n\
48+
\n\
49+
// Axis Conversion\n\
50+
FBXExportUpAxis y;";
51+
952
global int $UnityFbxFilePathIndex = 0;
1053
global int $UnityFbxFileNameIndex = 1;
1154
global int $UnityFbxAnimFilePathIndex = 2;
@@ -26,28 +69,67 @@ global proc unityRemoveNativeMenuOnLoad(){
2669
}
2770

2871
// Load a specified settings file
29-
proc int loadUnityFbxSettings(string $fileName, string $settingType){
72+
proc int loadUnityFbxSettings(string $settingType, string $optionVarName, string $defaultSettingsFileName, string $defaultSettings){
73+
global string $UnityModuleName;
74+
75+
$fileName = `optionVar -q $optionVarName`;
76+
77+
// if no filename set (optionVar cleared), reset it to default filename
78+
if ($fileName == 0){
79+
$modulePath = `moduleInfo -moduleName $UnityModuleName -path`;
80+
// {$modulePath}/scripts/{$defaultSettingsFileName}
81+
$modulePath = $modulePath + "/scripts/" + $defaultSettingsFileName;
82+
83+
$fileName = $modulePath;
84+
optionVar -stringValue $optionVarName $fileName;
85+
}
86+
3087
// check if the file exists
3188
if (`file -q -ex $fileName` == false){
32-
error ("Failed to find Unity Fbx "+$settingType+" Settings at: " + $fileName);
33-
return false;
89+
// create file with default settings
90+
$fileId = `fopen $fileName "w"`;
91+
fprint $fileId $defaultSettings;
92+
fclose $fileId;
3493
}
94+
95+
// if the file still doesn't exist (failed to create)
96+
// load the default settings and print a warning
97+
if (`file -q -ex $fileName` == false){
98+
warning ("Failed to find Unity Fbx "+$settingType+" Settings at: " + $fileName + ", loading default settings.");
99+
eval ($defaultSettings);
100+
return true;
101+
}
102+
35103
eval ("source \"" + $fileName + "\"");
36104
return true;
37105
}
38106

39107

40108
// Load the Export Settings from file
41109
proc int loadUnityFbxExportSettings(){
42-
$fileName = `optionVar -q "UnityFbxExportSettings"`;
43-
return loadUnityFbxSettings($fileName, "Export");
110+
global string $UnityExportSettingsOptionVar;
111+
global string $UnityDefaultExportSettings;
112+
global string $UnityDefaultExportSettingsFileName;
113+
return loadUnityFbxSettings(
114+
"Export",
115+
$UnityExportSettingsOptionVar,
116+
$UnityDefaultExportSettingsFileName,
117+
$UnityDefaultExportSettings
118+
);
44119
}
45120

46121

47122
// Load the Import Settings from a file
48123
proc int loadUnityFbxImportSettings(){
49-
$fileName = `optionVar -q "UnityFbxImportSettings"`;
50-
return loadUnityFbxSettings($fileName, "Import");
124+
global string $UnityImportSettingsOptionVar;
125+
global string $UnityDefaultImportSettings;
126+
global string $UnityDefaultImportSettingsFileName;
127+
return loadUnityFbxSettings(
128+
"Import",
129+
$UnityImportSettingsOptionVar,
130+
$UnityDefaultImportSettingsFileName,
131+
$UnityDefaultImportSettings
132+
);
51133
}
52134

53135

0 commit comments

Comments
 (0)