// Copyright (C) 2015 Jérôme Leclercq // This file is part of the "Nazara Engine - Graphics module" // For conditions of distribution and use, see copyright notice in Config.hpp #pragma once #ifndef NAZARA_SPRITE_HPP #define NAZARA_SPRITE_HPP #include #include #include #include #include #include class NzSprite; using NzSpriteConstRef = NzObjectRef; using NzSpriteLibrary = NzObjectLibrary; using NzSpriteRef = NzObjectRef; class NAZARA_GRAPHICS_API NzSprite : public NzInstancedRenderable { public: inline NzSprite(); inline NzSprite(NzMaterialRef material); inline NzSprite(NzTexture* texture); inline NzSprite(const NzSprite& sprite); ~NzSprite() = default; void AddToRenderQueue(NzAbstractRenderQueue* renderQueue, const InstanceData& instanceData) const override; inline const NzColor& GetColor() const; inline const NzMaterialRef& GetMaterial() const; inline const NzVector2f& GetSize() const; inline const NzRectf& GetTextureCoords() const; inline void SetColor(const NzColor& color); inline void SetDefaultMaterial(); inline void SetMaterial(NzMaterialRef material, bool resizeSprite = true); inline void SetSize(const NzVector2f& size); inline void SetSize(float sizeX, float sizeY); inline void SetTexture(NzTextureRef texture, bool resizeSprite = true); inline void SetTextureCoords(const NzRectf& coords); inline void SetTextureRect(const NzRectui& rect); inline NzSprite& operator=(const NzSprite& sprite); template static NzSpriteRef New(Args&&... args); private: inline void InvalidateVertices(); void MakeBoundingVolume() const override; void UpdateData(InstanceData* instanceData) const override; NzColor m_color; NzMaterialRef m_material; NzRectf m_textureCoords; NzVector2f m_size; static NzSpriteLibrary::LibraryMap s_library; }; #include #endif // NAZARA_SPRITE_HPP