74 lines
2.4 KiB
C++
74 lines
2.4 KiB
C++
#include "Strategy_Render_Data.h"
|
|
#include <utility>
|
|
|
|
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<Renderable_Runtime> 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<std::shared_ptr<Update_State>>& 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<bool>(runtime);
|
|
}
|
|
|
|
} // namespace renderive
|