AireEngine
A 3D Open-World Game Engine
Loading...
Searching...
No Matches
source
res-management
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
9
namespace
Aire
10
{
11
using
MatNameHash = std::unordered_map<std::string, MaterialPtr>;
12
using
MatHash = std::map<MatHandle, MaterialPtr>;
13
15
class
MaterialManager
{
16
private
:
17
MatHandle matHandle;
18
MatHash matHash;
19
MatNameHash matNameHash;
20
21
TextureManager
& texManager = TextureManager::get_instance();
22
23
MaterialManager
();
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
34
~MaterialManager
();
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_
Aire::MaterialManager
Material manager. Handles material creation, storage, and deletion.
Definition
matManager.h:15
Aire::MaterialManager::freeMaterialInGPU
void freeMaterialInGPU(MaterialPtr &)
Definition
matManager.cpp:167
Aire::MaterialManager::getMaterialPtrByName
MaterialPtr getMaterialPtrByName(std::string &name)
Definition
matManager.cpp:98
Aire::MaterialManager::getMaterialPtr
MaterialPtr getMaterialPtr(MatHandle &)
Definition
matManager.cpp:90
Aire::MaterialManager::freeMaterialInCPU
void freeMaterialInCPU(MaterialPtr &)
Definition
matManager.cpp:188
Aire::MaterialManager::setMatererialInGPU
void setMatererialInGPU(MaterialPtr &)
Definition
matManager.cpp:106
Aire::MaterialManager::createMaterial
MatHandle createMaterial()
Definition
matManager.cpp:54
Aire::TextureManager
Texture manager. Handles texture creation, storage, and deletion.
Definition
texManager.h:20
Generated by
1.10.0