14 #include <ThirdParty/cereal/include/cereal/cereal.hpp> 37 template <
class Archive>
49 static eastl::weak_ptr<Engine> InitializeEngine(
bool isPlaying =
true) noexcept;
56 static eastl::weak_ptr<Engine> GetEngine() noexcept;
63 eastl::weak_ptr<Window> GetWindow() noexcept;
65 template<
typename WindowType>
71 eastl::weak_ptr<WindowType> GetWindow();
80 eastl::weak_ptr<Window> CreateAndReturnWindow(
int width,
int height,
const char* title) noexcept;
87 eastl::weak_ptr<InputManager> GetInputManager() noexcept;
94 eastl::weak_ptr<Renderer> GetRenderer() noexcept;
96 template<
typename RendererType>
103 eastl::weak_ptr<RendererType> GetRenderer();
110 eastl::weak_ptr<Camera> GetCamera() noexcept;
117 eastl::weak_ptr<Time>
GetTime() noexcept;
124 eastl::weak_ptr<EntitySystem> GetEntitySystem()
const noexcept;
131 eastl::weak_ptr<ResourceManager> GetResourceManager()
const noexcept;
137 eastl::weak_ptr<CollisionSystem> GetCollisionSystem()
const noexcept;
143 eastl::weak_ptr<Random> GetRandom();
149 void Update() noexcept;
155 void Destroy() noexcept;
161 void SetIsPlaying(
bool isPlaying);
169 explicit Engine() =
default;
175 void SaveEngineSettings();
179 static eastl::shared_ptr<Engine> instance;
180 eastl::shared_ptr<Window> window;
181 eastl::shared_ptr<InputManager> inputManager;
182 eastl::shared_ptr<Renderer> renderer;
183 eastl::shared_ptr<Camera> camera;
184 eastl::shared_ptr<Time> time;
185 eastl::shared_ptr<EntitySystem> entitySystem;
186 eastl::shared_ptr<ResourceManager> resourceManager;
187 eastl::shared_ptr<CollisionSystem> collisionSystem;
188 eastl::shared_ptr<Random> random;
192 template <
class Archive>
200 template <
typename WindowType>
203 if (instance->window ==
nullptr)
206 if (dynamic_cast<WindowType*>(instance->window.get()))
207 return eastl::static_pointer_cast<WindowType>(instance->window);
208 return eastl::weak_ptr<WindowType>();
211 template <
typename RendererType>
214 if (instance->renderer ==
nullptr)
217 if (dynamic_cast<RendererType*>(instance->renderer.get()))
218 return eastl::static_pointer_cast<RendererType>(instance->renderer);
219 return eastl::shared_ptr<RendererType>();
eastl::weak_ptr< Renderer > GetRenderer() noexcept
This method allows you to get a weak pointer of the renderer. If it hasn't been defined yet...
std::string windowTitle
Window Title defines the title of the engine window. Default is "".
int windowHeight
WindowHeight defines the height of the engine window. Default is 480.
IMGUI_API float GetTime()
void serialize(Archive &ar)
eastl::weak_ptr< Window > GetWindow() noexcept
This method allows you to get a weak pointer of the Window. This method will automatically create the...
int windowWidth
WindowWidth defines the width of the engine window. Default is 640.