コード例 #1
0
        private DragAndDropVisualMode HandleDragDropBetween(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Copy;//Move;

            var parent = (data.args.parentItem as AssetBundleModel.BundleTreeItem);

            if (parent != null)
            {
                var variantFolder = parent.bundle as AssetBundleModel.BundleVariantFolderInfo;
                if (variantFolder != null)
                {
                    return(DragAndDropVisualMode.Rejected);
                }

                if (data.args.performDrop)
                {
                    var folder = parent.bundle as AssetBundleModel.BundleFolderConcreteInfo;
                    if (folder != null)
                    {
                        if (data.draggedNodes != null)
                        {
                            AssetBundleModel.Model.HandleBundleReparent(data.draggedNodes, folder);
                            Reload();
                        }
                        else if (data.paths != null)
                        {
                            DragPathsToNewSpace(data.paths, folder);
                        }
                    }
                }
            }

            return(visualMode);
        }
コード例 #2
0
        private DragAndDropVisualMode HandleDragDropUpon(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Copy;

            var parent = (data.args.parentItem as GraphCollectionTreeItem);

            if (parent != null)
            {
                if (data.args.performDrop)
                {
                    if (data.FromDetailTree)
                    {
                        var guids = data.detailDraggedNodes.Select(n => n.GraphGuid).ToList();
                        parent.Collection.AddGraphRange(guids);
                    }
                    else
                    {
                        parent.Collection.AddGraphRange(data.graphGuids);
                    }

                    m_controller.UpdateSelectedGraphCollection(parent.Collection);

                    SetSelection(new int[] { parent.id });
                    BatchBuildConfig.SetConfigDirty();
                }
            }

            return(visualMode);
        }
コード例 #3
0
        private DragAndDropVisualMode HandleDragDropBetween(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Move;

            var parent = (data.args.parentItem as GraphCollectionTreeItem);

            if (parent != null)
            {
                if (data.args.performDrop)
                {
                    var collection = BatchBuildConfig.GetConfig().GraphCollections;

                    collection.Remove(data.draggedNode.Collection);

                    if (data.args.insertAtIndex < collection.Count)
                    {
                        collection.Insert(data.args.insertAtIndex, data.draggedNode.Collection);
                    }
                    else
                    {
                        collection.Add(data.draggedNode.Collection);
                    }

                    BatchBuildConfig.SetConfigDirty();

                    ReloadAndSelect();
                }
            }

            return(visualMode);
        }
コード例 #4
0
        private DragAndDropVisualMode HandleDragDropUpon(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Move;
            var targetDataBundle             = data.targetNode.bundle as AssetBundleModel.BundleDataInfo;

            if (targetDataBundle != null)
            {
                if (targetDataBundle.IsSceneBundle)
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                else
                {
                    if (data.hasScene || data.hasBundleFolder)
                    {
                        return(DragAndDropVisualMode.Rejected);
                    }
                    else
                    {
                        if (data.args.performDrop)
                        {
                            if (data.draggedNodes != null)
                            {
                                AssetBundleModel.Model.HandleBundleMerge(data.draggedNodes, targetDataBundle);
                                ReloadAndSelect(targetDataBundle.NameHashCode, false);
                            }
                            else if (data.paths != null)
                            {
                                AssetBundleModel.Model.MoveAssetToBundle(data.paths, targetDataBundle.m_name.Name);
                                AssetBundleModel.Model.ExecuteAssetMove();
                                ReloadAndSelect(targetDataBundle.NameHashCode, false);
                            }
                        }
                    }
                }
            }
            else
            {
                var folder = data.targetNode.bundle as AssetBundleModel.BundleFolderInfo;
                if (folder != null && data.args.performDrop)
                {
                    if (data.draggedNodes != null)
                    {
                        AssetBundleModel.Model.HandleBundleReparent(data.draggedNodes, folder);
                        Reload();
                    }
                    else if (data.paths != null)
                    {
                        DragPathsToNewSpace(data.paths, folder, data.hasScene);
                    }
                }
            }
            return(visualMode);
        }
コード例 #5
0
        private bool CheckDropInDepsFolder(DragAndDropArgs args)
        {
            DragAndDropData data   = new DragAndDropData(args);
            var             parent = (data.args.parentItem as AssetBundleModel.BundleTreeItem);

            if (parent != null)
            {
                if (parent.bundle.m_Name.bundleName.StartsWith(AssetBundleConfig.AssetBundlesDepsDir))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #6
0
        protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.None;
            DragAndDropData       data       = new DragAndDropData(args);

            if (AssetBundleModel.Model.DataSource.IsReadOnly())
            {
                return(DragAndDropVisualMode.Rejected);
            }

            if ((data.hasScene && data.hasNonScene) ||
                (data.hasVariantChild))
            {
                return(DragAndDropVisualMode.Rejected);
            }

            switch (args.dragAndDropPosition)
            {
            case DragAndDropPosition.UponItem:
                visualMode = HandleDragDropUpon(data);
                break;

            case DragAndDropPosition.BetweenItems:
                visualMode = HandleDragDropBetween(data);
                break;

            case DragAndDropPosition.OutsideItems:
                if (data.draggedNodes != null)
                {
                    visualMode = DragAndDropVisualMode.Copy;
                    if (data.args.performDrop)
                    {
                        AssetBundleModel.Model.HandleBundleReparent(data.draggedNodes, null);
                        Reload();
                    }
                }
                else if (data.paths != null)
                {
                    visualMode = DragAndDropVisualMode.Copy;
                    if (data.args.performDrop)
                    {
                        DragPathsToNewSpace(data.paths, null);
                    }
                }
                break;
            }
            return(visualMode);
        }
コード例 #7
0
        private DragAndDropVisualMode HandleDragDropBetween(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Rejected;

            var parent = (data.args.parentItem as GraphCollectionDetailTreeItem);

            if (parent != null && (data.DraggedNode || data.DraggedGraphs))
            {
                visualMode = DragAndDropVisualMode.Move;

                if (data.args.performDrop)
                {
                    var           collection = m_controller.CurrentCollection;
                    List <string> guids      = null;

                    if (data.DraggedNode)
                    {
                        guids = data.draggedNodes.Select(n => n.GraphGuid).ToList();
                    }
                    else
                    {
                        guids = data.graphGuids;
                    }

                    collection.RemoveGraphRange(guids);

                    if (data.args.insertAtIndex < collection.GraphGUIDs.Count)
                    {
                        collection.InsertGraphRange(data.args.insertAtIndex, guids);
                    }
                    else
                    {
                        collection.AddGraphRange(guids);
                    }

                    BatchBuildConfig.SetConfigDirty();

                    Reload();
                }
            }

            return(visualMode);
        }
コード例 #8
0
        protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.None;
            DragAndDropData       data       = new DragAndDropData(args);

            switch (args.dragAndDropPosition)
            {
            case DragAndDropPosition.UponItem:
                if (data.CanAcceptDropUpon)
                {
                    visualMode = HandleDragDropUpon(data);
                }
                else
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                break;

            case DragAndDropPosition.BetweenItems:
                if (data.CanAcceptDropBetween)
                {
                    visualMode = HandleDragDropBetween(data);
                }
                else
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                break;

            case DragAndDropPosition.OutsideItems:
                if (data.CanAcceptDropOutsideItems)
                {
                    visualMode = HandleDragDropOutsideItems(data);
                }
                else
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                break;
            }

            return(visualMode);
        }
コード例 #9
0
        private DragAndDropVisualMode HandleDragAndDropUpon(DragAndDropData data)
        {
            var visualMode       = DragAndDropVisualMode.Copy;
            var targetDataBundle = data.targetNode.BundleData as BundleDataInfo;

            if (targetDataBundle != null)
            {
                if (targetDataBundle.isSceneBundle)
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                else
                {
                    if (data.hasScene && !targetDataBundle.IsEmpty())
                    {
                        visualMode = DragAndDropVisualMode.Rejected;
                    }
                    else
                    {
                        if (data.args.performDrop)
                        {
                            if (data.draggedNodes != null)
                            {
                                BundleModel.HandleBundleMerge(data.draggedNodes, targetDataBundle);
                                ReloadAndSelect(targetDataBundle.nameHashCode, false);
                            }
                            else if (data.paths != null)
                            {
                                BundleModel.MoveAssetToBundle(data.paths, targetDataBundle.m_Name);
                                ReloadAndSelect(targetDataBundle.nameHashCode, false);
                            }
                        }
                    }
                }
            }
            else
            {
                var root = data.targetNode.BundleData as BundleDataInfo;
            }
            return(visualMode);
        }
コード例 #10
0
        private DragAndDropVisualMode HandleDragDropOutsideItems(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Copy;

            if (data.args.performDrop)
            {
                var guid      = data.graphGuids [0];
                var graphName = Path.GetFileNameWithoutExtension(AssetDatabase.GUIDToAssetPath(guid));

                var c = BatchBuildConfig.CreateNewGraphCollection(graphName);

                c.AddGraphRange(data.graphGuids);

                m_controller.UpdateSelectedGraphCollection(c);
                m_controller.Refresh();

                BatchBuildConfig.SetConfigDirty();
            }

            return(visualMode);
        }
コード例 #11
0
        protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args)
        {
            var visualMode = DragAndDropVisualMode.None;
            var data       = new DragAndDropData(args);

            switch (args.dragAndDropPosition)
            {
            case DragAndDropPosition.UponItem:
                visualMode = HandleDragAndDropUpon(data);
                break;

            case DragAndDropPosition.BetweenItems:
                visualMode = HandleDragAndDropBetween(data);
                break;

            case DragAndDropPosition.OutsideItems:
                if (data.draggedNodes != null)
                {
                    visualMode = DragAndDropVisualMode.Copy;
                    if (data.args.performDrop)
                    {
                        // TODO ReParent
                        Reload();
                    }
                }
                else if (data.paths != null)
                {
                    visualMode = DragAndDropVisualMode.Copy;
                    if (data.args.performDrop)
                    {
                        DragPathsToNewSpace(data.paths, null, data.hasScene);
                    }
                }
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            return(visualMode);
        }
コード例 #12
0
        private DragAndDropVisualMode HandleDragDropOutsideItems(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Rejected;

            if (data.DraggedGraphs && m_controller.CurrentCollection != null)
            {
                visualMode = DragAndDropVisualMode.Copy;

                if (data.args.performDrop)
                {
                    var collection = m_controller.CurrentCollection;

                    collection.AddGraphRange(data.graphGuids);

                    BatchBuildConfig.SetConfigDirty();

                    Reload();
                }
            }

            return(visualMode);
        }
コード例 #13
0
        private DragAndDropVisualMode HandleDragDropBetween(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Rejected;

            var parent = (data.args.parentItem as BuildTargetTreeItem);

            if (parent != null && data.DraggedNode)
            {
                visualMode = DragAndDropVisualMode.Move;

                if (data.args.performDrop)
                {
                    var targets = BatchBuildConfig.GetConfig().BuildTargets;

                    var movingTargets = data.draggedNodes.Select(n => n.Target).ToList();

                    foreach (var t in movingTargets)
                    {
                        targets.Remove(t);
                    }

                    if (data.args.insertAtIndex < targets.Count)
                    {
                        targets.InsertRange(data.args.insertAtIndex, movingTargets);
                    }
                    else
                    {
                        targets.AddRange(movingTargets);
                    }

                    BatchBuildConfig.SetConfigDirty();

                    Reload();
                }
            }

            return(visualMode);
        }
コード例 #14
0
        protected override DragAndDropVisualMode HandleDragAndDrop(DragAndDropArgs args)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.None;
            DragAndDropData       data       = new DragAndDropData(args);

            if (data.hasScene && data.hasNonScene)
            {
                return(DragAndDropVisualMode.Rejected);
            }

            switch (args.dragAndDropPosition)
            {
            case DragAndDropPosition.UponItem:
                visualMode = HandleDragDropUpon(data);
                break;

            case DragAndDropPosition.BetweenItems:
                visualMode = HandleDragDropBetween(data);
                break;

            case DragAndDropPosition.OutsideItems:
                if (data.draggedNodes != null)
                {
                    visualMode = DragAndDropVisualMode.Rejected;
                }
                else if (data.paths != null)
                {
                    visualMode = DragAndDropVisualMode.Generic;

                    if (data.args.performDrop)
                    {
                        DragPathsToNewSpace(data.paths, null, data.hasScene);
                    }
                }
                break;
            }
            return(visualMode);
        }
コード例 #15
0
        private DragAndDropVisualMode HandleDragDropUpon(DragAndDropData data)
        {
            DragAndDropVisualMode visualMode = DragAndDropVisualMode.Copy;//Move;
            var targetDataBundle             = data.targetNode.Bundle as AssetBundleModel.BundleDataInfo;

            if (targetDataBundle != null)
            {
                if (targetDataBundle.isSceneBundle)
                {
                    if (data.hasNonScene)
                    {
                        return(DragAndDropVisualMode.Rejected);
                    }
                }
                else
                {
                    if (data.hasBundleFolder)
                    {
                        return(DragAndDropVisualMode.Rejected);
                    }
                    else if (data.hasScene && !targetDataBundle.IsEmpty())
                    {
                        return(DragAndDropVisualMode.Rejected);
                    }
                }

                if (data.args.performDrop)
                {
                    if (data.draggedNodes != null)
                    {
                        AssetBundleModel.Model.HandleBundleMerge(data.draggedNodes, targetDataBundle);
                        ReloadAndSelect(targetDataBundle.NameHashCode, false);
                    }
                    else if (data.paths != null)
                    {
                        AssetBundleModel.Model.MoveAssetToBundle(data.paths, targetDataBundle.Name.BundleName, targetDataBundle.Name.Variant);
                        AssetBundleModel.Model.ExecuteAssetMove();
                        ReloadAndSelect(targetDataBundle.NameHashCode, false);
                    }
                }
            }
            else
            {
                var folder = data.targetNode.Bundle as AssetBundleModel.BundleFolderInfo;
                if (folder != null)
                {
                    if (data.args.performDrop)
                    {
                        if (data.draggedNodes != null)
                        {
                            AssetBundleModel.Model.HandleBundleReparent(data.draggedNodes, folder);
                            Reload();
                        }
                        else if (data.paths != null)
                        {
                            DragPathsToNewSpace(data.paths, folder);
                        }
                    }
                }
                else
                {
                    visualMode = DragAndDropVisualMode.Rejected; //must be a variantfolder
                }
            }
            return(visualMode);
        }
コード例 #16
0
 private DragAndDropVisualMode HandleDragAndDropBetween(DragAndDropData data)
 {
     return(DragAndDropVisualMode.Move);
 }