Browse Source

Merge pull request #394 from Areloch/DragNDropFixes

Fixes Datablock and Prefab DragnDrop behavior with the AB
Brian Roberts 4 years ago
parent
commit
6779e486dc

+ 4 - 0
Templates/BaseGame/game/tools/assetBrowser/scripts/assetBrowser.cs

@@ -2234,6 +2234,10 @@ function EWorldEditor::onControlDropped( %this, %payload, %position )
       {
          %buildCommand = AssetBrowser @ ".on" @ %assetType @ "EditorDropped(" @ %asset @ ",\"" @ %position @ "\");";
       }
+      else if(%assetType $= "Prefab")
+      {
+         %buildCommand = AssetBrowser @ ".on" @ %assetType @ "EditorDropped(\"" @ %module @ "/" @ %asset @ "\",\"" @ %position @ "\");";
+      }
       else
       {
          %assetDef = AssetDatabase.acquireAsset(%module @ ":" @ %asset);

+ 4 - 4
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/datablockObjects.cs

@@ -50,7 +50,7 @@ function AssetBrowser::buildDatablockPreview(%this, %assetDef, %previewData)
    //%previewData.assetFriendlyName = %assetDef.assetName;
    %previewData.assetDesc = %assetDef;
    %previewData.tooltip = %assetDef;
-   %previewData.doubleClickCommand = "DatablockEditorPlugin.openDatablock(" @ %assetDef @ ");";
+   %previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"spawnDatablockObject\",\""@ %assetDef @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
 }
 
 function spawnDatablockObject(%datablock)
@@ -58,10 +58,10 @@ function spawnDatablockObject(%datablock)
    %name = %datablock.getName();
    %class = %datablock.getClassName();
    %cmd = %class @ "::create(" @ %name @ ");";
-      
-   %shapePath = ( %datablock.shapeFile !$= "" ) ? %datablock.shapeFile : %datablock.shapeName;
+   
+   %shapePath = ( %datablock.shapeAsset !$= "" ) ? %datablock.shapeFile : %datablock.shapeName;
    %createCmd = "EWCreatorWindow.createObject( \"" @ %cmd @ "\" );";
-   return eval(%createCmd);
+   return eval(%createCmd);//eval("showImportDialog( \"" @ %shapePath @ "\", \"" @ %createCmd @ "\" );");
 }
 
 function AssetBrowser::renameDatablock(%this, %folderPath, %newFolderName)

+ 50 - 0
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/prefab.cs

@@ -1,3 +1,20 @@
+function AssetBrowser::createPrefab(%this)
+{
+   %moduleName = AssetBrowser.newAssetSettings.moduleName;
+   %modulePath = "data/" @ %moduleName;
+      
+   %assetName = AssetBrowser.newAssetSettings.assetName;  
+   
+   %assetPath = AssetBrowser.dirHandler.currentAddress @ "/";    
+   
+   %tamlpath = %assetPath @ %assetName @ ".asset.taml";
+   %prefabFilePath = %assetPath @ %assetName @ ".prefab";
+   
+   EWorldEditor.makeSelectionPrefab( %prefabFilePath );    
+   
+   EditorTree.buildVisibleTree( true ); 
+}
+
 function AssetBrowser::buildPrefabPreview(%this, %assetDef, %previewData)
 {
    %fullPath = %assetDef.dirPath @ "/" @ %assetDef.assetName;
@@ -11,4 +28,37 @@ function AssetBrowser::buildPrefabPreview(%this, %assetDef, %previewData)
    %previewData.tooltip = %fullPath;
    //%previewData.doubleClickCommand = "AssetBrowser.schedule(10, \"navigateTo\",\""@ %assetDef.dirPath @ "/" @ %assetDef.assetName @"\");";//browseTo %assetDef.dirPath / %assetDef.assetName
    %previewData.doubleClickCommand = "AssetBrowser.autoImportFile(\"" @ %fullPath @ "\");";
+}
+
+function AssetBrowser::onPrefabEditorDropped(%this, %assetDef, %position)
+{
+   //echo("DROPPED A SHAPE ON THE EDITOR WINDOW!"); 
+
+   %targetPosition = EWorldEditor.unproject(%position SPC 1000);
+   %camPos = LocalClientConnection.camera.getPosition();
+   %rayResult = containerRayCast(%camPos, %targetPosition, -1);
+   
+   %pos = EWCreatorWindow.getCreateObjectPosition();
+
+   if(%rayResult != 0)
+   {
+      %pos = getWords(%rayResult, 1, 3);
+   }
+   else
+   {
+      %pos = "0 0 0";  
+   }
+   
+   %newPrefab = new Prefab()
+   {
+      position = %pos;
+      fileName = %assetDef;
+   };
+   
+   getScene(0).add(%newPrefab);
+   
+   EWorldEditor.clearSelection();
+   EWorldEditor.selectObject(%newPrefab);
+      
+   EWorldEditor.isDirty = true;
 }