assetImportConfig.tscript 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. function ImportAssetConfigList::onSelect( %this, %id, %text )
  2. {
  3. //Apply our settings to the assets
  4. echo("Changed our import config!");
  5. if(ImportActivityLog.count() != 0)
  6. ImportActivityLog.add("");
  7. ImportActivityLog.add("Asset Import Configs set to " @ %text);
  8. ImportActivityLog.add("");
  9. ImportAssetWindow.activeImportConfigIndex = %id;
  10. //ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
  11. if(!isObject(ImportAssetWindow.activeImportConfig))
  12. ImportAssetWindow.activeImportConfig = new AssetImportConfig();
  13. ImportAssetWindow.activeImportConfig.loadImportConfig(AssetImportSettings, ImportAssetWindow.importConfigsList.getKey(%id));
  14. ImportAssetWindow.importer.setImportConfig(ImportAssetWindow.activeImportConfig);
  15. //If we were trying to import anything, refresh it with the new config
  16. ImportAssetWindow.importer.resetImportSession();
  17. //if( ImportAssetWindow.importingFilesArray.count() != 0)
  18. // AssetBrowser.reloadImportingFiles();
  19. }
  20. function setupImportConfigSettingsList()
  21. {
  22. if(!isObject(ImportAssetConfigSettingsList))
  23. {
  24. new ArrayObject(ImportAssetConfigSettingsList);
  25. ImportAssetConfigSettingsList.addNewConfigSetting("General/DuplicateAutoResolution", "Duplicate Asset Auto-Resolution Action", "list", "", "AutoRename", "None,AutoPrune,AutoRename,FolderPrefix");
  26. ImportAssetConfigSettingsList.addNewConfigSetting("General/WarningsAsErrors", "Warnings As Errors", "bool", "", "0", "", "");
  27. ImportAssetConfigSettingsList.addNewConfigSetting("General/PreventImportWithErrors", "Prevent Import With Errors", "bool", "", "1", "", "");
  28. ImportAssetConfigSettingsList.addNewConfigSetting("General/AutomaticallyPromptMissingFiles", "Automatically Prompt Missing Files", "bool", "", "0", "", "");
  29. ImportAssetConfigSettingsList.addNewConfigSetting("General/AddDirectoryPrefixToAssetName", "Adds the name of the folder to importing asset name", "bool", "", "0", "", "");
  30. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/ImportMesh", "Import Mesh", "bool", "", "1", "", "ToggleImportMesh");
  31. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AlwaysAddShapeSuffix", "Always Add Shape Suffix", "bool", "", "0", "");
  32. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AddedShapeSuffix", "Added Shape Suffix", "string", "", "_shape", "");
  33. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/DoUpAxisOverride", "Do Up-axis Override", "bool", "", "0", "");
  34. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/UpAxisOverride", "Up-axis Override", "list", "", "Z_AXIS", "X_AXIS,Y_AXIS,Z_AXIS");
  35. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/DoScaleOverride", "Do Scale Override", "bool", "", "0", "");
  36. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/ScaleOverride", "Scale Override", "float", "", "1", "");
  37. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/IgnoreNodeScale", "Ignore Node Scale", "bool", "", "0", "");
  38. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AdjustCenter", "Adjust Center", "bool", "", "0", "");
  39. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AdjustFloor", "Adjust Floor", "bool", "", "0", "");
  40. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/CollapseSubmeshes", "Collapse Submeshes", "bool", "", "0", "");
  41. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/LODType", "LOD Type", "list", "", "TrailingNumber", "TrailingNumber,DetectDTS,SingleSize");
  42. //ImportAssetConfigSettingsList.addNewConfigSetting("TrailingNumber", "Trailing Number", "float", "", "2", "", "Mesh");
  43. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AlwaysImportedNodes", "Always Imported Nodes", "command", "", "", "");
  44. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AlwaysIgnoreNodes", "Always Ignored Nodes", "command", "", "", "");
  45. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AlwaysImportMeshes", "Always Imported Meshes", "command", "", "", "");
  46. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/AlwaysIgnoreMeshes", "Always Ignored Meshes", "command", "", "", "");
  47. //Assimp/Collada params
  48. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/convertLeftHanded", "Convert To Left Hand", "bool", "", "0", "");
  49. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/calcTangentSpace", "Calculate Tangent Space", "bool", "", "0", "");
  50. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/removeRedundantMats", "Remove Redundant Materials", "bool", "", "0", "");
  51. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/genUVCoords", "Generate UV Corrdinates", "bool", "", "0", "");
  52. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/TransformUVs", "Transform UV Coordinates", "bool", "", "0", "");
  53. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/flipUVCoords", "Flip UV Coordinates", "bool", "", "0", "");
  54. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/findInstances", "Find Instances", "bool", "", "0", "");
  55. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/limitBoneWeights", "Limit Bone Weights", "bool", "", "0", "");
  56. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/JoinIdenticalVerts", "Join Identical Verts", "bool", "", "0", "");
  57. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/reverseWindingOrder", "Flip Winding Order", "bool", "", "0", "");
  58. ImportAssetConfigSettingsList.addNewConfigSetting("Meshes/invertNormals", "Invert Normals", "bool", "", "0", "");
  59. //Materials
  60. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/ImportMaterials", "Import Materials", "bool", "", "1", "");
  61. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/AlwaysAddMaterialSuffix", "Always Add Material Suffix", "bool", "", "1", "");
  62. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/AddedMaterialSuffix", "Added Material Suffix", "string", "", "_mat", "");
  63. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/CreateComposites", "Create Composites", "bool", "", "1", "");
  64. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/UseDiffuseSuffixOnOriginImage", "Use Diffuse Suffix for Origin Image", "bool", "", "1", "");
  65. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/UseExistingMaterials", "Use Existing Materials", "bool", "", "1", "");
  66. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/IgnoreMaterials", "Ignore Materials", "command", "", "", "");
  67. ImportAssetConfigSettingsList.addNewConfigSetting("Materials/PopulateMaterialMaps", "Populate Material Maps", "bool", "", "1", "");
  68. //Animations
  69. ImportAssetConfigSettingsList.addNewConfigSetting("Animations/ImportAnimations", "Import Animations", "bool", "", "1", "");
  70. ImportAssetConfigSettingsList.addNewConfigSetting("Animations/SeparateAnimations", "Separate Animations", "bool", "", "1", "");
  71. ImportAssetConfigSettingsList.addNewConfigSetting("Animations/SeparateAnimationPrefix", "Separate Animation Prefix", "string", "", "", "");
  72. ImportAssetConfigSettingsList.addNewConfigSetting("Animations/animTiming", "Animation Timing", "list", "", "Seconds", "Frames,Seconds,Milliseconds");
  73. ImportAssetConfigSettingsList.addNewConfigSetting("Animations/animFPS", "Animation FPS", "float", "", "2", "");
  74. //Collision
  75. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/GenerateCollisions", "Generate Collisions", "bool", "", "1", "");
  76. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/GenCollisionType", "Generate Collision Type", "list", "", "CollisionMesh", "CollisionMesh,ConvexHull");
  77. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/CollisionMeshPrefix", "CollisionMesh Prefix", "string", "", "Col", "");
  78. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/GenerateLOSCollisions", "Generate LOS Collisions", "bool", "", "1", "");
  79. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/GenLOSCollisionType", "Generate LOS Collision Type", "list", "", "CollisionMesh", "CollisionMesh,ConvexHull");
  80. ImportAssetConfigSettingsList.addNewConfigSetting("Collision/LOSCollisionMeshPrefix", "LOS CollisionMesh Prefix", "string", "", "LOS", "");
  81. //Images
  82. ImportAssetConfigSettingsList.addNewConfigSetting("Images/ImportImages", "Import Images", "bool", "", "1", "");
  83. ImportAssetConfigSettingsList.addNewConfigSetting("Images/AlwaysAddImageSuffix", "Always Add Image Suffix", "bool", "", "1", "");
  84. ImportAssetConfigSettingsList.addNewConfigSetting("Images/AddedImageSuffix", "Added Image Suffix", "string", "", "_image", "");
  85. ImportAssetConfigSettingsList.addNewConfigSetting("Images/ImageType", "Image Type", "list", "", "N/A", "N/A,Diffuse,Normal,Specular,Metalness,Roughness,AO,Composite,GUI");
  86. ImportAssetConfigSettingsList.addNewConfigSetting("Images/DiffuseTypeSuffixes", "Diffuse Type Suffixes", "command", "", "_ALBEDO,_DIFFUSE,_ALB,_DIF,_COLOR,_COL", "");
  87. ImportAssetConfigSettingsList.addNewConfigSetting("Images/NormalTypeSuffixes", "Normal Type Suffixes", "command", "", "_NORMAL,_NORM", "");
  88. ImportAssetConfigSettingsList.addNewConfigSetting("Images/MetalnessTypeSuffixes", "Metalness Type Suffixes", "command", "", "_METAL,_MET,_METALNESS,_METALLIC", "");
  89. ImportAssetConfigSettingsList.addNewConfigSetting("Images/RoughnessTypeSuffixes", "Roughness Type Suffixes", "command", "", "_ROUGH,_ROUGHNESS", "");
  90. ImportAssetConfigSettingsList.addNewConfigSetting("Images/SmoothnessTypeSuffixes", "Smoothness Type Suffixes", "command", "", "_SMOOTH,_SMOOTHNESS", "");
  91. ImportAssetConfigSettingsList.addNewConfigSetting("Images/AOTypeSuffixes", "AO Type Suffixes", "command", "", "_AO,_AMBIENT,_AMBIENTOCCLUSION", "");
  92. ImportAssetConfigSettingsList.addNewConfigSetting("Images/CompositeTypeSuffixes", "Composite Type Suffixes", "command", "", "_COMP,_COMPOSITE", "");
  93. ImportAssetConfigSettingsList.addNewConfigSetting("Images/TextureFilteringMode", "Texture Filtering Mode", "list", "", "Bilinear", "None,Bilinear,Trilinear");
  94. ImportAssetConfigSettingsList.addNewConfigSetting("Images/UseMips", "Use Mipmaps", "bool", "", "1", "");
  95. ImportAssetConfigSettingsList.addNewConfigSetting("Images/IsHDR", "Is HDR", "bool", "", "0", "");
  96. ImportAssetConfigSettingsList.addNewConfigSetting("Images/Scaling", "Scaling", "float", "", "1.0", "");
  97. ImportAssetConfigSettingsList.addNewConfigSetting("Images/Compressed", "Is Compressed", "bool", "", "1", "");
  98. ImportAssetConfigSettingsList.addNewConfigSetting("Images/GenerateMaterialOnImport", "Generate Material On Import", "bool", "", "1", "");
  99. //Sounds
  100. ImportAssetConfigSettingsList.addNewConfigSetting("Sounds/VolumeAdjust", "Volume Adjustment", "float", "", "1.0", "");
  101. ImportAssetConfigSettingsList.addNewConfigSetting("Sounds/PitchAdjust", "Pitch Adjustment", "float", "", "1.0", "");
  102. ImportAssetConfigSettingsList.addNewConfigSetting("Sounds/Compressed", "Is Compressed", "bool", "", "0", "");
  103. ImportAssetConfigSettingsList.addNewConfigSetting("Sounds/AlwaysAddSoundSuffix", "Always Add Sound Suffix", "bool", "", "1", "");
  104. ImportAssetConfigSettingsList.addNewConfigSetting("Sounds/AddedSoundSuffix", "Added Sound Suffix", "string", "", "_sound", "");
  105. }
  106. }
  107. function ImportAssetConfigSettingsList::addNewConfigSetting(%this, %settingName, %settingFieldLabel, %type, %tooltip, %defaultValue, %fieldData)
  108. {
  109. %this.add(%settingName TAB %settingFieldLabel TAB %type TAB %tooltip, %defaultValue TAB %fieldData);
  110. }
  111. //
  112. function ImportAssetConfigEditorWindow::close(%this)
  113. {
  114. %this.setVisible(0);
  115. }
  116. function ImportAssetOptionsWindow::editImportSettings(%this, %assetItem)
  117. {
  118. ImportAssetOptionsWindow.setVisible(1);
  119. ImportAssetOptionsWindow.selectWindow();
  120. ImportOptionsList.clearFields();
  121. %assetType = %assetItem.assetType;
  122. %filePath = %assetItem.filePath;
  123. %assetName = %assetItem.assetName;
  124. %assetConfigObj = %assetItem.importConfig;
  125. %optionsObj = %assetItem.optionsObj; // TODO IS THIS RIGHT
  126. ImportOptionsList.startGroup("Asset");
  127. ImportOptionsList.addField("AssetName", "Asset Name", "string", "", "NewAsset", "", %assetItem);
  128. ImportOptionsList.endGroup();
  129. if(%assetType $= "ShapeAsset")
  130. {
  131. //Get the shape info, so we know what we're doing with the mesh
  132. %shapeInfo = GetShapeInfo(%filePath);
  133. %meshItem = %shapeInfo.findItemByName("Meshes");
  134. %matItem = %shapeInfo.findItemByName("Materials");
  135. %meshCount = %shapeInfo.getItemValue(%meshItem);
  136. %matCount = %shapeInfo.getItemValue(%matItem);
  137. %firstMat = %shapeInfo.getChild(%matItem);
  138. echo("Mesh's first material texture path is: " @ %shapeInfo.getItemValue(%firstMat));
  139. if(%meshCount > 0)
  140. {
  141. ImportOptionsList.startGroup("Mesh");
  142. ImportOptionsList.addField("AutogenCollisions", "Auto-gen Collisions", "bool", "", "0", "", %assetConfigObj);
  143. ImportOptionsList.addField("CollapseSubmeshes", "Collapse Submeshes", "bool", "", "0", "", %assetConfigObj);
  144. ImportOptionsList.addField("UpAxisOverride", "Up-Axis Override", "list", "", "Z_AXIS", "Z_AXIS,Y_AXIS,X_AXIS", %assetConfigObj);
  145. ImportOptionsList.addField("OverrideScale", "Override Scale", "float", "", "1.0", "", %assetConfigObj);
  146. ImportOptionsList.addField("IgnoreNodeScale", "IgnoreNodeScaling", "bool", "", "0", "", %assetConfigObj);
  147. ImportOptionsList.addField("AdjustCenter", "Adjust Center", "bool", "", "0", "", %assetConfigObj);
  148. ImportOptionsList.addField("CollapseSubmeshes", "Collapse Submeshes", "bool", "", "0", "", %assetConfigObj);
  149. ImportOptionsList.addField("AdjustFloor", "Adjust Floor", "bool", "", "0", "", %assetConfigObj);
  150. ImportOptionsList.addField("LODType", "LOD Type", "list", "", "TrailingNumber", "TrailingNumber,DetectDTS", %assetConfigObj);
  151. ImportOptionsList.endGroup();
  152. }
  153. if(%matItem > 0)
  154. {
  155. ImportOptionsList.startGroup("Material");
  156. ImportOptionsList.addCallbackField("ImportMaterials", "Import Materials", "bool", "", "1", "", "ImportMaterialsChanged", %assetConfigObj);
  157. ImportOptionsList.addField("UseExistingMaterials", "Use Existing Materials", "bool", "", "1", "", %assetConfigObj);
  158. ImportOptionsList.endGroup();
  159. }
  160. }
  161. else if(%assetType $= "MaterialAsset")
  162. {
  163. ImportOptionsList.startGroup("Material");
  164. ImportOptionsList.addField("CreateComposites", "Create Composite Textures", "bool", "", "1", "", %assetConfigObj);
  165. ImportOptionsList.endGroup();
  166. }
  167. else if(%assetType $= "ImageAsset")
  168. {
  169. ImportOptionsList.startGroup("Formatting");
  170. ImportOptionsList.addField("ImageType", "Image Type", "string", "", "Diffuse", "", %assetConfigObj);
  171. ImportOptionsList.addField("TextureFiltering", "Texture Filtering", "list", "", "Bilinear", "None,Bilinear,Trilinear", %assetConfigObj);
  172. ImportOptionsList.addField("UseMips", "Use Mips", "bool", "", "1", "", %assetConfigObj);
  173. ImportOptionsList.addField("IsHDR", "Is HDR", "bool", "", "0", "", %assetConfigObj);
  174. ImportOptionsList.endGroup();
  175. ImportOptionsList.startGroup("Scaling");
  176. ImportOptionsList.addField("Scaling", "Scaling", "float", "", "1.0", "", %assetConfigObj);
  177. ImportOptionsList.endGroup();
  178. ImportOptionsList.startGroup("Compression");
  179. ImportOptionsList.addField("IsCompressed", "Is Compressed", "bool", "", "1", "", %assetConfigObj);
  180. ImportOptionsList.endGroup();
  181. ImportOptionsList.startGroup("Material");
  182. ImportOptionsList.addField("GenerateMaterialOnImport", "Generate Material On Import", "bool", "", "1", "", %optionsObj);
  183. ImportOptionsList.addField("PopulateMaterialMaps", "Populate Material Maps", "bool", "", "1", "", %optionsObj);
  184. ImportOptionsList.addField("UseDiffuseSuffixOnOriginImg", "Use Diffuse Suffix for Origin Image", "bool", "", "1", "", %optionsObj);
  185. ImportOptionsList.addField("UseExistingMaterials", "Use Existing Materials", "bool", "", "1", "", %optionsObj);
  186. ImportOptionsList.addField("IgnoreMaterials", "Ignore Importing Materials that fit these naming convention.", "command", "", "1", "", %optionsObj);
  187. ImportOptionsList.endGroup();
  188. }
  189. else if(%assetType $= "SoundAsset")
  190. {
  191. ImportOptionsList.startGroup("Adjustment");
  192. ImportOptionsList.addField("VolumeAdjust", "VolumeAdjustment", "float", "", "1.0", "", %assetConfigObj);
  193. ImportOptionsList.addField("PitchAdjust", "PitchAdjustment", "float", "", "1.0", "", %assetConfigObj);
  194. ImportOptionsList.endGroup();
  195. ImportOptionsList.startGroup("Compression");
  196. ImportOptionsList.addField("IsCompressed", "Is Compressed", "bool", "", "1", "", %assetConfigObj);
  197. ImportOptionsList.endGroup();
  198. }
  199. }
  200. function ImportAssetOptionsWindow::saveAssetOptions(%this)
  201. {
  202. %success = AssetImportSettings.write();
  203. if(ImportActivityLog.count() != 0)
  204. ImportActivityLog.add("");
  205. ImportActivityLog.add("Asset Import Configs saved, refreshing Import session");
  206. ImportActivityLog.add("");
  207. ImportAssetWindow.refresh();
  208. ImportAssetOptionsWindow.setVisible(0);
  209. }
  210. function ImportOptionsList::ImportMaterialsChanged(%this, %fieldName, %newValue, %ownerObject)
  211. {
  212. echo("CHANGED IF OUR IMPORTED MATERIALS WERE HAPPENING!");
  213. }
  214. function getAssetImportConfigValue(%fieldName, %defaultValue)
  215. {
  216. if(ImportAssetWindow.activeImportConfig $= "")
  217. return "";
  218. return AssetImportSettings.value(ImportAssetWindow.activeImportConfig @ "/" @ %fieldName, %defaultValue);
  219. }
  220. function ImportAssetConfigEditorWindow::populateConfigList(%this, %configName)
  221. {
  222. //Ensure our config list is set up
  223. setupImportConfigSettingsList();
  224. AssetImportConfigName.setText(%configName);
  225. ImportOptionsConfigList.clearFields();
  226. ImportOptionsConfigList.setAutoUpdate(false); //we don't want to be updating every time we add a field in here
  227. %this.populateConfigListByGroup("General");
  228. %this.populateConfigListByGroup("Meshes");
  229. %this.populateConfigListByGroup("Materials");
  230. %this.populateConfigListByGroup("Animations");
  231. %this.populateConfigListByGroup("Images");
  232. %this.populateConfigListByGroup("Collision");
  233. %this.populateConfigListByGroup("Sounds");
  234. ImportOptionsConfigList.update();
  235. }
  236. function ImportAssetConfigEditorWindow::populateConfigListByGroup(%this, %groupName)
  237. {
  238. ImportOptionsConfigList.startGroup(%groupName);
  239. for(%i=0; %i < ImportAssetConfigSettingsList.count(); %i++)
  240. {
  241. %settingName = getField(ImportAssetConfigSettingsList.getKey(%i),0);
  242. if(startsWith(%settingName, %groupName@"/"))
  243. {
  244. %labelName = getField(ImportAssetConfigSettingsList.getKey(%i), 1);
  245. %type = getField(ImportAssetConfigSettingsList.getKey(%i), 2);
  246. %tooltip = getField(ImportAssetConfigSettingsList.getKey(%i), 3);
  247. %defaultValue = getField(ImportAssetConfigSettingsList.getValue(%i), 0);
  248. %dataValues = getField(ImportAssetConfigSettingsList.getValue(%i), 1);
  249. ImportOptionsConfigList.addSettingsField(%settingName, %labelName, %type, %tooltip, %defaultValue, %dataValues);
  250. }
  251. }
  252. ImportOptionsConfigList.endGroup();
  253. }
  254. function ImportAssetConfigEditorWindow::addNewConfig(%this)
  255. {
  256. //Ensure our list is set up
  257. setupImportConfigSettingsList();
  258. ImportAssetNewConfigEditorWindow.setVisible(1);
  259. ImportAssetNewConfigEditorWindow.selectWindow();
  260. %configName = AssetImportConfigName.getText();
  261. AssetImportSettings.beginGroup(%configName);
  262. //Meshes
  263. AssetImportSettings.setValue("Meshes/ImportMesh", "1");
  264. AssetImportSettings.setValue("Meshes/AlwaysAddShapeSuffix", "0");
  265. AssetImportSettings.setValue("Meshes/AddedShapeSuffix", "_shape");
  266. AssetImportSettings.setValue("Meshes/DoUpAxisOverride", "0");
  267. AssetImportSettings.setValue("Meshes/UpAxisOverride", "Z_AXIS");
  268. AssetImportSettings.setValue("Meshes/DoScaleOverride", "0");
  269. AssetImportSettings.setValue("Meshes/ScaleOverride", "1.0");
  270. AssetImportSettings.setValue("Meshes/IgnoreNodeScale", "0");
  271. AssetImportSettings.setValue("Meshes/AdjustCenter", "0");
  272. AssetImportSettings.setValue("Meshes/AdjustFloor", "0");
  273. AssetImportSettings.setValue("Meshes/CollapseSubmeshes", "0");
  274. AssetImportSettings.setValue("Meshes/LODType", "TrailingNumber");
  275. AssetImportSettings.setValue("Meshes/AlwaysImportedNodes", "");
  276. AssetImportSettings.setValue("Meshes/AlwaysIgnoreNodes", "");
  277. AssetImportSettings.setValue("Meshes/AlwaysImportMeshes", "");
  278. AssetImportSettings.setValue("Meshes/AlwaysIgnoreMeshes", "");
  279. //Materials
  280. AssetImportSettings.setValue("Materials/ImportMaterials", "1");
  281. AssetImportSettings.setValue("Materials/AlwaysAddMaterialSuffix", "1");
  282. AssetImportSettings.setValue("Materials/AddedMaterialSuffix", "_mat");
  283. AssetImportSettings.setValue("Materials/IgnoreMaterials", "");
  284. AssetImportSettings.setValue("Materials/CreateComposites", "1");
  285. AssetImportSettings.setValue("Materials/UseDiffuseSuffixOnOriginImage", "1");
  286. AssetImportSettings.setValue("Materials/UseExistingMaterials", "1");
  287. AssetImportSettings.setValue("Materials/PopulateMaterialMaps", "1");
  288. //Animations
  289. AssetImportSettings.setValue("Animations/ImportAnimations", "1");
  290. AssetImportSettings.setValue("Animations/SeparateAnimations", "1");
  291. AssetImportSettings.setValue("Animations/SeparateAnimationPrefix", "");
  292. //Collision
  293. AssetImportSettings.setValue("Collision/GenerateCollisions", "1");
  294. AssetImportSettings.setValue("Collision/GenCollisionType", "CollisionMesh");
  295. AssetImportSettings.setValue("Collision/CollisionMeshPrefix", "Col");
  296. AssetImportSettings.setValue("Collision/GenerateLOSCollisions", "1");
  297. AssetImportSettings.setValue("Collision/GenLOSCollisionType", "CollisionMesh");
  298. AssetImportSettings.setValue("Collision/LOSCollisionMeshPrefix", "LOS");
  299. //Images
  300. AssetImportSettings.setValue("Images/ImportImage", "1");
  301. AssetImportSettings.setValue("Images/AlwaysAddImageSuffix", "1");
  302. AssetImportSettings.setValue("Images/AddedImageSuffix", "_image");
  303. AssetImportSettings.setValue("Images/ImageType", "N/A");
  304. AssetImportSettings.setValue("Images/DiffuseTypeSuffixes", "_ALBEDO;_DIFFUSE;_ALB;_DIF;_COLOR;_COL;_BASECOLOR;_BASE_COLOR");
  305. AssetImportSettings.setValue("Images/NormalTypeSuffixes", "_NORMAL;_NORM");
  306. AssetImportSettings.setValue("Images/MetalnessTypeSuffixes", "_METAL;_MET;_METALNESS;_METALLIC");
  307. AssetImportSettings.setValue("Images/RoughnessTypeSuffixes", "_ROUGH;_ROUGHNESS");
  308. AssetImportSettings.setValue("Images/SmoothnessTypeSuffixes", "_SMOOTH;_SMOOTHNESS");
  309. AssetImportSettings.setValue("Images/AOTypeSuffixes", "_AO;_AMBIENT;_AMBIENTOCCLUSION");
  310. AssetImportSettings.setValue("Images/CompositeTypeSuffixes", "_COMP;_COMPOSITE;_PBR;-COMP;-COMPOSITE;-PBR;_ORM;-ORM");
  311. AssetImportSettings.setValue("Images/TextureFilteringMode", "Bilinear");
  312. AssetImportSettings.setValue("Images/UseMips", "1");
  313. AssetImportSettings.setValue("Images/IsHDR", "0");
  314. AssetImportSettings.setValue("Images/Scaling", "1.0");
  315. AssetImportSettings.setValue("Images/Compressed", "1");
  316. AssetImportSettings.setValue("Images/GenerateMaterialOnImport", "1");
  317. //Sounds
  318. AssetImportSettings.setValue("Sounds/VolumeAdjust", "1.0");
  319. AssetImportSettings.setValue("Sounds/PitchAdjust", "1.0");
  320. AssetImportSettings.setValue("Sounds/Compressed", "0");
  321. AssetImportSettings.setValue("Sounds/AlwaysAddSoundSuffix", "1");
  322. AssetImportSettings.setValue("Sounds/AddedSoundSuffix", "_sound");
  323. AssetImportSettings.endGroup();
  324. //Hook in the UI
  325. //%this.populateConfigList(%optionsObj);
  326. }
  327. function ImportAssetConfigEditorWindow::setDefaultValuesByGroup(%this, %groupName)
  328. {
  329. %configList = ImportAssetConfigSettingsList;
  330. for(%i=0; %i < %configList.count(); %i++)
  331. {
  332. %settingName = getField(%configList.getKey(%i),0);
  333. if(startsWith(%settingName, %groupName @ "/"))
  334. {
  335. %defaultValue = getField(%configList.getValue(%i), 0);
  336. AssetImportSettings.setValue(%settingName, %defaultValue);
  337. }
  338. }
  339. }
  340. function ImportAssetConfigEditorWindow::editConfig(%this)
  341. {
  342. //Ensure our list is set up
  343. ImportAssetConfigEditorWindow.setVisible(1);
  344. ImportAssetConfigEditorWindow.selectWindow();
  345. %this.populateConfigList(ImportAssetWindow.activeImportConfig);
  346. }
  347. function ImportAssetConfigEditorWindow::deleteConfig(%this)
  348. {
  349. %configList = ImportAssetConfigSettingsList;
  350. for(%i=0; %i < %configList.count(); %i++)
  351. {
  352. }
  353. ImportAssetWindow.importConfigsList.erase(ImportAssetWindow.activeImportConfigIndex);
  354. ImportAssetConfigList.setSelected(0); //update it
  355. ImportAssetConfigEditorWindow.saveAssetOptionsConfig();
  356. }
  357. function ImportAssetConfigEditorWindow::saveAssetOptionsConfig(%this)
  358. {
  359. %success = AssetImportSettings.write();
  360. ImportAssetConfigEditorWindow.setVisible(0);
  361. ImportAssetWindow.reloadImportOptionConfigs();
  362. }
  363. function ImportAssetConfigEditorWindow::createNewImportConfig(%this)
  364. {
  365. %configName = AssetImportNewConfigName.getText();
  366. %configList = ImportAssetConfigSettingsList;
  367. AssetImportSettings.beginGroup(%configName);
  368. %this.setDefaultValuesByGroup("General");
  369. %this.setDefaultValuesByGroup("Meshes");
  370. %this.setDefaultValuesByGroup("Materials");
  371. %this.setDefaultValuesByGroup("Animations");
  372. %this.setDefaultValuesByGroup("Collision");
  373. %this.setDefaultValuesByGroup("Images");
  374. %this.setDefaultValuesByGroup("Sounds");
  375. AssetImportSettings.endGroup();
  376. %success = AssetImportSettings.write();
  377. ImportAssetNewConfigEditorWindow.setVisible(0);
  378. }
  379. function ImportOptionsConfigList::addSettingsField(%this, %settingsFieldName, %labelText, %fieldType, %tooltip, %fieldValue, %fieldData)
  380. {
  381. %moddedSettingsFieldName = strreplace(%settingsFieldName, "/", "-");
  382. %configGroup = AssetImportConfigName.getText();
  383. %value = AssetImportSettings.value(%configGroup @ "/" @ %settingsFieldName);
  384. if(%value $= "")
  385. %value = %fieldValue;
  386. //%this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", %value, %fieldData, %this @ ".changeEditorSetting");
  387. %this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", %value, %fieldData, "changeEditorSetting");
  388. }
  389. function ImportOptionsConfigList::changeEditorSetting(%this, %varName, %value)
  390. {
  391. %varName = strreplace(%varName, "-", "/");
  392. echo("Set " @ %varName @ " to be " @ %value);
  393. %configGroup = AssetImportConfigName.getText();
  394. %oldValue = AssetImportSettings.value(%configGroup @ "/" @ %varName, %value);
  395. AssetImportSettings.setValue(%configGroup @ "/" @ %varName, %value);
  396. if(%oldValue !$= %value)
  397. {
  398. %scollPos = ImportAssetConfigEditorScroll.getScrollPosition();
  399. ImportAssetConfigEditorWindow.populateConfigList(ImportAssetWindow.activeImportConfig);
  400. ImportAssetConfigEditorScroll.setScrollPosition(%scollPos.x, %scollPos.y);
  401. }
  402. }
  403. function ImportOptionsConfigList::ToggleImportMesh(%this, %fieldName, %newValue, %ownerObject)
  404. {
  405. %this.setFieldEnabled("DoUpAxisOverride", %newValue);
  406. %this.setFieldEnabled("UpAxisOverride", %newValue);
  407. %this.setFieldEnabled("DoScaleOverride", %newValue);
  408. %this.setFieldEnabled("ScaleOverride", %newValue);
  409. %this.setFieldEnabled("IgnoreNodeScale", %newValue);
  410. %this.setFieldEnabled("AdjustCenter", %newValue);
  411. %this.setFieldEnabled("AdjustFloor", %newValue);
  412. %this.setFieldEnabled("CollapseSubmeshes", %newValue);
  413. %this.setFieldEnabled("LODType", %newValue);
  414. %this.setFieldEnabled("AlwaysImportedNodes", %newValue);
  415. %this.setFieldEnabled("AlwaysIgnoreNodes", %newValue);
  416. %this.setFieldEnabled("AlwaysImportMeshes", %newValue);
  417. %this.setFieldEnabled("AlwaysIgnoreMeshes", %newValue);
  418. }