Graphics/SpriteLibrary: Fix missing initialization/uninitialization (fixes crash at exit)

Former-commit-id: c7bbd781d163a8456f1fadd0f71451adc5a1bd1a
This commit is contained in:
Lynix 2016-01-19 12:14:07 +01:00
parent 9ae27d990c
commit c359c6925e
3 changed files with 30 additions and 0 deletions

View File

@ -23,6 +23,9 @@ namespace Nz
class NAZARA_GRAPHICS_API Sprite : public InstancedRenderable class NAZARA_GRAPHICS_API Sprite : public InstancedRenderable
{ {
friend SpriteLibrary;
friend class Graphics;
public: public:
inline Sprite(); inline Sprite();
inline Sprite(MaterialRef material); inline Sprite(MaterialRef material);
@ -57,6 +60,9 @@ namespace Nz
void MakeBoundingVolume() const override; void MakeBoundingVolume() const override;
void UpdateData(InstanceData* instanceData) const override; void UpdateData(InstanceData* instanceData) const override;
static bool Initialize();
static void Uninitialize();
Color m_color; Color m_color;
MaterialRef m_material; MaterialRef m_material;
Rectf m_textureCoords; Rectf m_textureCoords;

View File

@ -18,6 +18,7 @@
#include <Nazara/Graphics/RenderTechniques.hpp> #include <Nazara/Graphics/RenderTechniques.hpp>
#include <Nazara/Graphics/SkinningManager.hpp> #include <Nazara/Graphics/SkinningManager.hpp>
#include <Nazara/Graphics/SkyboxBackground.hpp> #include <Nazara/Graphics/SkyboxBackground.hpp>
#include <Nazara/Graphics/Sprite.hpp>
#include <Nazara/Graphics/Formats/MeshLoader.hpp> #include <Nazara/Graphics/Formats/MeshLoader.hpp>
#include <Nazara/Graphics/Formats/OBJLoader.hpp> #include <Nazara/Graphics/Formats/OBJLoader.hpp>
#include <Nazara/Graphics/Formats/TextureLoader.hpp> #include <Nazara/Graphics/Formats/TextureLoader.hpp>
@ -89,6 +90,12 @@ namespace Nz
return false; return false;
} }
if (!Sprite::Initialize())
{
NazaraError("Failed to initialize sprites");
return false;
}
// Loaders // Loaders
Loaders::RegisterOBJ(); Loaders::RegisterOBJ();
@ -181,6 +188,7 @@ namespace Nz
ParticleController::Uninitialize(); ParticleController::Uninitialize();
Material::Uninitialize(); Material::Uninitialize();
SkyboxBackground::Uninitialize(); SkyboxBackground::Uninitialize();
Sprite::Uninitialize();
NazaraNotice("Uninitialized: Graphics module"); NazaraNotice("Uninitialized: Graphics module");

View File

@ -51,5 +51,21 @@ namespace Nz
*texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_RightBottom); *texCoordPtr++ = m_textureCoords.GetCorner(RectCorner_RightBottom);
} }
bool Sprite::Initialize()
{
if (!SpriteLibrary::Initialize())
{
NazaraError("Failed to initialise library");
return false;
}
return true;
}
void Sprite::Uninitialize()
{
SpriteLibrary::Uninitialize();
}
SpriteLibrary::LibraryMap Sprite::s_library; SpriteLibrary::LibraryMap Sprite::s_library;
} }