// 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.

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(); }