#ifndef SPECTRE_GRAPHICS_RENDERABLE_H #define SPECTRE_GRAPHICS_RENDERABLE_H #include "Vertex2D.h" #include "Transformable.h" #include #include #include namespace sp { class Renderer2D; class ShaderProgram; class Texture; enum RenderType { RenderType_Scene = 0, RenderType_UI = 1 }; class Renderable2D : public Transformable { public : Renderable2D(); Renderable2D(const Vector2f& position); virtual ~Renderable2D(); unsigned char getZOrder() const; void setZOrder(unsigned char value); virtual const std::vector& getVertices() const = 0; virtual const std::vector& getIndices() const = 0; virtual const Texture* getTexture() const { return NULL; }; virtual const RenderType getRenderType() const = 0; virtual void render(Renderer2D& renderer) const = 0; protected : unsigned char m_zorder; }; } // namespace sp #endif /* SPECTRE_GRAPHCIS_RENDERABLE_H */