Torque3D/Templates/BaseGame/game/tools/assetBrowser/scripts/looseFileAudit.tscript
JeffR 70a9666cc3 Removes erroneous assignment of loaded state onto fallback assets when we fail to find an assetId by filename for image and shape assets
Fixed handling of TSStatics' materialSlot fields, where if the field has been changed, it properly loads the modified field and ensures the reskin action happens correctly.
Changed text on some context popup menu to better indicate the action Views loose files, not imports them
Makes the Loose File Viewer skip cached.dts files.
2022-05-25 00:12:12 -05:00

316 lines
9.3 KiB
Plaintext

function LooseFileAuditWindow::buildPopupMenus(%this)
{
//
// Import Asset Actions
//
//done with any valid image format file
if( !isObject( ImageLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( ImageLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make an Image Asset" TAB "" TAB "LooseFileAuditWindow.importImage();";
};
}
//Done with .tscript files
if( !isObject( ScriptLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( ScriptLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Script Asset" TAB "" TAB "LooseFileAuditWindow.importScript();";
item[1] = "Make a PostFX Asset" TAB "" TAB "LooseFileAuditWindow.importPostFX();";
item[2] = "Make a Material Asset" TAB "" TAB "LooseFileAuditWindow.importMaterial();";
item[3] = "Make a Terrain Material Asset" TAB "" TAB "LooseFileAuditWindow.importTerrMat();";
item[4] = "Make a Particle Asset" TAB "" TAB "LooseFileAuditWindow.importParticle();";
item[5] = "Make a Explosion Asset" TAB "" TAB "LooseFileAuditWindow.importExplosion();";
item[6] = "Make a Forest Brush Asset" TAB "" TAB "LooseFileAuditWindow.importForest();";
};
}
ScriptLooseFilePopup.enableItem(4, false);
ScriptLooseFilePopup.enableItem(5, false);
ScriptLooseFilePopup.enableItem(6, false);
if( !isObject( ShapeLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( ShapeLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Shape Asset" TAB "" TAB "LooseFileAuditWindow.importShape();";
item[1] = "Make a Shape Animation Asset" TAB "" TAB "LooseFileAuditWindow.importShapeAnimation();";
};
}
if( !isObject( DecalLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( DecalLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Decal Asset" TAB "" TAB "LooseFileAuditWindow.importDecal();";
};
}
if( !isObject( TerrainLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( TerrainLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Terrain Data Asset" TAB "" TAB "LooseFileAuditWindow.importTerrain();";
};
}
if( !isObject(SoundLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( SoundLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Sound Asset" TAB "" TAB "LooseFileAuditWindow.importSound();";
};
}
if( !isObject(LevelLooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( LevelLooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a Level Asset" TAB "" TAB "LooseFileAuditWindow.importLevel();";
};
}
if( !isObject(GUILooseFilePopup ) )
{
%this.ImportAssetActions = new PopupMenu( GUILooseFilePopup )
{
superClass = "MenuBuilder";
class = "EditorWorldMenu";
item[0] = "Make a GUI Asset" TAB "" TAB "LooseFileAuditWindow.importGUI();";
};
}
}
function LooseFileAuditWindow::showDialog(%this, %address)
{
LooseFileAuditWindow.buildPopupMenus();
Canvas.pushDialog(LooseFileAudit);
%this.currentAddress = %address;
%this.refresh();
}
function LooseFileAuditWindow::refresh(%this)
{
LooseFileList.clear();
LooseFileList.insertItem(0, "Loose Files");
//First, wipe out any files inside the folder first
%file = findFirstFileMultiExpr( %this.currentAddress @ "/*.*", false);
%aq = new AssetQuery();
while( %file !$= "" )
{
if(!endsWith(%file, ".cached.dts"))
{
if(!strIsMatchExpr("*.asset.taml", %file) && !strIsMatchExpr("*.taml", %file))
{
%assetsFound = AssetDatabase.findAssetLooseFile(%aq, %file);
if(%assetsFound == 0)
{
LooseFileList.insertItem(1, %file);
}
}
}
%file = findNextFileMultiExpr( %this.currentAddress @ "/*.*" );
}
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
%aq.delete();
}
function LooseFileList::onRightMouseDown(%this, %itemId)
{
LooseFileList.itemPath = %this.getItemText(%itemId);
LooseFileList.selectedItem = %itemId;
%ext = fileExt(LooseFileList.itemPath);
if(isImageFormat(%ext))
{
ImageLooseFilePopup.showPopup(Canvas);
}
else if(%ext $= "." @ $TorqueScriptFileExtension)
{
ScriptLooseFilePopup.showPopup(Canvas);
}
else if(isShapeFormat(%ext))
{
ShapeLooseFilePopup.showPopup(Canvas);
}
else if(%ext $= ".mis")
{
LevelLooseFilePopup.showPopup(Canvas);
}
else if(isSoundFormat(%ext))
{
SoundLooseFilePopup.showPopup(Canvas);
}
else if(%ext $= ".ter")
{
TerrainLooseFilePopup.showPopup(Canvas);
}
else if(%ext $= ".gui")
{
GUILooseFilePopup.showPopup(Canvas);
}
}
//
//
function LooseFileAuditWindow::importImage(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
%assetItem = AssetBrowser.addImportingAsset("ImageAsset", LooseFileList.itemPath, "", "");
ImportAssetItems.add(%assetItem);
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importScript(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("ScriptAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
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);
LooseFileList.expandItem(0);
}
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);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importSound(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("SoundAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importTerrain(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("TerrainAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importTerrMat(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("TerrainMaterialAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importShape(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("ShapeAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importShapeAnimation(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("ShapeAnimationAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importPostFX(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("PostEffectAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}
function LooseFileAuditWindow::importMaterial(%this)
{
if(!ImportAssetWindow.isAwake())
ImportAssetWindow.showDialog();
AssetBrowser.addImportingAsset("MaterialAsset", LooseFileList.itemPath, "", "");
LooseFileList.removeItem(LooseFileList.selectedItem, false);
LooseFileList.buildVisibleTree(true);
LooseFileList.expandItem(0);
}