private EnabledState GetFolderChildrenEnabledState(PackageExportTreeViewItem folder)
        {
            ExportPackageItem item = folder.item;

            if ((item != null) && !item.isFolder)
            {
                Debug.LogError("Should be a folder item!");
            }
            if (!folder.hasChildren)
            {
                return(EnabledState.None);
            }
            EnabledState notSet             = EnabledState.NotSet;
            PackageExportTreeViewItem item2 = folder.children[0] as PackageExportTreeViewItem;
            ExportPackageItem         item3 = item2.item;
            int num = (item3 != null) ? item3.enabledStatus : 1;

            for (int i = 1; i < folder.children.Count; i++)
            {
                item3 = (folder.children[i] as PackageExportTreeViewItem).item;
                if (num != item3.enabledStatus)
                {
                    notSet = EnabledState.Mixed;
                    break;
                }
            }
            if (notSet == EnabledState.NotSet)
            {
                notSet = (num != 1) ? EnabledState.None : EnabledState.All;
            }
            return(notSet);
        }
        private void RecursiveComputeEnabledStateForFolders(PackageExportTreeView.PackageExportTreeViewItem pitem, HashSet <PackageExportTreeView.PackageExportTreeViewItem> done)
        {
            ExportPackageItem item = pitem.item;

            if (item != null && !item.isFolder)
            {
                return;
            }
            if (pitem.hasChildren)
            {
                foreach (TreeViewItem current in pitem.children)
                {
                    this.RecursiveComputeEnabledStateForFolders(current as PackageExportTreeView.PackageExportTreeViewItem, done);
                }
            }
            if (item != null && !done.Contains(pitem))
            {
                PackageExportTreeView.EnabledState folderChildrenEnabledState = this.GetFolderChildrenEnabledState(pitem);
                item.enabledStatus = (int)folderChildrenEnabledState;
                if (folderChildrenEnabledState == PackageExportTreeView.EnabledState.Mixed)
                {
                    done.Add(pitem);
                    for (PackageExportTreeView.PackageExportTreeViewItem packageExportTreeViewItem = pitem.parent as PackageExportTreeView.PackageExportTreeViewItem; packageExportTreeViewItem != null; packageExportTreeViewItem = (packageExportTreeViewItem.parent as PackageExportTreeView.PackageExportTreeViewItem))
                    {
                        ExportPackageItem item2 = packageExportTreeViewItem.item;
                        if (item2 != null && !done.Contains(packageExportTreeViewItem))
                        {
                            item2.enabledStatus = 2;
                            done.Add(packageExportTreeViewItem);
                        }
                    }
                }
            }
        }
        private PackageExportTreeView.EnabledState GetFolderChildrenEnabledState(PackageExportTreeView.PackageExportTreeViewItem folder)
        {
            ExportPackageItem item = folder.item;

            if (item != null && !item.isFolder)
            {
                Debug.LogError("Should be a folder item!");
            }
            if (!folder.hasChildren)
            {
                return(PackageExportTreeView.EnabledState.None);
            }
            PackageExportTreeView.EnabledState enabledState = PackageExportTreeView.EnabledState.NotSet;
            PackageExportTreeView.PackageExportTreeViewItem packageExportTreeViewItem = folder.children[0] as PackageExportTreeView.PackageExportTreeViewItem;
            ExportPackageItem item2 = packageExportTreeViewItem.item;
            int num = (item2 != null) ? item2.enabledStatus : 1;

            for (int i = 1; i < folder.children.Count; i++)
            {
                item2 = (folder.children[i] as PackageExportTreeView.PackageExportTreeViewItem).item;
                if (num != item2.enabledStatus)
                {
                    enabledState = PackageExportTreeView.EnabledState.Mixed;
                    break;
                }
            }
            if (enabledState == PackageExportTreeView.EnabledState.NotSet)
            {
                enabledState = ((num != 1) ? PackageExportTreeView.EnabledState.None : PackageExportTreeView.EnabledState.All);
            }
            return(enabledState);
        }
        private void RecursiveComputeEnabledStateForFolders(PackageExportTreeViewItem pitem, HashSet <PackageExportTreeViewItem> done)
        {
            ExportPackageItem item = pitem.item;

            if ((item == null) || item.isFolder)
            {
                if (pitem.hasChildren)
                {
                    foreach (TreeViewItem item2 in pitem.children)
                    {
                        this.RecursiveComputeEnabledStateForFolders(item2 as PackageExportTreeViewItem, done);
                    }
                }
                if ((item != null) && !done.Contains(pitem))
                {
                    EnabledState folderChildrenEnabledState = this.GetFolderChildrenEnabledState(pitem);
                    item.enabledStatus = (int)folderChildrenEnabledState;
                    if (folderChildrenEnabledState == EnabledState.Mixed)
                    {
                        done.Add(pitem);
                        for (PackageExportTreeViewItem item3 = pitem.parent as PackageExportTreeViewItem; item3 != null; item3 = item3.parent as PackageExportTreeViewItem)
                        {
                            ExportPackageItem item4 = item3.item;
                            if ((item4 != null) && !done.Contains(item3))
                            {
                                item4.enabledStatus = 2;
                                done.Add(item3);
                            }
                        }
                    }
                }
            }
        }
 private void EnableChildrenRecursive(TreeViewItem parentItem, int enabled)
 {
     if (parentItem.hasChildren)
     {
         foreach (TreeViewItem item in parentItem.children)
         {
             PackageExportTreeViewItem item2 = item as PackageExportTreeViewItem;
             ExportPackageItem         item3 = item2.item;
             if (item3 != null)
             {
                 item3.enabledStatus = enabled;
             }
             this.EnableChildrenRecursive(item2, enabled);
         }
     }
 }
Beispiel #6
0
            protected override Texture GetIconForNode(TreeViewItem tItem)
            {
                ExportPackageItem exportPackageItem = (tItem as PackageExportTreeView.PackageExportTreeViewItem).item;

                if (exportPackageItem == null || exportPackageItem.isFolder)
                {
                    return((Texture)PackageExportTreeView.PackageExportTreeViewGUI.Constants.folderIcon);
                }
                Texture cachedIcon = AssetDatabase.GetCachedIcon(exportPackageItem.assetPath);

                if ((UnityEngine.Object)cachedIcon != (UnityEngine.Object)null)
                {
                    return(cachedIcon);
                }
                return((Texture)InternalEditorUtility.GetIconForFile(exportPackageItem.assetPath));
            }
        public void OnGUI(Rect rect)
        {
            int controlID = GUIUtility.GetControlID(FocusType.Keyboard);

            this.m_TreeView.OnGUI(rect, controlID);
            if ((((Event.current.type == EventType.KeyDown) && (Event.current.keyCode == KeyCode.Space)) && ((this.m_Selection != null) && (this.m_Selection.Count > 0))) && (GUIUtility.keyboardControl == controlID))
            {
                ExportPackageItem item = this.m_Selection[0].item;
                if (item != null)
                {
                    int num2 = (item.enabledStatus != 0) ? 0 : 1;
                    item.enabledStatus = num2;
                    this.ItemWasToggled(this.m_Selection[0]);
                }
                Event.current.Use();
            }
        }
            protected override Texture GetIconForItem(TreeViewItem tItem)
            {
                PackageExportTreeView.PackageExportTreeViewItem item = tItem as PackageExportTreeView.PackageExportTreeViewItem;
                ExportPackageItem item2 = item.item;

                if ((item2 == null) || item2.isFolder)
                {
                    return(Constants.folderIcon);
                }
                Texture cachedIcon = AssetDatabase.GetCachedIcon(item2.assetPath);

                if (cachedIcon != null)
                {
                    return(cachedIcon);
                }
                return(InternalEditorUtility.GetIconForFile(item2.assetPath));
            }
 private void EnableChildrenRecursive(TreeViewItem parentItem, int enabled)
 {
     if (!parentItem.hasChildren)
     {
         return;
     }
     foreach (TreeViewItem current in parentItem.children)
     {
         PackageExportTreeView.PackageExportTreeViewItem packageExportTreeViewItem = current as PackageExportTreeView.PackageExportTreeViewItem;
         ExportPackageItem item = packageExportTreeViewItem.item;
         if (item != null)
         {
             item.enabledStatus = enabled;
         }
         this.EnableChildrenRecursive(packageExportTreeViewItem, enabled);
     }
 }
            private static void Toggle(ExportPackageItem[] items, PackageExportTreeView.PackageExportTreeViewItem pitem, Rect toggleRect)
            {
                ExportPackageItem item = pitem.item;

                if (item != null)
                {
                    bool     flag   = item.enabledStatus > 0;
                    GUIStyle toggle = EditorStyles.toggle;
                    if (item.isFolder && (item.enabledStatus == 2))
                    {
                        toggle = EditorStyles.toggleMixed;
                    }
                    bool flag3 = GUI.Toggle(toggleRect, flag, GUIContent.none, toggle);
                    if (flag3 != flag)
                    {
                        item.enabledStatus = !flag3 ? 0 : 1;
                    }
                }
            }
            public override void FetchData()
            {
                int depth = -1;

                this.m_RootItem = new PackageExportTreeView.PackageExportTreeViewItem(null, "Assets".GetHashCode(), depth, null, "InvisibleAssetsFolder");
                bool flag = true;

                if (flag)
                {
                    this.m_TreeView.state.expandedIDs.Add(this.m_RootItem.id);
                }
                ExportPackageItem[] items = this.m_PackageExportView.items;
                Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem> dictionary = new Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem>();

                for (int i = 0; i < items.Length; i++)
                {
                    ExportPackageItem exportPackageItem = items[i];
                    if (!PackageImport.HasInvalidCharInFilePath(exportPackageItem.assetPath))
                    {
                        string       fileName      = Path.GetFileName(exportPackageItem.assetPath);
                        string       directoryName = Path.GetDirectoryName(exportPackageItem.assetPath);
                        TreeViewItem treeViewItem  = this.EnsureFolderPath(directoryName, dictionary, flag);
                        if (treeViewItem != null)
                        {
                            int hashCode = exportPackageItem.assetPath.GetHashCode();
                            PackageExportTreeView.PackageExportTreeViewItem packageExportTreeViewItem = new PackageExportTreeView.PackageExportTreeViewItem(exportPackageItem, hashCode, treeViewItem.depth + 1, treeViewItem, fileName);
                            treeViewItem.AddChild(packageExportTreeViewItem);
                            if (flag)
                            {
                                this.m_TreeView.state.expandedIDs.Add(hashCode);
                            }
                            if (exportPackageItem.isFolder)
                            {
                                dictionary[exportPackageItem.assetPath] = packageExportTreeViewItem;
                            }
                        }
                    }
                }
                if (flag)
                {
                    this.m_TreeView.state.expandedIDs.Sort();
                }
            }
            public override void FetchData()
            {
                int depth = -1;

                base.m_RootItem = new PackageExportTreeView.PackageExportTreeViewItem(null, "Assets".GetHashCode(), depth, null, "InvisibleAssetsFolder");
                bool initExpandedState = true;

                if (initExpandedState)
                {
                    base.m_TreeView.state.expandedIDs.Add(base.m_RootItem.id);
                }
                ExportPackageItem[] items = this.m_PackageExportView.items;
                Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem> treeViewFolders = new Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem>();

                for (int i = 0; i < items.Length; i++)
                {
                    ExportPackageItem itemIn = items[i];
                    if (!PackageImport.HasInvalidCharInFilePath(itemIn.assetPath))
                    {
                        string       fileName      = Path.GetFileName(itemIn.assetPath);
                        string       directoryName = Path.GetDirectoryName(itemIn.assetPath);
                        TreeViewItem parent        = this.EnsureFolderPath(directoryName, treeViewFolders, initExpandedState);
                        if (parent != null)
                        {
                            int hashCode = itemIn.assetPath.GetHashCode();
                            PackageExportTreeView.PackageExportTreeViewItem child = new PackageExportTreeView.PackageExportTreeViewItem(itemIn, hashCode, parent.depth + 1, parent, fileName);
                            parent.AddChild(child);
                            if (initExpandedState)
                            {
                                base.m_TreeView.state.expandedIDs.Add(hashCode);
                            }
                            if (itemIn.isFolder)
                            {
                                treeViewFolders[itemIn.assetPath] = child;
                            }
                        }
                    }
                }
                if (initExpandedState)
                {
                    base.m_TreeView.state.expandedIDs.Sort();
                }
            }
        private void ItemWasToggled(PackageExportTreeViewItem pitem)
        {
            ExportPackageItem item = pitem.item;

            if (item != null)
            {
                if (this.m_Selection.Count <= 1)
                {
                    this.EnableChildrenRecursive(pitem, item.enabledStatus);
                }
                else
                {
                    foreach (PackageExportTreeViewItem item2 in this.m_Selection)
                    {
                        item2.item.enabledStatus = item.enabledStatus;
                    }
                }
                this.ComputeEnabledStateForFolders();
            }
        }
Beispiel #14
0
            public override void FetchData()
            {
                this.m_RootItem = (TreeViewItem) new PackageExportTreeView.PackageExportTreeViewItem((ExportPackageItem)null, "Assets".GetHashCode(), -1, (TreeViewItem)null, "InvisibleAssetsFolder");
                bool initExpandedState = true;

                if (initExpandedState)
                {
                    this.m_TreeView.state.expandedIDs.Add(this.m_RootItem.id);
                }
                ExportPackageItem[] items = this.m_PackageExportView.items;
                Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem> treeViewFolders = new Dictionary <string, PackageExportTreeView.PackageExportTreeViewItem>();

                for (int index = 0; index < items.Length; ++index)
                {
                    ExportPackageItem itemIn = items[index];
                    if (!PackageImport.HasInvalidCharInFilePath(itemIn.assetPath))
                    {
                        string       fileName = Path.GetFileName(itemIn.assetPath);
                        TreeViewItem parent   = this.EnsureFolderPath(Path.GetDirectoryName(itemIn.assetPath), treeViewFolders, initExpandedState);
                        if (parent != null)
                        {
                            int hashCode = itemIn.assetPath.GetHashCode();
                            PackageExportTreeView.PackageExportTreeViewItem exportTreeViewItem = new PackageExportTreeView.PackageExportTreeViewItem(itemIn, hashCode, parent.depth + 1, parent, fileName);
                            parent.AddChild((TreeViewItem)exportTreeViewItem);
                            if (initExpandedState)
                            {
                                this.m_TreeView.state.expandedIDs.Add(hashCode);
                            }
                            if (itemIn.isFolder)
                            {
                                treeViewFolders[itemIn.assetPath] = exportTreeViewItem;
                            }
                        }
                    }
                }
                if (!initExpandedState)
                {
                    return;
                }
                this.m_TreeView.state.expandedIDs.Sort();
            }
Beispiel #15
0
        private void Export()
        {
            string text = EditorUtility.SaveFilePanel("Export package ...", string.Empty, string.Empty, "unitypackage");

            if (text != string.Empty)
            {
                List <string>       list = new List <string>();
                ExportPackageItem[] exportPackageItems = this.m_ExportPackageItems;
                for (int i = 0; i < exportPackageItems.Length; i++)
                {
                    ExportPackageItem exportPackageItem = exportPackageItems[i];
                    if (exportPackageItem.enabledStatus > 0)
                    {
                        list.Add(exportPackageItem.guid);
                    }
                }
                PackageUtility.ExportPackage(list.ToArray(), text);
                base.Close();
                GUIUtility.ExitGUI();
            }
        }
            protected override Texture GetIconForItem(TreeViewItem tItem)
            {
                PackageExportTreeView.PackageExportTreeViewItem packageExportTreeViewItem = tItem as PackageExportTreeView.PackageExportTreeViewItem;
                ExportPackageItem item = packageExportTreeViewItem.item;
                Texture           result;

                if (item == null || item.isFolder)
                {
                    result = PackageExportTreeView.PackageExportTreeViewGUI.Constants.folderIcon;
                }
                else
                {
                    Texture cachedIcon = AssetDatabase.GetCachedIcon(item.assetPath);
                    if (cachedIcon != null)
                    {
                        result = cachedIcon;
                    }
                    else
                    {
                        result = InternalEditorUtility.GetIconForFile(item.assetPath);
                    }
                }
                return(result);
            }
 private static void Toggle(ExportPackageItem[] items, PackageExportTreeView.PackageExportTreeViewItem pitem, Rect toggleRect)
 {
   bool flag1 = pitem.enabledState > PackageExportTreeView.EnabledState.None;
   GUIStyle style = EditorStyles.toggle;
   if (pitem.isFolder && pitem.enabledState == PackageExportTreeView.EnabledState.Mixed)
     style = EditorStyles.toggleMixed;
   bool flag2 = GUI.Toggle(toggleRect, flag1, GUIContent.none, style);
   if (flag2 == flag1)
     return;
   pitem.enabledState = !flag2 ? PackageExportTreeView.EnabledState.None : PackageExportTreeView.EnabledState.All;
 }
Beispiel #18
0
 public PackageExportTreeViewItem(ExportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName)
     : base(id, depth, parent, displayName)
 {
     this.item = itemIn;
 }
 public PackageExportTreeViewItem(ExportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName) : base(id, depth, parent, displayName)
 {
     this.m_EnabledState = PackageExportTreeView.EnabledState.NotSet;
     this.item           = itemIn;
 }
 public PackageExportTreeViewItem(ExportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName)
   : base(id, depth, parent, displayName)
 {
   this.item = itemIn;
 }
 public PackageExportTreeViewItem(ExportPackageItem itemIn, int id, int depth, TreeViewItem parent, string displayName) : base(id, depth, parent, displayName)
 {
     this.m_EnabledState = PackageExportTreeView.EnabledState.NotSet;
     this.item = itemIn;
 }
 private static void Toggle(ExportPackageItem[] items, PackageExportTreeView.PackageExportTreeViewItem pitem, Rect toggleRect)
 {
     bool flag = pitem.enabledState > PackageExportTreeView.EnabledState.None;
     GUIStyle toggle = EditorStyles.toggle;
     if (pitem.isFolder && (pitem.enabledState == PackageExportTreeView.EnabledState.Mixed))
     {
         toggle = EditorStyles.toggleMixed;
     }
     bool flag3 = GUI.Toggle(toggleRect, flag, GUIContent.none, toggle);
     if (flag3 != flag)
     {
         pitem.enabledState = !flag3 ? PackageExportTreeView.EnabledState.None : PackageExportTreeView.EnabledState.All;
     }
 }