- 436
- 150
MIMGUI TOGGLEBUTTON
Всем привет, так как это тема Юмор/Креатив, я хочу показать вам современный и стильный ToggleButton.
Добавив этот ToggleButton в свое ImGui меню, оно автоматически становится:
⁃ Привлекательным ⁃
⁃ Современным ⁃
⁃ Хайпомодным ⁃
Добавив этот ToggleButton в свое ImGui меню, оно автоматически становится:
⁃ Привлекательным ⁃
⁃ Современным ⁃
⁃ Хайпомодным ⁃
Lua:
--[[
label - Название кнопки (Необязательно)
bool - Переменная, которую будет менять кнопка (Без этого не обойтись)
a_speed - Скорость анимации (Необязательно)
]]
function imgui.Toggle(label, bool, a_speed)
local p = imgui.GetCursorScreenPos()
local dl = imgui.GetWindowDrawList()
local clicked = false
local label = label or "" -- Название
local h = imgui.GetTextLineHeightWithSpacing() -- Высота кнопки
local w = h * 1.7 -- Ширина кнопки
local r = h / 2 -- Радиус кружка
local t_size = {x = w * 2, y = imgui.CalcTextSize(label).y} -- Размер шпаги
local s = a_speed or 0.2 -- Скорость анимации
local function ImSaturate(f)
return f < 0.0 and 0.0 or (f > 1.0 and 1.0 or f)
end
local x_begin = bool[0] and 1.0 or 0.0
local t_begin = bool[0] and 0.0 or 1.0
if LastTime == nil then
LastTime = {}
end
if LastActive == nil then
LastActive = {}
end
if imgui.InvisibleButton(label, imgui.ImVec2(w + x_begin * (t_size.x), h)) then
bool[0] = not bool[0]
LastTime[label] = os.clock()
LastActive[label] = true
clicked = true
end
if LastActive[label] then
local time = os.clock() - LastTime[label]
if time <= s then
local anim = ImSaturate(time / s)
x_begin = bool[0] and anim or 1.0 - anim
t_begin = bool[0] and 1.0 - anim or anim
else
LastActive[label] = false
end
end
local color = imgui.ImVec4(1.0, 1.0 ,0.0, 1.0) -- Цвет шпаги
local r_color = imgui.ImVec4(t_begin * 0.8, x_begin * 0.8, 0.0, 1.0) -- Цвет наконечника
local text_color = imgui.GetStyle().Colors[imgui.Col.Text] -- Цвет текста
dl:AddRectFilled(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + h + x_begin * (t_size.x), p.y + h), imgui.GetColorU32Vec4(color), r)
dl:AddCircleFilled(imgui.ImVec2(p.x + r, p.y + r + x_begin * (r / 2)), r, imgui.GetColorU32Vec4(color), r + 5)
dl:AddCircleFilled(imgui.ImVec2(p.x + r, p.y + r - x_begin * (r / 2)), r, imgui.GetColorU32Vec4(color), r + 5)
dl:AddCircleFilled(imgui.ImVec2(p.x + r + x_begin * (t_size.x), p.y + r), r + 0.5, imgui.GetColorU32Vec4(r_color), r + 5)
dl:AddText(imgui.ImVec2(p.x + (r * 2 + 5) + x_begin * (t_size.x), p.y + (t_size.y / 4)), imgui.GetColorU32Vec4(text_color), label)
return clicked
end
Lua:
local bool = new.bool(false)
local bool_2 = new.bool(false)
-- Во фрейме
imgui.Toggle(u8"Включить GM", bool)
imgui.Toggle(u8"Включить Aim", bool_2)
-- Ещё можно выполнять что-либо при нажатии
if imgui.Toggle(u8"Включить GM", bool) then
print("Кнопка нажата")
end
Последнее редактирование: