};
/**
-Sorts renderables by their distance from the camera before rendering. Requires
-renderables to have a matrix.
+A scene which sorts renderables by their distance from the camera before
+rendering.
+
+Renderables must have valid model matrices to be sorted. Those without a
+matrix are sorted as closest to the camera.
*/
class ZSortedScene: public Scene
{
bool operator<(const SortedRenderable &o) const { return depth<o.depth; }
};
- std::set<Renderable *> renderables;
+ std::vector<Renderable *> content;
SortOrder order = BACK_TO_FRONT;
DepthReference reference = FURTHEST;
- mutable std::vector<SortedRenderable> sorted_cache;
+ mutable std::map<const Camera *, std::vector<SortedRenderable> > sorted_cache;
public:
virtual void add(Renderable &);
/// Sets the reference point for sorting. Default is furthest from camera.
void set_reference(DepthReference);
-private:
- void populate_cache() const;
-
-public:
virtual void setup_frame(Renderer &);
virtual void finish_frame();