#include "Strategy_Render_Data.h" #include namespace renderive { Strategy_Render_Data::Strategy_Render_Data() = default; Strategy_Render_Data::~Strategy_Render_Data() = default; void Strategy_Render_Data::initialize_runtime(std::unique_ptr value) { runtime = std::move(value); if (!runtime) return; runtime->set_render_state_copier([this](Render_State& target, const Render_State& source) { copy_render_state_object(target, source); }); } void Strategy_Render_Data::cancel_pending_completions() { if (runtime) runtime->cancel_pending_completions(); } void Strategy_Render_Data::drain_committed_update_states(std::pmr::vector>& output) { if (runtime) runtime->drain_committed_update_states(output); } Render_State_Read_Guard Strategy_Render_Data::acquire_state_read(Renderable_State_Role role) { return runtime ? runtime->acquire_state_read(role) : Render_State_Read_Guard{}; } Render_State_Read_Guard Strategy_Render_Data::acquire_render_state_read() { return runtime ? runtime->acquire_render_state_read() : Render_State_Read_Guard{}; } Render_State_Read_Guard Strategy_Render_Data::acquire_edit_state_read() { return runtime ? runtime->acquire_edit_state_read() : Render_State_Read_Guard{}; } Render_State_Write_Guard Strategy_Render_Data::acquire_edit_state() { return runtime ? runtime->acquire_edit_state() : Render_State_Write_Guard{}; } Render_Input_Write_Guard Strategy_Render_Data::acquire_edit_input(bool notify_render) { return runtime ? runtime->acquire_edit_input(notify_render) : Render_Input_Write_Guard{}; } Render_Input_Frame_Guard Strategy_Render_Data::acquire_input_read(Renderable_Input_Role role) { return runtime ? runtime->acquire_input_read(role) : Render_Input_Frame_Guard{}; } Renderable_Frame_View Strategy_Render_Data::capture_frame_view() { return runtime ? runtime->capture_frame_view() : Renderable_Frame_View{}; } Render_State* Strategy_Render_Data::state(Renderable_State_Role role) { return runtime ? runtime->state(role) : nullptr; } Input_Data* Strategy_Render_Data::input_data(Renderable_Input_Role role) { return runtime ? runtime->input_data(role) : nullptr; } void Strategy_Render_Data::clear_render_input() { if (runtime) runtime->clear_render_input(); } bool Strategy_Render_Data::requires_frame_view() const { return static_cast(runtime); } } // namespace renderive