Raftel Engine
 
Loading...
Searching...
No Matches
systems.hpp
Go to the documentation of this file.
1
18
19#ifndef __SYSTEMS_HPP__
20#define __SYSTEMS_HPP__
21
22#pragma once
23
24
25namespace Raftel {
26 class Camera;
27 class ShaderProgram;
28 class EntityManager;
29 class Texture;
30 class Mesh;
45 {
46 public:
53 static void Initialize();
54
69 static void UpdateRenderSystem(EntityManager& em, Camera& cam, glm::ivec2 screen, bool shadow = false);
70
79 static void SetSkyboxTexture(std::shared_ptr<Raftel::Texture> cubemapTexture);
80
87 static void Shutdown();
88
89 private:
100 static void DrawDeferred(EntityManager& em, ShaderProgram& shader);
101
112 static void UpdateDeferredRenderSystem(EntityManager& em, Camera& cam, ShaderProgram& shader);
113
122 static void UpdateCoreSystems(EntityManager& em);
123
133 static void UpdateCameraSystem(Camera& cam, ShaderProgram& shader);
134
145 static void RenderWithShadows(EntityManager& em, ShaderProgram& lit_shader, Camera& cam);
146
155 static void UpdateTransformSystem(EntityManager& em);
156
167 static void UpdateLightSystem(EntityManager& em, ShaderProgram& lit_shader, Camera& cam);
168
179 static void UpdateLightShadowSystem(EntityManager& em, ShaderProgram& lit_shader, Camera& cam);
180
189 static void UpdateScriptingSystem(EntityManager& em);
190
199 static void RenderSceneFromLight(EntityManager& em);
200
210 static void RenderSkybox(Camera& cam);
211
212 static std::shared_ptr<Texture> skyboxTexture;
213
214 static Raftel::ShaderProgram CoreForwardShader;
215
216 };
217} // namespace Raftel
218
219#endif // !__SYSTEMS_HPP__
Camera class for handling movement and view transformations.
Definition camera.hpp:27
Manages entities in the ECS (Entity Component System).
Definition ecs.hpp:223
Represents a 3D mesh, including vertex data, indices, and materials.
Definition mesh.hpp:89
Handles the updating and rendering of entities, camera, and shaders in a graphical environment.
Definition systems.hpp:45
static void Shutdown()
Releases all resources related to the skybox.
static void Initialize()
Initializes the render system.
static void UpdateRenderSystem(EntityManager &em, Camera &cam, glm::ivec2 screen, bool shadow=false)
Updates and renders the entire scene based on the current entity manager, camera, and shaders.
static void SetSkyboxTexture(std::shared_ptr< Raftel::Texture > cubemapTexture)
Sets the skybox texture.
A class to represent an OpenGL shader program, combining vertex and fragment shaders.
Definition shader.hpp:119
Represents an OpenGL texture object.
Definition texture.hpp:88