static void DoColorModify(Texture2D _target, enum_ColorVisualize _color, Func <float, float> _OnEachValue)
            {
                Color[] colors = _target.GetPixels();
                for (int i = 0; i < colors.Length; i++)
                {
                    switch (_color)
                    {
                    case enum_ColorVisualize.RGBA: colors[i] = new Color(_OnEachValue(colors[i].r), _OnEachValue(colors[i].g), _OnEachValue(colors[i].b), _OnEachValue(colors[i].a)); break;

                    case enum_ColorVisualize.RGB: colors[i] = new Color(_OnEachValue(colors[i].r), _OnEachValue(colors[i].g), _OnEachValue(colors[i].b), colors[i].a); break;

                    case enum_ColorVisualize.R: colors[i] = new Color(_OnEachValue(colors[i].r), colors[i].g, colors[i].b, colors[i].a); break;

                    case enum_ColorVisualize.G: colors[i] = new Color(colors[i].r, _OnEachValue(colors[i].g), colors[i].b, colors[i].a); break;

                    case enum_ColorVisualize.B: colors[i] = new Color(colors[i].r, colors[i].g, _OnEachValue(colors[i].b), colors[i].a); break;

                    case enum_ColorVisualize.A: colors[i] = new Color(colors[i].r, colors[i].g, colors[i].b, _OnEachValue(colors[i].a)); break;
                    }
                }
                _target.SetPixels(colors);
                _target.Apply();
            }
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();
            EditorGUILayout.BeginVertical();
            m_EnableVertexDataVisualize = EditorGUILayout.Foldout(m_EnableVertexDataVisualize, "Vertex Data Visualize");

            if (m_EnableVertexDataVisualize)
            {
                bool haveNormals  = m_Normals.Length > 0;
                bool haveTangents = m_Tangents.Length > 0;
                bool haveColors   = m_Colors.Length > 0;

                EditorGUILayout.BeginHorizontal();
                m_DrawVertex  = EditorGUILayout.Toggle("Draw Vertex", m_DrawVertex);
                m_VertexColor = EditorGUILayout.ColorField(m_VertexColor);
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                if (m_ColorVertexDataType.Check((enum_VertexData)EditorGUILayout.EnumPopup("Draw Vertex Data", m_ColorVertexDataType.m_Value)))
                {
                    m_ColorVertexData.Clear();
                    if (m_ColorVertexDataType.m_Value != enum_VertexData.None)
                    {
                        m_Target.sharedMesh.GetVertexData(m_ColorVertexDataType.m_Value, m_ColorVertexData);
                    }
                }

                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                if (m_ColorVertexData.Count != 0)
                {
                    m_DrawDirection = EditorGUILayout.Toggle("Directional", m_DrawDirection);
                    m_VertexData    = EditorGUILayout.Slider(m_VertexData, 0f, 2f);
                }
                else
                {
                    EditorGUILayout.LabelField("No Vertex Data Found", EditorStyles.boldLabel);
                }
                EditorGUILayout.EndHorizontal();


                EditorGUILayout.LabelField("Helpers", EditorStyles.boldLabel);
                EditorGUILayout.BeginHorizontal();
                if (haveNormals && haveTangents)
                {
                    m_DrawBiTangents   = EditorGUILayout.Toggle("Draw Bi-Tangents", m_DrawBiTangents);
                    m_BitangentColor   = EditorGUILayout.ColorField(m_BitangentColor);
                    m_BiTangentsLength = EditorGUILayout.Slider(m_BiTangentsLength, 0f, 2f);
                }
                else
                {
                    m_DrawBiTangents = false;
                    EditorGUILayout.LabelField("Unable To Calculate Bi Tangents");
                }
                EditorGUILayout.EndHorizontal();
                EditorGUILayout.BeginHorizontal();
                if (haveColors)
                {
                    m_DrawColorType = (enum_ColorVisualize)EditorGUILayout.EnumPopup("Draw Color", m_DrawColorType);
                    m_ColorLength   = EditorGUILayout.Slider(m_ColorLength, 0f, 2f);
                }
                else
                {
                    m_DrawColorType = enum_ColorVisualize.None;
                    EditorGUILayout.LabelField("No Color Data");
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUILayout.EndVertical();
        }