private void DrawGUIPaintView()
        {
            if (meshAttributes != null)
            {
                RefreshPreviewTextureCache();
                int prevSelectedAttributeIndex = selectedAttributeIndex;
                selectedAttributeIndex =
                    SplatWeightEditor.OnInspectorGUI(selectedAttributeIndex, ref brushColor, meshAttributes);
                if (prevSelectedAttributeIndex != selectedAttributeIndex)
                {
                    SetBrushColorWithAttributeIndex(selectedAttributeIndex);
                }

#if POLYBRUSH_DEBUG
                GUILayout.BeginHorizontal();

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("MetaData", EditorStyles.miniButton))
                {
                    Debug.Log(meshAttributes.ToString("\n"));

                    string str = EditorUtility.FindPolybrushMetaDataForShader(meshAttributesContainer.shader);

                    if (!string.IsNullOrEmpty(str))
                    {
                        TextAsset asset = AssetDatabase.LoadAssetAtPath <TextAsset>(str);

                        if (asset != null)
                        {
                            EditorGUIUtility.PingObject(asset);
                        }
                        else
                        {
                            Debug.LogWarning("No MetaData found for Shader \"" + meshAttributesContainer.shader.name + "\"");
                        }
                    }
                    else
                    {
                        Debug.LogWarning("No MetaData found for Shader \"" + meshAttributesContainer.shader.name + "\"");
                    }
                }

                GUILayout.EndHorizontal();

                GUILayout.Space(4);

                if (GUILayout.Button("rebuild  targets"))
                {
                    RebuildColorTargets(brushColor, brushSettings.strength);
                }


                GUILayout.Label(brushColor != null ? brushColor.ToString() : "brush color: null\n");
#endif
            }
            else
            {
                if (!m_LikelySupportsTextureBlending)
                {
                    EditorGUILayout.HelpBox("It doesn't look like any of the materials on this object support texture blending!\n\nSee the readme for information on creating custom texture blend shaders.", MessageType.Warning);
                }
            }
        }
        // Inspector GUI shown in the Editor window.  Base class shows BrushSettings by default
        internal override void DrawGUI(BrushSettings brushSettings)
        {
            base.DrawGUI(brushSettings);

            using (new GUILayout.HorizontalScope())
            {
                GUILayout.FlexibleSpace();
                paintMode = (PaintMode)GUILayout.Toolbar((int)paintMode, m_ModeIcons, GUILayout.Width(130));
                GUILayout.FlexibleSpace();
            }

            GUILayout.Space(4);

            if (!m_LikelySupportsTextureBlending)
            {
                EditorGUILayout.HelpBox("It doesn't look like any of the materials on this object support texture blending!\n\nSee the readme for information on creating custom texture blend shaders.", MessageType.Warning);
            }

            // Selection dropdown for material (for submeshes)
            if (m_AvailableMaterialsAsString.Count() > 0)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUI.BeginChangeCheck();

                EditorGUILayout.LabelField("Material :", GUILayout.Width(60));
                currentMeshACIndex = EditorGUILayout.Popup(currentMeshACIndex, m_AvailableMaterialsAsString, "Popup");

                if (EditorGUI.EndChangeCheck())
                {
                    m_MeshAttributesContainer = m_MeshAttributesContainers[currentMeshACIndex];
                }

                EditorGUILayout.EndHorizontal();
            }

            GUILayout.Space(4);

            if (meshAttributes != null)
            {
                RefreshPreviewTextureCache();
                int prevSelectedAttributeIndex = m_SelectedAttributeIndex;
                m_SelectedAttributeIndex = SplatWeightEditor.OnInspectorGUI(m_SelectedAttributeIndex, ref brushColor, meshAttributes);
                if (prevSelectedAttributeIndex != m_SelectedAttributeIndex)
                {
                    SetBrushColorWithAttributeIndex(m_SelectedAttributeIndex);
                }

#if POLYBRUSH_DEBUG
                GUILayout.BeginHorizontal();

                GUILayout.FlexibleSpace();

                if (GUILayout.Button("MetaData", EditorStyles.miniButton))
                {
                    Debug.Log(meshAttributes.ToString("\n"));

                    string str = EditorUtility.FindPolybrushMetaDataForShader(meshAttributesContainer.shader);

                    if (!string.IsNullOrEmpty(str))
                    {
                        TextAsset asset = AssetDatabase.LoadAssetAtPath <TextAsset>(str);

                        if (asset != null)
                        {
                            EditorGUIUtility.PingObject(asset);
                        }
                        else
                        {
                            Debug.LogWarning("No MetaData found for Shader \"" + meshAttributesContainer.shader.name + "\"");
                        }
                    }
                    else
                    {
                        Debug.LogWarning("No MetaData found for Shader \"" + meshAttributesContainer.shader.name + "\"");
                    }
                }

                GUILayout.EndHorizontal();

                GUILayout.Space(4);

                if (GUILayout.Button("rebuild  targets"))
                {
                    RebuildColorTargets(brushColor, brushSettings.strength);
                }


                GUILayout.Label(brushColor != null ? brushColor.ToString() : "brush color: null\n");
#endif
            }
        }