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; }); }
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(); }
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(); }
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(); }
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); }); }