Terminus
resourcemanager.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <map>
4 #include <string>
5 #include <memory>
6 #include <vector>
7 
8 #include "geometry.h"
9 #include "material.h"
10 #include "program.h"
11 
12 namespace terminus
13 {
14 
24 {
25 public:
29  static ResourceManager* getInstance();
30 
31 protected:
33 
34 protected:
41  static std::string entityName(const std::string path, const std::string name);
42 
48  static std::string entityName(const std::string path);
49 
50 public:
51  virtual ~ResourceManager();
52 
56  virtual void loadResources();
57 
58  virtual std::shared_ptr<std::unique_ptr<Geometry>> getGeometry(std::string name);
59  virtual std::shared_ptr<std::unique_ptr<Material>> getMaterial(std::string name);
60  virtual std::shared_ptr<std::unique_ptr<Program>> getProgram(std::string name);
61 
62 protected:
64 
74  virtual void loadObj(std::string path);
75 
87  virtual void loadObjGenerateAdd(std::vector<QVector3D> & positions,
88  std::vector<QVector3D> & texCoords,
89  std::vector<QVector3D> & normals,
90  std::vector<IndexTriple> & indexTriples,
91  std::string name);
92 
99  virtual void loadMtl(std::string path);
100 
105  virtual void loadProgram(std::string path);
106 
107  virtual void putGeometry(std::string name, Geometry * geometry);
108  virtual void putMaterial(std::string name, Material * material);
109  virtual void putProgram(std::string name, Program * program);
110 
111 protected:
112  std::map<std::string, std::shared_ptr<std::unique_ptr<Geometry>>> m_geometryStorage;
113  std::map<std::string, std::shared_ptr<std::unique_ptr<Material>>> m_materialStorage;
114  std::map<std::string, std::shared_ptr<std::unique_ptr<Program>>> m_programStorage;
115 };
116 
117 } // terminus
static ResourceManager * m_instance
Definition: resourcemanager.h:32
The Material class wraps loading uniform data used as material coefficients.
Definition: material.h:15
virtual void loadProgram(std::string path)
Vertex and fragment shader files are loaded an combined into on program instance from the Program cla...
Definition: resourcemanager.cpp:260
virtual std::shared_ptr< std::unique_ptr< Program > > getProgram(std::string name)
Definition: resourcemanager.cpp:85
The ResourceManager class loads geometry, materials and shader progams during initialization and prov...
Definition: resourcemanager.h:23
virtual void loadObj(std::string path)
The .obj file specified by "path" will be parsed and stored in the geometry container m_geometryStora...
Definition: resourcemanager.cpp:90
virtual void loadObjGenerateAdd(std::vector< QVector3D > &positions, std::vector< QVector3D > &texCoords, std::vector< QVector3D > &normals, std::vector< IndexTriple > &indexTriples, std::string name)
This method is part of the loading mechanism for .obj files.
Definition: resourcemanager.cpp:166
std::map< std::string, std::shared_ptr< std::unique_ptr< Material > > > m_materialStorage
Definition: resourcemanager.h:113
static std::string entityName(const std::string path, const std::string name)
Generates a unique resource identifier from the resource's file path and name.
Definition: resourcemanager.cpp:31
virtual void putGeometry(std::string name, Geometry *geometry)
Definition: resourcemanager.cpp:269
virtual void loadResources()
All external resources the game might use are loaded here.
Definition: resourcemanager.cpp:62
virtual void putProgram(std::string name, Program *program)
Definition: resourcemanager.cpp:295
The program class implements the basic functionality used for binding programs to openGL...
Definition: program.h:18
virtual std::shared_ptr< std::unique_ptr< Geometry > > getGeometry(std::string name)
Definition: resourcemanager.cpp:75
std::map< std::string, std::shared_ptr< std::unique_ptr< Geometry > > > m_geometryStorage
Definition: resourcemanager.h:112
virtual std::shared_ptr< std::unique_ptr< Material > > getMaterial(std::string name)
Definition: resourcemanager.cpp:80
ResourceManager()
Definition: resourcemanager.cpp:54
virtual void putMaterial(std::string name, Material *material)
Definition: resourcemanager.cpp:282
static ResourceManager * getInstance()
Returns the singelton instance of the ResourceManager class.
Definition: resourcemanager.cpp:22
virtual ~ResourceManager()
Definition: resourcemanager.cpp:58
Definition: eventhandler.cpp:18
virtual void loadMtl(std::string path)
Loads material data from .mtl files.
Definition: resourcemanager.cpp:214
The Geometry class wraps the vertices data of one drawable object.
Definition: geometry.h:31
std::map< std::string, std::shared_ptr< std::unique_ptr< Program > > > m_programStorage
Definition: resourcemanager.h:114