#pragma once
#include <concepts>
#include "renderive/scene/base/Scene_Base.hpp"
template <class That>
concept Scene = std::derived_from<That, Scene_Base> && requires(That& scene, const That& const_scene) {
    { scene.frame_control_strategy() } -> std::same_as<Frame_Control_Strategy_Base&>;
    { const_scene.frame_control_strategy() } -> std::same_as<const Frame_Control_Strategy_Base&>;
    { scene.render() } -> std::same_as<void>;
    { scene.wait_for_render() } -> std::same_as<void>;
};
template <class That>
concept Scene_2D = Scene<That> && std::derived_from<That, Scene_2D_Base>;
template <class That>
concept Scene_3D = Scene<That> && std::derived_from<That, Scene_3D_Base>;
