public static GUIPainter DrawPainter(GUIPainter painter, Vector2 samplePosition, Vector2 pickerPosition, Color color, Action <Color> onColorChanged, Action onSampleClick) { if (painter == null) { painter = new GUIPainter() { showPicker = false, samplePosition = samplePosition, pickerPosition = pickerPosition, clickingH = false, clickingSV = false, onColorChanged = onColorChanged }; float h, s, v; Color.RGBToHSV(color, out h, out s, out v); painter.H = h; painter.S = s; painter.V = v; painter.GenerateSVPicker(); } /* float nh, ns, nv; * Color.RGBToHSV(color, out nh, out ns, out nv); * painter.H = nh; * painter.S = ns; * painter.V = nv; */ // painter.onColorChanged = onColorChanged; GUI.color = new Color(color.r, color.g, color.b); if (GUI.Button(new Rect(samplePosition, new Vector2(26, 20)), "████")) { ProceduralObjectsLogic.PlaySound(); if (painter.showPicker == false) { float nh, ns, nv; Color.RGBToHSV(color, out nh, out ns, out nv); painter.H = nh; painter.S = ns; painter.V = nv; painter.GenerateSVPicker(); } painter.showPicker = !painter.showPicker; onSampleClick.Invoke(); } GUI.color = Color.white; if (painter.showPicker) { DrawPicker(painter, color); } painter.samplePosition = samplePosition; painter.pickerPosition = pickerPosition; return(painter); }
public static void UpdatePainter(GUIPainter p, Action onClosePicker) { if (p == null) { return; } if (Input.GetMouseButtonDown(1)) { onClosePicker.Invoke(); return; } if (p.showPicker) { if (Input.GetMouseButtonDown(0)) { Vector2 guiMousePos = GUIUtils.MousePos; if (!p.pickerRect.Contains(guiMousePos) && !p.sampleRect.Contains(guiMousePos)) { p.clickingSV = false; p.clickingH = false; onClosePicker.Invoke(); return; } if (new Rect(p.pickerPosition + new Vector2(5, 5), new Vector2(180, 180)).Contains(guiMousePos)) { p.clickingSV = true; ProceduralObjectsLogic.PlaySound(3); } else if (new Rect(p.pickerPosition + new Vector2(195, 5), new Vector2(25, 180)).Contains(guiMousePos)) { p.clickingH = true; ProceduralObjectsLogic.PlaySound(3); } } } if (p.clickingSV) { p.PickupSVApply(); } else if (p.clickingH) { p.PickupHueApply(); } if (Input.GetMouseButtonUp(0)) { p.clickingH = false; p.clickingSV = false; } }
public static void DrawPicker(GUIPainter painter, Color color) { GUI.BeginGroup(painter.pickerRect); GUI.Box(new Rect(0, 0, 225, 190), string.Empty); GUI.DrawTexture(new Rect(5, 5, 180, 180), painter.SVPicker); GUI.DrawTexture(new Rect(180f * painter.S - 2, 178 - painter.V * 180f, 14, 14), ProceduralObjectsMod.Icons[10]); GUI.DrawTexture(new Rect(195, 5, 25, 180), HuePicker); GUI.DrawTexture(new Rect(195, 183 - painter.H * 180f, 25, 4), ProceduralObjectsMod.Icons[11]); if (GUI.Button(new Rect(0, 192, 85, 22), LocalizationManager.instance.current["colorPicker_store"])) { ProceduralObjectsLogic.PlaySound(); RegisterColor(color); } GUI.color = SavedColors[0]; if (GUI.Button(new Rect(new Rect(87, 192, 26, 20)), "████")) { painter.SetColor(SavedColors[0]); } GUI.color = SavedColors[1]; if (GUI.Button(new Rect(new Rect(115, 192, 26, 20)), "████")) { painter.SetColor(SavedColors[1]); } GUI.color = SavedColors[2]; if (GUI.Button(new Rect(new Rect(143, 192, 26, 20)), "████")) { painter.SetColor(SavedColors[2]); } GUI.color = SavedColors[3]; if (GUI.Button(new Rect(new Rect(171, 192, 26, 20)), "████")) { painter.SetColor(SavedColors[3]); } GUI.color = SavedColors[4]; if (GUI.Button(new Rect(new Rect(199, 192, 26, 20)), "████")) { painter.SetColor(SavedColors[4]); } GUI.color = Color.white; GUI.EndGroup(); }