private void DrawPalette(ptPalette palette) { GUILayout.BeginVertical(EditorStyles.helpBox); GUILayout.Label("Palette:"); rows = EditorGUILayout.IntSlider(rows, 1, 50); scrollPos = GUILayout.BeginScrollView(scrollPos, true, false); int end_count = 0; int r_counter = rows + 1; EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(GUILayout.Width(50 * rows)); for (int i = 0; i < palette.colors.Count; i++) { r_counter++; if (r_counter > rows) { EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); r_counter = 0; end_count++; } GUI.color = palette.colors[i]; GUILayout.Box(paletteElement); if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition) && Event.current.type == EventType.MouseDown) { palette.colors.RemoveAt(i); i--; Repaint(); } } GUI.color = Color.white; EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.EndScrollView(); if (GUILayout.Button("Remove duplicates")) { palette.colors = palette.colors.Distinct().ToList(); } if (GUILayout.Button("Sort by brightness")) { ptColorUtils.SortByBrightness(palette.colors); } if (GUILayout.Button("Sort by saturation")) { ptColorUtils.SortBySaturation(palette.colors); } if (GUILayout.Button("Sort by hue")) { ptColorUtils.SortByHue(palette.colors); } GUILayout.EndVertical(); }
private void DrawColorPicker(ptPalette palette) { GUILayout.BeginVertical(EditorStyles.helpBox); color = EditorGUILayout.ColorField("Color:", color); GUILayout.BeginHorizontal(); GUILayout.Box(colorBox, GUILayout.Width(100), GUILayout.Height(100)); if (Event.current.type == EventType.MouseDrag || Event.current.type == EventType.MouseDown) { if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition)) { var pickerRect = GUILayoutUtility.GetLastRect(); var gui = Event.current.mousePosition; Xpicker = Mathf.Abs((pickerRect.x - gui.x) / pickerRect.width); Ypicker = Mathf.Abs((pickerRect.y - gui.y) / pickerRect.height); UpdateColor(); Repaint(); } } GUILayout.BeginVertical(); if (GUILayout.Button(isRGB ? "RGB" : "HSV")) { isRGB = !isRGB; } if (isRGB) { color.r = EditorGUILayout.Slider(color.r, 0f, 1f); color.g = EditorGUILayout.Slider(color.g, 0f, 1f); color.b = EditorGUILayout.Slider(color.b, 0f, 1f); color.a = EditorGUILayout.Slider(color.a, 0f, 1f); } else { var hsv = color.toHSV(); hsv.h = EditorGUILayout.Slider(hsv.h, 0f, 1f); hsv.s = EditorGUILayout.Slider(hsv.s, 0f, 1f); hsv.v = EditorGUILayout.Slider(hsv.v, 0f, 1f); color = hsv.toRGB(); } GUILayout.EndVertical(); GUILayout.EndHorizontal(); if (GUILayout.Button("Add")) { palette.colors.Add(color); } GUILayout.EndVertical(); }
private void OnInspectorGUI_Paint(ptTilemap tmp) { if (paletteElement == null) { paletteElement = new Texture2D(50, 20); var colors = new Color[paletteElement.width * paletteElement.height]; for (int i = 0; i < colors.Length; i++) { colors[i] = Color.white; } paletteElement.SetPixels(colors); paletteElement.Apply(); } GUILayout.Label("Paint:"); EditorGUILayout.Space(); UpdateColorBox(); showHelp = EditorGUILayout.Foldout(showHelp, "Help"); if (showHelp) { GUILayout.Label("RMB - place pixel \nRMB+Shift - erase pixel \nRMB+Control - pick color"); } EditorGUILayout.Space(); DrawColorPicker(tmp); EditorGUILayout.Space(); showHistoryPalette = EditorGUILayout.Foldout(showHistoryPalette, "History of colors"); if (showHistoryPalette) { historyScrollPos = GUILayout.BeginScrollView(historyScrollPos, true, false, GUILayout.Height(50)); GUILayout.BeginHorizontal(); for (int i = history.Count - 1; i >= 0; i--) { GUI.color = history[i]; GUILayout.Box(paletteElement); if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition) && Event.current.type == EventType.MouseDown) { color = history[i]; Repaint(); } } GUI.color = Color.white; GUILayout.EndHorizontal(); GUILayout.EndScrollView(); if (GUILayout.Button("Clear")) { history.Clear(); } } EditorGUILayout.Space(); showCustomPalette = EditorGUILayout.Foldout(showCustomPalette, "Custom palette"); if (showCustomPalette) { palette = (ptPalette)EditorGUILayout.ObjectField("palette:", palette, typeof(ptPalette), false); if (palette != null) { DrawCustomPalette(); } } EditorGUILayout.Space(); showTilemapPalette = EditorGUILayout.Foldout(showTilemapPalette, "Tilemap pallete"); if (showTilemapPalette) { tmpPaletteRows = EditorGUILayout.IntSlider(tmpPaletteRows, 1, 50); tmpPalleteScrollPos = GUILayout.BeginScrollView(tmpPalleteScrollPos, true, false); int end_count = 0; int r_counter = tmpPaletteRows + 1; EditorGUILayout.BeginHorizontal(); EditorGUILayout.BeginVertical(GUILayout.Width(50 * tmpPaletteRows)); for (int i = 0; i < tmp.Palette.Length; i++) { r_counter++; if (r_counter > tmpPaletteRows) { EditorGUILayout.EndVertical(); EditorGUILayout.BeginVertical(); r_counter = 0; end_count++; } GUI.color = tmp.Palette[i]; GUILayout.Box(paletteElement); if (GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition) && Event.current.type == EventType.MouseDown) { color = tmp.Palette[i]; Repaint(); } } GUI.color = Color.white; EditorGUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.EndScrollView(); } }