修复builder 调用方式

This commit is contained in:
2026-08-18 08:49:09 +08:00
parent 24315448f4
commit 97d2d1574b
19 changed files with 525 additions and 372 deletions
@@ -9,7 +9,11 @@ std::unique_ptr<Render_Scene_2D> make_scene(
Render_Scene_2D::State state = {}) {
auto strategy =
std::make_shared<Low_Latency_Render_Scene_2D_Strategy>();
return Render_Scene_2D::Builder{state}.build(std::move(strategy));
return Render_Scene_2D::Builder(std::move(strategy))
.configure([&](Render_Scene_2D::Properties& properties) {
properties = state;
})
.build();
}
TEST(RenderScene2DFramePipeline, BuilderOwnsConstructionAndState) {
@@ -8,8 +8,12 @@ namespace {
TEST(RenderScene2DIntegration, BuilderStatePublishesAtFrameBoundary) {
Render_Scene_2D::State initial;
initial.viewport = {64, 32};
auto scene = Render_Scene_2D::Builder{initial}.build(
std::make_shared<Manual_Render_Scene_2D_Strategy>());
auto scene = Render_Scene_2D::Builder(
std::make_shared<Manual_Render_Scene_2D_Strategy>())
.configure([&](Render_Scene_2D::Properties& properties) {
properties = initial;
})
.build();
scene->activate_view();
ASSERT_EQ(scene->render_frame().value(), Plot_Render_Status::rendered);
ASSERT_EQ(scene->wait_for_render(), Scene_Render_Result::none);
@@ -19,8 +23,12 @@ TEST(RenderScene2DIntegration, BuilderStatePublishesAtFrameBoundary) {
TEST(RenderScene2DIntegration, FrameImageMatchesConfiguredViewport) {
Render_Scene_2D::State state;
state.viewport = {48, 27};
auto scene = Render_Scene_2D::Builder{state}.build(
std::make_shared<Low_Latency_Render_Scene_2D_Strategy>());
auto scene = Render_Scene_2D::Builder(
std::make_shared<Low_Latency_Render_Scene_2D_Strategy>())
.configure([&](Render_Scene_2D::Properties& properties) {
properties = state;
})
.build();
scene->activate_view();
ASSERT_EQ(scene->render_frame().value(), Plot_Render_Status::rendered);
ASSERT_EQ(scene->wait_for_render(), Scene_Render_Result::none);
@@ -34,8 +42,12 @@ TEST(RenderScene2DIntegration, FrameImageMatchesConfiguredViewport) {
TEST(RenderScene2DIntegration, FrameStrategyIsReplacedInsideRenderableEdit) {
Render_Scene_2D::State state;
state.viewport = {48, 27};
auto scene = Render_Scene_2D::Builder{state}.build(
std::make_shared<Low_Latency_Render_Scene_2D_Strategy>());
auto scene = Render_Scene_2D::Builder(
std::make_shared<Low_Latency_Render_Scene_2D_Strategy>())
.configure([&](Render_Scene_2D::Properties& properties) {
properties = state;
})
.build();
const auto operation = scene->edit_renderables(
[](Scene_2D_Base::Renderable_Editor& editor) {
editor.replace_frame_control_strategy(