/* ----------------------------------------------------------------------------- GSFramework Copyright 2001-2013 Emmanuel Julien. All Rights Reserved. ------------------------------------------------------------------------------*/ #ifndef __NRENDERABLE__ #define __NRENDERABLE__ #include "core/render_data.h" #include "core/render_primitive.h" #include "container/nstack.h" namespace GS { class MinMax; namespace Core { class Camera; /*! @short Renderer renderable item. @author Emmanuel Julien (ejulien@nworks.fr) */ struct Renderable { enum Context { Context_Default = 0, Context_Shadow, Context_Occlusion }; /// Is this renderable enabled. virtual inline bool IsRenderable() const { return true; } /// Compute the renderable minmax. virtual void ComputeRenderableMinMax(MinMax &) = 0; /// Get the renderable primitive list, returns the number of primitive that were considered for addition to the final list. virtual uint GetRenderablePrimitiveList(const Camera &view, const Camera &default_view, Stack &, Context = Context_Default, bool cull = true) = 0; virtual ~Renderable() {} }; } // Core } // GS #endif // __NRENDERABLE__