private void RemoveEmptyChildren(AssetChildren obj)
 {
     if (obj.children == null || obj.children.Count == 0)
     {
         obj.children = null;
         obj.toggled  = null;
     }
     else
     {
         foreach (var child in obj.children)
         {
             RemoveEmptyChildren(child);
         }
     }
 }
Beispiel #2
0
        private static AssetChildren GenerateAssetTree(List <AssetChildren> children, string remainingPath, string filePath, bool isKitsune)
        {
            var search = remainingPath.TrimStart('/').IndexOf('/');

            if (remainingPath.StartsWith("/") && search != -1)
            {
                search += 1;
            }
            List <AssetChildren> firstCheck = null;
            string        current, remaining;
            AssetChildren addObj;

            if (search != -1)
            {
                current   = remainingPath.Substring(0, search);
                remaining = remainingPath.Substring(search + 1, (remainingPath.Length - search - 1));
            }
            else
            {
                current   = remainingPath;
                remaining = "";
            }

            if (current != "")
            {
                firstCheck = children.Where(x => x.name == current.TrimStart('/'))?.ToList();
                if (firstCheck != null && firstCheck.Any())
                {
                    return(GenerateAssetTree(firstCheck[0].children, remaining, filePath, isKitsune));
                }
                else
                {
                    addObj = new AssetChildren
                    {
                        name      = current.TrimStart('/'),
                        Path      = filePath.Substring(0, (filePath.IndexOf(current) + current.Length)),
                        children  = new List <AssetChildren>(),
                        IsKitsune = isKitsune
                    };
                    children.Insert(0, addObj);
                    if (remaining != "")
                    {
                        return(GenerateAssetTree(children[0].children, remaining, filePath, isKitsune));
                    }
                }
            }
            return(null);
        }
Beispiel #3
0
        public static AssetChildren ProjectResourceTree(List <string> resources, string projectName)
        {
            var final = new AssetChildren
            {
                children  = new List <AssetChildren>(),
                name      = projectName,
                toggled   = false,
                IsKitsune = true
            };
            string data, filePath;

            for (var i = 0; i < resources.Count; i++)
            {
                data     = resources[i];
                filePath = resources[i];
                GenerateAssetTree(final.children, filePath, filePath, true);
            }
            final.children = OrderLeaves(final.children);
            // RemoveEmptyChildren(final);
            return(final);
        }