From 2f5f585aaf0559315e928688ee428a18c1224236 Mon Sep 17 00:00:00 2001 From: Areloch Date: Sat, 7 Aug 2021 02:36:38 -0500 Subject: [PATCH] Fixed logic for parsing registerDatablock paths to trim script extensions during import conversion Fixed creation of materialAsset from AB to properly generate companion script file Fixed logic in project import that if we import in a legacy module script, we get rid of the newly generated one in favor of the old one --- Engine/source/T3D/assets/assetImporter.cpp | 42 +++++++++++++++---- .../scripts/assetTypes/material.tscript | 21 +++------- .../scripts/materialEditor.ed.tscript | 2 +- .../pre40/T3Dpre4ProjectImporter.tscript | 2 +- .../scripts/projectImporter.tscript | 17 ++++++++ 5 files changed, 60 insertions(+), 24 deletions(-) diff --git a/Engine/source/T3D/assets/assetImporter.cpp b/Engine/source/T3D/assets/assetImporter.cpp index 5fb305693..c1758a44a 100644 --- a/Engine/source/T3D/assets/assetImporter.cpp +++ b/Engine/source/T3D/assets/assetImporter.cpp @@ -3127,19 +3127,47 @@ Torque::Path AssetImporter::importShapeAsset(AssetImportObject* assetItem) return ""; } - if (!isInPlace && Platform::isFile(qualifiedFromCSFile)) + if (!isInPlace) { - if(!dPathCopy(qualifiedFromCSFile, qualifiedToCSFile, !isReimport)) + if (Platform::isFile(qualifiedFromCSFile)) { - dSprintf(importLogBuffer, sizeof(importLogBuffer), "Error! Unable to copy file %s", qualifiedFromCSFile); + if (!dPathCopy(qualifiedFromCSFile, qualifiedToCSFile, !isReimport)) + { + dSprintf(importLogBuffer, sizeof(importLogBuffer), "Error! Unable to copy file %s", qualifiedFromCSFile); + activityLog.push_back(importLogBuffer); + } + else + { + //We successfully copied the original constructor file, so no extra work required + makeNewConstructor = false; + dSprintf(importLogBuffer, sizeof(importLogBuffer), "Successfully copied original TSShape Constructor file %s", qualifiedFromCSFile); + activityLog.push_back(importLogBuffer); + } + } + } + else + { + //We're doing an in-place import, so double check we've already got a constructor file in the expected spot + if (Platform::isFile(qualifiedFromCSFile)) + { + //Yup, found it, we're good to go + makeNewConstructor = false; + dSprintf(importLogBuffer, sizeof(importLogBuffer), "Existing TSShape Constructor file %s found", qualifiedFromCSFile); activityLog.push_back(importLogBuffer); } else { - //We successfully copied the original constructor file, so no extra work required - makeNewConstructor = false; - dSprintf(importLogBuffer, sizeof(importLogBuffer), "Successfully copied original TSShape Constructor file %s", qualifiedFromCSFile); - activityLog.push_back(importLogBuffer); + //Didn't work, but it's possible it's using the old .cs extension when our extension variable is set to something else, so check that one as well just to be sure + Torque::Path constrFilePath = qualifiedFromCSFile; + constrFilePath.setExtension("cs"); + + if (Platform::isFile(constrFilePath.getFullPath().c_str())) + { + //Yup, found it, we're good to go + makeNewConstructor = false; + dSprintf(importLogBuffer, sizeof(importLogBuffer), "Existing TSShape Constructor file %s found", constrFilePath.getFullPath().c_str()); + activityLog.push_back(importLogBuffer); + } } } } diff --git a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/material.tscript b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/material.tscript index 48c97ebf5..ddcdb6214 100644 --- a/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/material.tscript +++ b/Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/material.tscript @@ -8,18 +8,21 @@ function AssetBrowser::createMaterialAsset(%this) %assetPath = AssetBrowser.dirHandler.currentAddress @ "/"; %tamlpath = %assetPath @ %assetName @ ".asset.taml"; - %sgfPath = %assetPath @ %assetName @ ".sgf"; + %scriptPath = %assetPath @ %assetName @ "." @ $TorqueScriptFileExtension; %asset = new MaterialAsset() { AssetName = %assetName; versionId = 1; - shaderData = ""; - shaderGraph = %sgfPath; + materialDefinitionName = %assetName; + scriptFile = %assetName @ "." @ $TorqueScriptFileExtension; }; TamlWrite(%asset, %tamlpath); + %mat = new Material(%assetName); + %mat.save(%scriptPath); + %moduleDef = ModuleDatabase.findModule(%moduleName, 1); AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath); @@ -43,18 +46,6 @@ function AssetBrowser::editMaterialAsset(%this, %assetDef) MaterialEditorGui.setActiveMaterial( %assetDef.materialDefinitionName ); AssetBrowser.hideDialog(); - - // - // - /*%assetDef.materialDefinitionName.reload(); - $Tools::materialEditorList = ""; - EWorldEditor.clearSelection(); - MaterialEditorGui.currentObject = 0; - MaterialEditorGui.currentMode = "asset"; - MaterialEditorGui.currentMaterial = %assetDef.materialDefinitionName; - MaterialEditorGui.setActiveMaterial( %assetDef.materialDefinitionName); - EditorGui.setEditor(MaterialEditorPlugin); - AssetBrowser.hideDialog();*/ } //Renames the asset diff --git a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript index afed77291..94c3a021c 100644 --- a/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript +++ b/Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript @@ -340,7 +340,7 @@ function MaterialEditorGui::prepareActiveObject( %this, %override ) { %fieldName = %obj.getField(%i); - if( %obj.getFieldType(%fieldName) !$= "TypeMaterialAssetId" && %obj.getFieldType(%fieldName) !$= "TypeMaterialName") + if( %obj.getFieldType(%fieldName) !$= "TypeMaterialAssetId" /*&& %obj.getFieldType(%fieldName) !$= "TypeMaterialName"*/) continue; if( !%canSupportMaterial ) diff --git a/Templates/BaseGame/game/tools/projectImporter/scripts/pre40/T3Dpre4ProjectImporter.tscript b/Templates/BaseGame/game/tools/projectImporter/scripts/pre40/T3Dpre4ProjectImporter.tscript index adc197bc1..bdc29ac8b 100644 --- a/Templates/BaseGame/game/tools/projectImporter/scripts/pre40/T3Dpre4ProjectImporter.tscript +++ b/Templates/BaseGame/game/tools/projectImporter/scripts/pre40/T3Dpre4ProjectImporter.tscript @@ -505,7 +505,7 @@ function T3Dpre4ProjectImporter::beginCodeFilesImport(%this) } } } - else if(strIsMatchExpr("*datablock*(*)*", %line)) + else if(strIsMatchExpr("*datablock*(*)*", %line) && (strPos(%line, "registerDatablock") == -1)) { %className = findObjectClass(%line, "datablock"); diff --git a/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript b/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript index 1c5e2dee8..7d13f93fd 100644 --- a/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript +++ b/Templates/BaseGame/game/tools/projectImporter/scripts/projectImporter.tscript @@ -263,6 +263,23 @@ function ProjectImportWizardPage4::openPage(%this) $ProjectImporter::importTool.copyFiles(); else ProjectImportWindow.nextStep(); + + //if we gen'd a new module setup, double check we didn't copy over a module script file under a legacy extension + if(!$ProjectImporter::useExistingModule) + { + %newModuleName = $ProjectImporter::moduleName; + %moduleFilePath = "data/" @ %newModuleName; + + if($TorqueScriptFileExtension !$= "cs") + { + %moduleScriptFilePath = %moduleFilePath @ "/" @ %newModuleName @ ".cs"; + if(isFile(%moduleScriptFilePath)) + { + //yep, that exists, so we'll assume it was the file we wanted, so remove the generated one + fileDelete(%moduleFilePath @ "/" @ %newModuleName @ "." @ $TorqueScriptFileExtension); + } + } + } } function ProjectImportWizardPage4::processPage(%this)