diff options
Diffstat (limited to 'Runtime/Filters/Mesh/SpriteRenderer.h')
-rw-r--r-- | Runtime/Filters/Mesh/SpriteRenderer.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Runtime/Filters/Mesh/SpriteRenderer.h b/Runtime/Filters/Mesh/SpriteRenderer.h new file mode 100644 index 0000000..0bf47b9 --- /dev/null +++ b/Runtime/Filters/Mesh/SpriteRenderer.h @@ -0,0 +1,60 @@ +#ifndef SPRITERENDERER_H +#define SPRITERENDERER_H +#include "Configuration/UnityConfigure.h" + +#if ENABLE_SPRITES + +#include "Runtime/GfxDevice/ChannelAssigns.h" +#include "Runtime/Filters/Renderer.h" +#include "Runtime/Shaders/Material.h" +#include "Runtime/Graphics/SpriteFrame.h" + +class SpriteRenderer : public Renderer +{ +public: + REGISTER_DERIVED_CLASS (SpriteRenderer, Renderer) + DECLARE_OBJECT_SERIALIZE (SpriteRenderer) + + SpriteRenderer (MemLabelId label, ObjectCreationMode mode); + // ~SpriteRenderer (); declared-by-macro + + static bool IsSealedClass () { return true; } + static void InitializeClass (); + static void CleanupClass (); + + virtual void AwakeFromLoad (AwakeFromLoadMode awakeMode); + virtual void SmartReset (); + + virtual void UpdateTransformInfo(); + virtual void UpdateLocalAABB (); + virtual void Render (int materialIndex, const ChannelAssigns& channels); +#if GFX_ENABLE_DRAW_CALL_BATCHING + static void RenderMultiple (const BatchInstanceData* instances, size_t count, const ChannelAssigns& channels); +#endif + PPtr<Sprite> GetSprite() const { return m_Sprite; } + void SetSprite(PPtr<Sprite> sprite); + + ColorRGBAf GetColor() const { return m_Color; } + void SetColor(const ColorRGBAf& color) { m_Color = color; } + + static void SetupMaterialPropertyBlock(MaterialPropertyBlock& block, const Texture2D* spriteTexture); + + static Material* GetDefaultSpriteMaterial(); + +private: + PPtr<Sprite> m_Sprite; + ColorRGBAf m_Color; + + void SetupMaterialProperties(); + void GetGeometrySize(UInt32& indexCount, UInt32& vertexCount); + +#if GFX_ENABLE_DRAW_CALL_BATCHING + static void RenderBatch (const BatchInstanceData* instances, size_t count, size_t numIndices, size_t numVertices, const ChannelAssigns& channels); +#endif + // Context + const SpriteRenderData* GetSpriteRenderDataInContext(const PPtr<Sprite>& frame); +}; + +#endif //ENABLE_SPRITES + +#endif |