diff --git a/Engine/source/T3D/assets/assetImporter.cpp b/Engine/source/T3D/assets/assetImporter.cpp index c168e77f0..c28882fe8 100644 --- a/Engine/source/T3D/assets/assetImporter.cpp +++ b/Engine/source/T3D/assets/assetImporter.cpp @@ -1617,6 +1617,7 @@ void AssetImporter::processMaterialAsset(AssetImportObject* assetItem) } } + bool foundExistingMaterial = false; if (activeImportConfig->UseExistingMaterials) { //So if the material already exists, we should just use that. So first, let's find out if it already exists @@ -1651,9 +1652,11 @@ void AssetImporter::processMaterialAsset(AssetImportObject* assetItem) { //We found a match, so just modify our asset item's info to point against it. This will create the asset definition, but otherwise leave the material definition as-is. assetItem->filePath = (Torque::Path)(mat->getFilename()); + foundExistingMaterial = true; } } - else + + if(!foundExistingMaterial) { if (activeImportConfig->AlwaysAddMaterialSuffix) //we only opt to force on the suffix if we're not obligating using the original material defs { @@ -1811,19 +1814,6 @@ void AssetImporter::processMaterialAsset(AssetImportObject* assetItem) } } } - - /*for (U32 i = 0; i < assetItem->childAssetItems.size(); i++) - { - AssetImportObject* childAssetItem = assetItem->childAssetItems[i]; - - if (childAssetItem->skip || childAssetItem->processed || childAssetItem->assetType != String("ImageAsset")) - continue; - - if (childAssetItem->imageSuffixType == String("Albedo")) - { - assetItem->diffuseImageAsset = % childAssetItem; - } - }*/ } } @@ -1963,7 +1953,7 @@ void AssetImporter::processShapeMaterialInfo(AssetImportObject* assetItem, S32 m else { Torque::Path filePath = materialItemValue; - String fullFilePath = filePath.getFullFileName().c_str(); + String fullFilePath = filePath.getFullPath().c_str(); String shapePathBase = assetItem->filePath.getRootAndPath(); if (fullFilePath.isNotEmpty()) @@ -1977,24 +1967,26 @@ void AssetImporter::processShapeMaterialInfo(AssetImportObject* assetItem, S32 m fullFilePath = fullFilePath.replace(" (Not Found)", ""); fullFilePath = fullFilePath.replace(" (not found)", ""); - String testFileName = shapePathBase + "/" + fullFilePath; - if (Platform::isFile(testFileName.c_str())) + if(filePath.getPath().isEmpty()) + fullFilePath = shapePathBase + "/" + fullFilePath; + + if (Platform::isFile(fullFilePath.c_str())) { - filePath = testFileName; + filePath = Torque::Path(fullFilePath); } else { //Hmm, didn't find it. It could be that the in-model filename could be different by virtue of //image extension. Some files have source content files like psd's, but the mesh was exported to use //a dds or png, etc - Torque::Path testFilePath = testFileName; + Torque::Path testFilePath = fullFilePath; String imgFileName = AssetImporter::findImagePath(testFilePath.getPath() + "/" + testFilePath.getFileName()); if (imgFileName.isNotEmpty()) filePath = imgFileName; } } - matAssetItem = addImportingAsset("MaterialAsset", shapePathBase + "/", assetItem, matName); + matAssetItem = addImportingAsset("MaterialAsset", shapePathBase + "/" + matName, assetItem, matName); AssetImportObject* imageAssetItem = addImportingAsset("ImageAsset", filePath, matAssetItem, ""); String suffixType; @@ -2831,7 +2823,7 @@ Torque::Path AssetImporter::importMaterialAsset(AssetImportObject* assetItem) } assetFieldName = mapFieldName + "Asset"; - mapFieldName += "[0]"; + assetFieldName += "[0]"; //String path = childItem->filePath.getFullFileName(); //dSprintf(lineBuffer, 1024, " %s = \"%s\";", mapFieldName.c_str(), path.c_str()); diff --git a/Engine/source/T3D/assets/assetImporter_ScriptBinding.h b/Engine/source/T3D/assets/assetImporter_ScriptBinding.h index e52da2c52..aa50c82de 100644 --- a/Engine/source/T3D/assets/assetImporter_ScriptBinding.h +++ b/Engine/source/T3D/assets/assetImporter_ScriptBinding.h @@ -6,113 +6,114 @@ //Console Functions DefineEngineMethod(AssetImportConfig, loadImportConfig, void, (Settings* configSettings, String configName), (nullAsType(), ""), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Loads the provided import config to the importer.\n" + "@param configSettings A Settings object containing the import configs.\n" + "@param configName The specific name of the config to be used.") { return object->loadImportConfig(configSettings, configName); } DefineEngineMethod(AssetImporter, setTargetPath, void, (String path), (""), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Sets the target path the importing assets will be put into.\n" + "@param A string of the target path.") { return object->setTargetPath(path); } DefineEngineMethod(AssetImporter, resetImportSession, void, (bool forceResetSession), (false), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Resets the importer's import session. All existing import items, logs, etc will be cleared.") { return object->resetImportSession(forceResetSession); } DefineEngineMethod(AssetImporter, dumpActivityLog, void, (), , - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Dumps the import activity log. If the importer is set to, it will save to file, otherwise dump to console.") { return object->dumpActivityLog(); } DefineEngineMethod(AssetImporter, getActivityLogLineCount, S32, (),, - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Gets the number of lines in the import activity log.\n" + "@return The number of lines in the import activity log.") { return object->getActivityLogLineCount(); } -DefineEngineMethod(AssetImporter, getActivityLogLine, String, (S32 i), (0), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") +DefineEngineMethod(AssetImporter, getActivityLogLine, String, (S32 index), (0), + "Gets a specific line in the import activity log.\n" + "@param index The index of the line to be returned.\n" + "@return The string of the requested line of the activity log") { - return object->getActivityLogLine(i); + return object->getActivityLogLine(index); } DefineEngineMethod(AssetImporter, autoImportFile, String, (String path, String typeHint), ("", ""), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Run the full import process on a specific file.\n" + "@return If import is successful, the assetId of the new asset. If it failed, an empty string.") { return object->autoImportFile(path, typeHint); } DefineEngineMethod(AssetImporter, addImportingFile, AssetImportObject*, (String path), (""), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Adds a filepath to the current importing session.\n" + "@param path The path to the file to be imported.\n" + "@return The AssetImportObject from the import session.") { return object->addImportingFile(path); } DefineEngineMethod(AssetImporter, addImportingAssetItem, void, (AssetImportObject* assetItem, AssetImportObject* parentItem), (nullAsType< AssetImportObject*>(), nullAsType< AssetImportObject*>()), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Adds an existing AssetImportObject to the current improting session.\n" + "@param assetItem The AssetImportObject to be added to the import session.\n" + "@param parentItem An AssetImportObject that to act as the parent of the item being added.") { return object->addImportingAssetItem(assetItem, parentItem); } DefineEngineMethod(AssetImporter, processImportingAssets, void, (), , - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Processes the importing assets.") { return object->processImportAssets(); } -DefineEngineMethod(AssetImporter, validateImportingAssets, bool, (), , - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") +DefineEngineMethod(AssetImporter, hasImportIssues, bool, (), , + "Validates the status of the importing items.\n" + "@return False if there are no issues, true if there are importing issues") { return object->validateAssets(); } DefineEngineMethod(AssetImporter, resolveAssetItemIssues, void, (AssetImportObject* assetItem), (nullAsType< AssetImportObject*>()), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Runs the issue resolver to attempt to correct any simple issues, such as utilizing the config's settings to resolve collisions.") { object->resolveAssetItemIssues(assetItem); } DefineEngineMethod(AssetImporter, importAssets, void, (),, - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Runs the actual import action on the items.") { return object->importAssets(); } DefineEngineMethod(AssetImporter, getAssetItemCount, S32, (),, - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Gets the number of importing asset items.\n" + "@return The number of importing asset items") { return object->getAssetItemCount(); } DefineEngineMethod(AssetImporter, getAssetItem, AssetImportObject*, (S32 index), (0), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Gets a specific import asset item.\n" + "@param index The index of the AssetImportObject to be returned.\n" + "@return AssetImportObject") { return object->getAssetItem(index); } DefineEngineMethod(AssetImporter, getAssetItemChildCount, S32, (AssetImportObject* assetItem), (nullAsType< AssetImportObject*>()), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Gets number of child items for a given importing asset item.\n" + "@param assetItem The AssetImportObject to get the number of children of.\n" + "@return The number of child items") { if (assetItem == nullptr) return 0; @@ -121,8 +122,10 @@ DefineEngineMethod(AssetImporter, getAssetItemChildCount, S32, (AssetImportObjec } DefineEngineMethod(AssetImporter, getAssetItemChild, AssetImportObject*, (AssetImportObject* assetItem, S32 index), (nullAsType< AssetImportObject*>(), 0), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Gets a specific child item of a given importing asset item.\n" + "@param assetItem The AssetImportObject to get the child from.\n" + "@param index The index of the child to get.\n" + "@return The child AssetImportObect") { if (assetItem == nullptr) return nullptr; @@ -131,31 +134,15 @@ DefineEngineMethod(AssetImporter, getAssetItemChild, AssetImportObject*, (AssetI } DefineEngineMethod(AssetImporter, deleteImportingAsset, void, (AssetImportObject* assetItem), (nullAsType< AssetImportObject*>()), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Deletes an importing AssetImportObject from the import session.\n" + "@param assetItem The AssetImportObject to delete.") { return object->deleteImportingAsset(assetItem); } DefineEngineMethod(AssetImporter, setImportConfig, void, (AssetImportConfig* importConfig), (nullAsType< AssetImportConfig*>()), - "Creates a new script asset using the targetFilePath.\n" - "@return The bool result of calling exec") + "Sets the import config to be used via a AssetImportConfig object.\n" + "@param importConfig The AssetImportConfig object to use.") { return object->setImportConfig(importConfig); } - - -/*DefineEngineFunction(enumColladaForImport, bool, (const char* shapePath, const char* ctrl, bool loadCachedDts), ("", "", true), - "(string shapePath, GuiTreeViewCtrl ctrl) Collect scene information from " - "a COLLADA file and store it in a GuiTreeView control. This function is " - "used by the COLLADA import gui to show a preview of the scene contents " - "prior to import, and is probably not much use for anything else.\n" - "@param shapePath COLLADA filename\n" - "@param ctrl GuiTreeView control to add elements to\n" - "@param loadCachedDts dictates if it should try and load the cached dts file if it exists" - "@return true if successful, false otherwise\n" - "@ingroup Editors\n" - "@internal") -{ - return enumColladaForImport(shapePath, ctrl, loadCachedDts); -}*/ diff --git a/Engine/source/ts/assimp/assimpShapeLoader.cpp b/Engine/source/ts/assimp/assimpShapeLoader.cpp index 17b0a970b..6659f1092 100644 --- a/Engine/source/ts/assimp/assimpShapeLoader.cpp +++ b/Engine/source/ts/assimp/assimpShapeLoader.cpp @@ -425,6 +425,7 @@ bool AssimpShapeLoader::fillGuiTreeView(const char* sourceShapePath, GuiTreeView void AssimpShapeLoader::updateMaterialsScript(const Torque::Path &path) { + return; Torque::Path scriptPath(path); scriptPath.setFileName("materials"); scriptPath.setExtension(TORQUE_SCRIPT_EXTENSION); diff --git a/Engine/source/ts/collada/colladaShapeLoader.cpp b/Engine/source/ts/collada/colladaShapeLoader.cpp index 8021d25f1..7884e1a63 100644 --- a/Engine/source/ts/collada/colladaShapeLoader.cpp +++ b/Engine/source/ts/collada/colladaShapeLoader.cpp @@ -461,6 +461,8 @@ void updateMaterialsScript(const Torque::Path &path, bool copyTextures = false) return; #endif + return; + Torque::Path scriptPath(path); scriptPath.setFileName("materials"); scriptPath.setExtension(TORQUE_SCRIPT_EXTENSION); diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.tscript index 1b42f482f..14023d9b2 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.tscript @@ -85,8 +85,6 @@ function ImportAssetWindow::onWake(%this) %this.importer.targetPath = AssetImportTargetAddress.getText(); %this.importer.targetModuleId = AssetImportTargetModule.getText(); - ImportActivityLog.empty(); - %this.refresh(); } @@ -519,7 +517,8 @@ function ImportAssetWindow::doRefresh(%this) if(ImportAssetWindow.importConfigsList.count() != 0 && EditorSettings.value("Assets/AssetImporDefaultConfig") !$= "" && EditorSettings.value("Assets/AutoImport", false) == true - && ImportAssetWindow.hasImportIssues == false + && ImportAssetWindow.hasImportIssues() == false + && AssetBrowser.isAssetReImport == false && ImportAssetWindow.allowAutoImport) { AssetImportCtrl.setHidden(true); @@ -722,11 +721,7 @@ function NewAssetsPanelInputs::onRightMouseDown(%this) // function ImportAssetWindow::removeImportingAsset(%this) { - ImportActivityLog.add("Removing Asset from Import"); - %this.importer.deleteImportingAsset(ImportAssetActions.assetItem); - - //ImportAssetWindow.refresh(); } function ImportAssetWindow::addNewImportingAsset(%this, %filterType) @@ -924,9 +919,9 @@ function ImportAssetWindow::toggleLogWindow() } ImportLogTextList.clear(); - for(%i=0; %i < ImportActivityLog.count(); %i++) + for(%i=0; %i < ImportAssetWindow.importer.getActivityLogLineCount(); %i++) { - ImportLogTextList.addRow(%i, ImportActivityLog.getKey(%i)); + ImportLogTextList.addRow(%i,ImportAssetWindow.importer.getActivityLogLine(%i)); } } // diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImportConfig.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImportConfig.tscript index 44be3b3ce..39ed541db 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImportConfig.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetImportConfig.tscript @@ -3,12 +3,6 @@ function ImportAssetConfigList::onSelect( %this, %id, %text ) //Apply our settings to the assets echo("Changed our import config!"); - if(ImportActivityLog.count() != 0) - ImportActivityLog.add(""); - - ImportActivityLog.add("Asset Import Configs set to " @ %text); - ImportActivityLog.add(""); - ImportAssetWindow.activeImportConfigIndex = %id; //ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id); @@ -236,12 +230,6 @@ function ImportAssetOptionsWindow::saveAssetOptions(%this) { %success = AssetImportSettings.write(); - if(ImportActivityLog.count() != 0) - ImportActivityLog.add(""); - - ImportActivityLog.add("Asset Import Configs saved, refreshing Import session"); - ImportActivityLog.add(""); - ImportAssetWindow.refresh(); ImportAssetOptionsWindow.setVisible(0); }