Adds console function to compare file modified times

Adds console function to save a scaled image
Improved logic of generating previews for shape, material and image assets to regen if original asset loose file was modified
Added logic to generate scaled preview image for material and image assets to improve load times of AB
This commit is contained in:
Areloch 2021-08-08 16:20:58 -05:00
parent 555c563b39
commit 34f0f01cea
6 changed files with 206 additions and 41 deletions

View file

@ -172,15 +172,55 @@ function AssetBrowser::importImageAsset(%this, %assetItem)
function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData)
{
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getImagePath())));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
if(!IsDirectory(%previewPath))
{
%this.dirHandler.createFolder(%previewPath);
}
%generatePreview = false;
%previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.png";
if(!isFile(%previewFilePath) || (compareFileTimes(%assetDef.getImagePath(), %previewFilePath) == 1))
{
%generatePreview = true;
}
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview)
{
displayEditorLoadingGui("Generating Image Asset Preview...");
%success = saveScaledImage(%assetDef.getImagePath(), %previewFilePath);
%previewAsset = new ImageAsset()
{
assetName = %previewAssetName;
versionId = 1;
imageFile = fileName(%previewFilePath);
};
%previewImgAssetPath = %previewPath @ %previewAsset.assetName @ ".asset.taml";
%assetImportSuccessful = TAMLWrite(%previewAsset, %previewImgAssetPath);
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
hideEditorLoadingGui();
}
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
%previewAssetName = "ToolsModule:genericAssetIcon_image";
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile;
//%previewData.doubleClickCommand = "EditorOpenFileInTorsion( "@%previewData.assetPath@", 0 );";
%imageFilePath = %assetDef.getImagePath();
if(isFile(%imageFilePath))
%previewData.previewImage = %imageFilePath;
else
%previewData.previewImage = "core/rendering/images/unavailable";
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;//%assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;

View file

@ -423,41 +423,77 @@ function AssetBrowser::importMaterialAsset(%this, %assetItem)
function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData)
{
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getScriptPath())));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
if(!IsDirectory(%previewPath))
{
%this.dirHandler.createFolder(%previewPath);
}
%generatePreview = false;
%previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.png";
if(!isFile(%previewFilePath) || (compareFileTimes(%assetDef.getImagePath(), %previewFilePath) == 1))
{
%generatePreview = true;
}
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview)
{
displayEditorLoadingGui("Generating Material Asset Preview...");
if(isObject(%assetDef.materialDefinitionName))
{
if(isFile(%assetDef.materialDefinitionName.getDiffuseMap(0)))
{
%difMap = %assetDef.materialDefinitionName.getDiffuseMap(0);
}
else if(%assetDef.materialDefinitionName.getDiffuseMapAsset(0) !$= "")
{
%imgAsset = AssetDatabase.acquireAsset(%assetDef.materialDefinitionName.getDiffuseMapAsset(0));
%difMap = %imgAsset.getImagePath();
}
//%success = saveScaledImage(%difMap, %previewFilePath);
%previewAsset = new ImageAsset()
{
assetName = %previewAssetName;
versionId = 1;
imageFile = fileName(%previewFilePath);
};
%previewImgAssetPath = %previewPath @ %previewAsset.assetName @ ".asset.taml";
%assetImportSuccessful = TAMLWrite(%previewAsset, %previewImgAssetPath);
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
}
hideEditorLoadingGui();
}
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
%previewAssetName = "ToolsModule:genericAssetIcon_image";
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile;
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;//%assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
//Lotta prepwork
/*%previewData.doubleClickCommand = %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();";*/
if(%this.selectMode)
%previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );";
else
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
%previewData.previewImage = "ToolsModule:materialIcon_image";
if(isObject(%assetDef.materialDefinitionName))
{
if(isFile(%assetDef.materialDefinitionName.getDiffuseMap(0)))
%previewData.previewImage = %assetDef.materialDefinitionName.getDiffuseMap(0);
else if(%assetDef.materialDefinitionName.getDiffuseMapAsset(0) !$= "")
{
%imgAsset = AssetDatabase.acquireAsset(%assetDef.materialDefinitionName.getDiffuseMapAsset(0));
%previewData.previewImage = %imgAsset.getImagePath();
}
//add cubemap preview here(for skybox materials)
}
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @
"Asset Type: Material Asset\n" @
"Asset Definition ID: " @ %assetDef;

View file

@ -245,15 +245,24 @@ function AssetBrowser::importShapeAsset(%this, %assetItem)
function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData)
{
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getShapeFile())));
%previewPath = "tools/resources/shapePreviewCache/" @ %module.moduleId @ "/";
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
if(!IsDirectory(%previewPath))
{
%this.dirHandler.createFolder(%previewPath);
}
%generatePreview = false;
%previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.png";
if(!isFile(%previewFilePath))
if(!isFile(%previewFilePath) || (compareFileTimes(%assetDef.getShapeFile(), %previewFilePath) == 1))
{
%generatePreview = true;
}
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview)
{
displayEditorLoadingGui("Generating Shape Asset Preview...");
@ -275,15 +284,15 @@ function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData)
$TSLastDetail::dumpImposters = %oldImposterSetting;
%newAsset = new ImageAsset()
%previewAsset = new ImageAsset()
{
assetName = %assetDef.assetName @ "_PreviewImage";
assetName = %previewAssetName;
versionId = 1;
imageFile = fileName(%previewFilePath);
};
%previewImgAssetPath = %previewPath @ %newAsset.assetName @ ".asset.taml";
%assetImportSuccessful = TAMLWrite(%newAsset, %previewImgAssetPath);
%previewImgAssetPath = %previewPath @ %previewAsset.assetName @ ".asset.taml";
%assetImportSuccessful = TAMLWrite(%previewAsset, %previewImgAssetPath);
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
@ -294,12 +303,12 @@ function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData)
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
%previewFilePath = "ToolsModule:genericAssetIcon_image";
%previewAssetName = "ToolsModule:genericAssetIcon_image";
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.fileName;
%previewData.previewImage = "ToolsModule:" @ %assetDef.assetName @ "_PreviewImage";//%assetDef.fileName;
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;//%assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;