diff --git a/flake.nix b/flake.nix index 30454cb..2b00270 100755 --- a/flake.nix +++ b/flake.nix @@ -60,6 +60,49 @@ }; + ImguiModule = pkgs.stdenvNoCC.mkDerivation { + + name = "ImguiModule"; + + src = ./.; + + imgui = inputs.imgui; + + nativeBuildInputs = with pkgs; [ + clang + ]; + + buildInputs = with pkgs; [ + glfw + glew + ]; + + buildPhase = '' + clang++ \ + modules/examples/GuiModules/TestImgui/src/*.cpp \ + modules/WindowModule/src/*.cpp \ + $imgui/backends/imgui_impl_glfw.cpp \ + $imgui/backends/imgui_impl_opengl3.cpp \ + $imgui/*.cpp \ + -DRENDERER_OPENGL \ + -DWINDOW_GLFW \ + -DGUIMODULE \ + -DIMGUIMODULE_DYNAMIC \ + -fpic -shared \ + -I src -I include -I $imgui -I . \ + -lGL -lglfw -lGLEW \ + -Wall \ + -o $name + ''; + + installPhase = '' + mkdir -p $out/bin + cp $name $out/bin + ''; + + }; + + MainGUI = pkgs.stdenvNoCC.mkDerivation { name = "MainGUI"; diff --git a/include/utils/Module/Module.h b/include/utils/Module/Module.h index 9ee9919..0561efa 100644 --- a/include/utils/Module/Module.h +++ b/include/utils/Module/Module.h @@ -37,7 +37,8 @@ namespace Archimedes { void* handle; std::unordered_map> deps; - std::unordered_map depsInstances; + std::unordered_map> exts; + std::unordered_map moduleInstances; //std::unordered_map data; }; diff --git a/modules/ImguiModule/src/ImguiModule.cpp b/modules/ImguiModule/src/ImguiModule.cpp index 50e123a..137a342 100644 --- a/modules/ImguiModule/src/ImguiModule.cpp +++ b/modules/ImguiModule/src/ImguiModule.cpp @@ -19,7 +19,7 @@ ImguiModule::~ImguiModule() { } void ImguiModule::onLoad() { - WindowModule* wm = (WindowModule*) depsInstances["WindowModule"]; + WindowModule* wm = (WindowModule*) moduleInstances["WindowModule"]; if(!wm) { std::cout << "No WindowModule for ImguiModule!\n"; diff --git a/modules/ImguiModule/src/ImguiModule.h b/modules/ImguiModule/src/ImguiModule.h index 7619985..d336b45 100644 --- a/modules/ImguiModule/src/ImguiModule.h +++ b/modules/ImguiModule/src/ImguiModule.h @@ -25,7 +25,7 @@ class ImguiModule : public Archimedes::GuiModule { }; -#ifdef TESTIMGUI_DYNAMIC +#ifdef IMGUIMODULE_DYNAMIC #define MODULE_TYPE ImguiModule #include "endModule.h" #endif diff --git a/src/example_apps/MinimalApp/MinimalApp.cpp b/src/example_apps/MinimalApp/MinimalApp.cpp index 10d49ff..e929822 100644 --- a/src/example_apps/MinimalApp/MinimalApp.cpp +++ b/src/example_apps/MinimalApp/MinimalApp.cpp @@ -20,9 +20,9 @@ void MinimalApp::run() { for(auto m : toOpen) { if(std::holds_alternative(m.second)) { - load(std::get(m.second)); + load(std::get(m.second))->onLoad(); } else { - load(std::get(m.second)); + load(std::get(m.second))->onLoad(); } } toOpen.clear();