Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
APlugin.ipp
Go to the documentation of this file.
1#include "plugin/APlugin.hpp"
2
3namespace Engine {
4template <CScheduler TScheduler, typename... Systems> decltype(auto) APlugin::RegisterSystems(Systems... systems)
5{
6 return _core.RegisterSystem<TScheduler>(systems...);
7}
8
9template <typename TResource> TResource &APlugin::RegisterResource(TResource &&resource)
10{
11 return _core.RegisterResource(std::forward<TResource>(resource));
12}
13
14template <CPlugin... TPlugins> void APlugin::RequirePlugins() { (RequirePlugin<TPlugins>(), ...); }
15
16template <CScheduler TScheduler, typename... Args> TScheduler &APlugin::RegisterScheduler(Args &&...args)
17{
18 return _core.RegisterScheduler<TScheduler>(std::forward<Args>(args)...);
19}
20
21template <CPlugin TPlugin> void APlugin::RequirePlugin()
22{
23 if (!_core.HasPlugin<TPlugin>())
24 {
25 _core.AddPlugins<TPlugin>();
26 }
27}
28} // namespace Engine
decltype(auto) RegisterSystems(Systems... systems)
Register systems to a scheduler.
Definition APlugin.ipp:4
void RequirePlugin()
Add a plugin to the core if it is not already added.
Definition APlugin.ipp:21
TScheduler & RegisterScheduler(Args &&...args)
Register a scheduler in the core.
Definition APlugin.ipp:16
Core & _core
Reference to the core, which is used to register systems and resources in the Bind method.
Definition APlugin.hpp:65
void RequirePlugins()
Add a plugin to the core.
Definition APlugin.ipp:14
TResource & RegisterResource(TResource &&resource)
Register a resource in the core.
Definition APlugin.ipp:9
Definition Core.hpp:25
Definition Core.hpp:22
Definition Core.hpp:17