void CheckAllSceneResources()
    {
        SceneTextures.Clear();
        SceneMaterials.Clear();
        SceneMeshes.Clear();

        foreach (UnityEditor.EditorBuildSettingsScene scene in UnityEditor.EditorBuildSettings.scenes) {
          if (scene.enabled) {
        EditorApplication.OpenScene(scene.path);
        CheckCurrentSceneResources();

        foreach (var tex in ActiveTextures) {
          string texPath = AssetDatabase.GetAssetPath(tex.texture);
          if (!texPath.Contains("Brush") && !texPath.Contains("MapData_")) {
            var tTextureInScene = FindTextureInScene(tex.texture);
            if (tTextureInScene == null) {
              tTextureInScene = new ItemInScene();
              SceneTextures.Add(tTextureInScene);

              tTextureInScene.isCubeMap = tex.isCubeMap;
              tTextureInScene.format = tex.format;
              tTextureInScene.memSizeKB = tex.memSizeKB;
              tTextureInScene.mipMapCount = tex.mipMapCount;
              tTextureInScene.texture = tex.texture;
            }
            var itemInfo = FindItemInSceneInfo(tTextureInScene, scene.path);
            if (itemInfo == null) {
              itemInfo = new ItemInSceneInfo();
              itemInfo.path = scene.path;
              tTextureInScene.itemInfo.Add(itemInfo);
            }
            itemInfo.usedCount += tex.FoundInRenderers.Count;

            foreach (var mat in tex.FoundInMaterials) {
              if (!tTextureInScene.FoundInMaterials.Contains(mat)) {
                tTextureInScene.FoundInMaterials.Add(mat);
              }
            }
          }
        }

        foreach (var ma in ActiveMaterials) {
          var tMaterialInScene = FindMaterialInScene(ma.material);
          if (tMaterialInScene == null) {
            tMaterialInScene = new ItemInScene();
            SceneMaterials.Add(tMaterialInScene);
            tMaterialInScene.material = ma.material;
          }
          var itemInfo = FindItemInSceneInfo(tMaterialInScene, scene.path);
          if (itemInfo == null) {
            itemInfo = new ItemInSceneInfo();
            itemInfo.path = scene.path;
            tMaterialInScene.itemInfo.Add(itemInfo);
          }
          itemInfo.usedCount += ma.FoundInRenderers.Count;
        }

        foreach (var me in ActiveMeshDetails) {
          var tMeshInScene = FindMeshInScene(me.mesh);
          if (tMeshInScene == null) {
            tMeshInScene = new ItemInScene();
            SceneMeshes.Add(tMeshInScene);
            tMeshInScene.mesh = me.mesh;
          }
          var itemInfo = FindItemInSceneInfo(tMeshInScene, scene.path);
          if (itemInfo == null) {
            itemInfo = new ItemInSceneInfo();
            itemInfo.path = scene.path;
            tMeshInScene.itemInfo.Add(itemInfo);
          }
          itemInfo.usedCount += me.FoundInMeshFilters.Count;
          itemInfo.usedCount1 += me.FoundInSkinnedMeshRenderer.Count;
        }
          }
        }
        SceneMaterials.Sort(delegate(ItemInScene info1, ItemInScene info2) { return info2.itemInfo.Count - info1.itemInfo.Count; });
        SceneMeshes.Sort(delegate(ItemInScene info1, ItemInScene info2) { return info2.itemInfo.Count - info1.itemInfo.Count; });
    }
Exemplo n.º 2
0
    private void ListAllSceneMeshes()
    {
        meshListScrollPos = EditorGUILayout.BeginScrollView(meshListScrollPos);

        foreach (var sceneMesh in SceneMeshes)
        {
            if (sceneMesh.mesh != null)
            {
                GUILayout.BeginHorizontal();

                if (GUILayout.Button(sceneMesh.mesh.name, GUILayout.Width(150)))
                {
                    SelectObject(sceneMesh.mesh, ctrlPressed);
                }
                string sizeLabel = "" + sceneMesh.mesh.vertexCount + " vert";

                GUILayout.Label(sizeLabel, GUILayout.Width(100));

                if (GUILayout.Button(sceneMesh.itemInfo.Count + " Sce", GUILayout.Width(50)))
                {
                    if (currentInfo != null)
                    {
                        currentInfo = null;
                    }
                    else
                    {
                        currentInfo = sceneMesh;
                    }
                }
                GUILayout.BeginVertical();
                foreach (var info in sceneMesh.itemInfo)
                {
                    GUILayout.BeginHorizontal();

                    ItemInSceneInfo itemInSceneInfo = sceneMesh.itemInfo.Find(delegate(ItemInSceneInfo obj) { return(obj.path == info.path); });
                    if (GUILayout.Button(itemInSceneInfo.usedCount + " GO", GUILayout.Width(50)))
                    {
                        EditorApplication.OpenScene(info.path);
                        CheckCurrentSceneResources();

                        foreach (var tDetails in ActiveMeshDetails)
                        {
                            if (tDetails.mesh == sceneMesh.mesh)
                            {
                                List <Object> FoundObjects = new List <Object>();
                                foreach (MeshFilter meshFilter in tDetails.FoundInMeshFilters)
                                {
                                    FoundObjects.Add(meshFilter.gameObject);
                                }
                                SelectObjects(FoundObjects, ctrlPressed);
                            }
                        }
                    }

                    if (GUILayout.Button(itemInSceneInfo.usedCount1 + " GO", GUILayout.Width(50)))
                    {
                        EditorApplication.OpenScene(info.path);
                        CheckCurrentSceneResources();

                        foreach (var tDetails in ActiveMeshDetails)
                        {
                            if (tDetails.mesh == sceneMesh.mesh)
                            {
                                List <Object> FoundObjects = new List <Object>();
                                foreach (SkinnedMeshRenderer skinnedMeshRenderer in tDetails.FoundInSkinnedMeshRenderer)
                                {
                                    FoundObjects.Add(skinnedMeshRenderer.gameObject);
                                }
                                SelectObjects(FoundObjects, ctrlPressed);
                            }
                        }
                    }
                    GUILayout.Label(info.path);

                    GUILayout.EndHorizontal();
                }
                GUILayout.EndVertical();

                GUILayout.EndHorizontal();
            }
        }
        EditorGUILayout.EndScrollView();
    }
Exemplo n.º 3
0
    private void ListAllSceneTextures()
    {
        GUILayout.BeginHorizontal();
        GUILayout.Label("Sort by", GUILayout.Width(100));
        int oldGridInt = selAllSceneTextureGridInt;

        selAllSceneTextureGridInt = GUILayout.SelectionGrid(selAllSceneTextureGridInt, selTexturesStrings, selStrings.Length, GUILayout.Width(100));
        if (oldGridInt != selAllSceneTextureGridInt)
        {
            oldGridInt = selAllSceneTextureGridInt;
            switch (selAllSceneTextureGridInt)
            {
            case 0: {
                SceneTextures.Sort(delegate(ItemInScene info1, ItemInScene info2) {
                        if (info2.FoundInMaterials.Count != info1.FoundInMaterials.Count)
                        {
                            return(info2.FoundInMaterials.Count - info1.FoundInMaterials.Count);
                        }
                        else
                        {
                            int info1Go = 0;
                            foreach (var it in info1.itemInfo)
                            {
                                info1Go += it.usedCount;
                            }
                            int info2Go = 0;
                            foreach (var it in info2.itemInfo)
                            {
                                info2Go += it.usedCount;
                            }

                            return(info2Go - info1Go);
                        }
                    });
            } break;

            case 1: {
                SceneTextures.Sort(delegate(ItemInScene info1, ItemInScene info2) { return(info1.texture.name.CompareTo(info2.texture.name)); });
            } break;

            case 2: {
                SceneTextures.Sort(delegate(ItemInScene info1, ItemInScene info2) { return(info1.format.CompareTo(info2.format)); });
            } break;
            }
        }
        EditorGUILayout.EndHorizontal();

        textureListScrollPos = EditorGUILayout.BeginScrollView(textureListScrollPos);

        foreach (var sceneTexture in SceneTextures)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Box(sceneTexture.texture, GUILayout.Width(ThumbnailWidth), GUILayout.Height(ThumbnailHeight));

            if (GUILayout.Button(sceneTexture.texture.name, GUILayout.Width(150)))
            {
                SelectObject(sceneTexture.texture, ctrlPressed);
            }

            string sizeLabel = "" + sceneTexture.texture.width + "x" + sceneTexture.texture.height;
            if (sceneTexture.isCubeMap)
            {
                sizeLabel += "x6";
            }
            sizeLabel += " - " + sceneTexture.mipMapCount + "mip";
            sizeLabel += "\n" + FormatSizeString(sceneTexture.memSizeKB) + " - " + sceneTexture.format + "";

            GUILayout.Label(sizeLabel, GUILayout.Width(120));
            GUILayout.Label(sceneTexture.itemInfo.Count + " Sce", GUILayout.Width(50));

            if (GUILayout.Button(sceneTexture.FoundInMaterials.Count + " Mat", GUILayout.Width(50)))
            {
                SelectObjects(sceneTexture.FoundInMaterials, ctrlPressed);
            }

            GUILayout.BeginVertical();
            foreach (var info in sceneTexture.itemInfo)
            {
                GUILayout.BeginHorizontal();

                ItemInSceneInfo itemInSceneInfo = sceneTexture.itemInfo.Find(delegate(ItemInSceneInfo obj) { return(obj.path == info.path); });
                if (GUILayout.Button(itemInSceneInfo.usedCount + " GO", GUILayout.Width(50)))
                {
                    EditorApplication.OpenScene(info.path);
                    CheckCurrentSceneResources();

                    foreach (var tDetails in ActiveTextures)
                    {
                        if (tDetails.texture == sceneTexture.texture)
                        {
                            List <Object> FoundObjects = new List <Object>();
                            foreach (Renderer renderer in tDetails.FoundInRenderers)
                            {
                                FoundObjects.Add(renderer.gameObject);
                            }
                            SelectObjects(FoundObjects, ctrlPressed);
                        }
                    }
                }
                GUILayout.Label(info.path);

                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();

            GUILayout.EndHorizontal();
        }

        EditorGUILayout.EndScrollView();
    }
Exemplo n.º 4
0
    private void ListAllSceneMaterials()
    {
        materialListScrollPos = EditorGUILayout.BeginScrollView(materialListScrollPos);

        foreach (var sceneMaterial in SceneMaterials)
        {
            if (sceneMaterial.material != null)
            {
                GUILayout.BeginHorizontal();

                if (sceneMaterial.material.mainTexture != null)
                {
                    GUILayout.Box(sceneMaterial.material.mainTexture, GUILayout.Width(ThumbnailWidth), GUILayout.Height(ThumbnailHeight));
                }
                else
                {
                    GUILayout.Box("n/a", GUILayout.Width(ThumbnailWidth), GUILayout.Height(ThumbnailHeight));
                }

                if (GUILayout.Button(sceneMaterial.material.name, GUILayout.Width(150)))
                {
                    SelectObject(sceneMaterial.material, ctrlPressed);
                }

                string shaderLabel = sceneMaterial.material.shader != null ? sceneMaterial.material.shader.name : "no shader";
                GUILayout.Label(shaderLabel, GUILayout.Width(200));

                GUILayout.Label(sceneMaterial.itemInfo.Count + " Sce", GUILayout.Width(50));

                GUILayout.BeginVertical();
                foreach (var info in sceneMaterial.itemInfo)
                {
                    GUILayout.BeginHorizontal();

                    ItemInSceneInfo itemInSceneInfo = sceneMaterial.itemInfo.Find(delegate(ItemInSceneInfo obj) { return(obj.path == info.path); });
                    if (GUILayout.Button(itemInSceneInfo.usedCount + " GO", GUILayout.Width(50)))
                    {
                        EditorApplication.OpenScene(info.path);
                        CheckCurrentSceneResources();

                        foreach (var tDetails in ActiveMaterials)
                        {
                            if (tDetails.material == sceneMaterial.material)
                            {
                                List <Object> FoundObjects = new List <Object>();
                                foreach (Renderer renderer in tDetails.FoundInRenderers)
                                {
                                    FoundObjects.Add(renderer.gameObject);
                                }
                                SelectObjects(FoundObjects, ctrlPressed);
                            }
                        }
                    }
                    GUILayout.Label(info.path);

                    GUILayout.EndHorizontal();
                }
                GUILayout.EndVertical();

                GUILayout.EndHorizontal();
            }
        }
        EditorGUILayout.EndScrollView();
    }
Exemplo n.º 5
0
    void CheckAllSceneResources()
    {
        SceneTextures.Clear();
        SceneMaterials.Clear();
        SceneMeshes.Clear();

        foreach (UnityEditor.EditorBuildSettingsScene scene in UnityEditor.EditorBuildSettings.scenes)
        {
            if (scene.enabled)
            {
                EditorApplication.OpenScene(scene.path);
                CheckCurrentSceneResources();

                foreach (var tex in ActiveTextures)
                {
                    string texPath = AssetDatabase.GetAssetPath(tex.texture);
                    if (!texPath.Contains("Brush") && !texPath.Contains("MapData_"))
                    {
                        var tTextureInScene = FindTextureInScene(tex.texture);
                        if (tTextureInScene == null)
                        {
                            tTextureInScene = new ItemInScene();
                            SceneTextures.Add(tTextureInScene);

                            tTextureInScene.isCubeMap   = tex.isCubeMap;
                            tTextureInScene.format      = tex.format;
                            tTextureInScene.memSizeKB   = tex.memSizeKB;
                            tTextureInScene.mipMapCount = tex.mipMapCount;
                            tTextureInScene.texture     = tex.texture;
                        }
                        var itemInfo = FindItemInSceneInfo(tTextureInScene, scene.path);
                        if (itemInfo == null)
                        {
                            itemInfo      = new ItemInSceneInfo();
                            itemInfo.path = scene.path;
                            tTextureInScene.itemInfo.Add(itemInfo);
                        }
                        itemInfo.usedCount += tex.FoundInRenderers.Count;

                        foreach (var mat in tex.FoundInMaterials)
                        {
                            if (!tTextureInScene.FoundInMaterials.Contains(mat))
                            {
                                tTextureInScene.FoundInMaterials.Add(mat);
                            }
                        }
                    }
                }

                foreach (var ma in ActiveMaterials)
                {
                    var tMaterialInScene = FindMaterialInScene(ma.material);
                    if (tMaterialInScene == null)
                    {
                        tMaterialInScene = new ItemInScene();
                        SceneMaterials.Add(tMaterialInScene);
                        tMaterialInScene.material = ma.material;
                    }
                    var itemInfo = FindItemInSceneInfo(tMaterialInScene, scene.path);
                    if (itemInfo == null)
                    {
                        itemInfo      = new ItemInSceneInfo();
                        itemInfo.path = scene.path;
                        tMaterialInScene.itemInfo.Add(itemInfo);
                    }
                    itemInfo.usedCount += ma.FoundInRenderers.Count;
                }

                foreach (var me in ActiveMeshDetails)
                {
                    var tMeshInScene = FindMeshInScene(me.mesh);
                    if (tMeshInScene == null)
                    {
                        tMeshInScene = new ItemInScene();
                        SceneMeshes.Add(tMeshInScene);
                        tMeshInScene.mesh = me.mesh;
                    }
                    var itemInfo = FindItemInSceneInfo(tMeshInScene, scene.path);
                    if (itemInfo == null)
                    {
                        itemInfo      = new ItemInSceneInfo();
                        itemInfo.path = scene.path;
                        tMeshInScene.itemInfo.Add(itemInfo);
                    }
                    itemInfo.usedCount  += me.FoundInMeshFilters.Count;
                    itemInfo.usedCount1 += me.FoundInSkinnedMeshRenderer.Count;
                }
            }
        }
        SceneMaterials.Sort(delegate(ItemInScene info1, ItemInScene info2) { return(info2.itemInfo.Count - info1.itemInfo.Count); });
        SceneMeshes.Sort(delegate(ItemInScene info1, ItemInScene info2) { return(info2.itemInfo.Count - info1.itemInfo.Count); });
    }