Added a Library to most reference-counted classes

Former-commit-id: 3ed409a71dcd5ce4eec7672ac26f8fff00e3b136
This commit is contained in:
Lynix
2015-01-28 18:06:05 +01:00
parent e18e490c59
commit 53162c1722
34 changed files with 438 additions and 32 deletions

View File

@@ -11,7 +11,10 @@
#include <Nazara/Graphics/ForwardRenderTechnique.hpp>
#include <Nazara/Graphics/GuillotineTextureAtlas.hpp>
#include <Nazara/Graphics/Material.hpp>
#include <Nazara/Graphics/ParticleController.hpp>
#include <Nazara/Graphics/ParticleDeclaration.hpp>
#include <Nazara/Graphics/ParticleGenerator.hpp>
#include <Nazara/Graphics/ParticleRenderer.hpp>
#include <Nazara/Graphics/RenderTechniques.hpp>
#include <Nazara/Graphics/SkinningManager.hpp>
#include <Nazara/Graphics/Loaders/Mesh.hpp>
@@ -47,12 +50,30 @@ bool NzGraphics::Initialize()
return false;
}
if (!NzParticleController::Initialize())
{
NazaraError("Failed to initialize particle controllers");
return false;
}
if (!NzParticleDeclaration::Initialize())
{
NazaraError("Failed to initialize particle declarations");
return false;
}
if (!NzParticleGenerator::Initialize())
{
NazaraError("Failed to initialize particle generators");
return false;
}
if (!NzParticleRenderer::Initialize())
{
NazaraError("Failed to initialize particle renderers");
return false;
}
if (!NzSkinningManager::Initialize())
{
NazaraError("Failed to initialize skinning manager");
@@ -144,9 +165,12 @@ void NzGraphics::Uninitialize()
NzDeferredRenderTechnique::Uninitialize();
NzForwardRenderTechnique::Uninitialize();
NzMaterial::Uninitialize();
NzParticleDeclaration::Uninitialize();
NzSkinningManager::Uninitialize();
NzParticleRenderer::Uninitialize();
NzParticleGenerator::Uninitialize();
NzParticleDeclaration::Uninitialize();
NzParticleController::Uninitialize();
NzMaterial::Uninitialize();
NazaraNotice("Uninitialized: Graphics module");

View File

@@ -705,6 +705,17 @@ void NzMaterial::InvalidateShaders()
bool NzMaterial::Initialize()
{
if (!NzMaterialLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
s_defaultMaterial = NzMaterial::New();
s_defaultMaterial->Enable(nzRendererParameter_FaceCulling, false);
s_defaultMaterial->SetFaceFilling(nzFaceFilling_Line);
NzMaterialLibrary::Register("Default", s_defaultMaterial);
bool glsl140 = (NzOpenGL::GetGLSLVersion() >= 140);
// Basic shader
@@ -769,10 +780,6 @@ bool NzMaterial::Initialize()
NzUberShaderLibrary::Register("PhongLighting", uberShader);
}
s_defaultMaterial = NzMaterial::New();
s_defaultMaterial->Enable(nzRendererParameter_FaceCulling, false);
s_defaultMaterial->SetFaceFilling(nzFaceFilling_Line);
return true;
}
@@ -781,7 +788,9 @@ void NzMaterial::Uninitialize()
s_defaultMaterial.Reset();
NzUberShaderLibrary::Unregister("PhongLighting");
NzUberShaderLibrary::Unregister("Basic");
NzMaterialLibrary::Uninitialize();
}
NzMaterialRef NzMaterial::s_defaultMaterial = nullptr;
NzMaterialLibrary::LibraryMap NzMaterial::s_library;
NzMaterialLoader::LoaderList NzMaterial::s_loaders;
NzMaterialRef NzMaterial::s_defaultMaterial = nullptr;

View File

@@ -12,3 +12,21 @@ NzRefCounted()
}
NzParticleController::~NzParticleController() = default;
bool NzParticleController::Initialize()
{
if (!NzParticleControllerLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
return true;
}
void NzParticleController::Uninitialize()
{
NzParticleControllerLibrary::Uninitialize();
}
NzParticleControllerLibrary::LibraryMap NzParticleController::s_library;

View File

@@ -177,6 +177,12 @@ bool NzParticleDeclaration::IsTypeSupported(nzComponentType type)
bool NzParticleDeclaration::Initialize()
{
if (!NzParticleDeclarationLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
try
{
NzErrorFlags flags(nzErrorFlag_Silent | nzErrorFlag_ThrowException);
@@ -225,7 +231,8 @@ bool NzParticleDeclaration::Initialize()
void NzParticleDeclaration::Uninitialize()
{
// Rien à faire
NzParticleDeclarationLibrary::Uninitialize();
}
NzParticleDeclaration NzParticleDeclaration::s_declarations[nzParticleLayout_Max+1];
NzParticleDeclarationLibrary::LibraryMap NzParticleDeclaration::s_library;

View File

@@ -12,3 +12,21 @@ NzRefCounted()
}
NzParticleGenerator::~NzParticleGenerator() = default;
bool NzParticleGenerator::Initialize()
{
if (!NzParticleGeneratorLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
return true;
}
void NzParticleGenerator::Uninitialize()
{
NzParticleGeneratorLibrary::Uninitialize();
}
NzParticleGeneratorLibrary::LibraryMap NzParticleGenerator::s_library;

View File

@@ -12,3 +12,21 @@ NzRefCounted()
}
NzParticleRenderer::~NzParticleRenderer() = default;
bool NzParticleRenderer::Initialize()
{
if (!NzParticleRendererLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
return true;
}
void NzParticleRenderer::Uninitialize()
{
NzParticleRendererLibrary::Uninitialize();
}
NzParticleRendererLibrary::LibraryMap NzParticleRenderer::s_library;