Browse Source

Adds logic to up-convert non-embedded terrain materials and materials to have embedded definitions

JeffR 3 years ago
parent
commit
c2857efe28

+ 18 - 1
Templates/BaseGame/game/tools/materialEditor/scripts/materialEditor.ed.tscript

@@ -1963,7 +1963,24 @@ function MaterialEditorGui::save( %this )
       MaterialEditorGui.copyMaterials( materialEd_previewMaterial, notDirtyMaterial );
       
       %assetDef = AssetDatabase.acquireAsset(MaterialEditorGui.currentMaterialAsset);
-      %assetDef.saveAsset(); //write it out
+      %didEmbed = false;
+      %matScriptFile = %assetDef.getScriptPath();
+      if(%matScriptFile !$= "")
+      {
+         //lets up-convert to embedded
+         %assetDef.add(%assetDef.materialDefinitionName);
+         %assetDef.scriptFile = "";
+         %didEmbed = true;
+      }
+      
+      //write it out
+      if(%assetDef.saveAsset())
+      {
+         if(%didEmbed)
+         {
+            fileDelete(%matScriptFile); //cleanup the old definition file  
+         }
+      }
    }
    else
    {

+ 20 - 1
Templates/BaseGame/game/tools/worldEditor/scripts/interfaces/terrainMaterialDlg.ed.tscript

@@ -778,7 +778,26 @@ function TerrainMaterialDlg::saveDirtyMaterial( %this, %materialAssetId )
    %fxMat.customImpactSound = getField(%impactSound, 1);
    
    //Save the material asset
-   %assetDef.saveAsset();
+   %didEmbed = false;
+   %matScriptFile = %assetDef.getScriptPath();
+   if(%matScriptFile !$= "")
+   {
+      //lets up-convert to embedded
+      %assetDef.add(%mat);
+      %assetDef.add(%fxMat);
+      %assetDef.scriptFile = "";
+      %didEmbed = true;
+   }
+   
+   //write it out
+   if(%assetDef.saveAsset())
+   {
+      if(%didEmbed)
+      {
+         fileDelete(%matScriptFile); //cleanup the old definition file  
+      }
+   }
+
    %this.schedule(32, "cleanupDirtyMaterial");
 }