NcEngine
Module.h
Go to the documentation of this file.
1
5#pragma once
6
8
9#include <vector>
10
11namespace nc
12{
13class ModuleRegistry;
14class Registry;
15class Scene;
16
18class Module
19{
20 public:
28 Module(size_t id = 0) noexcept
29 : m_id{id} {}
30
31 virtual ~Module() = default;
32
34 auto Id() const noexcept { return m_id; }
35
38
40 virtual void OnBeforeSceneLoad(const Scene&) {}
41
43 virtual void OnBeforeSceneFragmentLoad() {}
44
46 virtual void OnAfterSceneFragmentLoad() {}
47
50 virtual void Clear() noexcept {}
51
52 private:
53 size_t m_id;
54
55 friend class ModuleRegistry;
56
57 void SetId(size_t id) noexcept { m_id = id; }
58};
59} // namespace nc
Modules are extensions that provide functionality to the engine.
Definition: Module.h:19
virtual void OnBeforeSceneFragmentLoad()
Called on registered modules immediately before loading a SceneFragment file.
Definition: Module.h:43
virtual void OnBeforeSceneLoad(const Scene &)
Called on registered modules prior to loading a new scene.
Definition: Module.h:40
Module(size_t id=0) noexcept
Constructor for the Module interface.
Definition: Module.h:28
virtual void Clear() noexcept
Called on registered modules prior to clearing the Registry. This includes Scene::Unload() and NcEngi...
Definition: Module.h:50
auto Id() const noexcept
Get the module's unique id.
Definition: Module.h:34
virtual void OnAfterSceneFragmentLoad()
Called on registered modules immediately after loading a SceneFragment file.
Definition: Module.h:46
virtual void OnBuildTaskGraph(task::UpdateTasks &, task::RenderTasks &)
Called on registered modules when the task graphs are constructed.
Definition: Module.h:37
Definition: ModuleRegistry.h:19
Definition: Scene.h:20
Task graph interface for building a TaskGraphContext with Module tasks.
Definition: TaskGraph.h:36