mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-12 15:14:35 +00:00
Added/Improved some asset type icons
Renamed current default import config to DefaultConfig Updated Asset Browser UI layout. Fixed sizing behavior for Edit Asset window Fixed sizing behavior for Edit Module window Implemented Collection Sets system Implemented handling of non-asset loose files for AB Initial handling logic for prefabs for AB Updated Asset Importer to hook into C++ AssetImporter Made Add Module window properly reset module name field when opened Overhauled entire AB search system so it can use phrases and compound search logic Overhauled asset previews to utilize single guiIconButtonCtrl for efficiency and stability Updated Asset Preview Drag-n-drop to work with new previews Begun initial work with Tags integration into AB - currently only works with datablock categories Bugin initial work with Creator classes - currently only populates category lists, no items Added logic for scanning current AB directory for non-asset loose files, and activating an Auto-Import button if any are found Added ability to drag-n-drop datablocks from AB and spawn requisite object Stabilized drag-n-drop behavior of ShapeAssets, so when spawned, it'll find a much more sane drop position Fixed shapeAsset fields for drag-n-drop behavior so it correctly sets field now Adjusted folder and asset search fields in AB to utilize placeholder text Added logic when creating new module to prompt auto-populating common default folders Shifted preview size to slider Added logic to MenuBuilder so popup menus can utilize bitmap arrays Added editor setting for if to display loose files in AB Minor theme color corrections for some profiles
This commit is contained in:
parent
67dbe4dfe2
commit
4adcedcf28
42 changed files with 1944 additions and 1160 deletions
|
|
@ -19,6 +19,11 @@
|
|||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
function AssetBrowser_addModuleWindow::onWake(%this)
|
||||
{
|
||||
%this-->ModuleName.setText("");
|
||||
}
|
||||
|
||||
function AssetBrowser_addModuleWindow::onGainFirstResponder(%this)
|
||||
{
|
||||
%this-->moduleName.setFirstResponder();
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -24,8 +24,10 @@ function ImportAssetWindow::showDialog(%this)
|
|||
{
|
||||
//prep the import control
|
||||
Canvas.pushDialog(AssetImportCtrl);
|
||||
AssetImportCtrl.setHidden(true);
|
||||
|
||||
AssetImportCtrl.setHidden(false);
|
||||
|
||||
ImportAssetWindow.allowAutoImport = true; //special-case override for if we want to force a manual import process
|
||||
|
||||
ImportAssetWindow.assetHeirarchyChanged = false;
|
||||
|
||||
%defaultConfig = EditorSettings.value("Assets/AssetImporDefaultConfig", "");
|
||||
|
|
@ -45,14 +47,15 @@ function ImportAssetWindow::showDialog(%this)
|
|||
function ImportAssetWindow::Close(%this)
|
||||
{
|
||||
//Some cleanup
|
||||
ImportAssetWindow.importingFilesArray.empty();
|
||||
ImportAssetWindow.importer.resetImportSession(true);
|
||||
//ImportAssetWindow.importingFilesArray.empty();
|
||||
|
||||
%this.importTempDirHandler.deleteFolder("tools/assetBrowser/importTemp/*/");
|
||||
|
||||
if(ImportAssetWindow.isAwake())
|
||||
ImportAssetWindow.refresh();
|
||||
|
||||
ImportAssetItems.empty();
|
||||
//ImportAssetItems.empty();
|
||||
|
||||
Canvas.popDialog();
|
||||
}
|
||||
|
|
@ -124,7 +127,6 @@ function getImageInfo(%file)
|
|||
//This lets us go and look for a image at the importing directory as long as it matches the material name
|
||||
function findImageFile(%path, %materialName, %type)
|
||||
{
|
||||
|
||||
if(isFile(%path @ "/" @ %materialName @ ".jpg"))
|
||||
return %path @ "/" @ %materialName @ ".jpg";
|
||||
else if(isFile(%path @ "/" @ %materialName @ ".png"))
|
||||
|
|
@ -173,7 +175,9 @@ function AssetBrowser::onDropFile( %this, %filePath )
|
|||
if(!%this.isVisible())
|
||||
return;
|
||||
|
||||
%fileExt = fileExt( %filePath );
|
||||
ImportAssetWindow.importer.addImportingFile(%filePath);
|
||||
|
||||
/*%fileExt = fileExt( %filePath );
|
||||
//add it to our array!
|
||||
if(isImageFormat(%fileExt))
|
||||
%assetItem = %this.addImportingAsset("ImageAsset", %filePath);
|
||||
|
|
@ -194,13 +198,13 @@ function AssetBrowser::onDropFile( %this, %filePath )
|
|||
{
|
||||
SessionImportAssetItems.add(%assetItem);
|
||||
ImportAssetItems.add(%assetItem);
|
||||
}
|
||||
}*/
|
||||
|
||||
//Used to keep tabs on what files we were trying to import, used mainly in the event of
|
||||
//adjusting configs and needing to completely reprocess the import
|
||||
//ensure we're not doubling-up on files by accident
|
||||
if(ImportAssetWindow.importingFilesArray.getIndexFromKey(%filePath) == -1)
|
||||
ImportAssetWindow.importingFilesArray.add(%filePath);
|
||||
//if(ImportAssetWindow.importingFilesArray.getIndexFromKey(%filePath) == -1)
|
||||
// ImportAssetWindow.importingFilesArray.add(%filePath);
|
||||
}
|
||||
|
||||
function AssetBrowser::onDropZipFile(%this, %filePath)
|
||||
|
|
@ -334,8 +338,10 @@ function AssetBrowser::addImportingAsset( %this, %assetType, %filePath, %parentA
|
|||
%moduleName = AssetBrowser.SelectedModule;
|
||||
ImportAssetModuleList.text = %moduleName;
|
||||
|
||||
%assetName = strreplace( %assetName, " ", "_" );
|
||||
|
||||
//Add to our main list
|
||||
%assetItem = new ScriptObject()
|
||||
%assetItem = new AssetImportObject()
|
||||
{
|
||||
assetType = %assetType;
|
||||
filePath = %filePath;
|
||||
|
|
@ -350,33 +356,9 @@ function AssetBrowser::addImportingAsset( %this, %assetType, %filePath, %parentA
|
|||
skip = false;
|
||||
processed = false;
|
||||
generatedAsset = false;
|
||||
childAssetItems = new ArrayObject(){};
|
||||
};
|
||||
|
||||
if(%parentAssetItem !$= "")
|
||||
{
|
||||
ImportActivityLog.add("Added Child Importing Asset to " @ %parentAssetItem.assetName);
|
||||
}
|
||||
else
|
||||
{
|
||||
ImportActivityLog.add("Added Importing Asset");
|
||||
}
|
||||
|
||||
ImportActivityLog.add(" Asset Info: Name: " @ %assetName @ " | Type: " @ %assetType);
|
||||
|
||||
if(%filePath !$= "")
|
||||
ImportActivityLog.add(" File: " @ %filePath);
|
||||
|
||||
if(%parentAssetItem $= "")
|
||||
{
|
||||
%asd = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
%parentAssetItem.childAssetItems.add(%assetItem);
|
||||
}
|
||||
|
||||
ImportAssetWindow.refresh();
|
||||
ImportAssetWindow.importer.addImportingAssetItem(%assetItem, %parentAssetItem);
|
||||
|
||||
return %assetItem;
|
||||
}
|
||||
|
|
@ -426,7 +408,7 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this)
|
|||
}
|
||||
|
||||
//
|
||||
function importLooseFile(%filePath, %forceAutoImport)
|
||||
/*function importLooseFile(%filePath, %forceAutoImport)
|
||||
{
|
||||
%assetType = getAssetTypeByFilename(%filePath);
|
||||
|
||||
|
|
@ -480,7 +462,7 @@ function importLooseFile(%filePath, %forceAutoImport)
|
|||
$importedLooseFileAsset = %assetItem.moduleName @ ":" @ %assetItem.assetName;
|
||||
|
||||
return true;
|
||||
}
|
||||
}*/
|
||||
|
||||
//
|
||||
function assetImportUpdatePath(%newPath)
|
||||
|
|
@ -491,7 +473,7 @@ function assetImportUpdatePath(%newPath)
|
|||
}
|
||||
|
||||
//
|
||||
function ImportAssetWindow::processImportAssets(%this, %assetItem)
|
||||
/*function ImportAssetWindow::processImportAssets(%this, %assetItem)
|
||||
{
|
||||
if(!isObject(%assetItem))
|
||||
{
|
||||
|
|
@ -573,7 +555,7 @@ function ImportAssetWindow::processImportAssets(%this, %assetItem)
|
|||
//so we'll loop back through again until everything has been processed
|
||||
if(ImportAssetWindow.assetHeirarchyChanged)
|
||||
%this.processImportAssets();
|
||||
}
|
||||
}*/
|
||||
|
||||
function ImportAssetWindow::findImportingAssetByName(%this, %assetName, %assetItem)
|
||||
{
|
||||
|
|
@ -642,16 +624,19 @@ function ImportAssetWindow::doRefresh(%this)
|
|||
%this.autoRenamedAssets = 0;
|
||||
|
||||
//Go through and process any newly, unprocessed assets
|
||||
%this.processImportAssets();
|
||||
ImportAssetWindow.importer.processImportingAssets();
|
||||
//%this.processImportAssets();
|
||||
|
||||
ImportAssetWindow.hasImportIssues = %this.validateAssets();
|
||||
//ImportAssetWindow.hasImportIssues = %this.validateAssets();
|
||||
|
||||
ImportAssetWindow.importer.validateImportingAssets();
|
||||
|
||||
AssetImportCtrl-->NewAssetsTree.clear();
|
||||
AssetImportCtrl-->NewAssetsTree.insertItem(0, "Importing Assets");
|
||||
|
||||
for(%i=0; %i < ImportAssetItems.count(); %i++)
|
||||
for(%i=0; %i < ImportAssetWindow.importer.getAssetItemCount(); %i++)
|
||||
{
|
||||
%assetItem = ImportAssetItems.getKey(%i);
|
||||
%assetItem = ImportAssetWindow.importer.getAssetItem(%i);
|
||||
|
||||
%this.refreshAssetItem(%assetItem);
|
||||
}
|
||||
|
|
@ -687,16 +672,17 @@ function ImportAssetWindow::doRefresh(%this)
|
|||
//bother showing the window.
|
||||
//If any of these conditions fail, we'll display the import window so it can be handled
|
||||
//by the user
|
||||
if(ImportAssetWindow.importConfigsList.count() != 0 &&
|
||||
EditorSettings.value("Assets/AssetImporDefaultConfig") !$= "" &&
|
||||
EditorSettings.value("Assets/AutoImport", false) == true
|
||||
&& ImportAssetWindow.hasImportIssues == false)
|
||||
if(ImportAssetWindow.importConfigsList.count() != 0
|
||||
&& EditorSettings.value("Assets/AssetImporDefaultConfig") !$= ""
|
||||
&& EditorSettings.value("Assets/AutoImport", false) == true
|
||||
&& ImportAssetWindow.hasImportIssues == false
|
||||
&& ImportAssetWindow.allowAutoImport)
|
||||
{
|
||||
AssetImportCtrl.setHidden(true);
|
||||
ImportAssetWindow.visible = false;
|
||||
|
||||
//Go ahead and check if we have any issues, and if not, run the import!
|
||||
ImportAssetWindow.ImportAssets();
|
||||
ImportAssetWindow.importer.ImportAssets();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -723,7 +709,7 @@ function ImportAssetWindow::doRefresh(%this)
|
|||
%this.dirty = false;
|
||||
}
|
||||
|
||||
function ImportAssetWindow::refreshAssetItem(%this, %assetItem)
|
||||
function ImportAssetWindow::refreshAssetItem(%this, %assetItem, %parentTreeIdx)
|
||||
{
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
return;
|
||||
|
|
@ -733,7 +719,7 @@ function ImportAssetWindow::refreshAssetItem(%this, %assetItem)
|
|||
%assetName = %assetItem.assetName;
|
||||
|
||||
//Once validated, attempt any fixes for issues
|
||||
%this.resolveIssue(%assetItem);
|
||||
ImportAssetWindow.importer.resolveAssetItemIssues(%assetItem);
|
||||
|
||||
//create!
|
||||
%toolTip = "";
|
||||
|
|
@ -783,16 +769,15 @@ function ImportAssetWindow::refreshAssetItem(%this, %assetItem)
|
|||
%iconIdx = 7;
|
||||
}
|
||||
|
||||
%parentTreeIdx = %assetItem.parentAssetItem.treeIdx;
|
||||
if(%parentTreeIdx $= "")
|
||||
%parentTreeIdx = 1;
|
||||
|
||||
%assetItem.treeIdx = AssetImportCtrl-->NewAssetsTree.insertItem(%parentTreeIdx, %assetName, %assetItem, "", %iconIdx, %iconIdx+1);
|
||||
|
||||
for(%i=0; %i < %assetItem.childAssetItems.count(); %i++)
|
||||
for(%i=0; %i < ImportAssetWindow.importer.getAssetItemChildCount(%assetItem); %i++)
|
||||
{
|
||||
%childAssetItem = %assetItem.childAssetItems.getKey(%i);
|
||||
%this.refreshAssetItem(%childAssetItem);
|
||||
%childAssetItem = ImportAssetWindow.importer.getAssetItemChild(%assetItem, %i);
|
||||
%this.refreshAssetItem(%childAssetItem, %assetItem.treeIdx);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -818,6 +803,8 @@ function NewAssetsViewTree::onSelect(%this, %itemId)
|
|||
//AssetImportCtrl-->NewAssetsInspector.addField("assetName", "Asset Name", "string", "", %assetItem.assetName, "", %assetItem);
|
||||
|
||||
AssetImportCtrl-->NewAssetsInspector.addField("status", "Status", "string", "", %assetItem.status, "", %assetItem);
|
||||
AssetImportCtrl-->NewAssetsInspector.addField("statusInfo", "Status Info", "string", "", %assetItem.statusInfo, "", %assetItem);
|
||||
|
||||
AssetImportCtrl-->NewAssetsInspector.endGroup();
|
||||
|
||||
AssetImportCtrl-->NewAssetsInspector.setFieldEnabled("assetType", false);
|
||||
|
|
@ -890,7 +877,7 @@ function ImportAssetWindow::removeImportingAsset(%this)
|
|||
{
|
||||
ImportActivityLog.add("Removing Asset from Import");
|
||||
|
||||
%this.deleteImportingAsset(ImportAssetActions.assetItem);
|
||||
%this.importer.deleteImportingAsset(ImportAssetActions.assetItem);
|
||||
|
||||
//ImportAssetWindow.refresh();
|
||||
}
|
||||
|
|
@ -937,6 +924,11 @@ function ImportAssetWindow::addNewImportingAsset(%this, %filterType)
|
|||
//AssetBrowser.onDropFile( %path );
|
||||
|
||||
%fileExt = fileExt( %filePath );
|
||||
%fileName = fileName(%filePath);
|
||||
|
||||
if(%fileExt $= ".dts" && endsWith(%fileName, ".cached"))
|
||||
return "";
|
||||
|
||||
//add it to our array!
|
||||
if(isImageFormat(%fileExt))
|
||||
%type = "ImageAsset";
|
||||
|
|
@ -969,292 +961,9 @@ function ImportAssetWindow::addMaterialMap(%this, %map)
|
|||
%newAssetItem.ImageType = %map;
|
||||
}
|
||||
|
||||
//
|
||||
function ImportAssetWindow::importResolution(%this, %assetItem)
|
||||
{
|
||||
if(%assetItem.status !$= "Error" && %assetItem.status !$= "Warning")
|
||||
{
|
||||
//If nothing's wrong, we just edit it
|
||||
ImportAssetOptionsWindow.editImportSettings(%assetItem);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
ImportAssetResolutionsPopup.assetItem = %assetItem;
|
||||
if(%assetItem.statusType $= "DuplicateAsset" || %assetItem.statusType $= "DuplicateImportAsset")
|
||||
{
|
||||
ImportAssetResolutionsPopup.enableItem(3, false); //Rename
|
||||
ImportAssetResolutionsPopup.enableItem(5, false); //Find Missing
|
||||
}
|
||||
else if(%assetItem.statusType $= "MissingFile")
|
||||
{
|
||||
ImportAssetResolutionsPopup.enableItem(0, false); //Use Orig
|
||||
ImportAssetResolutionsPopup.enableItem(1, false); //Use Dupe
|
||||
ImportAssetResolutionsPopup.enableItem(3, false); //Rename
|
||||
}
|
||||
}
|
||||
|
||||
ImportAssetResolutionsPopup.showPopup(Canvas);
|
||||
}
|
||||
|
||||
function ImportAssetWindow::validateAssets(%this, %assetItem)
|
||||
{
|
||||
ImportAssetWindow.importIssues = false;
|
||||
|
||||
//Clear any status
|
||||
%this.resetAssetsValidationStatus();
|
||||
|
||||
for(%i=0; %i < ImportAssetItems.count(); %i++)
|
||||
{
|
||||
%assetItem = ImportAssetItems.getKey(%i);
|
||||
|
||||
%this.validateAsset(%assetItem);
|
||||
}
|
||||
|
||||
if(ImportAssetWindow.importIssues == false)
|
||||
return false;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
function ImportAssetWindow::validateAsset(%this, %assetItem)
|
||||
{
|
||||
%moduleName = AssetImportTargetModule.getText();
|
||||
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//First, check the obvious: name collisions. We should have no asset that shares a similar name.
|
||||
//If we do, prompt for it be renamed first before continuing
|
||||
%hasCollision = %this.checkAssetsForCollision(%assetItem);
|
||||
|
||||
//Ran into a problem, so end checks on this one and move on
|
||||
if(%hasCollision)
|
||||
return;
|
||||
|
||||
//No collisions of for this name in the importing assets. Now, check against the existing assets in the target module
|
||||
if(!AssetBrowser.isAssetReImport)
|
||||
{
|
||||
%assetQuery = new AssetQuery();
|
||||
|
||||
%numAssetsFound = AssetDatabase.findAllAssets(%assetQuery);
|
||||
|
||||
%foundCollision = false;
|
||||
for( %f=0; %f < %numAssetsFound; %f++)
|
||||
{
|
||||
%assetId = %assetQuery.getAsset(%f);
|
||||
|
||||
//first, get the asset's module, as our major categories
|
||||
%module = AssetDatabase.getAssetModule(%assetId);
|
||||
|
||||
%testModuleName = %module.moduleId;
|
||||
|
||||
//These are core, native-level components, so we're not going to be messing with this module at all, skip it
|
||||
if(%moduleName !$= %testModuleName)
|
||||
continue;
|
||||
|
||||
%testAssetName = AssetDatabase.getAssetName(%assetId);
|
||||
|
||||
if(%testAssetName $= %assetItem.assetName)
|
||||
{
|
||||
%foundCollision = true;
|
||||
|
||||
%assetItem.status = "error";
|
||||
%assetItem.statusType = "DuplicateAsset";
|
||||
%assetItem.statusInfo = "Duplicate asset names found with the target module!\nAsset \"" @
|
||||
%assetItem.assetName @ "\" of type \"" @ %assetItem.assetType @ "\" has a matching name.\nPlease rename it and try again!";
|
||||
|
||||
ImportActivityLog.add("Error! Asset " @ %assetItem.assetName @ " has an identically named asset in the target module");
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(%foundCollision == true)
|
||||
{
|
||||
//yup, a collision, prompt for the change and bail out
|
||||
/*MessageBoxOK( "Error!", "Duplicate asset names found with the target module!\nAsset \"" @
|
||||
%assetItemA.assetName @ "\" of type \"" @ %assetItemA.assetType @ "\" has a matching name.\nPlease rename it and try again!");*/
|
||||
|
||||
//%assetQuery.delete();
|
||||
//return false;
|
||||
}
|
||||
|
||||
//Clean up our queries
|
||||
%assetQuery.delete();
|
||||
}
|
||||
|
||||
//Check if we were given a file path(so not generated) but somehow isn't a valid file
|
||||
if(%assetItem.filePath !$= "" && !%assetItem.generatedAsset && !isFile(%assetItem.filePath))
|
||||
{
|
||||
%assetItem.status = "error";
|
||||
%assetItem.statusType = "MissingFile";
|
||||
%assetItem.statusInfo = "Unable to find file to be imported. Please select asset file.";
|
||||
|
||||
ImportActivityLog.add("Error! Asset " @ %assetItem.filePath @ " was not found");
|
||||
}
|
||||
|
||||
if(%assetItem.status $= "Warning")
|
||||
{
|
||||
if(getAssetImportConfigValue("General/WarningsAsErrors", "0") == 1)
|
||||
{
|
||||
%assetItem.status = "error";
|
||||
|
||||
ImportActivityLog.add("Warnings treated as errors!");
|
||||
}
|
||||
}
|
||||
|
||||
if(%assetItem.status $= "error")
|
||||
ImportAssetWindow.importIssues = true;
|
||||
|
||||
for(%i=0; %i < %assetItem.childAssetItems.count(); %i++)
|
||||
{
|
||||
%childAssetItem = %assetItem.childAssetItems.getKey(%i);
|
||||
|
||||
%this.validateAsset(%childAssetItem);
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
function ImportAssetWindow::resetAssetsValidationStatus(%this, %assetItem)
|
||||
{
|
||||
if(!isObject(%assetItem))
|
||||
{
|
||||
for(%i=0; %i < ImportAssetItems.count(); %i++)
|
||||
{
|
||||
%assetItem = ImportAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
continue;
|
||||
|
||||
%assetItem.status = "";
|
||||
%assetItem.statusType = "";
|
||||
%assetItem.statusInfo = "";
|
||||
|
||||
if(%assetItem.childAssetItems.count() != 0)
|
||||
%this.resetAssetsValidationStatus(%assetItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(%i=0; %i < %assetItem.childAssetItems.count(); %i++)
|
||||
{
|
||||
%childAssetItem = %assetItem.childAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%childAssetItem) || %childAssetItem.skip)
|
||||
continue;
|
||||
|
||||
%childAssetItem.status = "";
|
||||
%childAssetItem.statusType = "";
|
||||
%childAssetItem.statusInfo = "";
|
||||
|
||||
if(%childAssetItem.childAssetItems.count() != 0)
|
||||
%this.resetAssetsValidationStatus(%childAssetItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ImportAssetWindow::checkAssetsForCollision(%this, %assetItemToCheck, %assetItem)
|
||||
{
|
||||
%result = false;
|
||||
|
||||
if(!isObject(%assetItem))
|
||||
{
|
||||
for(%i=0; %i < ImportAssetItems.count(); %i++)
|
||||
{
|
||||
%assetItem = ImportAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
continue;
|
||||
|
||||
if( (%assetItemToCheck.assetName $= %assetItem.assetName) && (%assetItemToCheck.getId() != %assetItem.getId()) )
|
||||
{
|
||||
//yup, a collision, prompt for the change and bail out
|
||||
%assetItemToCheck.status = "Warning";
|
||||
%assetItemToCheck.statusType = "DuplicateImportAsset";
|
||||
%assetItemToCheck.statusInfo = "Duplicate asset names found with importing assets!\nAsset \"" @
|
||||
%assetItem.assetName @ "\" of type \"" @ %assetItem.assetType @ "\" and \"" @
|
||||
%assetItemToCheck.assetName @ "\" of type \"" @ %assetItemToCheck.assetType @ "\" have matching names.\nPlease rename one of them and try again!";
|
||||
|
||||
ImportActivityLog.add("Warning! Asset " @ %assetItemToCheck.assetName @ ", type " @ %assetItemToCheck.assetType @ " has a naming collisions with asset " @ %assetItem.assetName @ ", type " @ %assetItem.assetType);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(%assetItem.childAssetItems.count() != 0)
|
||||
{
|
||||
//recurse!
|
||||
%result = %this.checkAssetsForCollision(%assetItemToCheck, %assetItem);
|
||||
}
|
||||
|
||||
if(%result)
|
||||
return %result;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(%i=0; %i < %assetItem.childAssetItems.count(); %i++)
|
||||
{
|
||||
%childAssetItem = %assetItem.childAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%childAssetItem) || %childAssetItem.skip)
|
||||
continue;
|
||||
|
||||
if( (%assetItemToCheck.assetName $= %childAssetItem.assetName) && (%assetItemToCheck.getId() != %childAssetItem.getId()) )
|
||||
{
|
||||
//yup, a collision, prompt for the change and bail out
|
||||
%assetItemToCheck.status = "Warning";
|
||||
%assetItemToCheck.statusType = "DuplicateImportAsset";
|
||||
%assetItemToCheck.statusInfo = "Duplicate asset names found with importing assets!\nAsset \"" @
|
||||
%childAssetItem.assetName @ "\" of type \"" @ %childAssetItem.assetType @ "\" and \"" @
|
||||
%assetItemToCheck.assetName @ "\" of type \"" @ %assetItemToCheck.assetType @ "\" have matching names.\nPlease rename one of them and try again!";
|
||||
|
||||
ImportActivityLog.add("Warning! Asset " @ %assetItemToCheck.assetName @ ", type " @ %assetItemToCheck.assetType @ " has a naming collisions with asset " @ %childAssetItem.assetName @ ", type " @ %childAssetItem.assetType);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
if(%childAssetItem.childAssetItems.count() != 0)
|
||||
{
|
||||
//recurse!
|
||||
%result = %this.checkAssetsForCollision(%assetItemToCheck, %childAssetItem);
|
||||
}
|
||||
|
||||
if(%result)
|
||||
return %result;
|
||||
}
|
||||
}
|
||||
|
||||
return %result;
|
||||
}
|
||||
|
||||
//
|
||||
function ImportAssetWindow::deleteImportingAsset(%this, %assetItem)
|
||||
{
|
||||
if(%assetItem.parentAssetItem !$= "")
|
||||
{
|
||||
%idx = %assetItem.parentAssetItem.childAssetItems.getIndexFromKey(%assetItem);
|
||||
%assetItem.parentAssetItem.childAssetItems.erase(%idx);
|
||||
|
||||
ImportActivityLog.add("Deleting Importing Asset " @ %assetItem.assetName @ " from it's parent item: " @ %assetItem.parentAssetItem);
|
||||
}
|
||||
|
||||
ImportActivityLog.add("Deleting Importing Asset " @ %assetItem.assetName @ " and all it's child items");
|
||||
|
||||
%idx = ImportAssetItems.getIndexFromKey(%assetItem);
|
||||
ImportAssetItems.erase(%idx);
|
||||
|
||||
schedule(10, 0, "refreshImportAssetWindow");
|
||||
}
|
||||
|
||||
//
|
||||
function ImportAssetWindow::ImportAssets(%this)
|
||||
{
|
||||
//do the actual importing, now!
|
||||
%assetCount = ImportAssetItems.count();
|
||||
|
||||
//get the selected module data
|
||||
%moduleName = AssetImportTargetModule.getText();
|
||||
|
||||
|
|
@ -1266,255 +975,34 @@ function ImportAssetWindow::ImportAssets(%this)
|
|||
return;
|
||||
}
|
||||
|
||||
%this.doImportAssets();
|
||||
Canvas.pushDialog( EditorLoadingGui );
|
||||
Canvas.repaint();
|
||||
|
||||
%this.importer.targetModuleId = %moduleName;
|
||||
%this.importer.targetPath = AssetImportTargetAddress.getText();
|
||||
|
||||
%this.importer.importAssets();
|
||||
|
||||
//force an update of any and all modules so we have an up-to-date asset list
|
||||
AssetBrowser.refresh();
|
||||
Canvas.popDialog(AssetImportCtrl);
|
||||
AssetBrowser.isAssetReImport = false;
|
||||
}
|
||||
|
||||
function ImportAssetWindow::doImportAssets(%this, %assetItem)
|
||||
{
|
||||
%moduleName = AssetImportTargetModule.getText();
|
||||
|
||||
if(%assetItem $= "")
|
||||
{
|
||||
for(%i=0; %i < ImportAssetItems.count(); %i++)
|
||||
{
|
||||
%assetItem = ImportAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
continue;
|
||||
|
||||
%assetType = %assetItem.AssetType;
|
||||
%filePath = %assetItem.filePath;
|
||||
%assetName = %assetItem.assetName;
|
||||
%assetImportSuccessful = false;
|
||||
%assetId = %moduleName@":"@%assetName;
|
||||
|
||||
%command = "AssetBrowser.import" @ %assetType @ "(" @ %assetItem @ ");";
|
||||
eval(%command);
|
||||
|
||||
//recurse if needed
|
||||
%this.doImportAssets(%assetItem);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(%i=0; %i < %assetItem.childAssetItems.count(); %i++)
|
||||
{
|
||||
%childAssetItem = %assetItem.childAssetItems.getKey(%i);
|
||||
|
||||
if(!isObject(%childAssetItem) || %childAssetItem.skip)
|
||||
continue;
|
||||
|
||||
%assetType = %childAssetItem.AssetType;
|
||||
%filePath = %childAssetItem.filePath;
|
||||
%assetName = %childAssetItem.assetName;
|
||||
%assetImportSuccessful = false;
|
||||
%assetId = %moduleName@":"@%assetName;
|
||||
|
||||
%command = "AssetBrowser.import" @ %assetType @ "(" @ %childAssetItem @ ");";
|
||||
eval(%command);
|
||||
|
||||
//recurse if needed
|
||||
%this.doImportAssets(%childAssetItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function ImportAssetWindow::doImportAsset(%this, %assetItem)
|
||||
{
|
||||
%assetItem = ImportAssetTree.getItemObject(%id);
|
||||
|
||||
if(!isObject(%assetItem) || %assetItem.skip)
|
||||
{
|
||||
%id = ImportAssetTree.getNextSibling(%id);
|
||||
continue;
|
||||
}
|
||||
%this.importer.resetImportSession(true);
|
||||
|
||||
%assetType = %assetItem.AssetType;
|
||||
%filePath = %assetItem.filePath;
|
||||
%assetName = %assetItem.assetName;
|
||||
%assetImportSuccessful = false;
|
||||
%assetId = %moduleName@":"@%assetName;
|
||||
Canvas.popDialog( EditorLoadingGui );
|
||||
|
||||
if(%assetType $= "ImageAsset")
|
||||
{
|
||||
AssetBrowser.importImageAsset(%assetItem);
|
||||
}
|
||||
else if(%assetType $= "ShapeAsset")
|
||||
{
|
||||
AssetBrowser.importShapeAsset(%assetItem);
|
||||
}
|
||||
else if(%assetType $= "AnimationAsset")
|
||||
{
|
||||
%assetPath = "data/" @ %moduleName @ "/ShapeAnimations";
|
||||
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
||||
|
||||
%newAsset = new ShapeAnimationAsset()
|
||||
{
|
||||
assetName = %assetName;
|
||||
versionId = 1;
|
||||
fileName = %assetFullPath;
|
||||
originalFilePath = %filePath;
|
||||
animationFile = %assetFullPath;
|
||||
animationName = %assetName;
|
||||
startFrame = 0;
|
||||
endFrame = -1;
|
||||
padRotation = false;
|
||||
padTransforms = false;
|
||||
};
|
||||
//do the actual importing, now!
|
||||
/*%assetCount = ImportAssetItems.count();
|
||||
|
||||
%assetImportSuccessful = TAMLWrite(%newAsset, %assetPath @ "/" @ %assetName @ ".asset.taml");
|
||||
|
||||
//and copy the file into the relevent directory
|
||||
%doOverwrite = !AssetBrowser.isAssetReImport;
|
||||
if(!pathCopy(%filePath, %assetFullPath, %doOverwrite))
|
||||
{
|
||||
error("Unable to import asset: " @ %filePath);
|
||||
}
|
||||
}
|
||||
else if(%assetType $= "SoundAsset")
|
||||
{
|
||||
%assetPath = "data/" @ %moduleName @ "/Sounds";
|
||||
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
||||
|
||||
%newAsset = new SoundAsset()
|
||||
{
|
||||
assetName = %assetName;
|
||||
versionId = 1;
|
||||
fileName = %assetFullPath;
|
||||
originalFilePath = %filePath;
|
||||
};
|
||||
|
||||
%assetImportSuccessful = TAMLWrite(%newAsset, %assetPath @ "/" @ %assetName @ ".asset.taml");
|
||||
|
||||
//and copy the file into the relevent directory
|
||||
%doOverwrite = !AssetBrowser.isAssetReImport;
|
||||
if(!pathCopy(%filePath, %assetFullPath, %doOverwrite))
|
||||
{
|
||||
error("Unable to import asset: " @ %filePath);
|
||||
}
|
||||
}
|
||||
else if(%assetType $= "MaterialAsset")
|
||||
{
|
||||
AssetBrowser.importMaterialAsset(%assetItem);
|
||||
}
|
||||
else if(%assetType $= "ScriptAsset")
|
||||
{
|
||||
%assetPath = "data/" @ %moduleName @ "/Scripts";
|
||||
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
||||
|
||||
%newAsset = new ScriptAsset()
|
||||
{
|
||||
assetName = %assetName;
|
||||
versionId = 1;
|
||||
scriptFilePath = %assetFullPath;
|
||||
isServerSide = true;
|
||||
originalFilePath = %filePath;
|
||||
};
|
||||
|
||||
%assetImportSuccessful = TAMLWrite(%newAsset, %assetPath @ "/" @ %assetName @ ".asset.taml");
|
||||
|
||||
//and copy the file into the relevent directory
|
||||
%doOverwrite = !AssetBrowser.isAssetReImport;
|
||||
if(!pathCopy(%filePath, %assetFullPath, %doOverwrite))
|
||||
{
|
||||
error("Unable to import asset: " @ %filePath);
|
||||
}
|
||||
}
|
||||
else if(%assetType $= "GUIAsset")
|
||||
{
|
||||
%assetPath = "data/" @ %moduleName @ "/GUIs";
|
||||
%assetFullPath = %assetPath @ "/" @ fileName(%filePath);
|
||||
|
||||
%newAsset = new GUIAsset()
|
||||
{
|
||||
assetName = %assetName;
|
||||
versionId = 1;
|
||||
GUIFilePath = %assetFullPath;
|
||||
scriptFilePath = "";
|
||||
originalFilePath = %filePath;
|
||||
};
|
||||
|
||||
%assetImportSuccessful = TAMLWrite(%newAsset, %assetPath @ "/" @ %assetName @ ".asset.taml");
|
||||
|
||||
//and copy the file into the relevent directory
|
||||
%doOverwrite = !AssetBrowser.isAssetReImport;
|
||||
if(!pathCopy(%filePath, %assetFullPath, %doOverwrite))
|
||||
{
|
||||
error("Unable to import asset: " @ %filePath);
|
||||
}
|
||||
}
|
||||
|
||||
if(%assetImportSuccessful)
|
||||
{
|
||||
%moduleDef = ModuleDatabase.findModule(%moduleName,1);
|
||||
|
||||
if(!AssetBrowser.isAssetReImport)
|
||||
AssetDatabase.addDeclaredAsset(%moduleDef, %assetPath @ "/" @ %assetName @ ".asset.taml");
|
||||
else
|
||||
AssetDatabase.refreshAsset(%assetId);
|
||||
}
|
||||
|
||||
if(ImportAssetTree.isParentItem(%id))
|
||||
{
|
||||
%childItem = ImportAssetTree.getChild(%id);
|
||||
|
||||
//recurse!
|
||||
%this.doImportAssets(%childItem);
|
||||
}
|
||||
|
||||
%id = ImportAssetTree.getNextSibling(%id);
|
||||
}
|
||||
|
||||
function ImportAssetWindow::resolveIssue(%this, %assetItem)
|
||||
{
|
||||
//Ok, we actually have a warning, so lets resolve
|
||||
if(%assetItem.statusType $= "DuplicateImportAsset" || %assetItem.statusType $= "DuplicateAsset")
|
||||
{
|
||||
%resolutionAction = getAssetImportConfigValue("General/DuplicatAutoResolution", "AutoPrune");
|
||||
|
||||
%humanReadableStatus = %assetItem.statusType $= "DuplicateImportAsset" ? "Duplicate Import Asset" : "Duplicate Asset";
|
||||
|
||||
if(%resolutionAction $= "AutoPrune")
|
||||
{
|
||||
%this.deleteImportingAsset(%assetItem);
|
||||
%this.prunedDuplicateAssets++;
|
||||
|
||||
ImportActivityLog.add("Asset " @ %assetItem.assetName @ " was Autopruned due to " @ %humanReadableStatus);
|
||||
}
|
||||
else if(%resolutionAction $= "AutoRename")
|
||||
{
|
||||
ImportActivityLog.add("Asset " @ %assetItem.assetName @ " was Auto-Renamed due to " @ %humanReadableStatus);
|
||||
|
||||
%noNum = stripTrailingNumber(%assetItem.assetName);
|
||||
%num = getTrailingNumber(%assetItem.assetName);
|
||||
|
||||
if(%num == -1)
|
||||
{
|
||||
%assetItem.assetName = %noNum @ "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
%num++;
|
||||
%assetItem.assetName = %noNum @ %num;
|
||||
}
|
||||
|
||||
ImportActivityLog.add(" New name is " @ %assetItem.assetName);
|
||||
|
||||
%this.autoRenamedAssets++;
|
||||
}
|
||||
}
|
||||
else if(%assetItem.statusType $= "MissingFile")
|
||||
{
|
||||
if(getAssetImportConfigValue("General/AutomaticallyPromptMissingFiles", "0") == 1)
|
||||
{
|
||||
%this.findMissingFile(%assetItem);
|
||||
}
|
||||
}
|
||||
%this.doImportAssets();
|
||||
|
||||
//force an update of any and all modules so we have an up-to-date asset list
|
||||
AssetBrowser.refresh();
|
||||
Canvas.popDialog(AssetImportCtrl);
|
||||
AssetBrowser.isAssetReImport = false;*/
|
||||
}
|
||||
|
||||
function ImportAssetWindow::findMissingFile(%this, %assetItem)
|
||||
|
|
|
|||
|
|
@ -10,11 +10,18 @@ function ImportAssetConfigList::onSelect( %this, %id, %text )
|
|||
ImportActivityLog.add("");
|
||||
|
||||
ImportAssetWindow.activeImportConfigIndex = %id;
|
||||
ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
|
||||
//ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
|
||||
|
||||
if(!isObject(%this.activeImporConfig))
|
||||
%this.activeImporConfig = new AssetImportConfig();
|
||||
|
||||
%this.activeImporConfig.loadImportConfig(AssetImportSettings, ImportAssetWindow.importConfigsList.getKey(%id));
|
||||
|
||||
//If we were trying to import anything, refresh it with the new config
|
||||
if( ImportAssetWindow.importingFilesArray.count() != 0)
|
||||
AssetBrowser.reloadImportingFiles();
|
||||
ImportAssetWindow.importer.resetImportSession();
|
||||
|
||||
//if( ImportAssetWindow.importingFilesArray.count() != 0)
|
||||
// AssetBrowser.reloadImportingFiles();
|
||||
}
|
||||
|
||||
function setupImportConfigSettingsList()
|
||||
|
|
|
|||
|
|
@ -95,14 +95,14 @@ function GuiInspectorTypeCubemapAssetPtr::onControlDropped( %this, %payload, %po
|
|||
if( !%payload.parentGroup.isInNamespaceHierarchy( "AssetPreviewControlType_AssetDrop" ) )
|
||||
return;
|
||||
|
||||
%assetType = %payload.dragSourceControl.parentGroup.assetType;
|
||||
%assetType = %payload.assetType;
|
||||
|
||||
if(%assetType $= "CubemapAsset")
|
||||
{
|
||||
echo("DROPPED A CUBEMAP ON A CUBEMAP ASSET COMPONENT FIELD!");
|
||||
|
||||
%module = %payload.dragSourceControl.parentGroup.moduleName;
|
||||
%asset = %payload.dragSourceControl.parentGroup.assetName;
|
||||
%module = %payload.moduleName;
|
||||
%asset = %payload.assetName;
|
||||
|
||||
%targetComponent = %this.object;
|
||||
%targetComponent.CubemapAsset = %module @ ":" @ %asset;
|
||||
|
|
|
|||
|
|
@ -42,15 +42,26 @@ function AssetBrowser::doCreateNewDatablock(%this)
|
|||
|
||||
function AssetBrowser::buildDatablockPreview(%this, %assetDef, %previewData)
|
||||
{
|
||||
%previewData.assetName = %assetDef.assetName;
|
||||
%previewData.assetPath = %assetDef.dirPath;
|
||||
%previewData.assetName = %assetDef;
|
||||
%previewData.assetPath = "";
|
||||
|
||||
%previewData.previewImage = "tools/assetBrowser/art/scriptIcon";
|
||||
%previewData.previewImage = "tools/assetBrowser/art/datablockIcon";
|
||||
|
||||
//%previewData.assetFriendlyName = %assetDef.assetName;
|
||||
%previewData.assetDesc = %assetDef.description;
|
||||
%previewData.tooltip = %assetDef.dirPath;
|
||||
%previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"navigateTo\",\""@ %assetDef.dirPath @ "/" @ %assetDef.assetName @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
|
||||
%previewData.assetDesc = %assetDef;
|
||||
%previewData.tooltip = %assetDef;
|
||||
%previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"spawnDatablockObject\",\""@ %assetDef @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
|
||||
}
|
||||
|
||||
function spawnDatablockObject(%datablock)
|
||||
{
|
||||
%name = %datablock.getName();
|
||||
%class = %datablock.getClassName();
|
||||
%cmd = %class @ "::create(" @ %name @ ");";
|
||||
|
||||
%shapePath = ( %datablock.shapeFile !$= "" ) ? %datablock.shapeFile : %datablock.shapeName;
|
||||
%createCmd = "EWCreatorWindow.createObject( \\\"" @ %cmd @ "\\\" );";
|
||||
return eval("showImportDialog( \"" @ %shapePath @ "\", \"" @ %createCmd @ "\" );");
|
||||
}
|
||||
|
||||
function AssetBrowser::renameDatablock(%this, %folderPath, %newFolderName)
|
||||
|
|
@ -124,4 +135,25 @@ function AssetBrowser::deleteDatablock(%this, %folderPath)
|
|||
%this.dirHandler.deleteDatablock(%folderPath);
|
||||
|
||||
%this.refresh();
|
||||
}
|
||||
|
||||
function AssetBrowser::onDatablockEditorDropped(%this, %assetDef, %position)
|
||||
{
|
||||
%targetPosition = EWorldEditor.unproject(%position SPC 1000);
|
||||
%camPos = LocalClientConnection.camera.getPosition();
|
||||
%rayResult = containerRayCast(%camPos, %targetPosition, -1);
|
||||
|
||||
%pos = EWCreatorWindow.getCreateObjectPosition();
|
||||
|
||||
if(%rayResult != 0)
|
||||
{
|
||||
%pos = getWords(%rayResult, 1, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
%pos = "0 0 0";
|
||||
}
|
||||
|
||||
%newObj = spawnDatablockObject(%assetDef);
|
||||
%newObj.position = %pos;
|
||||
}
|
||||
|
|
@ -261,7 +261,7 @@ function GuiInspectorTypeImageAssetPtr::onControlDropped( %this, %payload, %posi
|
|||
if( !%payload.parentGroup.isInNamespaceHierarchy( "AssetPreviewControlType_AssetDrop" ) )
|
||||
return;
|
||||
|
||||
%assetType = %payload.dragSourceControl.parentGroup.assetType;
|
||||
%assetType = %payload.assetType;
|
||||
|
||||
if(%assetType $= "ImageAsset")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@ function AssetBrowser::setupCreateNewLevelAsset(%this)
|
|||
NewAssetPropertiesInspector.endGroup();
|
||||
}
|
||||
|
||||
function AssetImporter::importLevelAsset(%this, %assetItem)
|
||||
{
|
||||
}
|
||||
|
||||
function AssetBrowser::createLevelAsset(%this)
|
||||
{
|
||||
%moduleName = AssetBrowser.newAssetSettings.moduleName;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
function AssetBrowser::buildLooseFilePreview(%this, %assetDef, %previewData)
|
||||
{
|
||||
%fullPath = %assetDef.dirPath @ "/" @ %assetDef.assetName;
|
||||
%previewData.assetName = %assetDef.assetName;
|
||||
%previewData.assetPath = %fullPath;
|
||||
|
||||
%previewData.previewImage = "tools/assetBrowser/art/looseFileIcon";
|
||||
|
||||
//%previewData.assetFriendlyName = %assetDef.assetName;
|
||||
%previewData.assetDesc = %assetDef.description;
|
||||
%previewData.tooltip = %fullPath;
|
||||
//%previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"navigateTo\",\""@ %assetDef.dirPath @ "/" @ %assetDef.assetName @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
|
||||
%previewData.doubleClickCommand = "AssetBrowser.autoImportFile(\"" @ %fullPath @ "\");";
|
||||
}
|
||||
|
|
@ -432,7 +432,7 @@ function AssetBrowser::importMaterialAsset(%this, %assetItem)
|
|||
|
||||
function AssetBrowser::buildMaterialAssetPreview(%this, %assetDef, %previewData)
|
||||
{
|
||||
%previewData.assetName = %assetDef.materialDefinitionName;
|
||||
%previewData.assetName = %assetDef.assetName;
|
||||
%previewData.assetPath = %assetDef.scriptFile;
|
||||
|
||||
//Lotta prepwork
|
||||
|
|
@ -501,9 +501,9 @@ function GuiInspectorTypeMaterialAssetPtr::onControlDropped( %this, %payload, %p
|
|||
if( !%payload.parentGroup.isInNamespaceHierarchy( "AssetPreviewControlType_AssetDrop" ) )
|
||||
return;
|
||||
|
||||
%assetType = %payload.dragSourceControl.parentGroup.assetType;
|
||||
%module = %payload.dragSourceControl.parentGroup.moduleName;
|
||||
%assetName = %payload.dragSourceControl.parentGroup.assetName;
|
||||
%assetType = %payload.assetType;
|
||||
%module = %payload.moduleName;
|
||||
%assetName = %payload.assetName;
|
||||
|
||||
if(%assetType $= "MaterialAsset")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
function AssetBrowser::buildPrefabPreview(%this, %assetDef, %previewData)
|
||||
{
|
||||
%fullPath = %assetDef.dirPath @ "/" @ %assetDef.assetName;
|
||||
%previewData.assetName = %assetDef.assetName;
|
||||
%previewData.assetPath = %fullPath;
|
||||
|
||||
%previewData.previewImage = "tools/assetBrowser/art/genericAssetIcon";
|
||||
|
||||
//%previewData.assetFriendlyName = %assetDef.assetName;
|
||||
%previewData.assetDesc = %assetDef.description;
|
||||
%previewData.tooltip = %fullPath;
|
||||
//%previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"navigateTo\",\""@ %assetDef.dirPath @ "/" @ %assetDef.assetName @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
|
||||
%previewData.doubleClickCommand = "AssetBrowser.autoImportFile(\"" @ %fullPath @ "\");";
|
||||
}
|
||||
|
|
@ -270,6 +270,10 @@ function AssetBrowser::onShapeAssetEditorDropped(%this, %assetDef, %position)
|
|||
{
|
||||
%pos = getWords(%rayResult, 1, 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
%pos = "0 0 0";
|
||||
}
|
||||
|
||||
%assetId = %assetDef.getAssetId();
|
||||
|
||||
|
|
@ -296,17 +300,17 @@ function GuiInspectorTypeShapeAssetPtr::onControlDropped( %this, %payload, %posi
|
|||
if( !%payload.parentGroup.isInNamespaceHierarchy( "AssetPreviewControlType_AssetDrop" ) )
|
||||
return;
|
||||
|
||||
%assetType = %payload.dragSourceControl.parentGroup.assetType;
|
||||
%assetType = %payload.assetType;
|
||||
|
||||
if(%assetType $= "ShapeAsset")
|
||||
{
|
||||
//echo("DROPPED A SHAPE ON A SHAPE ASSET COMPONENT FIELD!");
|
||||
|
||||
%module = %payload.dragSourceControl.parentGroup.moduleName;
|
||||
%asset = %payload.dragSourceControl.parentGroup.assetName;
|
||||
%module = %payload.moduleName;
|
||||
%asset = %payload.assetName;
|
||||
|
||||
%targetComponent = %this.targetObject;
|
||||
%targetComponent.MeshAsset = %module @ ":" @ %asset;
|
||||
%targetComponent.shapeAsset = %module @ ":" @ %asset;
|
||||
|
||||
//Inspector.refresh();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ function directoryHandler::loadFolders(%this, %path, %parentId)
|
|||
// %iconIdx = 1;
|
||||
|
||||
%searchFoldersText = %this.searchFilter;
|
||||
if(%searchFoldersText !$= "Search Folders...")
|
||||
if(%searchFoldersText !$= "")
|
||||
{
|
||||
if(strstr(strlwr(%folderName), strlwr(%searchFoldersText)) != -1)
|
||||
{
|
||||
|
|
@ -123,7 +123,7 @@ function directoryHandler::navigateTo(%this, %address, %historyNav, %selectionNa
|
|||
|
||||
//find our folder tree and action on it tree
|
||||
%folderId = %this.getFolderTreeItemFromAddress(%address);
|
||||
|
||||
|
||||
%this.oldAddress = %this.currentAddress;
|
||||
%this.currentAddress = %address;
|
||||
%this.selectedItem = %folderId;
|
||||
|
|
@ -197,7 +197,15 @@ function directoryHandler::getFolderTreeItemFromAddress(%this, %address)
|
|||
//break down the address
|
||||
%folderCount = getTokenCount(%address, "/");
|
||||
|
||||
%curItem = 0;
|
||||
if(startsWith(%address, "Data/") || startsWith(%address, "Tools/") || startsWith(%address, "Core/"))
|
||||
{
|
||||
%curItem = %this.treeCtrl.findChildItemByName(1, "Modules");
|
||||
}
|
||||
else
|
||||
{
|
||||
%curItem = 1;
|
||||
}
|
||||
|
||||
%rebuiltPath = "";
|
||||
for(%f=0; %f < %folderCount; %f++)
|
||||
{
|
||||
|
|
@ -214,7 +222,15 @@ function directoryHandler::expandTreeToAddress(%this, %address)
|
|||
%folderCount = getTokenCount(%address, "/");
|
||||
%this.treeCtrl.expandItem(0);
|
||||
|
||||
%curItem = 0;
|
||||
if(startsWith(%address, "Data/") || startsWith(%address, "Tools/") || startsWith(%address, "Core/"))
|
||||
{
|
||||
%curItem = %this.treeCtrl.findChildItemByName(1, "Modules");
|
||||
}
|
||||
else
|
||||
{
|
||||
%curItem = 1;
|
||||
}
|
||||
|
||||
%rebuiltPath = "";
|
||||
for(%f=0; %f < %folderCount; %f++)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -15,7 +15,40 @@ function AssetBrowser::CreateNewModule(%this)
|
|||
Canvas.pushDialog(AssetBrowser_AddModule);
|
||||
AssetBrowser_addModuleWindow.selectWindow();
|
||||
|
||||
AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
|
||||
AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.promptNewModuleFolders();";
|
||||
}
|
||||
|
||||
function AssetBrowser::promptNewModuleFolders(%this)
|
||||
{
|
||||
MessageBoxYesNo("Create Folders?",
|
||||
"Do you want to create some common folders for organization of your new Module?",
|
||||
"AssetBrowser.makeModuleFolders();", //if yes, make the foldesr
|
||||
"AssetBrowser.loadDirectories();"); //if no, just refresh
|
||||
}
|
||||
|
||||
function AssetBrowser::makeModuleFolders(%this)
|
||||
{
|
||||
%moduleId = AssetBrowser.newModuleId;
|
||||
%moduleDef = ModuleDatabase.findModule(%moduleId);
|
||||
%modulePath = %moduleDef.ModulePath;
|
||||
|
||||
%count = 0;
|
||||
%defaultModuleFolders[%count++] = "datablocks";
|
||||
%defaultModuleFolders[%count++] = "terrains";
|
||||
%defaultModuleFolders[%count++] = "postFXs";
|
||||
%defaultModuleFolders[%count++] = "levels";
|
||||
%defaultModuleFolders[%count++] = "shapes";
|
||||
%defaultModuleFolders[%count++] = "guis";
|
||||
%defaultModuleFolders[%count++] = "scripts";
|
||||
%defaultModuleFolders[%count++] = "scripts/client";
|
||||
%defaultModuleFolders[%count++] = "scripts/server";
|
||||
|
||||
for(%i=0; %i <= %count; %i++)
|
||||
{
|
||||
%this.dirHandler.createFolder(%modulePath @ "/" @ %defaultModuleFolders[%i]);
|
||||
}
|
||||
|
||||
AssetBrowser.loadDirectories();
|
||||
}
|
||||
|
||||
function AssetBrowser::createNewEditorTool(%this)
|
||||
|
|
|
|||
|
|
@ -215,6 +215,8 @@ function LooseFileAuditWindow::importGUI(%this)
|
|||
if(!ImportAssetWindow.isAwake())
|
||||
ImportAssetWindow.showDialog();
|
||||
|
||||
ImportAssetWindow.allowAutoImport = false;
|
||||
|
||||
AssetBrowser.addImportingAsset("GUIAsset", LooseFileList.itemPath, "", "");
|
||||
LooseFileList.removeItem(LooseFileList.selectedItem, false);
|
||||
LooseFileList.buildVisibleTree(true);
|
||||
|
|
@ -226,6 +228,8 @@ function LooseFileAuditWindow::importLevel(%this)
|
|||
if(!ImportAssetWindow.isAwake())
|
||||
ImportAssetWindow.showDialog();
|
||||
|
||||
ImportAssetWindow.allowAutoImport = false;
|
||||
|
||||
AssetBrowser.addImportingAsset("LevelAsset", LooseFileList.itemPath, "", "");
|
||||
LooseFileList.removeItem(LooseFileList.selectedItem, false);
|
||||
LooseFileList.buildVisibleTree(true);
|
||||
|
|
|
|||
|
|
@ -87,9 +87,9 @@ function AssetBrowser::buildPopupMenus(%this)
|
|||
class = "EditorWorldMenu";
|
||||
//isPopup = true;
|
||||
|
||||
item[ 0 ] = "Create Component" TAB AddNewComponentAssetPopup;
|
||||
item[ 1 ] = "Create Script" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ScriptAsset\", AssetBrowser.selectedModule);";
|
||||
item[ 2 ] = "Create State Machine" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"StateMachineAsset\", AssetBrowser.selectedModule);";
|
||||
//item[ 0 ] = "Create Component" TAB AddNewComponentAssetPopup;
|
||||
item[ 0 ] = "Create Script" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"ScriptAsset\", AssetBrowser.selectedModule);";
|
||||
item[ 1 ] = "Create State Machine" TAB "" TAB "AssetBrowser.setupCreateNewAsset(\"StateMachineAsset\", AssetBrowser.selectedModule);";
|
||||
//item[ 3 ] = "-";
|
||||
//item[ 3 ] = "Create Game Object" TAB "" TAB "AssetBrowser.createNewGameObjectAsset(\"NewGameObject\", AssetBrowser.selectedModule);";
|
||||
};
|
||||
|
|
@ -239,22 +239,6 @@ function AssetBrowser::buildPopupMenus(%this)
|
|||
};
|
||||
}
|
||||
|
||||
//Asset Preview size presets
|
||||
if( !isObject( AssetPreviewSizePopup ) )
|
||||
{
|
||||
new PopupMenu( AssetPreviewSizePopup )
|
||||
{
|
||||
superClass = "MenuBuilder";
|
||||
class = "EditorWorldMenu";
|
||||
|
||||
item[ 0 ] = "Small" TAB "" TAB "AssetBrowser.setPreviewSize(\"Small\");";
|
||||
item[ 1 ] = "Medium" TAB "" TAB "AssetBrowser.setPreviewSize(\"Medium\");";
|
||||
Item[ 2 ] = "Large" TAB "" TAB "AssetBrowser.setPreviewSize(\"Large\");";
|
||||
};
|
||||
|
||||
AssetPreviewSizePopup.checkItem(0, true);
|
||||
}
|
||||
|
||||
if( !isObject( AssetTypeListPopup ) )
|
||||
{
|
||||
new PopupMenu( AssetTypeListPopup )
|
||||
|
|
@ -295,8 +279,6 @@ function AssetBrowser::buildPopupMenus(%this)
|
|||
item[ 7 ] = "Filter by Asset Type" TAB AssetTypeListPopup;
|
||||
item[ 8 ] = "-";
|
||||
item[ 9 ] = "Enable Auto-refresh" TAB "" TAB "AssetBrowser.toggleAutorefresh();";
|
||||
Item[ 10 ] = "-";
|
||||
Item[ 11 ] = "Asset Preview Size" TAB AssetPreviewSizePopup;
|
||||
};
|
||||
|
||||
BrowserVisibilityPopup.enableItem(5, false);
|
||||
|
|
@ -408,6 +390,18 @@ function AssetBrowser::buildPopupMenus(%this)
|
|||
|
||||
AddNewModulePopup.enableItem(1, false);
|
||||
}
|
||||
|
||||
if( !isObject( EditCollectionSets ) )
|
||||
{
|
||||
new PopupMenu( EditCollectionSets )
|
||||
{
|
||||
superClass = "MenuBuilder";
|
||||
class = "EditorWorldMenu";
|
||||
//isPopup = true;
|
||||
|
||||
item[ 0 ] = "Delete Collection Set" TAB "" TAB "AssetBrowser.deleteCollectionSet();";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function AddNewScriptAssetPopupMenu::onSelectItem(%this, %id, %text)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
singleton GuiControlProfile(AssetBrowserPreviewImageAsset : ToolsGuiDefaultProfile)
|
||||
{
|
||||
fillColor = "128 128 128 255"; //hovered/selected
|
||||
//fillColorNA = "230 126 0 255"; //fill color default
|
||||
|
||||
border = true;
|
||||
borderColor = "230 126 0 255";
|
||||
borderColorNA = "230 126 0 255";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(AssetBrowserPreviewMaterialAsset : ToolsGuiDefaultProfile)
|
||||
{
|
||||
fillColor = "128 128 128 255"; //hovered/selected
|
||||
|
||||
border = true;
|
||||
borderColor = "0 100 0 255";
|
||||
borderColorNA = "0 100 0 255";
|
||||
};
|
||||
|
||||
singleton GuiControlProfile(AssetBrowserPreviewShapeAsset : ToolsGuiDefaultProfile)
|
||||
{
|
||||
fillColor = "128 128 128 255"; //hovered/selected
|
||||
|
||||
border = true;
|
||||
borderColor = "0 0 200 255";
|
||||
borderColorNA = "0 0 200 255";
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue