diff --git a/.gitignore b/.gitignore index a21a221..afad1ae 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ PluginTemplate/cmake-build-debug/ /build/ /cmake-build-debug/ +/vendor/glfw/ diff --git a/.idea/.name b/.idea/.name index 49b8eac..cfa9975 100644 --- a/.idea/.name +++ b/.idea/.name @@ -1 +1 @@ -HUMMINGBIRD_PLUGIN_BASE \ No newline at end of file +HUMMINGBIRD_PLUGIN_TEMPLATE \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index d11f3de..99244af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,25 @@ cmake_minimum_required(VERSION 3.24.4) -project(HUMMINGBIRD_PLUGIN_BASE) +project(HUMMINGBIRD_PLUGIN_TEMPLATE) set(CMAKE_CXX_STANDARD 23) + +if (NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif () +if (NOT DEFINED CMAKE_LIBRARY_OUTPUT_DIRECTORY) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +endif () +if (NOT DEFINED CMAKE_ARCHIVE_OUTPUT_DIRECTORY) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +endif () +if (NOT DEFINED CMAKE_CXX_STANDARD) + set(CMAKE_CXX_STANDARD 23) +endif () + #TEST TEXT FOR WORKFLOW TEST -if (NOT TARGET imgui-extension) +if (NOT TARGET HBUI) message(STATUS "imgui-extension not included, including it now") - set(IMGUI_EXAMPLES OFF CACHE BOOL "" FORCE) - set(IMGUI_DEMO OFF CACHE BOOL "" FORCE) - set(IMGUI_ENABLE_FREETYPE OFF CACHE BOOL "" FORCE) - set(IMGUI_IMPL_GLFW OFF CACHE BOOL "" FORCE) - set(IMGUI_IMPL_VULKAN OFF CACHE BOOL "" FORCE) - set(IMGUI_ENABLE_STDLIB_SUPPORT OFF CACHE BOOL "" FORCE) - set(IMGUI_EXTENSION ON CACHE BOOL "" FORCE) add_subdirectory(vendor/imgui) + add_subdirectory(vendor/imgui/HBUI) else () message(STATUS "imgui-extension already included") endif () diff --git a/PluginTemplate/PluginTemplate/src/PluginTemplate.h b/PluginTemplate/PluginTemplate/src/PluginTemplate.h index 1bd8385..895cfd1 100644 --- a/PluginTemplate/PluginTemplate/src/PluginTemplate.h +++ b/PluginTemplate/PluginTemplate/src/PluginTemplate.h @@ -8,22 +8,18 @@ #include "IPlugin.h" class PluginTemplate : public HummingBird::Plugins::IPlugin { -public: -public: - PluginTemplate(HummingBirdCore::UI::WindowManager *windowManagerPtr, ImGuiContext *imGuiContext, - ImGuiMemAllocFunc allocFunc, ImGuiMemFreeFunc freeFunc, void *userData) : IPlugin(windowManagerPtr, imGuiContext, allocFunc, freeFunc, userData) { - } - void initialize() override; - void update() override; - void cleanup() override; - -private: - char* inputTest = "test"; - + public: + public: + PluginTemplate(HummingBirdCore::UI::WindowManager *windowManagerPtr, ImGuiContext *imGuiContext, + ImGuiMemAllocFunc allocFunc, ImGuiMemFreeFunc freeFunc, void *userData) : IPlugin(windowManagerPtr, imGuiContext, allocFunc, freeFunc, userData) { + } + void initialize() override; + void update() override; + void cleanup() override; }; extern "C" HummingBird::Plugins::IPlugin *create_plugin( - HummingBirdCore::UI::WindowManager *windowManagerPtr, ImGuiContext *imGuiContext, - ImGuiMemAllocFunc allocFunc, ImGuiMemFreeFunc freeFunc, void *userData) { - return new PluginTemplate(windowManagerPtr, imGuiContext, allocFunc, freeFunc, userData); + HummingBirdCore::UI::WindowManager *windowManagerPtr, ImGuiContext *imGuiContext, + ImGuiMemAllocFunc allocFunc, ImGuiMemFreeFunc freeFunc, void *userData) { + return new PluginTemplate(windowManagerPtr, imGuiContext, allocFunc, freeFunc, userData); } \ No newline at end of file diff --git a/PluginTemplate/PluginTemplate/src/PluginTemplateWindow.h b/PluginTemplate/PluginTemplate/src/PluginTemplateWindow.h index 2abc1ad..641a81c 100644 --- a/PluginTemplate/PluginTemplate/src/PluginTemplateWindow.h +++ b/PluginTemplate/PluginTemplate/src/PluginTemplateWindow.h @@ -14,14 +14,16 @@ class PluginTemplateWindow : public HummingBirdCore::UIWindow { } void render() override { - ImGui::Text("This is the plugin exsmple window"); - //todo: add stdlib -// ImGui::InputText("Plugin Name", &inputTest) - ImGui::InputText("Plugin Name", inputTest, IM_ARRAYSIZE(inputTest)); - ImGui::Button("test button"); + ImGui::Text("This is the plugin example window"); + + ImGui::InputText("Plugin Name", inputTest, IM_ARRAYSIZE(inputTest)); + ImGui::ColorPicker4("Color Picker", &clear_color.x); + + ImGui::Button("test button1"); + ImGui::Button("test button3"); } private: - char inputTest[128] = "Hello, world!"; + char inputTest[128] = "Hello, world!"; + ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f); }; - diff --git a/PluginTemplate/template.cmake b/PluginTemplate/template.cmake index b8a2601..23fd2ed 100644 --- a/PluginTemplate/template.cmake +++ b/PluginTemplate/template.cmake @@ -5,10 +5,10 @@ add_library(${PLUGIN_NAME} SHARED ) -if(TARGET imgui-extension) - target_link_libraries(${PLUGIN_NAME} PUBLIC imgui-extension) +if(TARGET HBUI) + target_link_libraries(${PLUGIN_NAME} PUBLIC HBUI) else() - message(FATAL_ERROR "imgui-extension not found") + message(FATAL_ERROR "HBUI not found") endif() target_include_directories(${PLUGIN_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)