Added resource managers

Former-commit-id: 9c071230c1e325ec672c9dfe30ee7e498baa1d08
This commit is contained in:
Lynix
2015-01-28 20:53:40 +01:00
parent 6324d21c67
commit 7a73314ef5
16 changed files with 282 additions and 56 deletions

View File

@@ -234,13 +234,22 @@ bool NzSoundBuffer::Initialize()
return false;
}
if (!NzSoundBufferManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
return true;
}
void NzSoundBuffer::Uninitialize()
{
NzSoundBufferManager::Uninitialize();
NzSoundBufferLibrary::Uninitialize();
}
NzSoundBufferLibrary::LibraryMap NzSoundBuffer::s_library;
NzSoundBufferLoader::LoaderList NzSoundBuffer::s_loaders;
NzSoundBufferManager::ManagerMap NzSoundBuffer::s_managerMap;
NzSoundBufferManager::ManagerParams NzSoundBuffer::s_managerParameters;

View File

@@ -225,31 +225,21 @@ namespace
bool hasAlphaMap = false;;
if (parameters.material.loadAlphaMap && !mtlMat->alphaMap.IsEmpty())
{
NzTextureRef alphaMap = NzTexture::New();
if (alphaMap->LoadFromFile(baseDir + mtlMat->alphaMap))
{
if (material->SetAlphaMap(baseDir + mtlMat->alphaMap))
hasAlphaMap = true;
material->SetAlphaMap(alphaMap);
}
else
NazaraWarning("Failed to load alpha map (" + mtlMat->alphaMap + ')');
}
if (parameters.material.loadDiffuseMap && !mtlMat->diffuseMap.IsEmpty())
{
NzTextureRef diffuseMap = NzTexture::New();
if (diffuseMap->LoadFromFile(baseDir + mtlMat->diffuseMap))
material->SetDiffuseMap(diffuseMap);
else
if (!material->SetDiffuseMap(baseDir + mtlMat->diffuseMap))
NazaraWarning("Failed to load diffuse map (" + mtlMat->diffuseMap + ')');
}
if (parameters.material.loadSpecularMap && !mtlMat->specularMap.IsEmpty())
{
NzTextureRef specularMap = NzTexture::New();
if (specularMap->LoadFromFile(baseDir + mtlMat->specularMap))
material->SetSpecularMap(specularMap);
else
if (!material->SetSpecularMap(baseDir + mtlMat->specularMap))
NazaraWarning("Failed to load specular map (" + mtlMat->specularMap + ')');
}

View File

@@ -406,13 +406,14 @@ void NzMaterial::Reset()
SetShader("Basic");
}
bool NzMaterial::SetAlphaMap(const NzString& texturePath)
bool NzMaterial::SetAlphaMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetAlphaMap(texture);
@@ -446,13 +447,14 @@ void NzMaterial::SetDiffuseColor(const NzColor& diffuse)
m_diffuseColor = diffuse;
}
bool NzMaterial::SetDiffuseMap(const NzString& texturePath)
bool NzMaterial::SetDiffuseMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetDiffuseMap(texture);
@@ -476,13 +478,14 @@ void NzMaterial::SetDstBlend(nzBlendFunc func)
m_states.dstBlend = func;
}
bool NzMaterial::SetEmissiveMap(const NzString& texturePath)
bool NzMaterial::SetEmissiveMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetEmissiveMap(texture);
@@ -506,13 +509,14 @@ void NzMaterial::SetFaceFilling(nzFaceFilling filling)
m_states.faceFilling = filling;
}
bool NzMaterial::SetHeightMap(const NzString& texturePath)
bool NzMaterial::SetHeightMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetHeightMap(texture);
@@ -526,13 +530,14 @@ void NzMaterial::SetHeightMap(NzTexture* map)
InvalidateShaders();
}
bool NzMaterial::SetNormalMap(const NzString& texturePath)
bool NzMaterial::SetNormalMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetNormalMap(texture);
@@ -578,13 +583,14 @@ void NzMaterial::SetSpecularColor(const NzColor& specular)
m_specularColor = specular;
}
bool NzMaterial::SetSpecularMap(const NzString& texturePath)
bool NzMaterial::SetSpecularMap(const NzString& name)
{
NzTextureRef texture = NzTexture::New();
if (!texture->LoadFromFile(texturePath))
NzTextureRef texture = NzTextureLibrary::Query(name);
if (!texture)
{
NazaraError("Failed to load texture from \"" + texturePath + '"');
return false;
texture = NzTextureManager::Get(name);
if (!texture)
return false;
}
SetSpecularMap(texture);
@@ -613,11 +619,10 @@ NzMaterial& NzMaterial::operator=(const NzMaterial& material)
NzResource::operator=(material);
Copy(material);
return *this;
}
NzMaterial* NzMaterial::GetDefault()
NzMaterialRef NzMaterial::GetDefault()
{
return s_defaultMaterial;
}
@@ -711,10 +716,11 @@ bool NzMaterial::Initialize()
return false;
}
s_defaultMaterial = NzMaterial::New();
s_defaultMaterial->Enable(nzRendererParameter_FaceCulling, false);
s_defaultMaterial->SetFaceFilling(nzFaceFilling_Line);
NzMaterialLibrary::Register("Default", s_defaultMaterial);
if (!NzMaterialManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
bool glsl140 = (NzOpenGL::GetGLSLVersion() >= 140);
@@ -780,6 +786,12 @@ bool NzMaterial::Initialize()
NzUberShaderLibrary::Register("PhongLighting", uberShader);
}
// Une fois les shaders de base enregistrés, on peut créer le matériau par défaut
s_defaultMaterial = NzMaterial::New();
s_defaultMaterial->Enable(nzRendererParameter_FaceCulling, false);
s_defaultMaterial->SetFaceFilling(nzFaceFilling_Line);
NzMaterialLibrary::Register("Default", s_defaultMaterial);
return true;
}
@@ -788,9 +800,12 @@ void NzMaterial::Uninitialize()
s_defaultMaterial.Reset();
NzUberShaderLibrary::Unregister("PhongLighting");
NzUberShaderLibrary::Unregister("Basic");
NzMaterialManager::Uninitialize();
NzMaterialLibrary::Uninitialize();
}
NzMaterialLibrary::LibraryMap NzMaterial::s_library;
NzMaterialLoader::LoaderList NzMaterial::s_loaders;
NzMaterialManager::ManagerMap NzMaterial::s_managerMap;
NzMaterialManager::ManagerParams NzMaterial::s_managerParameters;
NzMaterialRef NzMaterial::s_defaultMaterial = nullptr;

View File

@@ -1283,12 +1283,21 @@ bool NzTexture::Initialize()
return false;
}
if (!NzTextureManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
return true;
}
void NzTexture::Uninitialize()
{
NzTextureManager::Uninitialize();
NzTextureLibrary::Uninitialize();
}
NzTextureLibrary::LibraryMap NzTexture::s_library;
NzTextureManager::ManagerMap NzTexture::s_managerMap;
NzTextureManager::ManagerParams NzTexture::s_managerParameters;

View File

@@ -519,13 +519,22 @@ bool NzAnimation::Initialize()
return false;
}
if (!NzAnimationManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
return true;
}
void NzAnimation::Uninitialize()
{
NzAnimationManager::Uninitialize();
NzAnimationLibrary::Uninitialize();
}
NzAnimationLibrary::LibraryMap NzAnimation::s_library;
NzAnimationLoader::LoaderList NzAnimation::s_loaders;
NzAnimationManager::ManagerMap NzAnimation::s_managerMap;
NzAnimationManager::ManagerParams NzAnimation::s_managerParameters;

View File

@@ -1400,14 +1400,23 @@ bool NzImage::Initialize()
return false;
}
if (!NzImageManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
return true;
}
void NzImage::Uninitialize()
{
NzImageManager::Uninitialize();
NzImageLibrary::Uninitialize();
}
NzImage::SharedImage NzImage::emptyImage(0, nzImageType_2D, nzPixelFormat_Undefined, 1, nullptr, 0, 0, 0);
NzImageLibrary::LibraryMap NzImage::s_library;
NzImageLoader::LoaderList NzImage::s_loaders;
NzImageManager::ManagerMap NzImage::s_managerMap;
NzImageManager::ManagerParams NzImage::s_managerParameters;

View File

@@ -1010,13 +1010,23 @@ bool NzMesh::Initialize()
return false;
}
if (!NzMeshManager::Initialize())
{
NazaraError("Failed to initialise manager");
return false;
}
return true;
}
void NzMesh::Uninitialize()
{
NzMeshManager::Uninitialize();
NzMeshLibrary::Uninitialize();
}
NzMeshLibrary::LibraryMap NzMesh::s_library;
NzMeshLoader::LoaderList NzMesh::s_loaders;
NzMeshManager::ManagerMap NzMesh::s_managerMap;
NzMeshManager::ManagerParams NzMesh::s_managerParameters;