Exemplo n.º 1
0
    public void AddElement(ListElement parent, string fileName, bool isFolder)
    {
        fileName = BundleHelp.FullPath2AssetPath(ref fileName);
        //BundleDataManager.Instance.AddResource(fileName, IsFolder);
        //var data = new HierarchyElementData(fileName, isFolder);
        var element = new ListElement(new HierarchyElementData(), this, fileName, isFolder);

        if (parent != null)
        {
            parent.AddChild(element);
            parent.ResetSpace();
        }
        else
        {
            listElement.Add(element);
            listElement[listElement.Count - 1].SetSpace(0f);
        }

        if (isFolder)
        {
            string[] fileStrings = Directory.GetDirectories(fileName);
            for (int i = 0; i < fileStrings.Length; i++)
            {
                //if (BundleDataManager.Instance.IsFilter(ref fileStrings[i]) == false)
                AddElement(element, fileStrings[i], Directory.Exists(fileStrings[i]));
            }
        }

        //return data;
    }
Exemplo n.º 2
0
    private List <Shader> FindAllShader()
    {
        string[]      files  = Directory.GetFiles(Application.dataPath, "*.shader", SearchOption.AllDirectories);
        List <Shader> result = new List <Shader>();

        for (int i = 0; i < files.Length; i++)
        {
            string assetPath = BundleHelp.FullPath2AssetPath(ref files[i]);
            Shader shader    = AssetDatabase.LoadAssetAtPath <Shader>(assetPath);
            result.Add(shader);
        }
        return(result);
    }
Exemplo n.º 3
0
    protected void GetChildFile()
    {
        string[] files = Directory.GetFiles(Path);
        for (int i = 0; i < files.Length; i++)
        {
            if (BundleDataManager.Instance.IsFilter(ref files[i]))
            {
                continue;
            }

            string      assetFile    = BundleHelp.FullPath2AssetPath(ref files[i]);
            ListElement childElement = new ListElement(new HierarchyListWindow.HierarchyElementData(), ElementOwner, assetFile, false);
            AddChild(childElement);
        }

        //Debug.Log(string.Format("Folder Name [{0}] Get Child File Count [{1}]", BundleHelp.GetFolderName(ref mPath), files.Length));

        ResetSpace();
    }
Exemplo n.º 4
0
    public static bool IsNeedBuild(BundleData bundle)
    {
        if (BuildManager.IsIgnoreState)
        {
            return(true);
        }

        string outputPath = GenerateOutputBundlePath(bundle.name);

        if (!File.Exists(outputPath))
        {
            return(true);
        }

        BundleBuildState bundleBuildState = BundleManager.GetBuildState(bundle.assetPath);

        if (bundleBuildState == null)
        {
            return(true);
        }

        //  输出文件是否被修改
        DateTime lastBuildTime    = File.GetLastWriteTime(outputPath);
        DateTime bundleChangeTime = bundleBuildState.changeTime == -1 ? DateTime.MaxValue : DateTime.FromBinary(bundleBuildState.changeTime);

        if (System.DateTime.Compare(lastBuildTime, bundleChangeTime) < 0)
        {
            return(true);
        }

        if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.assetPath)) < 0)
        {
            return(true);
        }

        //  依赖是否改变
        if (!EqualStrArray(bundle.depends, bundleBuildState.lastDependencies))
        {
            return(true);
        }


        string[] allResDepends = GetFilterCsDepends(bundle.assetPath);
        for (int i = 0; i < allResDepends.Length; i++)
        {
            var fullPaht = BundleHelp.AssetPath2FullPath(ref allResDepends[i]);

            DateTime test = File.GetLastWriteTime(fullPaht);

            if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(fullPaht)) < 0)
            {
                return(true);
            }

            if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(fullPaht + ".meta")) < 0)
            {
                return(true);
            }
        }

        //  依赖文件是否被改变
        //for (int i = 0; i < bundle.depends.Count; i++)
        //{

        //    //  TODO:没有检测纹理之内的资源是否变化

        //    if (!File.Exists(GenerateOutputBundlePath(Path.GetFileNameWithoutExtension(bundle.depends[i]))))
        //        return true;

        //    if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.depends[i])) < 0)
        //    {
        //        return true;
        //    }

        //    //  meta change
        //    //  Texture Format Change
        //    if (DateTime.Compare(lastBuildTime, File.GetLastWriteTime(bundle.depends[i] + ".meta")) < 0)
        //    {
        //        return true;
        //    }
        //}

        return(false);
    }
Exemplo n.º 5
0
    private bool DrawSubExporterPlan(ExporterData iter, ref List <int> deleteSuffix)
    {
        string title = BundleHelp.FullPath2AssetPath(ref iter.Path);

        if (!CSCommonEditor.DrawHeader(title ?? "<空>", iter.Path, true, true))
        {
            return(false);
        }

        CSCommonEditor.BeginContents();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Path ", title);
        if (GUILayout.Button("...", GUILayout.MaxWidth(24)))
        {
            iter.Path = EditorUtility.OpenFolderPanel("Choose Output Path", Application.dataPath, "");
        }
        GUI.color = Color.red;
        if (GUILayout.Button("-", GUILayout.MaxWidth(24)))
        {
            return(true);
        }
        GUI.color = Color.white;
        EditorGUILayout.EndHorizontal();

        EditorGUI.indentLevel = 1;

        for (int i = iter.Suffixs.Count - 1; i >= 0; i--)
        {
            EditorGUILayout.BeginHorizontal();

            string safeSuffix = EditorGUILayout.TextField("Suffix ", iter.Suffixs[i]);
            if (string.IsNullOrEmpty(safeSuffix))
            {
                safeSuffix = "*.prefab";
            }
            else if (!safeSuffix.StartsWith("*."))
            {
                safeSuffix = "*." + safeSuffix;
            }
            iter.Suffixs[i] = safeSuffix;

            GUI.color = Color.red;
            if (GUILayout.Button("-", GUILayout.MaxWidth(24)))
            {
                deleteSuffix.Add(i);
            }
            GUI.color = Color.white;
            EditorGUILayout.EndHorizontal();
        }


        //  delelte click '-'
        foreach (int j in deleteSuffix)
        {
            iter.Suffixs.RemoveAt(j);
        }

        deleteSuffix.Clear();

        GUI.color = Color.green;
        //  new suffix
        if (GUILayout.Button("Add New Suffix"))
        {
            iter.Suffixs.Add("*.prefab");
        }
        GUI.color = Color.white;

        CSCommonEditor.EndContents();

        return(false);
    }