Files
Renderive/web_server/app/Gallery_Session_Control.cpp
T
2026-08-12 00:59:34 +08:00

48 lines
2.0 KiB
C++

#include "Gallery_Session_Control.h"
namespace renderive::web {
Gallery_Session_Control_Model Gallery_Session_Control::adminive_snapshot() const {
Gallery_Session_Control_Model result;
result.background_color = plot_.background_color();
if (const auto overlay = plot_.performance_overlay())
result.performance_overlay = overlay->enabled();
result.renderable_visible = renderable_.is_visible();
result.cache_mode = renderable_.get_cache_mode();
result.object_name = renderable_.object_name();
result.max_render_fps = plot_.max_render_fps();
result.frequency_limit_enabled = result.max_render_fps > 0.0;
if (!result.frequency_limit_enabled)
result.max_render_fps = 30.0;
result.feedback = feedback_;
return result;
}
void Gallery_Session_Control::adminive_commit(Gallery_Session_Control_Model model) {
const auto current = adminive_snapshot();
if (model.frequency_limit_enabled != current.frequency_limit_enabled) {
if (model.frequency_limit_enabled)
plot_.set_max_render_fps(model.max_render_fps);
else
plot_.clear_max_render_fps();
} else if (model.frequency_limit_enabled &&
model.max_render_fps != current.max_render_fps) {
plot_.set_max_render_fps(model.max_render_fps);
}
if (model.background_color != current.background_color)
plot_.set_background_color(model.background_color);
if (model.performance_overlay != current.performance_overlay)
set_performance_overlay_enabled(plot_, model.performance_overlay);
if (model.renderable_visible != current.renderable_visible)
renderable_.set_visible(model.renderable_visible);
if (model.cache_mode != current.cache_mode)
renderable_.set_cache_mode(model.cache_mode);
if (model.object_name != current.object_name)
renderable_.set_object_name(std::move(model.object_name));
if (model.feedback != current.feedback)
feedback_ = model.feedback;
plot_.notify_model_dirty();
}
} // namespace renderive::web