#pragma once
#include "render_2D/plottable/Performance_Overlay.h"
#include "render_2D/renderable/Renderable.h"
#include "render_2D/scene/Scene.h"
#include <memory>
#include <string>
namespace adminive {
template <class T>
struct Type_Descriptor;
}
namespace renderive::web {
struct Gallery_Feedback_Policy {
    bool enabled{true};
    bool pixel{};
    bool presentation{true};
    bool manual{};
    double manual_fps{60.0};
    friend bool operator==(const Gallery_Feedback_Policy&, const Gallery_Feedback_Policy&) = default;
};
template <class Scene_Type>
class Gallery_Session_Control final {
public:
    Gallery_Session_Control(Scene_Type& scene, Renderable& renderable, Gallery_Feedback_Policy& feedback) noexcept
        : scene_(scene), renderable_(renderable), feedback_(feedback) {}
private:
    Scene_Type& scene_;
    Renderable& renderable_;
    Gallery_Feedback_Policy& feedback_;
    template <class T>
    friend struct ::adminive::Type_Descriptor;
};
}
