secene 接入 多继承链
This commit is contained in:
@@ -16,12 +16,17 @@ struct Scene_State_Observer_Test_Time_Source {
|
||||
};
|
||||
struct Scene_State_Observer_Test_Data {
|
||||
std::vector<Scene_Base::Observation_Event> events;
|
||||
std::atomic<int> complete_snapshot_count{};
|
||||
};
|
||||
struct Scene_State_Observer_Test_Recorder {
|
||||
static constexpr bool enabled = true;
|
||||
std::shared_ptr<Scene_State_Observer_Test_Data> data{std::make_shared<Scene_State_Observer_Test_Data>()};
|
||||
void observe(const Scene_Base::Observation& observation) noexcept {
|
||||
data->events.push_back(observation.event);
|
||||
if (observation.topology && observation.frame_snapshot &&
|
||||
observation.render_plan)
|
||||
data->complete_snapshot_count.fetch_add(1,
|
||||
std::memory_order_relaxed);
|
||||
}
|
||||
};
|
||||
using Scene_State_Observer_Test_Scene_Observer = Observer_State<Scene_State_Observer_Test_Recorder, Scene_State_Observer_Test_Time_Source>;
|
||||
@@ -37,6 +42,7 @@ TEST(scene_state_observer_test, scene_uses_double_state_and_observes_lifecycle)
|
||||
scene.wait_for_render();
|
||||
EXPECT_EQ(render.read(static_cast<const Scene::Scene_State_Strategy&>(scene)).value, 9);
|
||||
EXPECT_EQ(recorder.data->events, (std::vector<Scene_Base::Observation_Event>{Scene_Base::Observation_Event::render_submitted, Scene_Base::Observation_Event::render_started, Scene_Base::Observation_Event::render_completed}));
|
||||
EXPECT_EQ(recorder.data->complete_snapshot_count.load(), 3);
|
||||
}
|
||||
struct Scene_Reentrant_Observer_Data {
|
||||
std::function<void(Scene_Base::Observation_Event)> callback;
|
||||
|
||||
Reference in New Issue
Block a user