Mimgui | Ацинити сочный ToggleButton

SomaGnoma

Известный
Автор темы
443
151

MIMGUI TOGGLEBUTTON

Всем привет, так как это тема Юмор/Креатив, я хочу показать вам современный и стильный ToggleButton.
Добавив этот ToggleButton в свое ImGui меню, оно автоматически становится:
Привлекательным
Современным
Хайпомодным
ezgif.com-gif-maker (1).gif
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
Special for @chapo and @Cosmo
 
Последнее редактирование:

DimaPlay

Активный
166
35
Прикольный скрипт! С помощью него я украсил свои менюшки!

Кста твой софт готов для rl
 
Последнее редактирование:
  • Нравится
Реакции: SomaGnoma