#pragma once #include "../../architecture/Render_Data.h" #include 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>& 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 d; }; std::unique_ptr make_explicit_renderable_runtime(Renderable& owner); } // namespace renderive