mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-26 23:54:46 +00:00
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
256 lines
9.4 KiB
C#
256 lines
9.4 KiB
C#
//
|
|
function AssetBrowser::ConvertFolderIntoModule(%this, %folderName)
|
|
{
|
|
if(!isDirectory("data/" @ %folderName))
|
|
return;
|
|
|
|
AssetBrowser_AddModule-->moduleName.text = %folderName;
|
|
AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
|
|
|
|
AssetBrowser_addModuleWindow.CreateNewModule();
|
|
}
|
|
|
|
function AssetBrowser::CreateNewModule(%this)
|
|
{
|
|
Canvas.pushDialog(AssetBrowser_AddModule);
|
|
AssetBrowser_addModuleWindow.selectWindow();
|
|
|
|
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)
|
|
{
|
|
Canvas.pushDialog(AssetBrowser_AddModule);
|
|
AssetBrowser_addModuleWindow.selectWindow();
|
|
|
|
AssetBrowser_addModuleWindow.callbackFunction = "AssetBrowser.loadDirectories();";
|
|
|
|
AssetBrowser_addModuleWindow.CreateNewModule();
|
|
}
|
|
|
|
function AssetBrowser_editModule::saveModule(%this)
|
|
{
|
|
//Check what special actions we may need to do, such as renames
|
|
%moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
|
|
|
|
%oldModuleName = %moduleDef.ModuleID;
|
|
|
|
if(%oldModuleName !$= AssetBrowser.tempModule.ModuleID)
|
|
{
|
|
//rename the script file and script namespaces
|
|
%oldScriptFilePath = "data/" @ %oldModuleName @ "/" @ %moduleDef.scriptFile;
|
|
%newscriptFilePath = "data/" @ AssetBrowser.tempModule.ModuleID @ "/";
|
|
%scriptExt = fileExt(%moduleDef.scriptFile);
|
|
|
|
%newScriptFileName = %newscriptFilePath @ "/" @ AssetBrowser.tempModule.ModuleID @ %scriptExt;
|
|
%newScriptFileOldName = %newscriptFilePath @ "/" @ %oldModuleName @ %scriptExt;
|
|
|
|
%moduleDef.ModuleId = AssetBrowser.tempModule.ModuleID;
|
|
%moduleDef.scriptFile = AssetBrowser.tempModule.ModuleID @ %scriptExt;
|
|
|
|
ModuleDatabase.copyModule(%moduleDef, AssetBrowser.tempModule.ModuleID, "data/" @ AssetBrowser.tempModule.ModuleID);
|
|
|
|
//Go through our scriptfile and replace the old namespace with the new
|
|
%editedFileContents = "";
|
|
|
|
%file = new FileObject();
|
|
if ( %file.openForRead( %newScriptFileOldName ) )
|
|
{
|
|
while ( !%file.isEOF() )
|
|
{
|
|
%line = %file.readLine();
|
|
%line = trim( %line );
|
|
|
|
%editedFileContents = %editedFileContents @ strreplace(%line, %oldModuleName, AssetBrowser.tempModule.ModuleID) @ "\n";
|
|
}
|
|
|
|
%file.close();
|
|
}
|
|
|
|
if(%editedFileContents !$= "")
|
|
{
|
|
%file.openForWrite(%newScriptFileName);
|
|
|
|
%file.writeline(%editedFileContents);
|
|
|
|
%file.close();
|
|
}
|
|
|
|
%success = fileDelete(%newScriptFileOldName);
|
|
|
|
ModuleDatabase.unloadExplicit(%oldModuleName);
|
|
|
|
%success = fileDelete("data/" @ %oldModuleName);
|
|
|
|
ModuleDatabase.loadExplicit(AssetBrowser.tempModule.ModuleID);
|
|
}
|
|
|
|
//Now, update the module file itself
|
|
//%file = ModuleDatabase.getAssetFilePath(%moduleDef.ModuleID);
|
|
//%success = TamlWrite(AssetBrowser_editAsset.editedAsset, %file);
|
|
|
|
AssetBrowser.loadFilters();
|
|
|
|
Canvas.popDialog(AssetBrowser_editModule);
|
|
}
|
|
|
|
function AssetBrowser::editModuleInfo(%this)
|
|
{
|
|
Canvas.pushDialog(AssetBrowser_editModule);
|
|
|
|
%moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
|
|
|
|
AssetBrowser.tempModule = new ModuleDefinition();
|
|
AssetBrowser.tempModule.assignFieldsFrom(%moduleDef);
|
|
|
|
AssetBrowser_editModule.editedModuleId = AssetBrowser.selectedModule;
|
|
AssetBrowser_editModule.editedModule = AssetBrowser.tempModule;
|
|
|
|
/// Module configuration.
|
|
ModuleEditInspector.startGroup("General");
|
|
ModuleEditInspector.addField("ModuleId", "ModuleId", "string", "", AssetBrowser.tempModule.ModuleId, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("VersionId", "VersionId", "string", "", AssetBrowser.tempModule.VersionId, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("BuildId", "BuildId", "string", "", AssetBrowser.tempModule.BuildId, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("enabled", "enabled", "bool", "", AssetBrowser.tempModule.enabled, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("Description", "Description", "command", "", AssetBrowser.tempModule.Description, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("Group", "Group", "string", "", AssetBrowser.tempModule.Group, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.endGroup();
|
|
|
|
ModuleEditInspector.startGroup("Management");
|
|
ModuleEditInspector.addField("Synchronized", "Synchronized", "bool", "", AssetBrowser.tempModule.Synchronized, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("Deprecated", "Deprecated", "bool", "", AssetBrowser.tempModule.Deprecated, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("CriticalMerge", "CriticalMerge", "bool", "", AssetBrowser.tempModule.CriticalMerge, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("OverrideExistingObjects", "OverrideExistingObjects", "bool", "", AssetBrowser.tempModule.OverrideExistingObjects, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.endGroup();
|
|
|
|
ModuleEditInspector.startGroup("Meta");
|
|
ModuleEditInspector.addField("Author", "Author", "string", "", AssetBrowser.tempModule.Author, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("Type", "Type", "string", "", AssetBrowser.tempModule.Type, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.endGroup();
|
|
|
|
ModuleEditInspector.startGroup("Script");
|
|
ModuleEditInspector.addField("ScriptFile", "ScriptFile", "string", "", AssetBrowser.tempModule.ScriptFile, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("CreateFunction", "CreateFunction", "string", "", AssetBrowser.tempModule.CreateFunction, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.addField("DestroyFunction", "DestroyFunction", "string", "", AssetBrowser.tempModule.DestroyFunction, "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.endGroup();
|
|
|
|
ModuleEditInspector.startGroup("Dependencies");
|
|
ModuleEditInspector.addField("ModuleDependencies", "Module Dependencies", "ModuleDependenciesButton", "", "", "", AssetBrowser.tempModule);
|
|
ModuleEditInspector.endGroup();
|
|
}
|
|
|
|
function AssetBrowser::editModuleScript(%this)
|
|
{
|
|
%moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
|
|
|
|
%scriptFile = %moduleDef.ModuleScriptFilePath;
|
|
|
|
EditorOpenFileInTorsion(makeFullPath(%scriptFile), 0);
|
|
}
|
|
|
|
function AssetBrowser::renameModule(%this)
|
|
{
|
|
|
|
}
|
|
|
|
function AssetBrowser::reloadModule(%this)
|
|
{
|
|
ModuleDatabase.unregisterModule(AssetBrowser.SelectedModule, 1);
|
|
ModuleDatabase.loadExplicit(AssetBrowser.SelectedModule);
|
|
}
|
|
|
|
function AssetBrowser::deleteModule(%this)
|
|
{
|
|
|
|
}
|
|
|
|
function AssetBrowser::RefreshModuleDependencies(%this, %moduleDef)
|
|
{
|
|
//Iterate through all our modules
|
|
|
|
//then, iterate through the module's assets
|
|
|
|
//if an asset has a module that isn't us, queue that into the dependencies list
|
|
|
|
//AssetBrowser.RefreshModuleDependencies(16823);
|
|
%modulePath = filePath(%moduleDef.ModuleFilePath);
|
|
|
|
%filePattern = "*.cs" TAB "*.taml" TAB "*.mis";
|
|
|
|
//First, wipe out any files inside the folder first
|
|
%file = makeFullPath(findFirstFileMultiExpr( %filePattern, true));
|
|
%fileObj = new FileObject();
|
|
|
|
%modulesList = ModuleDatabase.findModules(false);
|
|
|
|
new ArrayObject(moduleDepList);
|
|
|
|
while( %file !$= "" )
|
|
{
|
|
if(startsWith(%file, %modulePath))
|
|
{
|
|
if(%fileObj.openForRead(%file))
|
|
{
|
|
while( !%fileObj.isEOF() )
|
|
{
|
|
%line = %fileObj.readLine();
|
|
|
|
if(%line $= "")
|
|
continue;
|
|
|
|
for(%i=0; %i < getWordCount(%modulesList); %i++)
|
|
{
|
|
%moduleName = getWord(%modulesList, %i).moduleID;
|
|
|
|
//if(%moduleName $= %moduleDef.moduleID)
|
|
// continue;
|
|
|
|
%hasMatch = strIsMatchExpr( "*"@%moduleName@":*", %line );
|
|
|
|
if(%hasMatch)
|
|
{
|
|
moduleDepList.add(%moduleName);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
%file = makeFullPath(findNextFileMultiExpr( %filePattern ));
|
|
}
|
|
|
|
%fileObj.delete();
|
|
} |