48 lines
2.0 KiB
C++
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
|