OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
Engine::App Class Reference

Point d'entrée d'une application. Gère les différents systèmes associés au moteur de jeu. More...

#include <app.hpp>

Classes

struct  AppSettings
 Structure de données qui contient des paramètres d'application. More...

Public Member Functions

 App (int width=800, int height=600, AppSettings settings={"App"})
 Créé une nouvelle application.
void Run ()
 Lance la boucle principale de l'application.
void Quit ()
 Demande la fermeture du contexte opengl (et par exetnsion met un terme à la boucle Run)
Core::WindowGetWindow ()
 Renvoie le wrapper du contexte openGL.
Render::RenderTargetGetRenderTarget ()
 Renvoie un pointeur vers la renderTarget utilisée pour le screenRenderer.
Scene::SceneGetCurrentScene ()
 Renvoie un pointeur vers la scène actuellement chargée.
Scene::ICameraGetCurrentCamera ()
 Renvoie un pointeur vers la caméra de la scène actuelle.
glm::vec2 GetMousePosition ()
 Permet d'obtenir la position de la souris dans le cadre de l'application en prenant en compte les différences de taille entre la fenêtre et l'app.
glm::vec2 GetProjectedMousePosition ()
 Permet d'obtenir la position de la osuris projetée dans la scène actuelle.
int GetWidth ()
 Renvoie la largeur interne de l'application.
int GetHeight ()
 Renvoie la hauteur interne de l'application.
void SetSize (int width, int height, bool adjustCamera=true)
 Définit la taille logique interne de l'application.
float GetFPS ()
 Renvoie le nombre d'images comptées depuis la dernière seconde écoulée.
void LoadScene (const std::string &name)
 Charge la scène demandée.
template<typename T>
void RegisterScene (const std::string &name)
 Enregistre une scène de type T sous un nom donné
template<typename T, typename... Args>
T & RegisterSystem (Args &&... args)
 Enregistre un système de type T dans l'application.
template<typename T>
bool HasSystem ()
 vérifie si le système de type T est enregistré
template<typename T>
T & GetSystem ()
 Renvoie le système de type T.
template<typename T>
void UnregisterSystem ()
 Supprime le système de type T de l'application.

Public Attributes

struct Engine::App::AppSettings settings
Utils::StateStore store
 Store global de l'application.

Detailed Description

Point d'entrée d'une application. Gère les différents systèmes associés au moteur de jeu.

Dans le système ECS, les entités sont mises à jour et "utilisées" par les systèmes en fonction de la signature des composants possédés. Donc l'application ne possède pas directement des entités ou des composants, elle se contente de mettre à jour les systèmes Et ce sont les systèmes qui font le taf sur les entités à chaque loop de cette façon.

App ne gère "que" le cycle de vie des entités/scènes/systèmes dans le moteur de jeu. Le reste dépend des systèmes chargés et des scènes.

Constructor & Destructor Documentation

◆ App()

Engine::App::App ( int width = 800,
int height = 600,
AppSettings settings = {"App"} )

Créé une nouvelle application.

Parameters
widthLargeur logique interne de l'application
heightHauteur logique interne de l'application
settingsUn objet AppSettings pour configurer l'appli

Member Function Documentation

◆ GetCurrentCamera()

Scene::ICamera * Engine::App::GetCurrentCamera ( )

Renvoie un pointeur vers la caméra de la scène actuelle.

Returns
Scene::ICamera*

◆ GetCurrentScene()

Scene::Scene * Engine::App::GetCurrentScene ( )

Renvoie un pointeur vers la scène actuellement chargée.

Returns
Scene::Scene*

◆ GetFPS()

float Engine::App::GetFPS ( )

Renvoie le nombre d'images comptées depuis la dernière seconde écoulée.

◆ GetHeight()

int Engine::App::GetHeight ( )

Renvoie la hauteur interne de l'application.

Returns
int

◆ GetMousePosition()

glm::vec2 Engine::App::GetMousePosition ( )

Permet d'obtenir la position de la souris dans le cadre de l'application en prenant en compte les différences de taille entre la fenêtre et l'app.

Returns
glm::vec2 La position {x, y} de la souris dans l'application

◆ GetProjectedMousePosition()

glm::vec2 Engine::App::GetProjectedMousePosition ( )

Permet d'obtenir la position de la osuris projetée dans la scène actuelle.

Returns
glm::vec2 La position {x, y} de la souris dans la scène actuelle

◆ GetRenderTarget()

Render::RenderTarget * Engine::App::GetRenderTarget ( )

Renvoie un pointeur vers la renderTarget utilisée pour le screenRenderer.

Returns
Render::RenderTarget*

◆ GetSystem()

template<typename T>
T & Engine::App::GetSystem ( )
inline

Renvoie le système de type T.

Template Parameters
T
Returns
T& Une référence vers le système demandé

◆ GetWidth()

int Engine::App::GetWidth ( )

Renvoie la largeur interne de l'application.

Returns
int

◆ GetWindow()

Core::Window * Engine::App::GetWindow ( )

Renvoie le wrapper du contexte openGL.

Returns
Core::Window*

◆ HasSystem()

template<typename T>
bool Engine::App::HasSystem ( )
inline

vérifie si le système de type T est enregistré

Template Parameters
T
Returns
bool true si le système existe, false sinon

◆ LoadScene()

void Engine::App::LoadScene ( const std::string & name)

Charge la scène demandée.

Parameters
nameLe nom de la scène à charger

◆ Quit()

void Engine::App::Quit ( )

Demande la fermeture du contexte opengl (et par exetnsion met un terme à la boucle Run)

◆ RegisterScene()

template<typename T>
void Engine::App::RegisterScene ( const std::string & name)
inline

Enregistre une scène de type T sous un nom donné

Template Parameters
TLe type de la scène enregistré
Parameters
nameLe nom donné à la scène dans le registre applicatif

◆ RegisterSystem()

template<typename T, typename... Args>
T & Engine::App::RegisterSystem ( Args &&... args)
inline

Enregistre un système de type T dans l'application.

Template Parameters
TLe type du système à enregistrer
ArgsLes types d'arguments pour créer le système
Parameters
argsLes arguments pour créer le système
Returns
T& Une référence vers le système nouvellement enregistré et créé

◆ Run()

void Engine::App::Run ( )

Lance la boucle principale de l'application.

Run() contient une boucle semi-infinie qui ne s'arrête que lorsque l'on met un terme à l'éxecution du contexte OpenGL. Chaque itération appelle les fonctions du cycle de vie de l'app.

Dans l'ordre : OnInit (si !mInitialized) > OnFixedUpdate > OnUpdate > OnRender > OnUIRender > OnLateUpdate

◆ SetSize()

void Engine::App::SetSize ( int width,
int height,
bool adjustCamera = true )

Définit la taille logique interne de l'application.

Parameters
widthNouvelle largeur
heightNouvelle Hauteur
adjustCameraSi true => La taille de la caméra courante est mise à jour aussi pour s'adapter à la nouvelle appli.

◆ UnregisterSystem()

template<typename T>
void Engine::App::UnregisterSystem ( )
inline

Supprime le système de type T de l'application.

Template Parameters
TLe type de système à supprimer (désactive le système jusqu'à ce qu'il soit à nouveau enregistré)

Member Data Documentation

◆ settings

struct Engine::App::AppSettings Engine::App::settings

◆ store

Utils::StateStore Engine::App::store

Store global de l'application.


The documentation for this class was generated from the following files: