44using UnityEngine . UI ;
55
66[ ExecuteInEditMode ]
7- public class MeshDebugger : EditorWindow
7+ public partial class MeshDebugger : EditorWindow
88{
99 public Mesh m_Mesh ;
1010 public Transform m_Transform ;
@@ -20,7 +20,7 @@ public class MeshDebugger : EditorWindow
2020 public bool m_DebugBinormalVerts ;
2121 public bool m_DebugVertsToIndice ;
2222 public bool m_DebugTrisNormal ;
23- public float m_RaySize = .4f ;
23+ public float m_RaySize = .2f ;
2424
2525 public enum DebugTriangle { None , Index , Area , Submesh }
2626 public enum DebugVertice { None , Index , Shared , Duplicates }
@@ -29,7 +29,7 @@ public enum DebugVertice { None, Index, Shared, Duplicates }
2929 public DebugTriangle m_DebugTris ;
3030 public DebugVertice m_DebugVert ;
3131 public bool m_UseHeatmap ;
32- public float m_HeatSize = .2f ;
32+ public float m_HeatSize = .1f ;
3333
3434 [ Space ]
3535 private Transform m_sceneCam ;
@@ -69,11 +69,27 @@ void OnDisable()
6969
7070 void OnSelectionChange ( )
7171 {
72+ if ( m_Transform && m_Transform . GetComponent < MeshDebuggerProxyUI > ( ) )
73+ {
74+ DestroyImmediate ( m_Transform . GetComponent < MeshDebuggerProxyUI > ( ) ) ;
75+ }
76+
7277 m_Transform = Selection . activeTransform ;
7378 if ( m_Transform )
7479 {
7580 var m = m_Transform . GetComponent < MeshFilter > ( ) ;
81+ var m2 = m_Transform . GetComponent < Graphic > ( ) ;
7682 if ( m ) m_Mesh = m . sharedMesh ;
83+ else if ( m2 )
84+ {
85+ var m3 = m_Transform . gameObject . AddComponent < MeshDebuggerProxyUI > ( ) ;
86+ m_Mesh = null ;
87+ m3 . callback += ( ) =>
88+ {
89+ m_Mesh = m3 . mesh ;
90+ m_hasUpdated = false ;
91+ } ;
92+ }
7793 else
7894 m_Mesh = null ;
7995 }
@@ -84,74 +100,6 @@ void OnSelectionChange()
84100 Repaint ( ) ;
85101 }
86102
87- void OnGUI ( )
88- {
89- EditorGUI . BeginChangeCheck ( ) ;
90- {
91- EditorGUILayout . BeginHorizontal ( ) ;
92- EditorGUILayout . PrefixLabel ( "Target" ) ;
93- m_Transform = ( Transform ) EditorGUILayout . ObjectField ( m_Transform , typeof ( Transform ) , true ) ;
94- m_Mesh = ( Mesh ) EditorGUILayout . ObjectField ( m_Mesh , typeof ( Mesh ) , true ) ;
95- EditorGUILayout . EndHorizontal ( ) ;
96- }
97- {
98- EditorGUILayout . BeginHorizontal ( ) ;
99- EditorGUILayout . PrefixLabel ( "Configuration" ) ;
100- m_Static = GUILayout . Toggle ( m_Static , "Static" , EditorStyles . miniButtonLeft ) ;
101- m_DepthCulling = GUILayout . Toggle ( m_DepthCulling , "Depth Culling" , EditorStyles . miniButtonMid ) ;
102- m_EqualizeGizmoSize = GUILayout . Toggle ( m_EqualizeGizmoSize , "Equalize" , EditorStyles . miniButtonRight ) ;
103- EditorGUILayout . EndHorizontal ( ) ;
104- }
105- m_RaySize = EditorGUILayout . Slider ( "Ray Size" , m_RaySize , 0 , 2 ) ;
106- {
107- EditorGUILayout . BeginHorizontal ( ) ;
108- EditorGUILayout . PrefixLabel ( "Vertex Rays" ) ;
109- m_DebugNormalVerts = GUILayout . Toggle ( m_DebugNormalVerts , "Normal" , EditorStyles . miniButtonLeft ) ;
110- m_DebugTangentVerts = GUILayout . Toggle ( m_DebugTangentVerts , "Tangent" , EditorStyles . miniButtonMid ) ;
111- m_DebugBinormalVerts = GUILayout . Toggle ( m_DebugBinormalVerts , "Bitangent" , EditorStyles . miniButtonRight ) ;
112- EditorGUILayout . EndHorizontal ( ) ;
113- }
114- {
115- EditorGUILayout . BeginHorizontal ( ) ;
116- EditorGUILayout . PrefixLabel ( "Additional Rays" ) ;
117- m_DebugVertsToIndice = GUILayout . Toggle ( m_DebugVertsToIndice , "Verts to Indice" , EditorStyles . miniButtonLeft ) ;
118- m_DebugTrisNormal = GUILayout . Toggle ( m_DebugTrisNormal , "Triangle Normal" , EditorStyles . miniButtonRight ) ;
119- EditorGUILayout . EndHorizontal ( ) ;
120- }
121- {
122- EditorGUILayout . BeginHorizontal ( ) ;
123- EditorGUILayout . PrefixLabel ( "Use Heatmap" ) ;
124- m_UseHeatmap = EditorGUILayout . Toggle ( m_UseHeatmap ) ;
125- EditorGUI . BeginDisabledGroup ( ! m_UseHeatmap ) ;
126- m_HeatSize = EditorGUILayout . Slider ( m_HeatSize , 0 , 1 ) ;
127- EditorGUI . EndDisabledGroup ( ) ;
128- EditorGUILayout . EndHorizontal ( ) ;
129- }
130- {
131- EditorGUILayout . BeginHorizontal ( ) ;
132- EditorGUILayout . PrefixLabel ( "Debug Vertices" ) ;
133- if ( GUILayout . Toggle ( m_DebugVert == DebugVertice . None , "None" , EditorStyles . miniButtonLeft ) ) m_DebugVert = DebugVertice . None ;
134- if ( GUILayout . Toggle ( m_DebugVert == DebugVertice . Index , "Index" , EditorStyles . miniButtonMid ) ) m_DebugVert = DebugVertice . Index ;
135- if ( GUILayout . Toggle ( m_DebugVert == DebugVertice . Shared , "Shared" , EditorStyles . miniButtonMid ) ) m_DebugVert = DebugVertice . Shared ;
136- if ( GUILayout . Toggle ( m_DebugVert == DebugVertice . Duplicates , "Duplicates" , EditorStyles . miniButtonRight ) ) m_DebugVert = DebugVertice . Duplicates ;
137- EditorGUILayout . EndHorizontal ( ) ;
138- }
139- {
140- EditorGUILayout . BeginHorizontal ( ) ;
141- EditorGUILayout . PrefixLabel ( "Debug Triangles" ) ;
142- if ( GUILayout . Toggle ( m_DebugTris == DebugTriangle . None , "None" , EditorStyles . miniButtonLeft ) ) m_DebugTris = DebugTriangle . None ;
143- if ( GUILayout . Toggle ( m_DebugTris == DebugTriangle . Index , "Index" , EditorStyles . miniButtonMid ) ) m_DebugTris = DebugTriangle . Index ;
144- if ( GUILayout . Toggle ( m_DebugTris == DebugTriangle . Area , "Area" , EditorStyles . miniButtonMid ) ) m_DebugTris = DebugTriangle . Area ;
145- if ( GUILayout . Toggle ( m_DebugTris == DebugTriangle . Submesh , "Submesh" , EditorStyles . miniButtonRight ) ) m_DebugTris = DebugTriangle . Submesh ;
146- EditorGUILayout . EndHorizontal ( ) ;
147- }
148- if ( EditorGUI . EndChangeCheck ( ) )
149- {
150- m_hasUpdated = false ;
151- SceneView . RepaintAll ( ) ;
152- }
153- }
154-
155103 void OnSceneGUI ( SceneView view )
156104 {
157105 if ( Event . current . type != EventType . Repaint )
@@ -371,4 +319,6 @@ static Styles()
371319 blockLabel . alignment = TextAnchor . MiddleCenter ;
372320 }
373321 }
322+
323+
374324}
0 commit comments