void OnEnable() { #if (UNITY_5_0) title = "UV Inspector"; #else titleContent = new GUIContent("UV Inspector"); #endif this.minSize = new Vector2(350, 400); previewUVSet = (UVSet)EditorPrefs.GetInt("nTools.UVInspector.previewUVSet", (int)previewUVSet); subMeshToggleField = EditorPrefs.GetInt("nTools.UVInspector.subMeshToggleField", subMeshToggleField.bitfield); showVertexColors = EditorPrefs.GetBool("nTools.UVInspector.showVertexColors", showVertexColors); showGrid = EditorPrefs.GetBool("nTools.UVInspector.showGrid", showGrid); showSubmeshesByOne = EditorPrefs.GetBool("nTools.UVInspector.showSubmeshesByOne", showSubmeshesByOne); tilePreviewTexture = EditorPrefs.GetBool("nTools.UVInspector.tilePreviewTexture", tilePreviewTexture); previewTextureSource = (PreviewTextureSource)EditorPrefs.GetInt("nTools.UVInspector.previewTextureSource", (int)previewTextureSource); customPreviewTexture = (Texture2D)AssetDatabase.LoadAssetAtPath(EditorPrefs.GetString("nTools.UVInspector.customPreviewTexture", ""), typeof(Texture2D)); previewTextureTintColor = IntToColor(EditorPrefs.GetInt("nTools.UVInspector.previewTextureTintColor", ColorToInt(previewTextureTintColor))); preferredTextureProperty = EditorPrefs.GetString("nTools.UVInspector.preferredTextureProperty", preferredTextureProperty); previewTextureChannels = (ColorChannels)EditorPrefs.GetInt("nTools.UVInspector.previewTextureChannels", (int)previewTextureChannels); settingsFoldout = EditorPrefs.GetBool("nTools.UVInspector.settingsFoldout", settingsFoldout); previewFoldout = EditorPrefs.GetBool("nTools.UVInspector.previewFoldout", previewFoldout); if (!LoadMaterials()) { Debug.LogWarning("UV Inspector Error: shaders not found. Reimport asset."); Close(); return; } #if NO_ON_SELECTION_CHANGED if (EditorApplication.update != OnEditorUpdate) { EditorApplication.update += OnEditorUpdate; } #else if (Selection.selectionChanged != OnSelectionChanged) { Selection.selectionChanged += OnSelectionChanged; } #endif LoadMeshes(); }
void OnGUI() { if (uvPreviewMaterial == null || simpleMaterial == null) { if (!LoadMaterials()) { return; } } for (int i = 0; i < inspectedObjects.Count; i++) { if (inspectedObjects[i].obj == null) { inspectedObjects.RemoveAt(i); i = 0; } } scroolPosition = EditorGUILayout.BeginScrollView(scroolPosition); EditorGUILayout.BeginVertical(); Rect logoRect = EditorGUILayout.GetControlRect(GUILayout.Height(56)); if (Event.current.type == EventType.Repaint) { Styles.logoFont.Draw(logoRect, "nTools|UVInspector", false, false, false, false); } // info box if (inspectedObjects.Count == 0) { EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("Select object with mesh."); EditorGUILayout.EndVertical(); } else if (inspectedObjects.Count == 1) { StringBuilder sb = new StringBuilder(); InspectedObject obj = inspectedObjects[0]; EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("Object: " + obj.obj.name + ", Mesh: " + obj.mesh.name); sb.AppendFormat("Submeshes: {0}", obj.subMeshCount); sb.AppendFormat(", Triangles: {0}", obj.triangleCount); sb.AppendFormat(", Vertices: {0}", obj.vertexCount); if (obj.hasColors) { sb.Append(", Colors"); } if (obj.hasUV[0]) { sb.Append(", UV1"); } if (obj.hasUV[1]) { sb.Append(", UV2"); } if (obj.hasUV[2]) { sb.Append(", UV3"); } if (obj.hasUV[3]) { sb.Append(", UV4"); } EditorGUILayout.LabelField(sb.ToString()); EditorGUILayout.EndVertical(); } else { StringBuilder sb = new StringBuilder(); for (int i = 0; i < inspectedObjects.Count; i++) { sb.Append(inspectedObjects[i].obj.name + "(" + inspectedObjects[i].mesh.name + "), "); } EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.LabelField("Multiple objects:"); EditorGUILayout.LabelField(sb.ToString(), EditorStyles.wordWrappedMiniLabel); EditorGUILayout.EndVertical(); } // UI Window float previewWindowHeight = Mathf.Min(EditorGUIUtility.currentViewWidth, this.position.height * 0.75f); Rect previewWindowRect = EditorGUILayout.GetControlRect(GUILayout.Height(previewWindowHeight)); UVPreviewWindow(previewWindowRect); if (inspectedObjects.Count == 1 && !inspectedObjects[0].hasUV[(int)previewUVSet]) { EditorGUI.LabelField(previewWindowRect, "Unassigned UV Channel", Styles.hudFont); } // Toolbar buttons EditorGUILayout.BeginHorizontal(); showGrid = GUILayout.Toggle(showGrid, "Grid", EditorStyles.toolbarButton); showVertexColors = GUILayout.Toggle(showVertexColors, "Vertex Colors", EditorStyles.toolbarButton); tilePreviewTexture = GUILayout.Toggle(tilePreviewTexture, "Texture Tiles", EditorStyles.toolbarButton); GUI.enabled = IsCanFrameSelected(); if (GUILayout.Toggle(false, "Frame View", EditorStyles.toolbarButton, GUILayout.MaxWidth(80))) { FrameSelected(); } GUI.enabled = true; if (GUILayout.Toggle(false, "Reset View", EditorStyles.toolbarButton, GUILayout.MaxWidth(80))) { previewWindowPosition = new Vector2(-0.5f, -0.5f); float aspect = Mathf.Min(viewportSize.x, viewportSize.y) / Mathf.Max(viewportSize.x, viewportSize.y, 1); previewWindowScale = 1.8f * aspect; } EditorGUILayout.EndHorizontal(); if (previewFoldout = nGUI.Foldout(previewFoldout, "Preview")) { ++EditorGUI.indentLevel; EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("UV Channel"); previewUVSet = (UVSet)GUILayout.Toolbar((int)previewUVSet, Styles.uvSetNames, GUILayout.MaxWidth(160), GUILayout.Height(20)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Sub Mesh"); if (inspectedObjects.Count == 1) { SubMeshToolbar(inspectedObjects[0].mesh.subMeshCount); } else { GUI.enabled = false; GUI.Button(EditorGUILayout.GetControlRect(GUILayout.MaxWidth(160), GUILayout.Height(20)), inspectedObjects.Count > 1 ? "<Multyply Objects>" : "---"); GUI.enabled = true; } EditorGUILayout.EndHorizontal(); previewTextureSource = (PreviewTextureSource)EditorGUILayout.EnumPopup("Preview Texture", previewTextureSource); ++EditorGUI.indentLevel; if (previewTextureSource == PreviewTextureSource.Custom) { previewTextureTintColor = EditorGUILayout.ColorField("Image Tint", previewTextureTintColor); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Color Channel"); previewTextureChannels = (ColorChannels)GUILayout.Toolbar((int)previewTextureChannels, Styles.colorChannelsNames, GUILayout.MaxWidth(160), GUILayout.Height(20)); EditorGUILayout.EndHorizontal(); customPreviewTexture = (Texture2D)EditorGUILayout.ObjectField("Image", customPreviewTexture, typeof(Texture2D), false); } else if (previewTextureSource == PreviewTextureSource.FromMaterial) { PreviewTextureGUI(); previewTextureTintColor = EditorGUILayout.ColorField("Image Tint", previewTextureTintColor); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel("Color Channel"); previewTextureChannels = (ColorChannels)GUILayout.Toolbar((int)previewTextureChannels, Styles.colorChannelsNames, GUILayout.MaxWidth(160), GUILayout.Height(20)); EditorGUILayout.EndHorizontal(); } --EditorGUI.indentLevel; --EditorGUI.indentLevel; } EditorGUILayout.EndVertical(); EditorGUILayout.EndScrollView(); }