SpiecsEngine
 
Loading...
Searching...
No Matches
RendererManager.cpp
Go to the documentation of this file.
1/**
2* @file RendererManager.cpp.
3* @brief The RendererManager Class Implementation.
4* @author Spices.
5*/
6
7#include "Pchheader.h"
8#include "Renderer.h"
10
11namespace Spices {
12
14 scl::linked_unordered_map<std::string, std::shared_ptr<Renderer>> RendererManager::m_Identities;
15
17 {
19
20 if(!m_RendererManager)
21 {
22 m_RendererManager = std::make_unique<RendererManager>();
23 }
24
25 return *m_RendererManager;
26 }
27
28 void RendererManager::Run(TimeStep& ts, FrameInfo& frameInfo)
29 {
31
32 /**
33 * @brief Iter all renderer in order.
34 */
35 m_Identities.for_each([&](auto& k, auto& v) {
36 v->Render(ts, frameInfo);
37 return false;
38 });
39
40 /**
41 * @brief Reset all renderer.
42 */
43 m_Identities.for_each([&](auto& k, auto& v) {
44 v->ResetRendererState();
45 return false;
46 });
47
48 RENDERPASS_STATISTICS_ENDFRAME
49 }
50
52 {
54
55 /**
56 * @brief Iter all renderer in order.
57 */
58 m_Identities.for_each([](auto& k, auto& v) {
59 v->OnWindowResizeOver();
60 return false;
61 });
62 }
63
65 {
67
68 /**
69 * @brief Iter all renderer in order.
70 */
71 m_Identities.for_each([](auto& k, auto& v) {
72 v->OnSlateResize();
73 return false;
74 });
75 }
76
78 {
80
81 /**
82 * @brief Iter all renderer in order.
83 */
84 m_Identities.for_each([](auto& k, auto& v) {
85 v->OnMeshAddedWorld();
86 return false;
87 });
88 }
89
90 std::shared_ptr<Renderer> RendererManager::GetRenderer(const std::string& name)
91 {
93
94 if (m_Identities.has_key(name))
95 {
96 return *m_Identities.find_value(name);
97 }
98
99 std::stringstream ss;
100 ss << "RendererManager::GetRenderer: Not such a renderer called: " << name;
101
102 SPICES_CORE_ERROR(ss.str())
103
104 return nullptr;
105 }
106}
#define SPICES_PROFILE_ZONE
FrameInfo Class. This class defines the FrameInfo data.
Definition FrameInfo.h:32
static std::shared_ptr< Renderer > GetRenderer(const std::string &name)
static void OnSlateResize()
Event Called on Slate resize.
static std::unique_ptr< RendererManager > m_RendererManager
Static RendererManager.
static void OnWindowResizeOver()
This function is called on swapchain resized or out of data. Recreate all renderer render pass,...
static void Run(TimeStep &ts, FrameInfo &frameInfo)
All renderer Start to Render.
static RendererManager & Get()
Get Static RendererManager.
static void OnMeshAddedWorld()
Event Called on world mark querier.
static scl::linked_unordered_map< std::string, std::shared_ptr< Renderer > > m_Identities
A container contains all renderer.
RendererManager Class. This class Manages all renderer.
Renderer Class. This class defines the basic behaves of renderer. When we add an new Renderer,...
Definition Renderer.h:57
This Class handles our engine time step during frames. Global Unique.
Definition TimeStep.h:22
The container combines hashmap and list together. Used in the case that we want iter a hashmap in ord...