升级
This commit is contained in:
@@ -61,6 +61,14 @@ std::string_view mode_id(Gallery_Frame_Mode mode) {
|
||||
return "low_latency";
|
||||
}
|
||||
|
||||
Gallery_Frame_Mode strategy_mode(const Frame_Control_Strategy_Base& strategy) {
|
||||
if (dynamic_cast<const Manual_Render_Scene_2D_Strategy*>(&strategy))
|
||||
return Gallery_Frame_Mode::Manual;
|
||||
if (dynamic_cast<const Playback_Render_Scene_2D_Strategy*>(&strategy))
|
||||
return Gallery_Frame_Mode::Playback;
|
||||
return Gallery_Frame_Mode::Low_Latency;
|
||||
}
|
||||
|
||||
Time_Of_Day current_time_of_day() {
|
||||
constexpr std::int64_t day_ms = 24LL * 60LL * 60LL * 1000LL;
|
||||
const auto now = std::chrono::duration_cast<std::chrono::milliseconds>(
|
||||
@@ -72,8 +80,8 @@ Time_Of_Day current_time_of_day() {
|
||||
class Gallery_Scene2D final : public Gallery_Scene_Interface {
|
||||
public:
|
||||
Gallery_Scene2D(std::string case_id, Gallery_Frame_Mode mode)
|
||||
: case_id_(std::move(case_id)), mode_(mode) {
|
||||
rebuild();
|
||||
: case_id_(std::move(case_id)) {
|
||||
rebuild(mode);
|
||||
}
|
||||
|
||||
~Gallery_Scene2D() override {
|
||||
@@ -90,7 +98,9 @@ public:
|
||||
gallery_performance_capture_json(*scene_)}};
|
||||
}
|
||||
|
||||
Gallery_Frame_Mode frame_mode() const noexcept override { return mode_; }
|
||||
Gallery_Frame_Mode frame_mode() const noexcept override {
|
||||
return strategy_mode(*scene_->frame_control_strategy());
|
||||
}
|
||||
void reset_monitoring() override { render_count_ = 0; }
|
||||
|
||||
void set_client_metrics(Gallery_Client_Performance metrics) noexcept override {
|
||||
@@ -119,8 +129,9 @@ public:
|
||||
void resize(int width, int height) override {
|
||||
const Size requested{std::max(1, width), std::max(1, height)};
|
||||
if (requested == viewport_) return;
|
||||
const auto mode = frame_mode();
|
||||
viewport_ = requested;
|
||||
rebuild();
|
||||
rebuild(mode);
|
||||
}
|
||||
|
||||
void dispatch(const Gallery_Input_Event& event) override {
|
||||
@@ -178,7 +189,6 @@ public:
|
||||
});
|
||||
if (operation.wait() != Scene_Edit_Error::none)
|
||||
return "frame strategy replacement rejected";
|
||||
mode_ = next;
|
||||
return "frame strategy replaced";
|
||||
}
|
||||
if (request.id == "capture_next_frame") {
|
||||
@@ -202,7 +212,7 @@ public:
|
||||
std::string telemetry_json() const override {
|
||||
const auto observer = scene_->observer();
|
||||
auto kernel_observer = observer_json(observer);
|
||||
kernel_observer["mode"] = mode_id(mode_);
|
||||
kernel_observer["mode"] = mode_id(frame_mode());
|
||||
kernel_observer["event"] = "render_completed";
|
||||
kernel_observer["limit"] = "none";
|
||||
return nlohmann::json{
|
||||
@@ -222,12 +232,12 @@ private:
|
||||
.build(std::forward<Arguments>(arguments)...);
|
||||
}
|
||||
|
||||
void rebuild() {
|
||||
void rebuild(Gallery_Frame_Mode mode) {
|
||||
Render_Scene_2D::State scene_state;
|
||||
scene_state.viewport = viewport_;
|
||||
scene_state.background = Color{3, 8, 14, 255};
|
||||
scene_ = Render_Scene_2D::Builder{scene_state}.build(
|
||||
make_strategy(mode_));
|
||||
make_strategy(mode));
|
||||
|
||||
{
|
||||
auto attach = scene_->attach_builder();
|
||||
@@ -430,7 +440,6 @@ private:
|
||||
}
|
||||
|
||||
std::string case_id_;
|
||||
Gallery_Frame_Mode mode_;
|
||||
Size viewport_{560, 320};
|
||||
std::unique_ptr<Render_Scene_2D> scene_;
|
||||
renderive_Owner<Frequency_Axis> frequency_axis_;
|
||||
|
||||
Reference in New Issue
Block a user