diff --git a/Source/Editor/Surface/BehaviorTreeSurface.cs b/Source/Editor/Surface/BehaviorTreeSurface.cs
index 30b548a5d..512a55638 100644
--- a/Source/Editor/Surface/BehaviorTreeSurface.cs
+++ b/Source/Editor/Surface/BehaviorTreeSurface.cs
@@ -2,6 +2,7 @@
using System;
using System.Collections.Generic;
+using FlaxEditor.Content;
using FlaxEditor.Scripting;
using FlaxEditor.Surface.ContextMenu;
using FlaxEditor.Surface.Elements;
@@ -145,6 +146,41 @@ namespace FlaxEditor.Surface
base.CanUseNodeType(groupArchetype, nodeArchetype);
}
+ ///
+ protected override bool ValidateDragItem(AssetItem assetItem)
+ {
+ if (assetItem.IsOfType())
+ return true;
+ return base.ValidateDragItem(assetItem);
+ }
+
+ ///
+ protected override void HandleDragDropAssets(List objects, DragDropEventArgs args)
+ {
+ for (int i = 0; i < objects.Count; i++)
+ {
+ var assetItem = objects[i];
+ SurfaceNode node = null;
+
+ if (assetItem.IsOfType())
+ {
+ var instance = new BehaviorTreeSubTreeNode();
+ instance.Name = Utilities.Utils.GetPropertyNameUI(assetItem.ShortName);
+ instance.Tree = (BehaviorTree)assetItem.LoadAsync();
+ node = Context.SpawnNode(19, 1, args.SurfaceLocation, new object[]
+ {
+ typeof(BehaviorTreeSubTreeNode).FullName,
+ FlaxEngine.Json.JsonSerializer.SaveToBytes(instance),
+ });
+ FlaxEngine.Object.Destroy(instance);
+ }
+
+ if (node != null)
+ args.SurfaceLocation.X += node.Width + 10;
+ }
+ base.HandleDragDropAssets(objects, args);
+ }
+
///
public override void OnDestroy()
{