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
27 const std::vector<std::filesystem::path>& GetPluginsFolders();
28 virtual void AddPluginsFolder(const std::filesystem::path& path);
29 virtual void QueueInstall(const std::filesystem::path& path);
30 virtual void QueueUninstall(const std::filesystem::path& path);
31 virtual void ProcessQueuedPluginInstallsAndUninstalls();
32
33 using Iterator = std::vector<Grindstone::Plugins::MetaData>::iterator;
34 using ConstIterator = std::vector<Grindstone::Plugins::MetaData>::const_iterator;
35
36 Iterator begin() noexcept;
37 ConstIterator begin() const noexcept;
38
39 Iterator end() noexcept;
40 ConstIterator end() const noexcept;
41
42 protected:
43 bool LoadModule(const std::filesystem::path& path);
44 void UnloadModule(const std::filesystem::path& path);
45 void ResolvePlugins(std::vector<Grindstone::Plugins::ManifestData>& manifestResults);
46
47 std::map<std::filesystem::path, Utilities::Modules::Handle> pluginModules;
48 std::set<std::filesystem::path> queuedInstalls{};
49 std::set<std::filesystem::path> queuedUninstalls{};
50 std::vector<Grindstone::Plugins::MetaData> resolvedPluginManifest{};
51 std::vector<std::filesystem::path> pluginsFolders{};
52 };
53}
Definition EditorPluginManager.hpp:18
Definition IPluginManager.hpp:9
Definition Interface.hpp:47