OGL Engine 1.2.0-dev
Loading...
Searching...
No Matches
resourcemanager.hpp
Go to the documentation of this file.
1
5#pragma once
6
7#include <iostream>
8#include <unordered_map>
9
13#include <engine/ui/font.hpp>
16
17namespace Engine::Utils {
22 class ResourceManager {
23 private:
24 static std::unordered_map<std::string, Core::PakFile*> mPaks;
25
26 static std::unordered_map<std::string, Graphics::Texture*> mTextures;
27 static std::unordered_map<std::string, Graphics::Shader*> mShaders;
28 static std::unordered_map<std::string, UI::Font*> mFonts;
29 static std::unordered_map<std::string, Audio::Sound*> mSounds;
30
31 ResourceManager() = default;
32 ~ResourceManager() = default;
33
34 public:
40 static void Clear();
41
49 static Core::PakFile& LoadPak(const std::string& pakPath, const std::string& name = "");
55 static void FreePak(const std::string& pakName);
56
64 static Core::Buffer GetBinaryFileFromPak(const std::string& pakName, const std::string& fileName);
72 static std::string GetTextFileFromPak(const std::string& pakName, const std::string& fileName);
73
81 static Graphics::Texture* GetTexture(const std::string& pakAndFileName);
82
89 static Graphics::Shader* GetShader(const std::string& pakAndFileName);
97 static UI::Font* GetFont(const std::string& pakAndFileName, int fontSize = 48);
105 static Audio::Sound* GetSound(const std::string& pakAndFileName, Audio::SoundType soundType = Audio::SoundType::SFX);
106 };
107}
Wrapper statique autour de l'api OpenAL pour charger, et lire des sons.
Classe qui charge un fichier PAK en mémoire. On peut ensuite accéder à ses contenus au format Binaire...
Definition pakfile.hpp:28
Classe Shader qui porte un identifiant OpenGL pointant vers le shader compilé
Definition shader.hpp:16
Transporte un ID de texture OpenGL.
Definition texture.hpp:18
Charge une police de caractère en utilisant la lib FreeType, et prépare les caractères.
Definition font.hpp:36
static std::string GetTextFileFromPak(const std::string &pakName, const std::string &fileName)
Renvoie le fichier binaire contenu dans le fichier .pak.
Definition resourcemanager.cpp:54
static Graphics::Shader * GetShader(const std::string &pakAndFileName)
Renvoie un shader précompilé
Definition resourcemanager.cpp:84
static Core::PakFile & LoadPak(const std::string &pakPath, const std::string &name="")
Charge un fichier .pak en mémoire.
Definition resourcemanager.cpp:30
static void FreePak(const std::string &pakName)
Libère le fichier pak chargé à l'endroit donné
Definition resourcemanager.cpp:41
static UI::Font * GetFont(const std::string &pakAndFileName, int fontSize=48)
Renvoie une font préchargée de taille donnée.
Definition resourcemanager.cpp:110
static Audio::Sound * GetSound(const std::string &pakAndFileName, Audio::SoundType soundType=Audio::SoundType::SFX)
Renvoie un fichier audio préchargé
Definition resourcemanager.cpp:132
static Core::Buffer GetBinaryFileFromPak(const std::string &pakName, const std::string &fileName)
Renvoie le fichier binaire contenu dans le fichier .pak.
Definition resourcemanager.cpp:46
static Graphics::Texture * GetTexture(const std::string &pakAndFileName)
Renvoie la texture demandée, et chargée depuis le fichier pak donné
Definition resourcemanager.cpp:62
static void Clear()
Nettoie les registres du gestionnaire de ressources.
Definition resourcemanager.cpp:15
SoundType
SoundType est une énumération qui liste les types de sons dispos dans le moteur.
Definition sound.hpp:23
@ SFX
SFX est le type utilisé pour les "effets" sonores, qui sont joués plusieurs fois.
Definition sound.hpp:27
std::vector< char > Buffer
Definition pakfile.hpp:15
Definition colors.cpp:3
Définit une interface pour lire le contenu des fichiers PAK. Le format PAK étant pensé spécifiquement...
Classe qui encapsule le chargement let l'usage d'un shader OpenGL.
Décrit la structure de donnée pour les sons en mémoire Les sons peuvent être chargés et lus avec l'ap...
Sound est un type de donnée qui contient ce qu'il faut pour jouer un son avec l'api OpenAl.
Definition sound.hpp:33
Définit la classe Texture utilisée dans pas mal de renderers graphiques Son principal intérêt est d...