OGL Engine 1.2.0-dev
|
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::Window * | GetWindow () |
Renvoie le wrapper du contexte openGL. | |
Render::RenderTarget * | GetRenderTarget () |
Renvoie un pointeur vers la renderTarget utilisée pour le screenRenderer. | |
Scene::Scene * | GetCurrentScene () |
Renvoie un pointeur vers la scène actuellement chargée. | |
Scene::ICamera * | GetCurrentCamera () |
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. |
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.
Engine::App::App | ( | int | width = 800, |
int | height = 600, | ||
AppSettings | settings = {"App"} ) |
Créé une nouvelle application.
width | Largeur logique interne de l'application |
height | Hauteur logique interne de l'application |
settings | Un objet AppSettings pour configurer l'appli |
Scene::ICamera * Engine::App::GetCurrentCamera | ( | ) |
Renvoie un pointeur vers la caméra de la scène actuelle.
Scene::Scene * Engine::App::GetCurrentScene | ( | ) |
Renvoie un pointeur vers la scène actuellement chargée.
float Engine::App::GetFPS | ( | ) |
Renvoie le nombre d'images comptées depuis la dernière seconde écoulée.
int Engine::App::GetHeight | ( | ) |
Renvoie la hauteur interne de l'application.
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.
glm::vec2 Engine::App::GetProjectedMousePosition | ( | ) |
Permet d'obtenir la position de la osuris projetée dans la scène actuelle.
Render::RenderTarget * Engine::App::GetRenderTarget | ( | ) |
Renvoie un pointeur vers la renderTarget utilisée pour le screenRenderer.
|
inline |
Renvoie le système de type T.
T |
int Engine::App::GetWidth | ( | ) |
Renvoie la largeur interne de l'application.
Core::Window * Engine::App::GetWindow | ( | ) |
Renvoie le wrapper du contexte openGL.
|
inline |
vérifie si le système de type T est enregistré
T |
void Engine::App::LoadScene | ( | const std::string & | name | ) |
Charge la scène demandée.
name | Le nom de la scène à charger |
void Engine::App::Quit | ( | ) |
Demande la fermeture du contexte opengl (et par exetnsion met un terme à la boucle Run)
|
inline |
Enregistre une scène de type T sous un nom donné
T | Le type de la scène enregistré |
name | Le nom donné à la scène dans le registre applicatif |
|
inline |
Enregistre un système de type T dans l'application.
T | Le type du système à enregistrer |
Args | Les types d'arguments pour créer le système |
args | Les arguments pour créer le système |
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
void Engine::App::SetSize | ( | int | width, |
int | height, | ||
bool | adjustCamera = true ) |
Définit la taille logique interne de l'application.
width | Nouvelle largeur |
height | Nouvelle Hauteur |
adjustCamera | Si true => La taille de la caméra courante est mise à jour aussi pour s'adapter à la nouvelle appli. |
|
inline |
Supprime le système de type T de l'application.
T | Le type de système à supprimer (désactive le système jusqu'à ce qu'il soit à nouveau enregistré) |
struct Engine::App::AppSettings Engine::App::settings |
Utils::StateStore Engine::App::store |
Store global de l'application.