MoonMonet

Rice.

Известный
Автор темы
Модератор
1,756
1,622
Версия MoonLoader
.026-beta
Начал работу с MoonMonet. Хочу сделать кастомную кнопку Imgui с помощью библиотеки MoonMonet. Суть такая, что цвет imgui.Button берётся из аргумента, а цвета для imgui.ButtonHovered и imgui.ButtonActive создаёт MoonMonet. Целый день пытаюсь сделать, чтобы ФПС не просаживался при работе, но не получается. Возможно у кого-то есть идеи? Знаю, что ФПС падает из-за бесконечного вызова библиотеки, но не знаю как это можно обойти.

Код:
-- imgui
imgui.ColorButton(u8'Вторая кнопка', imgui.ImVec2(150, 20), 0xff00BFFF)

-- function
function imgui.ColorButton(text, size, color)
    local ret = MonetLua.buildColors(color, 1.0, true)
    imgui.PushStyleColor(imgui.Col.Button, ColorAccentsAdapter(color):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonActive, ColorAccentsAdapter(ret.accent1.color_700):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonHovered, ColorAccentsAdapter(ret.accent1.color_500):apply_alpha(0xaa):as_vec4())
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end
 
Решение
Lua:
-- imgui
imgui.ColorButton(u8'Вторая кнопка', imgui.ImVec2(150, 20), 0xff00BFFF)

local colors = {}
-- function
function imgui.ColorButton(text, size, color)
    if not colors[color] then colors[color] = MonetLua.buildColors(color, 1.0, true) end
    local ret = colors[color]
    imgui.PushStyleColor(imgui.Col.Button, ColorAccentsAdapter(color):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonActive, ColorAccentsAdapter(ret.accent1.color_700):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonHovered, ColorAccentsAdapter(ret.accent1.color_500):apply_alpha(0xaa):as_vec4())
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,541
Lua:
-- imgui
imgui.ColorButton(u8'Вторая кнопка', imgui.ImVec2(150, 20), 0xff00BFFF)

local ret = MonetLua.buildColors(color, 1.0, true)
-- function
function imgui.ColorButton(text, size, color)
    imgui.PushStyleColor(imgui.Col.Button, ColorAccentsAdapter(color):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonActive, ColorAccentsAdapter(ret.accent1.color_700):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonHovered, ColorAccentsAdapter(ret.accent1.color_500):apply_alpha(0xaa):as_vec4())
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end
 

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,541
Твоя реализация в целом неправильная, на то это и монет — одна цветовая палитра для всего интерфейса. Вызывай один раз, получай цвета один раз, используй где угодно
 
  • Нравится
Реакции: Rice.

#Northn

Pears Project — уже запущен!
Всефорумный модератор
2,656
2,541
Lua:
-- imgui
imgui.ColorButton(u8'Вторая кнопка', imgui.ImVec2(150, 20), 0xff00BFFF)

local colors = {}
-- function
function imgui.ColorButton(text, size, color)
    if not colors[color] then colors[color] = MonetLua.buildColors(color, 1.0, true) end
    local ret = colors[color]
    imgui.PushStyleColor(imgui.Col.Button, ColorAccentsAdapter(color):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonActive, ColorAccentsAdapter(ret.accent1.color_700):apply_alpha(0xaa):as_vec4())
    imgui.PushStyleColor(imgui.Col.ButtonHovered, ColorAccentsAdapter(ret.accent1.color_500):apply_alpha(0xaa):as_vec4())
    local button = imgui.Button(text, size)
    imgui.PopStyleColor(3)
    return button
end
 
  • Нравится
Реакции: Rice.