Гайд [ImGui] Как сделать логи

Начинающий
Статус
Оффлайн
Регистрация
28 Сен 2024
Сообщения
16
Реакции[?]
1
Поинты[?]
1K
В файле, с этим кодом, или в includes необходимо подключить библиотеки:

C++:
#include <vector>
#include <cstring>
#include <string>
Структура для хранения информации о логах:
struct LogEntry {
    char text[256];
    float display_time;
};
Переменные для логирования:
std::vector<LogEntry> logs;
const float log_display_duration = 3.0f;
Основной Код:
        ImGui::Begin("Window", nullptr);

        static char log_text[256] = "";
        ImGui::InputText("Log Text", log_text, sizeof(log_text));

        if (ImGui::Button("Show Log")) {
            LogEntry new_log;
            std::strncpy(new_log.text, log_text, sizeof(new_log.text));
            new_log.display_time = log_display_duration;
            logs.push_back(new_log);
        }
        ImGui::End();

        for (size_t i = 0; i < logs.size(); ) {
            logs[i].display_time -= ImGui::GetIO().DeltaTime;
            if (logs[i].display_time <= 0.0f) {
                logs.erase(logs.begin() + i);
            }
            else {
                i++;
            }
        }

        for (size_t i = 0; i < logs.size(); ++i) {
            ImGui::SetNextWindowPos(ImVec2(20.0f, 20.0f + i * 50.0f));
            ImGui::Begin(std::to_string(i).c_str(), nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_AlwaysAutoResize);
            ImGui::Text("%s", logs[i].text);
            ImGui::End();
        }
После всего что мы сделали получаем вот такой результат. А дальше, если у вас есть желание, вы сможете сделать из этого конфетку

 
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2023
Сообщения
324
Реакции[?]
25
Поинты[?]
24K
В файле, с этим кодом, или в includes необходимо подключить библиотеки:

C++:
#include <vector>
#include <cstring>
#include <string>
Структура для хранения информации о логах:
struct LogEntry {
    char text[256];
    float display_time;
};
Переменные для логирования:
std::vector<LogEntry> logs;
const float log_display_duration = 3.0f;
Основной Код:
        ImGui::Begin("Window", nullptr);

        static char log_text[256] = "";
        ImGui::InputText("Log Text", log_text, sizeof(log_text));

        if (ImGui::Button("Show Log")) {
            LogEntry new_log;
            std::strncpy(new_log.text, log_text, sizeof(new_log.text));
            new_log.display_time = log_display_duration;
            logs.push_back(new_log);
        }
        ImGui::End();

        for (size_t i = 0; i < logs.size(); ) {
            logs[i].display_time -= ImGui::GetIO().DeltaTime;
            if (logs[i].display_time <= 0.0f) {
                logs.erase(logs.begin() + i);
            }
            else {
                i++;
            }
        }

        for (size_t i = 0; i < logs.size(); ++i) {
            ImGui::SetNextWindowPos(ImVec2(20.0f, 20.0f + i * 50.0f));
            ImGui::Begin(std::to_string(i).c_str(), nullptr, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_AlwaysAutoResize);
            ImGui::Text("%s", logs[i].text);
            ImGui::End();
        }
После всего что мы сделали получаем вот такой результат. А дальше, если у вас есть желание, вы сможете сделать из этого конфетку

подскажи как сделать ргб линию? как в меню скита
 
Начинающий
Статус
Оффлайн
Регистрация
28 Сен 2024
Сообщения
16
Реакции[?]
1
Поинты[?]
1K
подскажи как сделать ргб линию? как в меню скита
 
Сверху Снизу