using UnityEngine; using UnityEngine.EventSystems; namespace UIWidgets { [RequireComponent(typeof(TreeView))] public class TreeViewDropSupport : MonoBehaviour, IDropSupport>, IDropSupport { private TreeView source; public TreeView Source { get { if (source == null) { source = GetComponent(); } return source; } } public bool CanReceiveDrop(TreeNode data, PointerEventData eventData) { return Source.Nodes == null || !Source.Nodes.Contains(data); } public void Drop(TreeNode data, PointerEventData eventData) { if (Source.Nodes == null) { Source.Nodes = new ObservableList>(); } Source.Nodes.Add(data); } public void DropCanceled(TreeNode data, PointerEventData eventData) { } public bool CanReceiveDrop(ListViewIconsItemDescription data, PointerEventData eventData) { return true; } public void Drop(ListViewIconsItemDescription data, PointerEventData eventData) { if (Source.Nodes == null) { Source.Nodes = new ObservableList>(); } TreeViewItem treeViewItem = new TreeViewItem(data.Name); treeViewItem.LocalizedName = data.LocalizedName; treeViewItem.Icon = data.Icon; treeViewItem.Value = data.Value; TreeViewItem nodeItem = treeViewItem; TreeNode item = new TreeNode(nodeItem); Source.Nodes.Add(item); } public void DropCanceled(ListViewIconsItemDescription data, PointerEventData eventData) { } } }