Files
Renderive/Core/flow/explicit/Explicit_Renderable_Runtime.h
T
2026-08-02 18:58:35 +08:00

36 lines
1.5 KiB
C++

#pragma once
#include "../../architecture/Render_Data.h"
#include <memory>
namespace renderive {
struct Explicit_Renderable_Runtime_Data;
class Explicit_Renderable_Runtime final : public Renderable_Runtime {
public:
explicit Explicit_Renderable_Runtime(Renderable& owner);
Explicit_Renderable_Runtime(const Explicit_Renderable_Runtime&) = delete;
Explicit_Renderable_Runtime& operator=(const Explicit_Renderable_Runtime&) = delete;
~Explicit_Renderable_Runtime() override;
void set_render_state_copier(Copy_Render_State_Function copier) override;
void cancel_pending_completions() override;
void drain_committed_update_states(std::pmr::vector<std::shared_ptr<Update_State>>& 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() override;
private:
std::unique_ptr<Explicit_Renderable_Runtime_Data> d;
};
std::unique_ptr<Renderable_Runtime> make_explicit_renderable_runtime(Renderable& owner);
} // namespace renderive