Beispiel #1
0
        protected int FindDropAtIndex(TreeView.DragAndDropArgs args)
        {
            int num = args.insertAtIndex;

            if (num < 0 || num > base.rootItem.children.Count)
            {
                num = base.rootItem.children.Count;
            }
            return(num);
        }
Beispiel #2
0
        protected override DragAndDropVisualMode HandleDragAndDrop(TreeView.DragAndDropArgs args)
        {
            var target = args.parentItem;

            if (target == null)
            {
                return(DragAndDropVisualMode.Rejected);
            }

            var targetData = this.idToDataMap[target.id];

            // Eventually handle moving to other DataSets, but not yet
            if (!(targetData is TransformData))
            {
                return(DragAndDropVisualMode.Rejected);
            }

            if (!args.performDrop)
            {
                return(DragAndDropVisualMode.Link);
            }

            foreach (var item in DragAndDrop.GetGenericData("Items") as List <int> )
            {
                var data = this.idToDataMap[item] as TransformData;

                // Unity gets mad if we swap parent and child, so don't allow that.
                if (data == (targetData as TransformData).Parent)
                {
                    return(DragAndDropVisualMode.Rejected);
                }

                data.Parent = targetData as TransformData;

                var sceneProxy = this.getSceneProxy(data.DataSetGuid, data.Name);
                if (sceneProxy == null)
                {
                    continue;
                }

                var parentSceneProxy = this.getSceneProxy(data.Parent.DataSetGuid, data.Parent.Name);
                if (parentSceneProxy == null)
                {
                    continue;
                }

                sceneProxy.transform.SetParent(parentSceneProxy.transform);
            }

            this.Reload();
            DragAndDrop.AcceptDrag();
            return(DragAndDropVisualMode.Link);
        }
Beispiel #3
0
        protected override DragAndDropVisualMode HandleDragAndDrop(TreeView.DragAndDropArgs args)
        {
            DragAndDropVisualMode result = DragAndDropVisualMode.None;
            List <int>            list   = DragAndDrop.GetGenericData("BuildPlayerSceneTreeViewItem") as List <int>;

            if (list != null && list.Count > 0)
            {
                result = DragAndDropVisualMode.Move;
                if (args.performDrop)
                {
                    int num = this.FindDropAtIndex(args);
                    List <TreeViewItem> list2 = new List <TreeViewItem>();
                    int num2 = 0;
                    foreach (TreeViewItem current in base.rootItem.children)
                    {
                        if (num2 == num)
                        {
                            foreach (int current2 in list)
                            {
                                list2.Add(base.FindItem(current2, base.rootItem));
                            }
                        }
                        num2++;
                        if (!list.Contains(current.id))
                        {
                            list2.Add(current);
                        }
                    }
                    if (list2.Count < base.rootItem.children.Count)
                    {
                        foreach (int current3 in list)
                        {
                            list2.Add(base.FindItem(current3, base.rootItem));
                        }
                    }
                    base.rootItem.children     = list2;
                    EditorBuildSettings.scenes = this.GetSceneList();
                    this.ReloadAndSelect(list);
                    base.Repaint();
                }
            }
            else if (DragAndDrop.paths != null && DragAndDrop.paths.Length > 0)
            {
                result = DragAndDropVisualMode.Copy;
                if (args.performDrop)
                {
                    List <EditorBuildSettingsScene> list3 = new List <EditorBuildSettingsScene>(EditorBuildSettings.scenes);
                    List <EditorBuildSettingsScene> list4 = new List <EditorBuildSettingsScene>();
                    List <int> list5 = new List <int>();
                    string[]   paths = DragAndDrop.paths;
                    for (int i = 0; i < paths.Length; i++)
                    {
                        string text = paths[i];
                        if (AssetDatabase.GetMainAssetTypeAtPath(text) == typeof(SceneAsset))
                        {
                            GUID gUID = new GUID(AssetDatabase.AssetPathToGUID(text));
                            list5.Add(gUID.GetHashCode());
                            bool flag = true;
                            foreach (EditorBuildSettingsScene current4 in list3)
                            {
                                if (current4.path == text)
                                {
                                    flag = false;
                                    break;
                                }
                            }
                            if (flag)
                            {
                                list4.Add(new EditorBuildSettingsScene(text, true));
                            }
                        }
                    }
                    int index = this.FindDropAtIndex(args);
                    list3.InsertRange(index, list4);
                    EditorBuildSettings.scenes = list3.ToArray();
                    this.ReloadAndSelect(list5);
                    base.Repaint();
                }
            }
            return(result);
        }