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(); }