public void OnGUI() { if (Selection.activeGameObject == null) { EditorGUILayout.LabelField("No objects selected. Please select an object with a MeshFilter and Renderer"); return; } if (swatches == null) { swatches = ColorSwatches.CreateInstance <ColorSwatches>(); if (EditorPrefs.HasKey(sSwatchKey)) { JsonUtility.FromJsonOverwrite(EditorPrefs.GetString(sSwatchKey), swatches); } if (swatches == null) { swatches = ColorSwatches.CreateInstance <ColorSwatches>(); EditorPrefs.SetString(sSwatchKey, JsonUtility.ToJson(swatches, false)); } } DrawChannelGUI(); Tab oldTab = tab; tab = (Tab)GUILayout.Toolbar((int)tab, TAB_NAMES); if (oldTab != tab) { UpdateDisplayMode(); } if (tab == Tab.Paint) { scroll = EditorGUILayout.BeginScrollView(scroll); DrawPaintGUI(); } else if (tab == Tab.Deform) { scroll = EditorGUILayout.BeginScrollView(scroll); DrawDeformGUI(); } else if (tab == Tab.Flow) { scroll = EditorGUILayout.BeginScrollView(scroll); DrawFlowGUI(); } else if (tab == Tab.Utility) { scroll = EditorGUILayout.BeginScrollView(scroll); DrawUtilityGUI(); } EditorGUILayout.EndScrollView(); }
private void DrawPaintGUI() { GUILayout.Box("Brush Settings", new GUILayoutOption[] { GUILayout.ExpandWidth(true), GUILayout.Height(20) }); var oldBM = brushMode; brushMode = (BrushTarget)EditorGUILayout.EnumPopup("Target Channel", brushMode); if (oldBM != brushMode) { UpdateDisplayMode(); } if (brushMode == BrushTarget.Color || brushMode == BrushTarget.UV0_AsColor || brushMode == BrushTarget.UV1_AsColor || brushMode == BrushTarget.UV2_AsColor || brushMode == BrushTarget.UV3_AsColor) { brushColorMode = (BrushColorMode)EditorGUILayout.EnumPopup("Blend Mode", (System.Enum)brushColorMode); if (brushColorMode == BrushColorMode.Overlay || brushColorMode == BrushColorMode.Normal) { brushColor = EditorGUILayout.ColorField("Brush Color", brushColor); EditorGUILayout.Space(); if (GUILayout.Button("Reset Palette", EditorStyles.miniButton, GUILayout.Width(120), GUILayout.Height(20))) { if (swatches != null) { DestroyImmediate(swatches); } swatches = ColorSwatches.CreateInstance <ColorSwatches>(); EditorPrefs.SetString(sSwatchKey, JsonUtility.ToJson(swatches, false)); } EditorGUILayout.Space(); GUILayout.BeginHorizontal(); for (int i = 0; i < swatches.colors.Length; ++i) { if (GUILayout.Button("", EditorStyles.textField, GUILayout.Width(16), GUILayout.Height(16))) { brushColor = swatches.colors[i]; } EditorGUI.DrawRect(new Rect(GUILayoutUtility.GetLastRect().x + 1, GUILayoutUtility.GetLastRect().y + 1, 14, 14), swatches.colors[i]); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); for (int i = 0; i < swatches.colors.Length; i++) { if (GUILayout.Button("+", EditorStyles.miniButton, GUILayout.Width(16), GUILayout.Height(12))) { swatches.colors[i] = brushColor; EditorPrefs.SetString(sSwatchKey, JsonUtility.ToJson(swatches, false)); } } GUILayout.EndHorizontal(); } } else if (brushMode == BrushTarget.ValueR || brushMode == BrushTarget.ValueG || brushMode == BrushTarget.ValueB || brushMode == BrushTarget.ValueA) { brushValue = (int)EditorGUILayout.Slider("Brush Value", (float)brushValue, 0.0f, 256.0f); } else { floatBrushValue = EditorGUILayout.FloatField("Brush Value", floatBrushValue); var oldUVRange = uvVisualizationRange; uvVisualizationRange = EditorGUILayout.Vector2Field("Visualize Range", uvVisualizationRange); if (oldUVRange != uvVisualizationRange) { UpdateDisplayMode(); } } //EditorGUILayout.Space(); DrawBrushSettingsGUI(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Fill")) { if (OnBeginStroke != null) { OnBeginStroke(jobs); } for (int i = 0; i < jobs.Length; ++i) { Undo.RecordObject(jobs[i].stream, "Vertex Painter Fill"); FillMesh(jobs[i]); } if (OnEndStroke != null) { OnEndStroke(); } Undo.CollapseUndoOperations(Undo.GetCurrentGroup()); } if (GUILayout.Button("Random")) { for (int i = 0; i < jobs.Length; ++i) { Undo.RecordObject(jobs[i].stream, "Vertex Painter Fill"); RandomMesh(jobs[i]); } } EditorGUILayout.EndHorizontal(); }