C++ Исходник ImGui Tricks - библиотека с полезными дополнениями для ImGui.

эс-те́т
Забаненный
Статус
Оффлайн
Регистрация
8 Дек 2019
Сообщения
178
Реакции[?]
270
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В данный момент имеет в себе:
  • Систему уведомлений для вашего меню.
  • Функции для упрощения в разработке различных анимаций.
  • Некоторые не стандартные виджеты.
  • Касмомизированная структура ImColor с дополнительным конструктором из цветового кода HEX HTML и методом получения HEX HTML из уже существующего цвета.
Пожалуйста, авторизуйтесь для просмотра ссылки.


Функционал со временем будет расширяться.

Код:
void RenderMyGUI() {
   ...
   ImGui::Checkbox("Enable Animation", &enable_animation);
   float trickFloat = ImTricks::Animations::FastFloatLerp("header", enable_animation, 0.f, 1.f, 0.05f);
   ImVec2 pos1 = ImTricks::Animations::FastImVec2Lerp("pos1", enable_animation, ImVec2(0, 50), ImVec2(100, 50), 5);
   ImVec2 pos2 = ImTricks::Animations::FastImVec2Lerp("pos2", enable_animation, ImVec2(413, 80), ImVec2(513, 80), 5);
   draw->AddRectFilled(p + pos1, p + pos2, ImTricks::Animations::FastColorLerp(ImColor(255, 0, 0), ImColor(0, 255, 0), trickFloat));
   ...
}
Пожалуйста, авторизуйтесь для просмотра ссылки.
Код:
void RenderMyGUI() {
   ...
   if (ImGui::Button("Create Notify", { 120, 25 }))
       ImTricks::NotifyManager::AddNotify("The notification was displayed successfully.", ImTrickNotify_Success);
   ...

   ImTricks::NotifyManager::HandleNotifies(ImGui::GetOverlayDrawList());
}
1629737360989.png
Код:
void RenderMyGUI() {
   ...
  static ImColor col = ImColor(23, 23, 23);
  ImTricks::Widgets::ColorEdit4("test", col, NULL); // Окорнут так и не добавил редактирование ImColor при помощи стандартного ColorEdit
   ...
}
Код:
   ...
   ImTrickyColor color = ImTrickyColor("#eb4034ff");
   ImGui::Text(color.HTML().c_str());
   ...
Код:
void RenderMyGUI() {
   ...
ImVec2 points[] = { p + ImVec2(0, 75),p + ImVec2(75, 0), p + ImVec2(150, 25), p + ImVec2(150, 150), p + ImVec2(75, 200), p + ImVec2(0, 150) }; 
ImTrickyColor colors[] = { ImTrickyColor("#00ffffff"), ImTrickyColor("#00ffffff"),ImTrickyColor("#00ffffff"), ImTrickyColor("#e600ffff"),ImTrickyColor("#e600ffff"), ImTrickyColor("#e600ffff") }; 
ImTricks::DrawList::AddConvexPolyFilledMultiColor(draw, points, colors, 6);
   ...
}
 
Последнее редактирование:
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
Окорнут так и не добавил редактирование ImColor при помощи стандартного ColorEdit
Так может потому что окорнут сам и говорит, мол ImColor устарел и лучше избегать его использование? В один день ведь можно проснуться, обновить имгуй и начать чинить ошибки, вызванные окончательным удалением ImColor
 
эс-те́т
Забаненный
Статус
Оффлайн
Регистрация
8 Дек 2019
Сообщения
178
Реакции[?]
270
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Добавлена кастомизированная структура Im(Tricky)Color с конструктором цвета из HEX HTML.

Код:
ImTrickyColor color = ImTrickyColor("#eb4034ff");
ImGui::Text(color.HTML().c_str());
А так же добавлен ImTricks::Animations::FastImVec2Lerp.

Пожалуйста, авторизуйтесь для просмотра ссылки.
 
эс-те́т
Забаненный
Статус
Оффлайн
Регистрация
8 Дек 2019
Сообщения
178
Реакции[?]
270
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Добавлены:
  • ImTricks::DrawList::AddTriangleFilledMultiColor (Автор -
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    )
  • ImTricks::DrawList::AddConvexPolyFilledMultiColor (Автор -
    Пожалуйста, авторизуйтесь для просмотра ссылки.
    )
 
Олдфаг
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
2,996
Реакции[?]
1,275
Поинты[?]
5K
Пользователь
Статус
Оффлайн
Регистрация
26 Окт 2017
Сообщения
519
Реакции[?]
95
Поинты[?]
2K
Я конечно может чего не понимаю, но наверное понимаю.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Добавляем, но не удаляем? Опираясь только лишь на то что тик уже прошел. Только зачем?
C++:
for (int i = 0; i < notifies.size(); i++)
{
    auto current_notify = notifies.at(i);
    if (current_notify.time < GetTickCount64())
    {
        notifies.erase(notifies.begin() + i);
        continue;
    }
    DrawNotify(current_notify);            
}
 
эс-те́т
Забаненный
Статус
Оффлайн
Регистрация
8 Дек 2019
Сообщения
178
Реакции[?]
270
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я конечно может чего не понимаю, но наверное понимаю.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Добавляем, но не удаляем? Опираясь только лишь на то что тик уже прошел. Только зачем?
C++:
for (int i = 0; i < notifies.size(); i++)
{
    auto current_notify = notifies.at(i);
    if (current_notify.time < GetTickCount64())
    {
        notifies.erase(notifies.begin() + i);
        continue;
    }
    DrawNotify(current_notify);           
}

Исправил, спасибо!
 
midnight.im
Администратор
Статус
Оффлайн
Регистрация
1 Июл 2015
Сообщения
1,650
Реакции[?]
2,173
Поинты[?]
162K
Добавлена кастомизированная структура Im(Tricky)Color с конструктором цвета из HEX HTML.

Код:
ImTrickyColor color = ImTrickyColor("#eb4034ff");
ImGui::Text(color.HTML().c_str());
А так же добавлен ImTricks::Animations::FastImVec2Lerp.

Пожалуйста, авторизуйтесь для просмотра ссылки.
зачем? если ImU32 который используется сейчас в имгуи почти везде это и есть цвет в хексе.

и для этого были дефайны IM_COL32 которые через сдвиги сделаю тебе хекс подобное значение из ргба инта
и для ImColor есть конструктор который примет ImU32 в который снова же можно передать 0xFFFFFFFF
 
Начинающий
Статус
Оффлайн
Регистрация
29 Окт 2018
Сообщения
4
Реакции[?]
2
Поинты[?]
0
Мне кажется, хорошей идеей будет добавление третьего параметра функции AddNotify() который будет отвечать за место появления уведомления, например верхний левый угол, правый верхний, и так далее.
 
Сверху Снизу