AireEngine
A 3D Open-World Game Engine
Loading...
Searching...
No Matches
matManager.h
1#pragma once
2#ifndef _meshManager_H_
3
4#include<unordered_map>
5#include<map>
6#include"texManager.h"
7#include"material.h"
8
9namespace Aire
10{
11 using MatNameHash = std::unordered_map<std::string, MaterialPtr>;
12 using MatHash = std::map<MatHandle, MaterialPtr>;
13
16 private:
17 MatHandle matHandle;
18 MatHash matHash;
19 MatNameHash matNameHash;
20
21 TextureManager& texManager = TextureManager::get_instance();
22
24
25 public:
26 //singleton pattern
27 MaterialManager(const MaterialManager&) = delete;
28 MaterialManager& operator=(const MaterialManager&) = delete;
29 static MaterialManager& get_instance() {
30 static MaterialManager instance;
31 return instance;
32 }
33
35
36 //NOTE: DO NOT call delete on returned pointer. The texture will be automatically deleted when the loader goes out of scope.
37
42 MatHandle createMaterial();
43
53 MatHandle createMaterial(std::string& diffusePath, std::string& specularPath, std::string& normalPath, std::string& heightPath, bool isflipped);
54
60 MatHandle createMaterial(std::string Name);
61
65 MaterialPtr getMaterialPtr(MatHandle&);
66
70 MaterialPtr getMaterialPtrByName(std::string& name);
71
74 void setMatererialInGPU(MaterialPtr&);
75
78 void freeMaterialInGPU(MaterialPtr&);
79
82 void freeMaterialInCPU(MaterialPtr&);
83
84 //additional attribute maybe necesseary to add.
85 };
86
87 inline MaterialManager::MaterialManager()
88 {
89 matHandle = 0;
90 }
91 inline MaterialManager::~MaterialManager()
92 {
93 if (!matHash.empty())
94 {
95
96 matHash.erase(matHash.begin(), matHash.end());
97 }
98 if (!matNameHash.empty())
99 {
100 matNameHash.erase(matNameHash.begin(), matNameHash.end());
101 }
102 }
103
104}
105
106#endif // !_meshManager_H_
Material manager. Handles material creation, storage, and deletion.
Definition matManager.h:15
void freeMaterialInGPU(MaterialPtr &)
Definition matManager.cpp:167
MaterialPtr getMaterialPtrByName(std::string &name)
Definition matManager.cpp:98
MaterialPtr getMaterialPtr(MatHandle &)
Definition matManager.cpp:90
void freeMaterialInCPU(MaterialPtr &)
Definition matManager.cpp:188
void setMatererialInGPU(MaterialPtr &)
Definition matManager.cpp:106
MatHandle createMaterial()
Definition matManager.cpp:54
Texture manager. Handles texture creation, storage, and deletion.
Definition texManager.h:20