From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- Runtime/Filters/Mesh/SpriteRenderer.h | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Runtime/Filters/Mesh/SpriteRenderer.h (limited to 'Runtime/Filters/Mesh/SpriteRenderer.h') 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 GetSprite() const { return m_Sprite; } + void SetSprite(PPtr 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 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& frame); +}; + +#endif //ENABLE_SPRITES + +#endif -- cgit v1.1-26-g67d0