mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
280 lines
10 KiB
Plaintext
280 lines
10 KiB
Plaintext
//
|
|
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)
|
|
{
|
|
toolsMessageBoxYesNo("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)
|
|
{
|
|
%moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
|
|
|
|
toolsMessageBoxYesNo("Delete Module?",
|
|
"This will permanently delete the module " @ %moduleDef.moduleId @ " and all it's contents. <br><br> Do you wish to continue?",
|
|
"AssetBrowser.doDeleteModule();",
|
|
"");
|
|
}
|
|
|
|
function AssetBrowser::doDeleteModule(%this)
|
|
{
|
|
//First, get the module path
|
|
%moduleDef = ModuleDatabase.findModule(AssetBrowser.selectedModule, 1);
|
|
%modulePath = %moduleDef.ModulePath;
|
|
|
|
//Next, unregister the module
|
|
ModuleDatabase.unregisterModule(AssetBrowser.SelectedModule, 1);
|
|
|
|
//Then, delete it
|
|
%this.deleteFolder(%modulePath);
|
|
|
|
//Remove the module def
|
|
%moduleDef.delete();
|
|
|
|
//And refresh the browser
|
|
%this.loadDirectories();
|
|
}
|
|
|
|
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 = "*." @ $TorqueScriptFileExtension 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();
|
|
} |