Add singleton to shader and texture manager
This commit is contained in:
@@ -37,19 +37,28 @@ namespace Inferno {
|
||||
|
||||
Input::initialize();
|
||||
|
||||
ShaderManager* shaderManager = new ShaderManager();
|
||||
shaderManager->initialize();
|
||||
|
||||
TextureManager* textureManager = new TextureManager();
|
||||
textureManager->initialize();
|
||||
|
||||
m_cameraO = std::make_shared<OrthographicCamera>();
|
||||
m_cameraP = std::make_shared<PerspectiveCamera>();
|
||||
|
||||
TextureManager textureManager;
|
||||
m_texture = textureManager.load("assets/gfx/test.png");
|
||||
m_texture2 = textureManager.load("assets/gfx/test-inverted.png");
|
||||
|
||||
Renderer2D::initialize();
|
||||
|
||||
// Load assets
|
||||
|
||||
m_texture = TextureManager::the().load("assets/gfx/test.png");
|
||||
m_texture2 = TextureManager::the().load("assets/gfx/test-inverted.png");
|
||||
}
|
||||
|
||||
Application::~Application()
|
||||
{
|
||||
Renderer2D::destroy();
|
||||
TextureManager::the().destroy();
|
||||
ShaderManager::the().destroy();
|
||||
// Input::destroy();
|
||||
Settings::destroy();
|
||||
}
|
||||
|
||||
@@ -191,6 +191,22 @@ namespace Inferno {
|
||||
|
||||
// -----------------------------------------
|
||||
|
||||
ShaderManager* ShaderManager::s_instance = nullptr;
|
||||
|
||||
void ShaderManager::initialize()
|
||||
{
|
||||
ASSERT(!s_instance, "ShaderManager already exists!");
|
||||
s_instance = this;
|
||||
|
||||
dbg(Log::Info) << "ShaderManager initialized";
|
||||
}
|
||||
|
||||
void ShaderManager::destroy()
|
||||
{
|
||||
delete s_instance;
|
||||
s_instance = nullptr;
|
||||
}
|
||||
|
||||
void ShaderManager::add(const std::string& name, const std::shared_ptr<Shader>& shader)
|
||||
{
|
||||
// Construct (key, value) pair and insert it into the unordered_map
|
||||
|
||||
@@ -47,6 +47,9 @@ namespace Inferno {
|
||||
|
||||
class ShaderManager {
|
||||
public:
|
||||
void initialize();
|
||||
void destroy();
|
||||
|
||||
void add(const std::string& name, const std::shared_ptr<Shader>& shader);
|
||||
std::shared_ptr<Shader> load(const std::string& name);
|
||||
std::shared_ptr<Shader> load(const std::string& vertexSource,
|
||||
@@ -57,12 +60,16 @@ namespace Inferno {
|
||||
void remove(const std::string& name);
|
||||
void remove(const std::shared_ptr<Shader>& shader);
|
||||
|
||||
static inline ShaderManager& the() { return *s_instance; }
|
||||
|
||||
protected:
|
||||
std::string computeName(const std::string& vertexSource,
|
||||
const std::string& fragmentSource);
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, std::shared_ptr<Shader>> m_shaderList;
|
||||
|
||||
static ShaderManager* s_instance;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -101,6 +101,22 @@ namespace Inferno {
|
||||
|
||||
// -----------------------------------------
|
||||
|
||||
TextureManager* TextureManager::s_instance = nullptr;
|
||||
|
||||
void TextureManager::initialize()
|
||||
{
|
||||
ASSERT(!s_instance, "TextureManager already exists!");
|
||||
s_instance = this;
|
||||
|
||||
dbg(Log::Info) << "TextureManager initialized";
|
||||
}
|
||||
|
||||
void TextureManager::destroy()
|
||||
{
|
||||
delete s_instance;
|
||||
s_instance = nullptr;
|
||||
}
|
||||
|
||||
void TextureManager::add(const std::string& path, const std::shared_ptr<Texture>& texture)
|
||||
{
|
||||
// Construct (key, value) pair and insert it into the unordered_map
|
||||
|
||||
@@ -39,6 +39,9 @@ namespace Inferno {
|
||||
|
||||
class TextureManager {
|
||||
public:
|
||||
void initialize();
|
||||
void destroy();
|
||||
|
||||
void add(const std::string& path, const std::shared_ptr<Texture>& texture);
|
||||
std::shared_ptr<Texture> load(const std::string& path);
|
||||
std::shared_ptr<Texture> get(const std::string& path);
|
||||
@@ -47,8 +50,12 @@ namespace Inferno {
|
||||
void remove(const std::string& path);
|
||||
void remove(const std::shared_ptr<Texture>& texture);
|
||||
|
||||
static inline TextureManager& the() { return *s_instance; }
|
||||
|
||||
private:
|
||||
std::unordered_map<std::string, std::shared_ptr<Texture>> m_textureList;
|
||||
|
||||
static TextureManager* s_instance;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user