25 lines
777 B
C++
25 lines
777 B
C++
#pragma once
|
|
#include <future>
|
|
#include <utility>
|
|
#include "renderive/scene/base/Scene_Base.hpp"
|
|
template <class... Owners>
|
|
void attach_initial(Scene_Base& scene, const Owners&... owners) {
|
|
auto builder = scene.attach_builder();
|
|
(builder.attach(owners), ...);
|
|
}
|
|
template <class Edit>
|
|
void with_attach_builder(Scene_Base& scene, Edit&& edit) {
|
|
auto builder = scene.attach_builder();
|
|
edit(builder);
|
|
}
|
|
template <class Edit>
|
|
void wait_renderable_edit(Scene_Base& scene, Edit&& edit) {
|
|
std::promise<void> completed;
|
|
auto future = completed.get_future();
|
|
scene.edit_renderables([edit = std::forward<Edit>(edit), &completed](Scene_Base::Renderable_Editor& editor) mutable {
|
|
edit(editor);
|
|
completed.set_value();
|
|
});
|
|
future.wait();
|
|
}
|