#pragma once #include "Render_Data.h" #include "global.h" #include #include #include #include #include namespace renderive { struct LIB_DECL Strategy_Render_Data : Render_Data { Strategy_Render_Data(); Strategy_Render_Data(const Strategy_Render_Data&) = delete; Strategy_Render_Data& operator=(const Strategy_Render_Data&) = delete; ~Strategy_Render_Data() override; void initialize_runtime(std::unique_ptr runtime) override; void cancel_pending_completions() override; void drain_committed_update_states(std::pmr::vector>& output) override; Render_State_Read_Guard acquire_state_read(Renderable_State_Role role) override; Render_State_Read_Guard acquire_render_state_read() override; Render_State_Read_Guard acquire_edit_state_read() override; Render_State_Write_Guard acquire_edit_state() override; Render_Input_Write_Guard acquire_edit_input(bool notify_render) override; Renderable_Frame_View capture_frame_view() override; Render_State* state(Renderable_State_Role role) override; Input_Data* input_data(Renderable_Input_Role role) override; void clear_render_input(); [[nodiscard]] bool requires_frame_view() const override; private: std::unique_ptr runtime; }; } // namespace renderive