Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
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
15
namespace
Grindstone::Plugins {
16
class
Interface
;
17
18
class
EditorPluginManager
:
public
IPluginManager
{
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
}
Grindstone::Plugins::EditorPluginManager
Definition
EditorPluginManager.hpp:18
Grindstone::Plugins::IPluginManager
Definition
IPluginManager.hpp:9
Grindstone::Plugins::Interface
Definition
Interface.hpp:48
sources
code
Editor
PluginSystem
EditorPluginManager.hpp
Generated by
1.17.0