Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
EditorPluginManager.hpp
1#pragma once
2
3#include <set>
4#include <map>
5#include <string>
6#include <vector>
7
8#include <Common/Utilities/ModuleLoading.hpp>
9#include <Editor/PluginSystem/PluginMetaData.hpp>
10#include <Editor/PluginSystem/PluginManifestData.hpp>
11#include <EngineCore/PluginSystem/IPluginManager.hpp>
12
13#include "EditorPluginInterface.hpp"
14
15namespace Grindstone::Plugins {
16 class Interface;
17
19 public:
20 virtual ~EditorPluginManager();
21
22 virtual bool PreprocessPlugins() override;
23 virtual void LoadPluginsByStage(std::string_view stageName) override;
24 virtual void UnloadPluginsByStage(std::string_view stageName) override;
25 virtual std::filesystem::path GetLibraryPath(std::string_view pluginName, std::string_view libraryName) override;
26 virtual void QueueInstall(std::string pluginName);
27 virtual void QueueUninstall(std::string pluginName);
28 virtual void ProcessQueuedPluginInstallsAndUninstalls();
29
30 protected:
31 bool LoadModule(const std::filesystem::path& path);
32 void UnloadModule(const std::filesystem::path& path);
33 void ResolvePlugins(std::vector<Grindstone::Plugins::ManifestData>& manifestResults);
34
35 std::map<std::filesystem::path, Utilities::Modules::Handle> pluginModules;
36 std::set<std::string> queuedInstalls{};
37 std::set<std::string> queuedUninstalls{};
38 std::vector<Grindstone::Plugins::MetaData> resolvedPluginManifest{};
39 };
40}
Definition EditorPluginManager.hpp:18
Definition IPluginManager.hpp:9
Definition Interface.hpp:47