Ejemplo n.º 1
0
        internal bool HasChildrenThatMatchesState(AH_MultiColumnHeader.AssetShowMode showMode)
        {
            if (!hasChildren)
            {
                return(false);
            }

            //Check if a valid child exit somewhere in this branch
            foreach (AH_TreeviewElement child in children)
            {
                if (child.AssetMatchesState(showMode))
                {
                    return(true);
                }
                else if (child.HasChildrenThatMatchesState(showMode))
                {
                    return(true);
                }
                else
                {
                    continue;
                }
            }
            return(false);
        }
        protected override void AddChildrenRecursive(AH_TreeviewElement parent, int depth, IList <TreeViewItem> newRows)
        {
            AH_MultiColumnHeader.AssetShowMode showMode = ((AH_MultiColumnHeader)multiColumnHeader).ShowMode;

            foreach (AH_TreeviewElement child in parent.children)
            {
                bool isFolder = child.hasChildren;
                bool isFolderWithValidChildren = isFolder && (showMode == AH_MultiColumnHeader.AssetShowMode.All || child.HasChildrenThatMatchesState(showMode));

                //TODO EXTRACT THIS TO BE ABLE TO Ignore TYPES ETC OR MAYBE THAT SHOULD BE DONE WHEN POPULATING THE FIRST TIME...maybe better
                //If its a folder or an asset that matches showmode
                if (isFolderWithValidChildren || child.AssetMatchesState(showMode))
                {
                    //Add new row
                    var item = new TreeViewItem <AH_TreeviewElement>(child.id, depth, child.Name, child);
                    newRows.Add(item);

                    if (isFolder)
                    {
                        if (IsExpanded(child.id))
                        {
                            AddChildrenRecursive(child, depth + 1, newRows);
                        }
                        else
                        {
                            item.children = CreateChildListForCollapsedParent();
                        }
                    }
                }
            }
        }
        //Check if it matches state and searchstring
        protected override bool IsValidElement(TreeElement element, string searchString)
        {
            AH_TreeviewElement ahElement = (element as AH_TreeviewElement);

            AH_MultiColumnHeader.AssetShowMode hShowMode = ((AH_MultiColumnHeader)multiColumnHeader).ShowMode;

            bool validAsset = !ahElement.IsFolder && ahElement.AssetMatchesState(hShowMode);

            //Only show folders if we are in treeview mode and the folder has children that matches state
            bool validFolder = searchString == "" && (ahElement.IsFolder && (((AH_MultiColumnHeader)multiColumnHeader).mode == AH_MultiColumnHeader.Mode.Treeview) && ahElement.HasChildrenThatMatchesState(hShowMode));

            return((validAsset || validFolder) && base.IsValidElement(element, searchString));
        }
Ejemplo n.º 4
0
 private static void populateDumpListRecursively(AH_TreeviewElement element, AH_MultiColumnHeader.AssetShowMode showmode, ref List <AssetDumpData> elements)
 {
     if (element.HasChildrenThatMatchesState(showmode))
     {
         foreach (var child in element.children)
         {
             populateDumpListRecursively((AH_TreeviewElement)child, showmode, ref elements);
         }
     }
     else if (element.AssetMatchesState(showmode))
     {
         UnityEngine.Debug.Log("Adding " + element.Name);
         elements.Add(new AssetDumpData(element.GUID, element.AbsPath, element.RelativePath, element.AssetSize, element.FileSize, element.UsedInBuild, element.ScenesReferencingAsset));
     }
 }
Ejemplo n.º 5
0
        internal long GetFileSizeRecursively(AH_MultiColumnHeader.AssetShowMode showMode)
        {
            if (combinedAssetSizeInFolder == null)
            {
                combinedAssetSizeInFolder = new Dictionary <AH_MultiColumnHeader.AssetShowMode, long>();
            }

            if (combinedAssetSizeInFolder.ContainsKey(showMode))
            {
                return(combinedAssetSizeInFolder[showMode]);
            }

            //TODO store these values instead of calculating each and every time?
            long combinedChildrenSize = 0;

            //Combine the size of all the children
            if (hasChildren)
            {
                foreach (AH_TreeviewElement item in children)
                {
                    bool validAsset = (showMode == AH_MultiColumnHeader.AssetShowMode.All) ||
                                      ((showMode == AH_MultiColumnHeader.AssetShowMode.Unused && !item.usedInBuild) ||
                                       (showMode == AH_MultiColumnHeader.AssetShowMode.Used && item.usedInBuild));

                    //Loop thropugh folders and assets thats used not in build
                    if (validAsset || item.isFolder)
                    {
                        combinedChildrenSize += item.GetFileSizeRecursively(showMode);
                    }
                }
            }

            combinedChildrenSize += this.fileSize;

            //Cache the value
            combinedAssetSizeInFolder.Add(showMode, combinedChildrenSize);

            return(combinedChildrenSize);
        }
Ejemplo n.º 6
0
 internal bool AssetMatchesState(AH_MultiColumnHeader.AssetShowMode showMode)
 {
     //Test if we want to add this element (We dont want to show "used" when window searches for "unused"
     return(AssetType != null && ((showMode == AH_MultiColumnHeader.AssetShowMode.All) || ((showMode == AH_MultiColumnHeader.AssetShowMode.Used && usedInBuild) || (showMode == AH_MultiColumnHeader.AssetShowMode.Unused && !usedInBuild))));
 }