#ifndef BLUECORE_RENDER_QUEUE_H #define BLUECORE_RENDER_QUEUE_H #include "RenderDevice.h" namespace BlueCore { class RenderItem : public Referenced { public: virtual void render(RenderDevice *) const = 0; }; class RenderQueue : public Referenced { struct QueueItem { QueueItem(RenderItem *renderitem, const Vector3& vector, const Quaternion& quat) : item(renderitem), position(vector), orientation(quat) { } ref_ptr item; Vector3 position; Quaternion orientation; }; std::list _OpaqueItems; std::list _TransparentItems; public: void addOpaqueItem(RenderItem *item, const Vector3& position, const Quaternion& orientation); void addTransparentItem(RenderItem *item, const Vector3& position, const Quaternion& orientation); const std::list& getOpaqueItems(); const std::list& getTransparentItems(); void clear(); void render(RenderDevice *device) const; }; } // namespace BluewCore #endif // BLUECORE_RENDER_QUEUE_H