10#include <unordered_set>
27void walk_and_regen_dependents(asset_manager& am,
28 thumbnail_manager& tm,
29 const hpp::uuid& root,
30 std::unordered_set<hpp::uuid>& visited)
32 std::deque<hpp::uuid>
queue;
33 queue.push_back(root);
37 const auto current =
queue.front();
42 if(visited.insert(dep).second)
44 tm.regenerate_thumbnail(dep);
56void mass_invalidate_prefab_thumbnails(asset_manager& am,
57 thumbnail_manager& tm,
58 const std::unordered_set<hpp::uuid>& visited)
60 am.for_each_asset<prefab>(
61 [&](
const auto& kvp) ->
void
63 const auto&
handle = kvp.second;
64 const auto& uid =
handle.uid();
65 if(uid.is_nil() || visited.count(uid) != 0)
69 tm.regenerate_thumbnail(uid);
77 const hpp::uuid& changed,
78 bool mass_invalidate_prefabs)
85 std::unordered_set<hpp::uuid> visited;
86 visited.insert(changed);
89 walk_and_regen_dependents(am, tm, changed, visited);
91 if(mass_invalidate_prefabs)
93 mass_invalidate_prefab_thumbnails(am, tm, visited);
102 const std::set<hpp::uuid>& removed_uids,
103 const std::set<hpp::uuid>& dependent_uids,
104 bool mass_invalidate_prefabs)
107 std::unordered_set<hpp::uuid> visited;
111 for(
const auto& uid : removed_uids)
124 for(
const auto& uid : dependent_uids)
126 if(uid.is_nil() || !visited.insert(uid).second)
133 if(mass_invalidate_prefabs)
135 mass_invalidate_prefab_thumbnails(am, tm, visited);
Manages assets, including loading, unloading, and storage.
auto queue(seq_action action, const seq_scope_policy &scope_policy, hpp::source_location location) -> seq_id_t
Queues a new action.
void cascade_thumbnail_remove(asset_manager &am, thumbnail_manager &tm, const std::set< hpp::uuid > &removed_uids, const std::set< hpp::uuid > &dependent_uids, bool mass_invalidate_prefabs)
void cascade_thumbnail_regen(asset_manager &am, thumbnail_manager &tm, const hpp::uuid &changed, bool mass_invalidate_prefabs)
auto find_loaded_dependents(asset_manager &am, const hpp::uuid &uid) -> std::vector< hpp::uuid >
void remove_thumbnail(const hpp::uuid &uid)
void regenerate_thumbnail(const hpp::uuid &uid)