diff --git a/mapbuilder-gui.vcxproj b/mapbuilder-gui.vcxproj
index 75f5bac..6165714 100644
--- a/mapbuilder-gui.vcxproj
+++ b/mapbuilder-gui.vcxproj
@@ -111,12 +111,15 @@ xcopy /y /d /s "res" "$(OutDir)res\"
+
+
+
diff --git a/mapbuilder-gui.vcxproj.filters b/mapbuilder-gui.vcxproj.filters
index 3f6d318..b23d25c 100644
--- a/mapbuilder-gui.vcxproj.filters
+++ b/mapbuilder-gui.vcxproj.filters
@@ -45,6 +45,9 @@
Source Files
+
+ Source Files
+
@@ -59,5 +62,11 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+
\ No newline at end of file
diff --git a/src/app/ModuleInfo.h b/src/app/ModuleInfo.h
new file mode 100644
index 0000000..8fbf5c2
--- /dev/null
+++ b/src/app/ModuleInfo.h
@@ -0,0 +1,12 @@
+#pragma once
+#include
+#include
+
+#include
+
+struct ModuleInfo
+{
+ std::string name;
+ mbc::PipelineStage stage;
+ std::function constructor;
+};
diff --git a/src/app/ModuleProvider.cpp b/src/app/ModuleProvider.cpp
new file mode 100644
index 0000000..ab05ff3
--- /dev/null
+++ b/src/app/ModuleProvider.cpp
@@ -0,0 +1,35 @@
+#include "ModuleProvider.h"
+
+ModuleProvider::ModuleProvider()
+{
+ loadCoreModules();
+ loadAddonModules();
+}
+
+
+std::vector ModuleProvider::getModules()
+{
+ return _registeredModules;
+}
+
+
+ModuleInfo ModuleProvider::getModuleInfo(const std::string& moduleName)
+{
+ for (auto mod : _registeredModules)
+ {
+ if (mod.name == moduleName)
+ return mod;
+ }
+}
+
+
+void ModuleProvider::loadCoreModules()
+{
+ // SRUB
+}
+
+
+void ModuleProvider::loadAddonModules()
+{
+ // STUB
+}
diff --git a/src/app/ModuleProvider.h b/src/app/ModuleProvider.h
new file mode 100644
index 0000000..052ed8b
--- /dev/null
+++ b/src/app/ModuleProvider.h
@@ -0,0 +1,24 @@
+#pragma once
+#include
+
+#include
+
+#include "app\ModuleInfo.h"
+
+class ModuleProvider
+{
+public:
+ ModuleProvider();
+
+ std::vector getModules();
+ ModuleInfo getModuleInfo(const std::string&);
+
+private:
+ std::vector _registeredModules;
+
+ void loadCoreModules();
+
+ // To be implemented
+ void loadAddonModules();
+
+};
\ No newline at end of file