Загрузка...

Как создать бинд на включение функции используя ImGui C++?

Тема в разделе C/C++ создана пользователем never2much2 10 июн 2024. 222 просмотра

Загрузка...
  1. never2much2
    never2much2 Автор темы 10 июн 2024 Заблокирован(а) 354 14 мар 2022
    Как создать бинд на включение функции используя ImGui C++?
     
  2. sparrow
    Код
    #include "imgui.h"

    // Переменная для хранения состояния бинда
    bool functionActive = false;

    // Переменная для хранения нажатой клавиши (например, 'K')
    int keyBind = 'K';

    // Функция, которая будет вызываться
    void MyFunction()
    {
    // Реализация функции
    ImGui::Text("Function is active!");
    }

    // Функция обработки клавиатуры
    void ProcessInput()
    {
    if (ImGui::IsKeyPressed(keyBind))
    {
    functionActive = !functionActive;
    }
    }

    void RenderUI()
    {
    // Создание интерфейса ImGui
    ImGui::Begin("Bind Example");

    // Отображение текущего бинда
    ImGui::Text("Current bind: %c", keyBind);

    // Возможность изменить бинд
    if (ImGui::InputInt("Set new bind (ASCII code)", &keyBind))
    {
    // Ограничение ввода символов (опционально)
    if (keyBind < 32 || keyBind > 126)
    {
    keyBind = 'K'; // Вернуть к исходному значению в случае неправильного ввода
    }
    }

    // Отображение текущего состояния функции
    if (functionActive)
    {
    MyFunction();
    }
    else
    {
    ImGui::Text("Function is inactive.");
    }

    ImGui::End();
    }

    int main()
    {
    // Инициализация вашего приложения и ImGui

    // Главный цикл
    while (!glfwWindowShouldClose(window))
    {
    // Обработка событий
    glfwPollEvents();

    // Запуск ImGui-фрейма
    ImGui_ImplOpenGL3_NewFrame();
    ImGui_ImplGlfw_NewFrame();
    ImGui::NewFrame();

    // Обработка ввода
    ProcessInput();

    // Рендеринг интерфейса
    RenderUI();

    // Рендеринг ImGui
    ImGui::Render();
    int display_w, display_h;
    glfwGetFramebufferSize(window, &display_w, &display_h);
    glViewport(0, 0, display_w, display_h);
    glClearColor(clear_color.x, clear_color.y, clear_color.z, clear_color.w);
    glClear(GL_COLOR_BUFFER_BIT);
    ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());

    // Swap buffers
    glfwSwapBuffers(window);
    }

    // Очистка ресурсов

    return 0;
    }
     
Top