Исходник Moon Imgui addons

luxfero.

Участник
Автор темы
6
51
Moon Imgui Addons
Привет! Уже на протяжении полугода лежит в тёмном ящике этот проект, поэтому пустим его в свет, может, пригодится новичкам в lua.
Данная библиотека собирает несколько полезных (или не очень) элементов для mimgui в одну общую библиотеку для того, чтобы всем облегчить жизнь😄
Так-же, плюсом предоставляю демо-скрипт, в котором подробно рассказано о каждом элементе библиотеки (Активация: F2)

Установка библиотеки:
- Cохранить ADDONS.lua в GTA/moonloader/lib

Вызывается как самая обычная библиотека через:
Lua:
local addons = require "ADDONS"

А вот примеры всех элементов из этой библиотеки:
( Сразу если что извиняюсь за качество GIF-ок )
  1. Описание: Кастомные кнопки с красивыми анимациями
    Использование:
    Lua:
    addons.MaterialButton(string str_id, ImVec2 size, float duration)-- and
    addons.AnimButton(string label, ImVec2 size, float duration)
    Styled Buttons.gif
  2. Описание: Кнопка с возможностью сделать её не активной
    Использование:
    Lua:
    addons.StateButton(bool state, ...) -- где ... это аргументы стандартной imgui-кнопки
    State Button.gif
  3. Описание: Кнопка в двух состояниях: включена и выключена
    Использование:
    Lua:
    addons.ToggleButton(string str_id, ImBool value)
    Toggle.gif
  4. Описание: Кнопка закрытия окна
    Использование:
    Lua:
    addons.CloseButton(string str_id, ImBool value, ImVec2 size, float rounding)
    Screenshot_1.png
  5. Описание: Кнопки для переходов между чем-либо
    Использование:
    Lua:
    addons.HeaderButton(bool state, string str_id)
    Header Buttons.png
  6. Описание: Кнопки для переходов между чем-либо
    Использование:
    Lua:
    addons.PageButton(bool state, string (FA Icon) icon, string name, float but_wide)
    Page Buttons.png
  7. Описание: Подсказка при наведении на предыдущий элемент
    Использование:
    Lua:
    addons.Hint(string str_id, string hint_text, ImVec4 color, bool no_center)
    Hint.png
  8. Описание: Функция для выравнивания текста
    Использование:
    Lua:
    addons.AlignedText(string text, int align, ImVec4 color) -- aligns: 1(left); 2(centre); 3(right)
    aligns.png
  9. Описание: Круговой прогресс-бар
    Использование:
    Lua:
    addons.CircularProgressBar(int value, float radius, float thickness, string format)
    Progress.png
  10. Описание: Превью изображения, при нажатии на которое открывается изображение в полном размере
    Использование:
    Lua:
    addons.Picture(string str_id, ImTextureID image, ImVec2 size, float mult, string hint)
    Гифка не влазит :(

Помимо этих элементов в библиотеке присутствуют функции для упрощения действий при работе с Imgui
Вот их полный список:
Lua:
float value = addons.limit(float value, float min, float max)
-- Функция, которая устанавливает "рамки" для входящего в неё числа.
-- Например если число (1-ый аргумент) будет больше max, то вернётся max, аналогично с min

ImVec4 value = addons.bringVec4To(ImVec4 from, ImVec4 dest, float start_time, float duration)
ImVec2 value = addons.bringVec2To(ImVec2 from, ImVec2 dest, float start_time, float duration)
float value = addons.bringFloatTo(float from, float dest, float start_time, float duration)
-- Функции для плавного перехода от одного значения к другому
-- Подробнее тут: https://www.blast.hk/threads/13380/post-793501

Bool bool = addons.isPlaceHovered(ImVec2 a, ImVec2 b)
-- Проверка находится ли курсор в указанной области экрана

ImVec4 color = addons.getContrastColor(ImVec4 bg_col, ImVec4 col_1, ImVec4 col_2)
-- Получение нужного цвета текста в зависимости от цвета фона
-- Например что бы на чёрном фоне был белый текст, а не белом - чёрный

ImVec4 color = addons.set_alpha(ImVec4 color, float alpha)
-- Получение цвета с нужной прозрачностью

Автор: @Cosmo
Идейный вдохновитель: @jr.quintero
 

Вложения

  • Addons_demo.lua
    1.2 MB · Просмотры: 376
  • ADDONS.lua
    27 KB · Просмотры: 1,221