diff --git a/include/Nazara/Graphics/Sprite.hpp b/include/Nazara/Graphics/Sprite.hpp index e61f19840..3660bf872 100644 --- a/include/Nazara/Graphics/Sprite.hpp +++ b/include/Nazara/Graphics/Sprite.hpp @@ -23,6 +23,9 @@ namespace Nz class NAZARA_GRAPHICS_API Sprite : public InstancedRenderable { + friend SpriteLibrary; + friend class Graphics; + public: inline Sprite(); inline Sprite(MaterialRef material); @@ -57,6 +60,9 @@ namespace Nz void MakeBoundingVolume() const override; void UpdateData(InstanceData* instanceData) const override; + static bool Initialize(); + static void Uninitialize(); + Color m_color; MaterialRef m_material; Rectf m_textureCoords; diff --git a/src/Nazara/Graphics/Graphics.cpp b/src/Nazara/Graphics/Graphics.cpp index 7560573ef..a96f2f4e7 100644 --- a/src/Nazara/Graphics/Graphics.cpp +++ b/src/Nazara/Graphics/Graphics.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -89,6 +90,12 @@ namespace Nz return false; } + if (!Sprite::Initialize()) + { + NazaraError("Failed to initialize sprites"); + return false; + } + // Loaders Loaders::RegisterOBJ(); @@ -181,6 +188,7 @@ namespace Nz ParticleController::Uninitialize(); Material::Uninitialize(); SkyboxBackground::Uninitialize(); + Sprite::Uninitialize(); NazaraNotice("Uninitialized: Graphics module"); diff --git a/src/Nazara/Graphics/Sprite.cpp b/src/Nazara/Graphics/Sprite.cpp index 970254294..fd4ab758f 100644 --- a/src/Nazara/Graphics/Sprite.cpp +++ b/src/Nazara/Graphics/Sprite.cpp @@ -51,5 +51,21 @@ namespace Nz *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; }