Example #1
0
        void OnDropDraggedElements(List <TreeViewItem> draggedRows, AssetTreeItem <AssetTreeData> parent)
        {
            if (parent.depth != 0)
            {
                Debug.LogErrorFormat("{0} depth error ", parent);
                return;
            }

            var draggedElements = ListPool <AssetTreeData> .Get();

            foreach (var value in draggedRows)
            {
                AssetTreeItem <AssetTreeData> assetval = value as AssetTreeItem <AssetTreeData>;
                if (assetval != null)
                {
                    draggedElements.Add(assetval.GetData());
                }
            }

            var selectedIDs = new List <int>();

            foreach (var data in draggedElements)
            {
                selectedIDs.Add(data.Id);
            }
            //m_TreeModel.MoveElements(parent, insertIndex, draggedElements);
            _treeView.SetSelection(selectedIDs, TreeViewSelectionOptions.RevealAndFrame);

            //reset assetbundle
            foreach (var data in draggedElements)
            {
                var import = AssetImporter.GetAtPath(data.FilePath);
                if (import != null)
                {
                    var oldname = import.assetBundleName;
                    var newname = parent.displayName;

                    GuiShowMsg msg = new GuiShowMsg();
                    msg.Time        = 3f;
                    msg.MessageType = MessageType.Info;
                    msg.Message     = string.Format("{0} assetbundlename rename from {1} to {2}", data.FilePath, oldname, newname);

                    import.assetBundleName = newname;
                    import.SaveAndReimport();
                    _tips.Enqueue(msg);
                }
            }

            bool update = draggedElements.Count > 0;

            ListPool <AssetTreeData> .Release(draggedElements);

            if (update)
            {
                //refresh
                EditorContexts.mIns.ForceModeChange(EditorContexts.mIns.Mode);
            }
        }
Example #2
0
        int SortResTypeFunc(TreeViewItem left, TreeViewItem right)
        {
            AssetTreeItem <DependencyTreeData> leftItem  = left as AssetTreeItem <DependencyTreeData>;
            AssetTreeItem <DependencyTreeData> rightItem = right as AssetTreeItem <DependencyTreeData>;

            if (leftItem != null && rightItem != null)
            {
                int leftrestype  = (int)leftItem.GetData().EditorInfo.RuntimeInfo.AssetResType;
                int rightrestype = (int)rightItem.GetData().EditorInfo.RuntimeInfo.AssetResType;
                return(_sortval * (leftrestype - rightrestype));
            }
            return(0);
        }
Example #3
0
        int SortDependcyFunc(TreeViewItem left, TreeViewItem right)
        {
            AssetTreeItem <AssetTreeData> leftItem  = left as AssetTreeItem <AssetTreeData>;
            AssetTreeItem <AssetTreeData> rightItem = right as AssetTreeItem <AssetTreeData>;

            if (leftItem != null && rightItem != null)
            {
                int leftsize  = leftItem.GetData().EditorInfo.RuntimeInfo.DependenciesCnt;
                int rightsize = rightItem.GetData().EditorInfo.RuntimeInfo.DependenciesCnt;
                return(_sortval * (leftsize - rightsize));
            }
            return(0);
        }
        void OnDropDraggedElements(List <TreeViewItem> draggedRows, AssetTreeItem <SpriteTrackData> parent)
        {
            var draggedElements = ListPool <SpriteTrackData> .Get();

            foreach (var value in draggedRows)
            {
                AssetTreeItem <SpriteTrackData> assetval = value as AssetTreeItem <SpriteTrackData>;
                if (assetval != null)
                {
                    draggedElements.Add(assetval.GetData());
                }
            }

            var selectedIDs = new List <int>();

            foreach (var data in draggedElements)
            {
                selectedIDs.Add(data.Id);
            }
            //m_TreeModel.MoveElements(parent, insertIndex, draggedElements);
            _treeView.SetSelection(selectedIDs, TreeViewSelectionOptions.RevealAndFrame);

            string parentTag = parent.displayName;

            if (!string.IsNullOrEmpty(parentTag))
            {
                foreach (var data in draggedElements)
                {
                    var import = AssetImporter.GetAtPath(data.AtlasData.SprData.AssetPath) as TextureImporter;
                    if (import != null)
                    {
                        import.spritePackingTag = parentTag;
                        import.SaveAndReimport();
                    }
                }

                bool update = draggedElements.Count > 0;

                ListPool <SpriteTrackData> .Release(draggedElements);

                if (update)
                {
                    //refresh
                    EditorContexts.mIns.ForceModeChange(EditorContexts.mIns.Mode);
                }
            }
            else
            {
                Debug.LogError("Parent Tag is Empty");
            }
        }
        void TryAddChildren(AssetTreeItem <T> rootitem, List <TreeViewItem> list, AssetTreeModel <T> model, int depth)
        {
            if (model.HasChildren(rootitem.DataId))
            {
                List <T> children = model.GetChildren(rootitem.DataId);
                Stack <AssetTreeItem <T> > stack = StackPool <AssetTreeItem <T> > .Get();

                for (int i = children.Count - 1; i >= 0; i--)
                {
                    var child = children[i];

                    //create item
                    var childItem = CreateItem(ref child, depth + 1);
                    stack.Push(childItem);
                }

                ListPool <T> .Release(children);

                while (stack.Count > 0)
                {
                    var stackChild = stack.Pop();
                    list.Add(stackChild);
                    if (model.HasChildren(stackChild.DataId))
                    {
                        if (IsExpanded(stackChild.id))
                        {
                            children = model.GetChildren(stackChild.DataId);
                            //
                            //stackChild.children = new List<TreeViewItem>();
                            for (int i = children.Count - 1; i >= 0; i--)
                            {
                                var child = children[i];

                                //create item
                                var childItem = CreateItem(ref child, stackChild.depth + 1);
                                stack.Push(childItem);
                                //stackChild.children.Add(childItem);
                            }

                            ListPool <T> .Release(children);
                        }
                        else
                        {
                            stackChild.children = CreateChildListForCollapsedParent();
                        }
                    }
                }

                StackPool <AssetTreeItem <T> > .Release(stack);
            }
        }
Example #6
0
        int SortSelfFileSizeFunc(TreeViewItem left, TreeViewItem right)
        {
            AssetTreeItem <DependencyTreeData> leftItem  = left as AssetTreeItem <DependencyTreeData>;
            AssetTreeItem <DependencyTreeData> rightItem = right as AssetTreeItem <DependencyTreeData>;

            if (leftItem != null && rightItem != null)
            {
                var  ld        = leftItem.GetData();
                var  rd        = rightItem.GetData();
                long leftsize  = AssetBundleEditorHelper.GetSelfFileSize(ref ld, left.depth == 0, _model);
                long rightsize = AssetBundleEditorHelper.GetSelfFileSize(ref rd, left.depth == 0, _model);
                return(_sortval * (int)(leftsize - rightsize));
            }
            return(0);
        }
        public void Drag(ref AssetDragAndDropArgs dragargs, ref DragAndDropVisualMode dragmd)
        {
            var draggedRows = DragAndDrop.GetGenericData("AssetTreeViewDragging") as List <TreeViewItem>;

            if (draggedRows != null)
            {
                switch (dragargs.dragAndDropPosition)
                {
                case AssetDragAndDropArgs.DragAndDropPosition.UponItem:
                case AssetDragAndDropArgs.DragAndDropPosition.BetweenItems:
                {
                    bool validDrag = dragargs.parentItem.depth != 0;
                    if (dragargs.performDrop && validDrag)
                    {
                        if (dragargs.parentItem.parent != null)
                        {
                            AssetTreeItem <SpriteTrackData> itemdata = dragargs.parentItem as AssetTreeItem <SpriteTrackData>;
                            if (itemdata != null && itemdata.GetData().ShowMode == SpriteShowMode.Atlas && itemdata.depth == 1)
                            {
                                OnDropDraggedElements(draggedRows, itemdata);
                            }
                        }
                    }

                    dragmd = validDrag ? DragAndDropVisualMode.Move : DragAndDropVisualMode.None;
                    break;
                }

                case AssetDragAndDropArgs.DragAndDropPosition.OutsideItems:
                {
                    dragmd = DragAndDropVisualMode.Move;
                    break;
                }

                default:
                    Debug.LogError("Unhandled enum " + dragargs.dragAndDropPosition);
                    dragmd = DragAndDropVisualMode.None;
                    break;
                }
            }
            else
            {
                dragmd = DragAndDropVisualMode.None;
            }
        }
        protected override IList <TreeViewItem> BuildRows(TreeViewItem rootitem)
        {
            var selections = GetSelection();

            _rows.Clear();

            AssetTreeItem <T> root = rootitem as AssetTreeItem <T>;

            if (root != null)
            {
                if (!string.IsNullOrEmpty(searchString))
                {
                    SearchItem(_rows, _model, root.DataId);
                }
                else
                {
                    TryAddChildren(root, _rows, _model, -1);
                }

                SetupParentsAndChildrenFromDepths(rootitem, _rows);

                var render = AssetTreeManager.mIns.GetGuiRender(EditorContexts.mIns.Mode);
                if (render != null)
                {
                    foreach (var subrender in render)
                    {
                        if (subrender.TypeMode == _viewMode)
                        {
                            IGuiTree treeRender = subrender as IGuiTree;
                            if (treeRender != null)
                            {
                                treeRender.Rebuild();
                            }
                        }
                    }
                }
            }

            if (selections != null && selections.Count > 0)
            {
                FrameItem(selections[0]);
            }

            return(_rows);
        }
        public bool CellGui(TreeViewItem item, ref AssetRowGuiArgs args)
        {
            if (item is AssetTreeItem <SpriteTrackData> )
            {
                AssetTreeItem <SpriteTrackData> trackItem = item as AssetTreeItem <SpriteTrackData>;

                GUI.skin.label.richText = true;
                SpriteTopMenu   topMenu = (SpriteTopMenu)args.Column;
                SpriteTrackData data    = trackItem.GetData();
                if (topMenu == SpriteTopMenu.Name)
                {
                    return(false);
                }
                else if (topMenu == SpriteTopMenu.Type)
                {
                    if (data.ShowMode == SpriteShowMode.Scene)
                    {
                        GUI.Label(args.CellRect, "Scene");
                    }
                    else if (data.ShowMode == SpriteShowMode.Prefabs)
                    {
                        GUI.Label(args.CellRect, "GameObject");
                    }
                    else if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        GUI.Label(args.CellRect, "Atlas");
                    }
                }
                else if (topMenu == SpriteTopMenu.BundleName)
                {
                    if (data.ShowMode == SpriteShowMode.Scene)
                    {
                        GUI.Label(args.CellRect, data.SceneData.SprData.BundleName);
                    }
                    else if (data.ShowMode == SpriteShowMode.Prefabs)
                    {
                        GUI.Label(args.CellRect, data.GameObjectData.SprData.BundleName);
                    }
                    else if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        GUI.Label(args.CellRect, data.AtlasData.SprData.BundleName);
                    }
                }
                else if (topMenu == SpriteTopMenu.AtlasName)
                {
                    if (data.ShowMode == SpriteShowMode.Scene)
                    {
                        if (item.depth == 2)
                        {
                            if (string.IsNullOrEmpty(data.SceneData.SprData.PackingTag) == false)
                            {
                                string newval = GUI.TextField(args.CellRect, data.SceneData.SprData.PackingTag);
                                if (CheckTag(newval, data.SceneData.SprData.PackingTag))
                                {
                                    data.SceneData.SprData.Importer.spritePackingTag = newval;
                                    data.SceneData.SprData.PackingTag = newval;
                                    data.SceneData.SprData.Importer.SaveAndReimport();

                                    trackItem.SetData(data);
                                }
                            }
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Prefabs)
                    {
                        if (item.depth == 3)
                        {
                            if (string.IsNullOrEmpty(data.GameObjectData.SprData.PackingTag) == false)
                            {
                                string newval = GUI.TextField(args.CellRect, data.GameObjectData.SprData.PackingTag);
                                if (CheckTag(newval, data.GameObjectData.SprData.PackingTag))
                                {
                                    data.GameObjectData.SprData.Importer.spritePackingTag = newval;
                                    data.GameObjectData.SprData.PackingTag = newval;
                                    data.GameObjectData.SprData.Importer.SaveAndReimport();

                                    trackItem.SetData(data);
                                }
                            }
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        if (item.depth == 2)
                        {
                            if (string.IsNullOrEmpty(data.AtlasData.SprData.PackingTag) == false)
                            {
                                string newval = GUI.TextField(args.CellRect, data.AtlasData.SprData.PackingTag);
                                if (CheckTag(newval, data.AtlasData.SprData.PackingTag))
                                {
                                    data.AtlasData.SprData.Importer.spritePackingTag = newval;
                                    data.AtlasData.SprData.PackingTag = newval;
                                    data.AtlasData.SprData.Importer.SaveAndReimport();

                                    trackItem.SetData(data);
                                }
                            }
                        }
                    }
                }
                else if (topMenu == SpriteTopMenu.UsedCount)
                {
                    if (item.depth > 0 && (data.ShowMode == SpriteShowMode.Scene || data.ShowMode == SpriteShowMode.Prefabs))
                    {
                        GUI.Label(args.CellRect, data.UsedRefCount.ToString());
                    }
                }
                else if (topMenu == SpriteTopMenu.MemSize)
                {
                    if (data.ShowMode == SpriteShowMode.Scene)
                    {
                        if (item.depth == 2)
                        {
                            GUI.Label(args.CellRect, "Spr:" + data.SceneData.SprData.MemSize + " Tex:" + data.SceneData.SprData.TexMemSize);
                        }
                        else if (item.depth > 0)
                        {
                            GUI.Label(args.CellRect, "Script:" + data.SceneData.MemSize);
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Prefabs)
                    {
                        if (item.depth == 3)
                        {
                            GUI.Label(args.CellRect, "Spr:" + data.GameObjectData.SprData.MemSize + " Tex:" + data.GameObjectData.SprData.TexMemSize);
                        }
                        else if (item.depth > 0)
                        {
                            GUI.Label(args.CellRect, "Go:" + data.GameObjectData.GoData.MemSize);
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        if (item.depth == 2)
                        {
                            GUI.Label(args.CellRect, "Spr:" + data.AtlasData.SprData.MemSize + " Tex:" + data.AtlasData.SprData.TexMemSize);
                        }
                        else if (item.depth > 1)
                        {
                            GUI.Label(args.CellRect, "Ref:" + data.AtlasData.RefData.MemSize);
                        }
                    }
                }
                else if (topMenu == SpriteTopMenu.Size)
                {
                    if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        if (data.AtlasData.SprData.Sprite != null)
                        {
                            GUI.Label(args.CellRect, data.AtlasData.SprData.TexSize.ToString());
                        }
                    }
                }
                else if (topMenu == SpriteTopMenu.Info)
                {
                    if (data.ShowMode == SpriteShowMode.Scene)
                    {
                        if (item.depth == 1)
                        {
                            if (data.SceneData.CsReferences)
                            {
                                GUI.Label(args.CellRect, string.Format("Type :{0} Path:{1} ",
                                                                       AssetBundleEditorHelper.GetColorText("{0}", Color.black, data.SceneData.CsReferences),
                                                                       AssetBundleEditorHelper.GetColorText("{0}", Color.white, data.SceneData.Path)
                                                                       ));
                            }
                        }
                        else if (item.depth == 2)
                        {
                            if (data.SceneData.SprData.Sprite)
                            {
                                GUI.Label(args.CellRect, GetSprInfo(ref data.SceneData.SprData));
                            }
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Prefabs)
                    {
                        if (item.depth == 1)
                        {
                            GUI.Label(args.CellRect, string.Format("AssetPath :{0} Path:{1} PrefabType:{2}",
                                                                   AssetBundleEditorHelper.GetColorText("{0}", Color.black, data.GameObjectData.GoData.AssetPath),
                                                                   AssetBundleEditorHelper.GetColorText("{0}", Color.white, data.GameObjectData.GoData.Path),
                                                                   AssetBundleEditorHelper.GetColorText("{0}", Color.yellow, data.GameObjectData.GoData.PrefabType)));
                        }
                        else if (item.depth == 2)
                        {
                            GUI.Label(args.CellRect, GetSprInfo(ref data.GameObjectData.SprData));
                        }
                        else if (item.depth == 3)
                        {
                            if (data.GameObjectData.SprData.Sprite)
                            {
                                GUI.Label(args.CellRect, GetSprInfo(ref data.GameObjectData.SprData));
                            }
                        }
                    }
                    else if (data.ShowMode == SpriteShowMode.Atlas)
                    {
                        if (item.depth == 2)
                        {
                            if (data.AtlasData.SprData.Sprite)
                            {
                                GUI.Label(args.CellRect, GetSprInfo(ref data.AtlasData.SprData));
                            }
                        }
                        else if (item.depth == 3)
                        {
                            if (data.AtlasData.RefData.Target)
                            {
                                GUI.Label(args.CellRect, string.Format("{0} Path:{1}",
                                                                       AssetBundleEditorHelper.GetColorText("{0}", Color.black, data.AtlasData.RefData.Target),
                                                                       AssetBundleEditorHelper.GetColorText("{0}", Color.white, data.AtlasData.RefData.Path)));
                            }
                        }
                    }
                }
                GUI.skin.label.richText = false;
            }
            else
            {
                return(false);
            }

            return(true);
        }
        AssetTreeItem <T> CreateItem(ref T data, int depth)
        {
            AssetTreeItem <T> viewItem = new AssetTreeItem <T>(ref data, depth);

            return(viewItem);
        }
Example #11
0
        public void Drag(ref AssetDragAndDropArgs dragargs, ref DragAndDropVisualMode dragmd)
        {
            var draggedRows = DragAndDrop.GetGenericData("AssetTreeViewDragging") as List <TreeViewItem>;

            if (draggedRows != null)
            {
                switch (dragargs.dragAndDropPosition)
                {
                case AssetDragAndDropArgs.DragAndDropPosition.UponItem:
                case AssetDragAndDropArgs.DragAndDropPosition.BetweenItems:
                {
                    bool validDrag = dragargs.parentItem.depth != 0;
                    if (dragargs.performDrop && validDrag)
                    {
                        if (dragargs.parentItem.parent != null)
                        {
                            AssetTreeItem <AssetTreeData> itemdata = dragargs.parentItem.parent as AssetTreeItem <AssetTreeData>;
                            if (itemdata != null)
                            {
                                OnDropDraggedElements(draggedRows, itemdata);
                            }
                        }
                    }

                    dragmd = validDrag ? DragAndDropVisualMode.Move : DragAndDropVisualMode.None;
                    break;
                }

                case AssetDragAndDropArgs.DragAndDropPosition.OutsideItems:
                {
                    //if (dragargs.performDrop)
                    //{
                    //    int index = dragargs.insertAtIndex == -1 ? 0 : dragargs.insertAtIndex;
                    //    var rows = dragargs.parentItem.children;

                    //    if (index < rows.Count)
                    //    {
                    //        AssetTreeItem<AssetTreeData> itemdata = rows[index] as AssetTreeItem<AssetTreeData>;
                    //        if (itemdata != null)
                    //            OnDropDraggedElements(draggedRows, itemdata);
                    //    }
                    //    else
                    //    {
                    //        Debug.LogError("drag index error");
                    //    }
                    //}

                    dragmd = DragAndDropVisualMode.Move;
                    break;
                }

                default:
                    Debug.LogError("Unhandled enum " + dragargs.dragAndDropPosition);
                    dragmd = DragAndDropVisualMode.None;
                    break;
                }
            }
            else
            {
                dragmd = DragAndDropVisualMode.None;
            }
        }