Files
Renderive/Core/architecture/Strategy_Render_Data.cpp
T
2026-08-02 20:25:59 +08:00

70 lines
2.3 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{};
}
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