36 lines
1.5 KiB
C++
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
|