Przeglądaj źródła

Corrects handling for creating new folders via asset/AB workflow
Also fixes issue where Make Selected a Mesh action wasn't working properly because it lacked a ShapeAsset createNew method

JeffR 3 miesięcy temu
rodzic
commit
970394c42d

+ 57 - 0
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/folder.tscript

@@ -1,5 +1,62 @@
 AssetBrowser::registerFileType("FolderObjectType", "Folder", "/", false);
 
+function AssetBrowser::createNewFolder(%this)
+{
+   AssetBrowser_newFolderNameTxt.text = "NewFolder";
+   Canvas.pushDialog(AssetBrowser_newFolder, 99, true);
+
+   AssetBrowser_newFolderNameTxt.selectAllText();
+}
+
+function AssetBrowser::doCreateNewFolder(%this)
+{
+   %newFolderName = AssetBrowser_newFolderNameTxt.getText();
+   
+   if(%newFolderName $= "")
+      %newFolderName = "NewFolder";
+      
+   if(SelectAssetPath.isAwake())
+   {
+      %currentAddressPath = SelectAssetPath-->folderTree.getItemValue(SelectAssetPath.selectedTreeItem) @ "/" @ SelectAssetPath-->folderTree.getItemText(SelectAssetPath.selectedTreeItem);
+   }
+   else
+   {
+      %currentAddressPath = AssetBrowser.dirHandler.currentAddress;
+   }
+      
+   %newFolderIdx = "";
+   %matched = true;
+   %newFolderPath = "";
+   while(%matched == true)
+   {
+      %newFolderPath = %currentAddressPath @ "/" @ %newFolderName @ %newFolderIdx;
+      if(!isDirectory(%newFolderPath))
+      {
+         %matched = false;
+      }
+      else
+      {
+         %newFolderIdx++;         
+      }
+   }
+   
+   //make a dummy file
+   %file = new FileObject();
+   %file.openForWrite(%newFolderPath @ "/test");
+   %file.close();
+   
+   fileDelete(%newFolderPath @ "/test");
+   
+   //refresh the directory
+   AssetBrowser.loadDirectories();
+   
+   %this.navigateTo(%newFolderPath);
+   
+   //On the off chance we're trying to select a path, we'll update the select path window too
+   if(SelectAssetPath.isAwake())
+      SelectAssetPath.showDialog(%newFolderPath, SelectAssetPath.callback);
+}
+
 function FolderObjectType::setupCreateNew()
 {
    AssetBrowser_newFolderNameTxt.text = "NewFolder";

+ 33 - 0
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/shape.tscript

@@ -1,5 +1,38 @@
 AssetBrowser::registerAssetType("ShapeAsset", "Shapes"); 
 
+function ShapeAsset::onCreateNew()
+{
+   %moduleName = $CurrentAssetBrowser.newAssetSettings.moduleName;
+   %modulePath = "data/" @ %moduleName;
+      
+   %assetName = $CurrentAssetBrowser.newAssetSettings.assetName;
+   
+   %assetPath = NewAssetTargetAddress.getText() @ "/";
+   
+   %tamlpath = %assetPath @ %assetName @ ".asset.taml";
+   %shapeFilePath = %assetPath @ %assetName @ ".dae";
+   
+   %asset = new ShapeAsset()
+   {
+      AssetName = %assetName;
+      versionId = 1;
+      friendlyName = $CurrentAssetBrowser.newAssetSettings.friendlyName;
+      description = $CurrentAssetBrowser.newAssetSettings.description;
+      fileName = %assetName @ ".dae";
+   };
+   
+   TamlWrite(%asset, %tamlpath);
+   
+   Canvas.popDialog(AssetBrowser_newComponentAsset);
+	
+	%moduleDef = ModuleDatabase.findModule(%moduleName, 1);
+	AssetDatabase.addDeclaredAsset(%moduleDef, %tamlpath);
+
+	$CurrentAssetBrowser.refresh();
+	
+	return %tamlpath;
+}
+
 function ShapeAsset::onEdit(%this)
 {
    if(EditorSettings.value("Assets/Browser/doubleClickAction", "Edit Asset") $= "Edit Asset")