/// <summary> /// ColorPicker with palette with color picker options. /// </summary> /// <param name="id">Id for the color picker.</param> /// <param name="description">The description of the color picker.</param> /// <param name="originalColor">The current color.</param> /// <param name="flags">Flags to customize color picker.</param> /// <returns>Selected color.</returns> public static Vector4 ColorPickerWithPalette(int id, string description, Vector4 originalColor, ImGuiColorEditFlags flags) { var existingColor = originalColor; var selectedColor = originalColor; var colorPalette = ImGuiHelpers.DefaultColorPalette(36); if (ImGui.ColorButton($"{description}###ColorPickerButton{id}", originalColor)) { ImGui.OpenPopup($"###ColorPickerPopup{id}"); } if (ImGui.BeginPopup($"###ColorPickerPopup{id}")) { if (ImGui.ColorPicker4($"###ColorPicker{id}", ref existingColor, flags)) { selectedColor = existingColor; } for (var i = 0; i < 4; i++) { ImGui.Spacing(); for (var j = i * 9; j < (i * 9) + 9; j++) { if (ImGui.ColorButton($"###ColorPickerSwatch{id}{i}{j}", colorPalette[j])) { selectedColor = colorPalette[j]; } ImGui.SameLine(); } } ImGui.EndPopup(); } return(selectedColor); }