10#include <unordered_map>
17#include "SD/export.hpp"
24 template<
typename T,
typename...
Args>
25 requires std::is_base_of_v<View, T>
27 if (m_view_name_to_id.contains(name))
30 ViewId id = m_next_view_id++;
32 new (view) T(std::move(name), std::forward<Args>(
args)...);
36 m_views_by_id.emplace(
id, view);
37 m_view_name_to_id.emplace(
ref.get_name(), id);
45 std::expected<ViewId, ViewError> get_id(
const std::string& name)
const;
48 ViewError remove(
const std::string& name);
50 template<
typename T,
typename...
Args>
51 requires std::is_base_of_v<Layer, T>
53 auto it = m_views_by_id.find(
id);
54 if (
it == m_views_by_id.end())
56 return it->second->push_layer<T>(std::forward<Args>(
args)...);
59 const std::unordered_map<ViewId, View*>&
get_views()
const {
return m_views_by_id; }
64 for (
auto& [
id, view] : m_views_by_id) {
71 for (
const auto& [
id, view] : m_views_by_id) {
76 std::vector<Scene*> get_scenes();
78 void update_views(
float dt);
79 void render_views(vk::CommandBuffer
cmd);
80 void cleanup_closed_views();
#define NOT_IMPLEMENTED
Definition base.hpp:27
Definition Application.hpp:22
ViewError
Definition View.hpp:27
@ VIEW_DOES_NOT_EXIST
Definition View.hpp:30
Definition id_types.hpp:7
Definition ViewManager.hpp:21
std::unordered_map< ViewId, View * > m_views_by_id
Definition ViewManager.hpp:84
ViewId m_next_view_id
Definition ViewManager.hpp:86
std::unordered_map< std::string, ViewId > m_view_name_to_id
Definition ViewManager.hpp:85
void for_each(F &&fn)
Definition ViewManager.hpp:63
std::expected< std::reference_wrapper< View >, ViewError > ViewResult
Definition ViewManager.hpp:41
T & create(Arena *arena, std::string name, Args &&... args)
Definition ViewManager.hpp:26
const std::unordered_map< ViewId, View * > & get_views() const
Definition ViewManager.hpp:59
void for_each(F &&fn) const
Definition ViewManager.hpp:70
auto & get_views()
Definition ViewManager.hpp:60
std::expected< std::reference_wrapper< T >, ViewError > push_layer(ViewId id, Args &&... args)
Definition ViewManager.hpp:52
consteval U64 type_id_of()
Definition type_id.hpp:6