private void OnShowDefaultGUI() { EditorGUILayout.LabelField("Asset Hunter v1.3.5", EditorStyles.boldLabel); //Show logo if (m_window && m_window.m_UIWideLogo) { GUILayout.Label(m_window.m_UIWideLogo); } //If there is no valid build log if (!m_BuildLogExists) { m_BuildLogExists = AssetHunterHelper.HasBuildLogAvaliable(); if (!m_BuildLogExists) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(m_UIWarning); GUILayout.Label("Go build your project in order for this tool to function...(Ctrl+Shift+B)", EditorStyles.boldLabel); GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); } } string buildLogButtonText; //Settings EditorGUILayout.Space(); EditorGUILayout.BeginVertical(); if (GUILayout.Button(new GUIContent("Edit Settings", m_UISettings), GUILayout.Width(btnMinWidth - 70), GUILayout.Height(20))) { EditorWindow.GetWindow <AssetHunterSettingsWindow>(true, "Asset Hunter Settings"); } EditorGUI.indentLevel = 0; //Only show the foldout if we actually have any manually excluded folders or types if (settings.HasExcludes()) { bShowExcludeFoldout = EditorGUILayout.Foldout(bShowExcludeFoldout, "Show manual excludes"); } if (bShowExcludeFoldout) { if (settings.HasDirectoryExcludes()) { EditorGUI.indentLevel = 1; EditorGUILayout.LabelField("Excluded Directories", EditorStyles.boldLabel); EditorGUI.indentLevel = 2; foreach (Object obj in settings.m_DirectoryExcludes) { EditorGUILayout.LabelField(AssetDatabase.GetAssetPath(obj), EditorStyles.miniLabel); } } if (settings.HasTypeExcludes()) { EditorGUI.indentLevel = 1; EditorGUILayout.LabelField("Excluded Types", EditorStyles.boldLabel); EditorGUI.indentLevel = 2; foreach (SerializableSystemType sType in settings.m_AssetTypeExcludes) { EditorGUILayout.LabelField(sType.Name); } } } EditorGUI.indentLevel = 0; EditorGUILayout.EndVertical(); GUILayout.Label("-------------------------------Build Log--------------------------------"); //If build log up to date if (!m_newBuildReady) { buildLogButtonText = m_BuildLogLoaded ? "Log updated (refresh)" : "Load Build Log (Required)"; GUI.color = m_BuildLogLoaded ? Color.green : Color.red; } //If build log outdated else { buildLogButtonText = "Log outdated(Refresh)"; GUI.color = Color.yellow; } EditorGUILayout.BeginHorizontal(); //Load the Editor build log if (GUILayout.Button(buildLogButtonText, GUILayout.MinWidth(btnMinWidth))) { loadEditorLog(); return; } EditorGUILayout.Space(); GUI.color = Color.cyan; if (GUILayout.Button("Open Log", GUILayout.MinWidth(btnMinWidth))) { System.Diagnostics.Process.Start(AssetHunterHelper.GetLogFolderPath()); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); GUILayout.Label("------------------------------Select Mode------------------------------"); EditorGUILayout.BeginHorizontal(); //Choose window state GUI.color = (m_WindowState == AssetHunterWindowState.UnusedAssets) ? Color.gray : m_IntialGUIColor; if (GUILayout.Button(AssetHunterWindowState.UnusedAssets.ToString(), GUILayout.MinWidth(btnMinWidth))) { changeState(AssetHunterWindowState.UnusedAssets); } EditorGUILayout.Space(); GUI.color = (m_WindowState == AssetHunterWindowState.BuildReport) ? Color.gray : m_IntialGUIColor; if (GUILayout.Button(AssetHunterWindowState.BuildReport.ToString(), GUILayout.MinWidth(btnMinWidth))) { //AssetHunterHelper.GetAddedComponents(); changeState(AssetHunterWindowState.BuildReport); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); //Reset GUI Color GUI.color = m_IntialGUIColor; }
private void OnShowDefaultBody() { EditorGUILayout.BeginVertical(); //Draw excluded types foldout if (bShowExcludeFoldout) { GUILayout.Label("-------------------------------------------------------------------------"); if (settings.HasDirectoryExcludes()) { GUI.color = AssetHunterHelper.AH_BLUE; EditorGUI.indentLevel = 1; EditorGUILayout.LabelField("Excluded Directories", EditorStyles.whiteBoldLabel); GUI.color = m_IntialGUIColor; EditorGUI.indentLevel = 2; foreach (UnityEngine.Object obj in settings.m_DirectoryExcludes) { EditorGUILayout.LabelField(AssetDatabase.GetAssetPath(obj), EditorStyles.miniLabel); } } if (settings.HasTypeExcludes()) { GUI.color = AssetHunterHelper.AH_BLUE; EditorGUI.indentLevel = 1; EditorGUILayout.LabelField("Excluded Types", EditorStyles.whiteBoldLabel); GUI.color = m_IntialGUIColor; EditorGUI.indentLevel = 2; foreach (SerializableSystemType sType in settings.m_AssetTypeExcludes) { EditorGUILayout.LabelField(sType.Name); } } if (settings.HasSubStringExcludes()) { GUI.color = AssetHunterHelper.AH_BLUE; EditorGUI.indentLevel = 1; EditorGUILayout.LabelField("Excluded Strings", EditorStyles.whiteBoldLabel); GUI.color = m_IntialGUIColor; EditorGUI.indentLevel = 2; foreach (string substring in settings.m_AssetSubstringExcludes) { EditorGUILayout.LabelField(substring); } } GUILayout.Label("-------------------------------------------------------------------------"); GUILayout.Space(10); } //If there is no valid build log if (!m_BuildLogExists) { m_BuildLogExists = AssetHunterHelper.HasBuildLogAvaliable(); if (!m_BuildLogExists) { EditorGUILayout.BeginHorizontal(); GUILayout.Label(m_UIWarning); GUILayout.Label("Asset Hunter needs a recent build in order to work", EditorStyles.boldLabel); EditorGUILayout.EndHorizontal(); GUILayout.Label("Create a build (Ctrl+Shift+B)"); //requires unity 5 to work #if UNITY_5 if (GUILayout.Button("Open Build Settings")) { EditorWindow.GetWindow(Type.GetType("UnityEditor.BuildPlayerWindow,UnityEditor")); } #endif GUILayout.FlexibleSpace(); return; } } string buildLogButtonText; EditorGUI.indentLevel = 0; EditorGUILayout.EndVertical(); GUILayout.Label("-------------------------------Build Info--------------------------------"); //If build log up to date if (!m_newBuildReady) { buildLogButtonText = m_BuildLogLoaded ? "Log updated (refresh)" : "Load Build Log (Required)"; GUI.color = m_BuildLogLoaded ? AssetHunterHelper.AH_GREEN : AssetHunterHelper.AH_RED; } //If build log outdated else { buildLogButtonText = "Log outdated(Refresh)"; GUI.color = AssetHunterHelper.AH_YELLOW1; } //Load the Editor build log if (GUILayout.Button(buildLogButtonText, GUILayout.Width(375))) { loadEditorLog(); return; } //GUILayout.FlexibleSpace(); EditorGUILayout.Space(); GUILayout.Label("------------------------------Select Mode------------------------------"); EditorGUILayout.BeginHorizontal(); //Choose window state GUI.color = (m_WindowState == AssetHunterWindowState.UnusedAssets) ? AssetHunterHelper.AH_GREY : m_IntialGUIColor; if (GUILayout.Button(AssetHunterWindowState.UnusedAssets.ToString(), GUILayout.MinWidth(btnMinWidth))) { changeState(AssetHunterWindowState.UnusedAssets); } EditorGUILayout.Space(); GUI.color = (m_WindowState == AssetHunterWindowState.BuildReport) ? AssetHunterHelper.AH_GREY : m_IntialGUIColor; if (GUILayout.Button(AssetHunterWindowState.BuildReport.ToString(), GUILayout.MinWidth(btnMinWidth))) { //Shot buildreport changeState(AssetHunterWindowState.BuildReport); } GUILayout.FlexibleSpace(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); #region scriptdetection /*EditorGUILayout.BeginHorizontal(); * * GUI.color = AssetHunterHelper.AH_RED; * if (GUILayout.Button(AssetHunterWindowState.UnusedScripts.ToString() + " (WIP - USE WITH CONSIDERATION)", GUILayout.MinWidth(btnMinWidth * 2 + 14))) * { * * GUI.color = m_IntialGUIColor; * //Get added scripts * //List<Type> scriptAssemblyTypes = AssetHunterHelper.GetScriptAssembly(); * * //Find all enabled scenes in buildsettings * EditorBuildSettingsScene[] activeScenes = EditorBuildSettings.scenes.Where(val => val.enabled == true).ToArray<EditorBuildSettingsScene>(); * * * //All script dependencies for all enabled levels in buildsettings * m_UsedScriptList = AssetHunterHelper.GetScriptLevelDependencies(activeScenes); * * //Find ALL scripts in scriptAssembly * //TODO ADD THIS TO ATTEMPT TO LOCATE UNUSED CODE * //m_UnusedScriptList = AssetHunterHelper.GetAddedComponents(); * * //Remove "Used Scripts" from list * m_UnusedScriptList.RemoveAll(val => m_UsedScriptList.Contains(val)); * * changeState(AssetHunterWindowState.UnusedScripts); * } * * GUILayout.FlexibleSpace(); * EditorGUILayout.EndHorizontal(); * EditorGUILayout.Space();*/ #endregion //Reset GUI Color GUI.color = m_IntialGUIColor; }