Fixes issue with some of the On/Off options not properly toggling in the OptionsMenu

Adds staged loading/generation of preview images for image, shape, material and terrain material types to improve navigation responsiveness
Disabled lookup of bitmap info of image assets for tooltip metadata as it was causing major hangs when the images were high resolution
Added function so Import new File button on AB interface will correctly prompt to find and then import in a new file
Fixed theming of AssetBrowser preview card profiles to improve readability
Fixed theming of ToolsGuiTextListProfile to improve readability
Fixed issue where trying to import in a splat map for importing terrain data could fail due to not having full path when trying to load the bitmap's channel data
Corrected Import Terrain Heightmap item in menubar to prompt creation of a new terrain asset in addition to opening the import terraindata window to avoid missed steps foc creation
This commit is contained in:
JeffR 2022-04-23 16:07:36 -05:00
parent 496f282249
commit 70a70dfc10
12 changed files with 288 additions and 165 deletions

View file

@ -836,11 +836,11 @@ function OptionsMenuSettingsList::addOptionBoolRow(%this, %label, %targetPrefVar
if(%qualityLevelList $= $yesNoList && isInt(%defaultValue)) if(%qualityLevelList $= $yesNoList && isInt(%defaultValue))
{ {
%defaultValue = convertBoolToYesNo(!%defaultValue); %defaultValue = convertBoolToYesNo(%defaultValue);
} }
else if(%qualityLevelList $= $onOffList && isInt(%defaultValue)) else if(%qualityLevelList $= $onOffList && isInt(%defaultValue))
{ {
%defaultValue = convertBoolToOnOff(!%defaultValue); %defaultValue = convertBoolToOnOff(%defaultValue);
} }
return %this.addOptionRow(%label, %targetPrefVar, %qualityLevelList, return %this.addOptionRow(%label, %targetPrefVar, %qualityLevelList,
@ -995,9 +995,11 @@ function MenuOptionsButton::onChange(%this)
OptionsMenu.unappliedChanges.add(%targetVar, "\"" @ %saveReadyValue @ "\"" ); OptionsMenu.unappliedChanges.add(%targetVar, "\"" @ %saveReadyValue @ "\"" );
} }
else else
{
OptionsMenu.unappliedChanges.setValue("\"" @ %saveReadyValue @ "\"", %prefIndex); OptionsMenu.unappliedChanges.setValue("\"" @ %saveReadyValue @ "\"", %prefIndex);
} }
} }
}
else if(%optionMode == 1) else if(%optionMode == 1)
{ {
%currentValue = %this.getValue(); %currentValue = %this.getValue();
@ -1009,7 +1011,9 @@ function MenuOptionsButton::onChange(%this)
OptionsMenu.unappliedChanges.add(%targetVar, "\"" @ %currentValue @ "\"" ); OptionsMenu.unappliedChanges.add(%targetVar, "\"" @ %currentValue @ "\"" );
} }
else else
{
OptionsMenu.unappliedChanges.setValue("\"" @ %currentValue @ "\"", %prefIndex); OptionsMenu.unappliedChanges.setValue("\"" @ %currentValue @ "\"", %prefIndex);
}
} }
//Update the UI in case there's responsive logic //Update the UI in case there's responsive logic

View file

@ -276,6 +276,7 @@ $guiContent = new GuiControl(AssetBrowser) {
hovertime = "1000"; hovertime = "1000";
isContainer = "0"; isContainer = "0";
internalName = "ImportAssetButton"; internalName = "ImportAssetButton";
command="AssetBrowser.importNewFile();";
canSave = "1"; canSave = "1";
canSaveDynamicFields = "0"; canSaveDynamicFields = "0";
}; };

View file

@ -368,8 +368,6 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
%this.previewData.doubleClickCommand = ""; %this.previewData.doubleClickCommand = "";
} }
AssetPreviewArray.empty();
%previewImage = "core/art/warnmat"; %previewImage = "core/art/warnmat";
if(/*%moduleName !$= "" && */ModuleDatabase.findModule(%moduleName, 1) !$= "") if(/*%moduleName !$= "" && */ModuleDatabase.findModule(%moduleName, 1) !$= "")
@ -512,6 +510,7 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
textLocation = "Bottom"; textLocation = "Bottom";
extent = %previewSize.x SPC %previewSize.y + %textBottomPad; extent = %previewSize.x SPC %previewSize.y + %textBottomPad;
buttonType = "RadioButton"; buttonType = "RadioButton";
buttonMargin = "0 -10";
profile = ToolsGuiDefaultProfile; profile = ToolsGuiDefaultProfile;
}; };
@ -528,11 +527,15 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
%previewButton.iconLocation = "Left"; %previewButton.iconLocation = "Left";
%previewButton.textLocation = "Right"; %previewButton.textLocation = "Right";
%previewButton.setextent(120,20); %previewButton.setextent(120,20);
AssetBrowser.previewListMode = true;
} }
else else
{ {
%size = %previewSize.x * %previewScaleSize; %size = %previewSize.x * %previewScaleSize;
%previewButton.setextent(%size,%size + %textBottomPad); %previewButton.setextent(%size,%size + %textBottomPad);
AssetBrowser.previewListMode = false;
} }
//%previewButton.extent = %previewSize.x + %previewBounds SPC %previewSize.y + %previewBounds + 24; //%previewButton.extent = %previewSize.x + %previewBounds SPC %previewSize.y + %previewBounds + 24;
@ -549,6 +552,8 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
%doubleClickCommand = "AssetBrowser.editAsset( "@%assetDesc@" );"; %doubleClickCommand = "AssetBrowser.editAsset( "@%assetDesc@" );";
} }
%this.previewData.previewLoaded = true;
//Build out the preview //Build out the preview
%buildCommand = %this @ ".build" @ %assetType @ "Preview(\"" @ %assetDesc @ "\"," @ %this.previewData @ ");"; %buildCommand = %this @ ".build" @ %assetType @ "Preview(\"" @ %assetDesc @ "\"," @ %this.previewData @ ");";
eval(%buildCommand); eval(%buildCommand);
@ -579,7 +584,8 @@ function AssetBrowser::buildAssetPreview( %this, %asset, %moduleName )
AssetBrowser-->assetList.add(%previewButton); AssetBrowser-->assetList.add(%previewButton);
// add to the array object for reference later // add to the array object for reference later
AssetPreviewArray.add( %previewButton, %this.previewData.previewImage ); if(%this.previewData.previewLoaded == false)
AssetPreviewArray.add( %previewButton );
} }
function AssetBrowser::refresh(%this) function AssetBrowser::refresh(%this)
@ -607,6 +613,25 @@ function AssetBrowser::doRefresh(%this)
%this.dirty = false; %this.dirty = false;
} }
} }
function AssetBrowser::populatePreviewImages(%this)
{
echo("AssetBrowser::populatePreviewImages() - Previews to generate: " @ AssetPreviewArray.count());
for(%i=0; %i < AssetPreviewArray.count(); %i++)
{
%previewButton = AssetPreviewArray.getKey(%i);
%type = %previewButton.assetType;
echo(" - Generating preview for asset: " @ %previewButton.moduleName @ ":" @ %previewButton.assetName);
AssetBrowser.call("generate" @ %previewButton.assetType @ "PreviewImage", %previewButton);
AssetPreviewArray.erase(%i);
echo(" - done, scheduling another pass");
AssetBrowser.schedule(32, "populatePreviewImages");
return;
}
}
// //
// //
/*function AssetPreviewButton::onClick(%this) /*function AssetPreviewButton::onClick(%this)
@ -716,7 +741,6 @@ function AssetBrowser::loadDirectories( %this )
//} //}
// } // }
AssetPreviewArray.empty();
AssetBrowser-->filterTree.buildVisibleTree(true); AssetBrowser-->filterTree.buildVisibleTree(true);
@ -1776,6 +1800,8 @@ function AssetBrowser::doRebuildAssetArray(%this)
for(%i=0; %i < $AssetBrowser::AssetArray.count(); %i++) for(%i=0; %i < $AssetBrowser::AssetArray.count(); %i++)
AssetBrowser.buildAssetPreview( $AssetBrowser::AssetArray.getValue(%i), $AssetBrowser::AssetArray.getKey(%i) ); AssetBrowser.buildAssetPreview( $AssetBrowser::AssetArray.getValue(%i), $AssetBrowser::AssetArray.getKey(%i) );
//Queue population of any non-Type Card preview images
AssetBrowser.schedule(32, "populatePreviewImages");
AssetBrowser_FooterText.text = %finalAssetCount @ " Assets"; AssetBrowser_FooterText.text = %finalAssetCount @ " Assets";

View file

@ -175,20 +175,48 @@ function AssetBrowser::importImageAsset(%this, %assetItem)
AssetDatabase.refreshAsset(%assetId); AssetDatabase.refreshAsset(%assetId);
} }
function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate) function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData)
{ {
if(%forcePreviewRegenerate $= "") //%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getImagePath())));
%forcePreviewRegenerate = false;
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getImagePath()))); %previewData.previewImage = "ToolsModule:genericAssetIcon_image";
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/"; %previewData.previewLoaded = false; //this marks it for loading progressively later
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
//image info
//%info = %assetDef.getImageInfo();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @
"Asset Type: Image Asset\n" @
"Asset Definition ID: " @ %assetDef @ "\n" @
"Image Type: " @ %assetDef.imageType @ "\n" @
/* "Format: " @ getWord(%info, 0) @ "\n" @
"Height: " @ getWord(%info, 1) @ "\n" @
"Width: " @ getWord(%info, 2) @ "\n" @
"Depth: " @ getWord(%info, 3) @ "\n" @ */
"Image File path: " @ %assetDef.getImagePath();
}
function AssetBrowser::generateImageAssetPreviewImage(%this, %previewButton, %forceRegenerate)
{
if(%forceRegenerate $= "")
%forceRegenerate = false;
%previewPath = "tools/resources/previewCache/" @ %previewButton.moduleName @ "/";
if(!IsDirectory(%previewPath)) if(!IsDirectory(%previewPath))
{ {
%this.dirHandler.createFolder(%previewPath); %this.dirHandler.createFolder(%previewPath);
} }
%generatePreview = false; %assetId = %previewButton.moduleName @ ":" @ %previewButton.assetName;
%assetDef = AssetDatabase.acquireAsset(%assetId);
%previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.png"; %previewFilePath = %previewPath @ %assetDef.assetName @ "_Preview.png";
if(!isFile(%previewFilePath) || (compareFileTimes(%assetDef.getImagePath(), %previewFilePath) == 1)) if(!isFile(%previewFilePath) || (compareFileTimes(%assetDef.getImagePath(), %previewFilePath) == 1))
@ -196,12 +224,10 @@ function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData, %f
%generatePreview = true; %generatePreview = true;
} }
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage"; %previewAssetName = %previewButton.moduleName @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview || %forcePreviewRegenerate) if(%generatePreview || %forceRegenerate)
{ {
displayEditorLoadingGui("Generating Image Asset Preview...");
%success = saveScaledImage(%assetDef.getImagePath(), %previewFilePath, EditorSettings.value("Assets/Browser/PreviewImageSize")); %success = saveScaledImage(%assetDef.getImagePath(), %previewFilePath, EditorSettings.value("Assets/Browser/PreviewImageSize"));
if(%success) if(%success)
@ -222,49 +248,28 @@ function AssetBrowser::buildImageAssetPreview(%this, %assetDef, %previewData, %f
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1); %toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath); %success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
if(!%success)
{
return false; //failed to register the preview image for some reason?
} }
} }
else
{ %previewButton.bitmapAsset = %previewAssetName;
%previewFilePath = %assetDef.getImagePath(); return true;
%previewAssetName = %module.moduleId @ ":" @ %assetDef.assetName;
} }
hideEditorLoadingGui();
} }
else else
{ {
%previewAssetName = "ToolsModule:" @ %previewAssetName; //just map the existing one then
} if(AssetDatabase.isDeclaredAsset("ToolsModule:" @ %previewAssetName))
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
{ {
%previewData.previewImage = "ToolsModule:genericAssetIcon_image"; %previewButton.bitmapAsset = "ToolsModule:" @ %previewAssetName;
return true;
} }
else
{
%previewData.previewImage = %previewAssetName;
} }
%previewData.assetName = %assetDef.assetName; return false;
%previewData.assetPath = %assetDef.scriptFile;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
//image info
%info = %assetDef.getImageInfo();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @
"Asset Type: Image Asset\n" @
"Asset Definition ID: " @ %assetDef @ "\n" @
"Image Type: " @ %assetDef.imageType @ "\n" @
"Format: " @ getWord(%info, 0) @ "\n" @
"Height: " @ getWord(%info, 1) @ "\n" @
"Width: " @ getWord(%info, 2) @ "\n" @
"Depth: " @ getWord(%info, 3) @ "\n" @
"Image File path: " @ %assetDef.getImagePath();
} }
//Renames the asset //Renames the asset

View file

@ -426,8 +426,43 @@ function AssetBrowser::importMaterialAsset(%this, %assetItem)
function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate) function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate)
{ {
if(%forcePreviewRegenerate $= "") %previewData.previewImage = "ToolsModule:genericAssetIcon_image";
%forcePreviewRegenerate = false; %previewData.previewLoaded = false; //this marks it for loading progressively later
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.scriptFile;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
if(%this.selectMode)
%previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );";
else
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
%definitionPath = %assetDef.getScriptPath();
if(%definitionPath $= "")
%definitionPath = %assetDef.getFilename();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @
"\nAsset Type: Material Asset" @
"\nAsset Definition ID: " @ %assetDef @
"\nDefinition Path: " @ %definitionPath;
if(!%this.selectMode)
{
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
}
}
function AssetBrowser::generateMaterialAssetPreviewImage(%this, %previewButton, %forceRegenerate)
{
if(%forceRegenerate $= "")
%forceRegenerate = false;
%assetId = %previewButton.moduleName @ ":" @ %previewButton.assetName;
%assetDef = AssetDatabase.acquireAsset(%assetId);
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId())))); %module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId()))));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/"; %previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
@ -456,10 +491,8 @@ function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData,
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage"; %previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview || %forcePreviewRegenerate) if(%generatePreview || %forceRegenerate)
{ {
displayEditorLoadingGui("Generating Material Asset Preview...");
if(isObject(%assetDef.materialDefinitionName)) if(isObject(%assetDef.materialDefinitionName))
{ {
//real fast, we'll be 100% sure that the image resource we need is loaded //real fast, we'll be 100% sure that the image resource we need is loaded
@ -490,50 +523,28 @@ function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData,
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1); %toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath); %success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
if(!%success)
{
return false; //failed to register the preview image for some reason?
} }
} }
else
%previewButton.bitmapAsset = %previewAssetName;
return true;
}
}
else
{
//just map the existing one then
if(AssetDatabase.isDeclaredAsset("ToolsModule:" @ %previewAssetName))
{ {
error("Failed to generate preview for material: " @ %assetDef.materialDefinitionName); %previewButton.bitmapAsset = "ToolsModule:" @ %previewAssetName;
return true;
} }
hideEditorLoadingGui();
}
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
{
%previewData.previewImage = "ToolsModule:materialIcon_image";
}
else
{
%previewData.previewImage = "ToolsModule:" @ %previewAssetName;
} }
%previewData.assetName = %assetDef.assetName; return false;
%previewData.assetPath = %assetDef.scriptFile;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
if(%this.selectMode)
%previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );";
else
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
%definitionPath = %assetDef.getScriptPath();
if(%definitionPath $= "")
%definitionPath = %assetDef.getFilename();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @
"\nAsset Type: Material Asset" @
"\nAsset Definition ID: " @ %assetDef @
"\nDefinition Path: " @ %definitionPath;
if(!%this.selectMode)
{
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
}
} }
function AssetBrowser::onMaterialAssetEditorDropped(%this, %assetDef, %position) function AssetBrowser::onMaterialAssetEditorDropped(%this, %assetDef, %position)

View file

@ -265,8 +265,44 @@ function AssetBrowser::importShapeAsset(%this, %assetItem)
function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate) function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate)
{ {
if(%forcePreviewRegenerate $= "") %previewData.previewImage = "ToolsModule:genericAssetIcon_image";
%forcePreviewRegenerate = false; %previewData.previewLoaded = false; //this marks it for loading progressively later
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = %assetDef.fileName;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @
"Asset Type: Shape Asset\n" @
"Asset Definition ID: " @ %assetDef @ "\n" @
"Shape File path: " @ %assetDef.getShapePath();
if(%this.selectMode)
{
%previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );";
}
else
{
if(EditorSettings.value("Assets/Browser/doubleClickAction", "Edit Asset") $= "Edit Asset")
{
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );";
}
else
{
%previewData.doubleClickCommand = "AssetBrowser.onShapeAssetEditorDropped( "@%assetDef@" );";
}
}
}
function AssetBrowser::generateShapeAssetPreviewImage(%this, %previewButton, %forceRegenerate)
{
if(%forceRegenerate $= "")
%forceRegenerate = false;
%assetId = %previewButton.moduleName @ ":" @ %previewButton.assetName;
%assetDef = AssetDatabase.acquireAsset(%assetId);
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getShapePath()))); %module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(%assetDef.getShapePath())));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/"; %previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
@ -286,10 +322,8 @@ function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData, %f
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage"; %previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview || %forcePreviewRegenerate) if(%generatePreview || %forceRegenerate)
{ {
displayEditorLoadingGui("Generating Shape Asset Preview...");
//real fast, we'll be 100% sure that the image resource we need is loaded //real fast, we'll be 100% sure that the image resource we need is loaded
%matSlot0AssetId = %assetDef.materialSlot0; %matSlot0AssetId = %assetDef.materialSlot0;
@ -322,46 +356,31 @@ function AssetBrowser::buildShapeAssetPreview(%this, %assetDef, %previewData, %f
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1); %toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath); %success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
}
hideEditorLoadingGui(); if(!%success)
{
return false; //failed to register the preview image for some reason?
} }
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
{
%previewData.previewImage = "ToolsModule:genericAssetIcon_image";
} }
else else
{ {
%previewData.previewImage = "ToolsModule:" @ %previewAssetName; %previewAssetName = "ToolsModule:" @ %previewAssetName;
} }
%previewData.assetName = %assetDef.assetName; %previewButton.bitmapAsset = %previewAssetName;
%previewData.assetPath = %assetDef.fileName; return true;
%previewData.assetFriendlyName = %assetDef.assetName;
%previewData.assetDesc = %assetDef.description;
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @ "\n" @
"Asset Type: Shape Asset\n" @
"Asset Definition ID: " @ %assetDef @ "\n" @
"Shape File path: " @ %assetDef.getShapePath();
if(%this.selectMode)
{
%previewData.doubleClickCommand = "AssetBrowser.selectAsset( AssetBrowser.selectedAsset );";
} }
else else
{ {
if(EditorSettings.value("Assets/Browser/doubleClickAction", "Edit Asset") $= "Edit Asset") //just map the existing one then
if(AssetDatabase.isDeclaredAsset("ToolsModule:" @ %previewAssetName))
{ {
%previewData.doubleClickCommand = "AssetBrowser.editAsset( "@%assetDef@" );"; %previewButton.bitmapAsset = "ToolsModule:" @ %previewAssetName;
} return true;
else
{
%previewData.doubleClickCommand = "AssetBrowser.onShapeAssetEditorDropped( "@%assetDef@" );";
} }
} }
return false;
} }
function AssetBrowser::onShapeAssetEditorDropped(%this, %assetDef, %position) function AssetBrowser::onShapeAssetEditorDropped(%this, %assetDef, %position)

View file

@ -111,8 +111,35 @@ function AssetBrowser::moveTerrainMaterialAsset(%this, %assetDef, %destination)
function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate) function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previewData, %forcePreviewRegenerate)
{ {
if(%forcePreviewRegenerate $= "") %previewData.previewImage = "ToolsModule:genericAssetIcon_image";
%forcePreviewRegenerate = false; %previewData.previewLoaded = false; //this marks it for loading progressively later
%previewData.assetName = %assetDef.assetName;
%previewData.assetPath = "";
%previewData.doubleClickCommand = "";
%previewData.assetFriendlyName = %assetDef.gameObjectName;
%previewData.assetDesc = %assetDef.description;
%previewData.tooltip = %assetDef.gameObjectName;
%definitionPath = %assetDef.getScriptPath();
if(%definitionPath $= "")
%definitionPath = %assetDef.getFilename();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @
"\nAsset Type: Terrain Material Asset" @
"\nAsset Definition ID: " @ %assetDef @
"\nDefinition Path: " @ %definitionPath;
}
function AssetBrowser::generateTerrainMaterialAssetPreviewImage(%this, %previewButton, %forceRegenerate)
{
if(%forceRegenerate $= "")
%forceRegenerate = false;
%assetId = %previewButton.moduleName @ ":" @ %previewButton.assetName;
%assetDef = AssetDatabase.acquireAsset(%assetId);
%module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId())))); %module = %this.dirHandler.getModuleFromAddress(makeRelativePath(filePath(AssetDatabase.getAssetFilePath(%assetDef.getAssetId()))));
%previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/"; %previewPath = "tools/resources/previewCache/" @ %module.moduleId @ "/";
@ -141,10 +168,8 @@ function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previ
%previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage"; %previewAssetName = %module.moduleId @ "_" @ %assetDef.assetName @ "_PreviewImage";
if(%generatePreview || %forcePreviewRegenerate) if(%generatePreview || %forceRegenerate)
{ {
displayEditorLoadingGui("Generating Material Asset Preview...");
if(isObject(%assetDef.materialDefinitionName)) if(isObject(%assetDef.materialDefinitionName))
{ {
%previewShapeDef = AssetDatabase.acquireAsset("ToolsModule:previewSphereShape"); %previewShapeDef = AssetDatabase.acquireAsset("ToolsModule:previewSphereShape");
@ -169,38 +194,28 @@ function AssetBrowser::buildTerrainMaterialAssetPreview(%this, %assetDef, %previ
%toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1); %toolsModuleDef = ModuleDatabase.findModule("ToolsModule",1);
%success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath); %success = AssetDatabase.addDeclaredAsset(%toolsModuleDef, %previewImgAssetPath);
if(!%success)
{
return false; //failed to register the preview image for some reason?
} }
} }
hideEditorLoadingGui(); %previewButton.bitmapAsset = %previewAssetName;
return true;
} }
//Revalidate. If it didn't work, just use the default placeholder one
if(!isFile(%previewFilePath))
{
%previewData.previewImage = "ToolsModule:terrainMaterialIcon_image";
} }
else else
{ {
%previewData.previewImage = "ToolsModule:" @ %previewAssetName; //just map the existing one then
if(AssetDatabase.isDeclaredAsset("ToolsModule:" @ %previewAssetName))
{
%previewButton.bitmapAsset = "ToolsModule:" @ %previewAssetName;
return true;
}
} }
%previewData.assetName = %assetDef.assetName; return false;
%previewData.assetPath = "";
%previewData.doubleClickCommand = "";
%previewData.assetFriendlyName = %assetDef.gameObjectName;
%previewData.assetDesc = %assetDef.description;
%previewData.tooltip = %assetDef.gameObjectName;
%definitionPath = %assetDef.getScriptPath();
if(%definitionPath $= "")
%definitionPath = %assetDef.getFilename();
%previewData.tooltip = "Asset Name: " @ %assetDef.assetName @
"\nAsset Type: Terrain Material Asset" @
"\nAsset Definition ID: " @ %assetDef @
"\nDefinition Path: " @ %definitionPath;
} }
function GuiInspectorTypeTerrainMaterialAssetPtr::onClick( %this, %fieldName ) function GuiInspectorTypeTerrainMaterialAssetPtr::onClick( %this, %fieldName )

View file

@ -139,6 +139,33 @@ function newAssetUpdatePath(%newPath)
NewAssetTargetModule.text = AssetBrowser.dirHandler.getModuleFromAddress(AssetBrowser.dirHandler.currentAddress).ModuleId; NewAssetTargetModule.text = AssetBrowser.dirHandler.getModuleFromAddress(AssetBrowser.dirHandler.currentAddress).ModuleId;
} }
//
function AssetBrowser::importNewFile(%this)
{
%importingPath = "";
%dlg = new OpenFileDialog()
{
Filters = "(All Files (*.*)|*.*|";
DefaultFile = "";
ChangePath = false;
MustExist = true;
MultipleFiles = false;
forceRelativePath = false;
};
if ( %dlg.Execute() )
{
%importingPath = makeFullPath(%dlg.FileName);
}
%dlg.delete();
AssetBrowser.onBeginDropFiles();
AssetBrowser.onDropFile(%importingPath);
AssetBrowser.onEndDropFiles();
}
// //
function NewAssetTargetModule::onSelect(%this, %idx, %idy) function NewAssetTargetModule::onSelect(%this, %idx, %idy)
{ {

View file

@ -1,7 +1,7 @@
singleton GuiControlProfile(AssetBrowserPreviewImageAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewImageAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
//fillColorNA = "230 126 0 255"; //fill color default fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "230 126 0 255"; borderColor = "230 126 0 255";
@ -10,7 +10,8 @@ singleton GuiControlProfile(AssetBrowserPreviewImageAsset : ToolsGuiDefaultProfi
singleton GuiControlProfile(AssetBrowserPreviewMaterialAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewMaterialAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "0 100 0 255"; borderColor = "0 100 0 255";
@ -19,7 +20,8 @@ singleton GuiControlProfile(AssetBrowserPreviewMaterialAsset : ToolsGuiDefaultPr
singleton GuiControlProfile(AssetBrowserPreviewShapeAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewShapeAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "0 0 200 255"; borderColor = "0 0 200 255";
@ -28,7 +30,8 @@ singleton GuiControlProfile(AssetBrowserPreviewShapeAsset : ToolsGuiDefaultProfi
singleton GuiControlProfile(AssetBrowserPreviewShapeAnimationAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewShapeAnimationAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "0 0 200 255"; borderColor = "0 0 200 255";
@ -37,7 +40,8 @@ singleton GuiControlProfile(AssetBrowserPreviewShapeAnimationAsset : ToolsGuiDef
singleton GuiControlProfile(AssetBrowserPreviewSoundAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewSoundAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "75 101 135 255"; borderColor = "75 101 135 255";
@ -46,7 +50,8 @@ singleton GuiControlProfile(AssetBrowserPreviewSoundAsset : ToolsGuiDefaultProfi
singleton GuiControlProfile(AssetBrowserPreviewTerrainAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewTerrainAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "200 198 198 255"; borderColor = "200 198 198 255";
@ -55,7 +60,8 @@ singleton GuiControlProfile(AssetBrowserPreviewTerrainAsset : ToolsGuiDefaultPro
singleton GuiControlProfile(AssetBrowserPreviewTerrainMaterialAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewTerrainMaterialAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "200 198 198 255"; borderColor = "200 198 198 255";
@ -64,7 +70,8 @@ singleton GuiControlProfile(AssetBrowserPreviewTerrainMaterialAsset : ToolsGuiDe
singleton GuiControlProfile(AssetBrowserPreviewStateMachineAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewStateMachineAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "0 76 135 255"; borderColor = "0 76 135 255";
@ -73,7 +80,8 @@ singleton GuiControlProfile(AssetBrowserPreviewStateMachineAsset : ToolsGuiDefau
singleton GuiControlProfile(AssetBrowserPreviewGUIAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewGUIAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "17 5 44 255"; borderColor = "17 5 44 255";
@ -82,7 +90,8 @@ singleton GuiControlProfile(AssetBrowserPreviewGUIAsset : ToolsGuiDefaultProfile
singleton GuiControlProfile(AssetBrowserPreviewLevelAsset : ToolsGuiDefaultProfile) singleton GuiControlProfile(AssetBrowserPreviewLevelAsset : ToolsGuiDefaultProfile)
{ {
fillColor = "128 128 128 255"; //hovered/selected fillcolor = EditorSettings.value("Theme/windowBackgroundColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
border = true; border = true;
borderColor = "0 208 186 255"; borderColor = "0 208 186 255";

View file

@ -285,6 +285,12 @@ new GuiControlProfile( ToolsGuiTextArrayProfile : ToolsGuiTextProfile )
if( !isObject( ToolsGuiTextListProfile ) ) if( !isObject( ToolsGuiTextListProfile ) )
new GuiControlProfile( ToolsGuiTextListProfile : ToolsGuiTextProfile ) new GuiControlProfile( ToolsGuiTextListProfile : ToolsGuiTextProfile )
{ {
fontColor = EditorSettings.value("Theme/fieldTextColor");
fontColorHL = EditorSettings.value("Theme/fieldTextHLColor");
fontColorSEL = EditorSettings.value("Theme/fieldTextSELColor");
fillColor = EditorSettings.value("Theme/fieldBGColor");
fillColorHL = EditorSettings.value("Theme/fieldBGHLColor");
fillColorSEL = EditorSettings.value("Theme/fieldBGSELColor");
tab = true; tab = true;
canKeyFocus = true; canKeyFocus = true;
category = "Tools"; category = "Tools";

View file

@ -586,7 +586,7 @@ function TerrainImportGuiAddOpacityMap( %name )
// once per channel in the file // once per channel in the file
// currently it works with just grayscale. // currently it works with just grayscale.
%channelsTxt = "R" TAB "G" TAB "B" TAB "A"; %channelsTxt = "R" TAB "G" TAB "B" TAB "A";
%bitmapInfo = getBitmapinfo( %name ); %bitmapInfo = getBitmapinfo( makeFullPath(%name) );
%channelCount = getWord( %bitmapInfo, 2 ); %channelCount = getWord( %bitmapInfo, 2 );

View file

@ -158,7 +158,7 @@ function EditorGui::buildMenus(%this)
//%fileMenu.appendItem("Create Blank Terrain" TAB "" TAB "Canvas.pushDialog( CreateNewTerrainGui );"); //%fileMenu.appendItem("Create Blank Terrain" TAB "" TAB "Canvas.pushDialog( CreateNewTerrainGui );");
%fileMenu.appendItem("Create Blank Terrain" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainAsset\", AssetBrowser.selectedModule, createTerrainBlock);"); %fileMenu.appendItem("Create Blank Terrain" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainAsset\", AssetBrowser.selectedModule, createTerrainBlock);");
%fileMenu.appendItem("Import Terrain Heightmap" TAB "" TAB "Canvas.pushDialog( TerrainImportGui );"); %fileMenu.appendItem("Import Terrain Heightmap" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"TerrainAsset\", AssetBrowser.selectedModule, createTerrainBlock); Canvas.pushDialog( TerrainImportGui );");
%fileMenu.appendItem("Export Terrain Heightmap" TAB "" TAB "Canvas.pushDialog( TerrainExportGui );"); %fileMenu.appendItem("Export Terrain Heightmap" TAB "" TAB "Canvas.pushDialog( TerrainExportGui );");
%fileMenu.appendItem("-"); %fileMenu.appendItem("-");