CSEngine
Loading...
Searching...
No Matches
EngineCoreInstance.cpp
1#include "EngineCoreInstance.h"
2#include "Base/CoreBase.h"
3#include "ResMgr.h"
4#include "GameObjectMgr.h"
5#include "OGLMgr.h"
6#include "ScriptMgr.h"
7#include "CameraMgr.h"
8#include "LightMgr.h"
9#include "Render/RenderMgr.h"
10#include "SceneMgr.h"
11#include "MemoryMgr.h"
12#include "ReflectionMgr.h"
13#include "../Sample/FirstDemoScene.h"
14#include "../Sample/WebDemoScene.h"
15#include "../Util/Loader/SCENE/SSceneLoader.h"
16#include "../Util/AssetsDef.h"
17
18#ifdef __EMSCRIPTEN__
19#include "../Sample/WebDemoScene.h"
20#endif
21
22using namespace CSE;
23constexpr short ENGINE_COUNT = 10;
24
25EngineCoreInstance::EngineCoreInstance() = default;
26
27EngineCoreInstance::~EngineCoreInstance() = default;
28
29void EngineCoreInstance::Init(unsigned int width, unsigned int height) {
30 GenerateCores();
31
32 for (const auto& core : m_cores) {
33 core->Init();
34 }
35
36 m_oglMgr->ResizeWindow(width, height);
37 static_cast<RenderMgr*>(m_renderMgr)->SetViewport();
38
39
40#ifdef __EMSCRIPTEN__
41 static_cast<SceneMgr*>(m_sceneMgr)->SetLegacyScene(new WebDemoScene());
42#else
43// static_cast<SceneMgr*>(m_sceneMgr)->SetLegacyScene(new FirstDemoScene());
44// SScene* scene = SSceneLoader::LoadScene(CSE::AssetsPath() + "Scene/jack.scene");
46// m_sceneMgr->SetScene(scene);
47#endif
48 m_isReady = true;
49}
50
51void EngineCoreInstance::Update(float elapsedTime) {
52 for (const auto& core : m_updateCores) {
53 core->Update(elapsedTime);
54 }
55}
56
57void EngineCoreInstance::LateUpdate(float elapsedTime) {
58 m_gameObjectMgr->DestroyQueuedObject();
59}
60
61void EngineCoreInstance::Render() const {
62 for (const auto& core : m_renderCores) {
63 core->Render();
64 }
65}
66
67void EngineCoreInstance::Exterminate() {
68 ExterminateWithoutReflectionDefine();
69 CSE::ReflectionMgr::DefineWrapper::ReleaseDefine();
70 CSE::LightMgr::ExterminateGlobalSettings();
71}
72
73void EngineCoreInstance::ExterminateWithoutReflectionDefine() {
74 if(m_memoryMgr != nullptr)
75 m_memoryMgr->ExterminateObjects(true);
76 for (auto core : m_cores) {
77 SAFE_DELETE(core);
78 }
79 m_cores.clear();
80}
81
82void EngineCoreInstance::GenerateCores() {
83 if(m_isGenerated) return;
84 m_isGenerated = true;
85 m_cores = std::vector<CoreBase*>();
86 m_cores.reserve(ENGINE_COUNT);
87
88 m_reflectionMgr = new ReflectionMgr();
89 m_resMgr = new ResMgr();
90 m_gameObjectMgr = new GameObjectMgr();
91 m_oglMgr = new OGLMgr();
92 m_renderMgr = new RenderMgr();
93 m_cameraMgr = new CameraMgr();
94 m_lightMgr = new LightMgr();
95 m_sceneMgr = new SceneMgr();
96 m_memoryMgr = new MemoryMgr();
97 m_scriptMgr = new ScriptMgr();
98
99 m_cores.push_back(m_reflectionMgr);
100 m_cores.push_back(m_resMgr);
101 m_cores.push_back(m_gameObjectMgr);
102// m_updateCores.push_back(m_gameObjectMgr);
103
104 m_cores.push_back(m_oglMgr);
105 m_renderCores.push_back(m_oglMgr);
106 m_cores.push_back(m_renderMgr);
107 m_renderCores.push_back(dynamic_cast<RenderCoreBase* const>(m_renderMgr));
108 m_cores.push_back(m_cameraMgr);
109 m_cores.push_back(m_lightMgr);
110
111 m_cores.push_back(m_sceneMgr);
112 m_updateCores.push_back(m_sceneMgr);
113 m_cores.push_back(m_memoryMgr);
114
115 m_cores.push_back(m_scriptMgr);
116}
117
118void EngineCoreInstance::ResizeWindow(unsigned int width, unsigned int height) {
119 m_oglMgr->ResizeWindow(width, height);
120 static_cast<RenderMgr*>(m_renderMgr)->SetViewport();
121}
122
123void EngineCoreInstance::SetDeviceBuffer(unsigned int id) {
124 static_cast<RenderMgr*>(m_renderMgr)->SetDeviceBuffer(id);
125}
Class for managing rendering operations.
Definition RenderMgr.h:24