function imgui.DrawButtonWithColoredIcon(text, icon, size, color, colorHovered, colorActive)
local buttonPos = imgui.GetCursorScreenPos();
local buttonText = icon .. text;
local buttonTextSize = imgui.CalcTextSize(buttonText);
local result = imgui.Button(buttonText, size);
local isHovered, isActive = imgui.IsItemHovered(), imgui.IsItemActive();
local iconSize = imgui.CalcTextSize(icon);
if (isHovered) then color = colorHovered or color end
if (isActive) then color = colorActive or color end
imgui.GetWindowDrawList():AddText(
buttonPos + imgui.ImVec2(size.x / 2 - buttonTextSize.x / 2, size.y / 2 - iconSize.y / 2),
color,
icon
);
return result;
end