Bubba-3D  0.9.0
Awesome game engine!
ResourceManager.h
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 #ifndef BUBBA_3D_RESOURCEMANAGER_H
18 #define BUBBA_3D_RESOURCEMANAGER_H
19 
20 #include <map>
21 #include "ShaderProgram.h"
22 #include "Texture.h"
23 #include "Mesh.h"
24 #include <sstream>
25 
34 public:
35  static void loadShader(const std::string &vertexShader, const std::string &fragmentShader, std::string name);
36  static ShaderProgram* getShader(std::string name);
37 
38  static Texture* loadAndFetchTexture(const std::string &fileName);
39  static Mesh* loadAndFetchMesh (const std::string &fileName);
40 
41  template<typename Type>
42  static Type* getItemFromMap(std::map<std::string, Type> *map, std::string id) ;
43 
44 private:
45  static std::map<std::string, ShaderProgram> shaders;
46  static std::map<std::string, Texture> textures;
47  static std::map<std::string, Mesh> meshes;
48 
49  static void loadTexture(const std::string &fileName);
50  static Texture* getTexture(std::string fileName);
51 
52  static void loadMesh(const std::string &fileName);
53  static Mesh* getMesh(std::string fileName);
54 
55 };
56 
57 #endif //BUBBA_3D_RESOURCEMANAGER_H
Definition: Mesh.h:45
Class for maintaining OpenGL shader programs.
Definition: ShaderProgram.h:39
ResourceManager for all resources that can be shared.