3#include "PixelBullet/Serialization/Node.hpp"
4#include "PixelBullet/Threading/ThreadPool.hpp"
10#include <unordered_map>
34 std::shared_ptr<Resource>
Find(
const std::type_index& typeIndex,
const Node& node)
const;
40 std::shared_ptr<T>
Find(
const Node& node)
const
42 auto it = m_Resources.find(
typeid(T));
43 if (it == m_Resources.end())
48 for (
const auto& [key, resource] : it->second)
52 return std::dynamic_pointer_cast<T>(resource);
61 void Add(
const Node& node,
const std::shared_ptr<Resource>& resource);
66 void Remove(
const std::shared_ptr<Resource>& resource);
75 std::unordered_map<std::type_index, std::map<Node, std::shared_ptr<Resource>>> m_Resources;
78 std::chrono::steady_clock::time_point m_LastPurgeTime;
81 std::chrono::seconds m_PurgeInterval = std::chrono::seconds(5);
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition Node.hpp:51
Definition Resources.hpp:21
ThreadPool & GetThreadPool()
Gets the resource loader thread pool.
Definition Resources.cpp:92
void Add(const Node &node, const std::shared_ptr< Resource > &resource)
Adds a new resource.
Definition Resources.cpp:65
std::shared_ptr< T > Find(const Node &node) const
Template helper to find a resource of type T.
Definition Resources.hpp:40
std::shared_ptr< Resource > Find(const std::type_index &typeIndex, const Node &node) const
Finds a resource by type and node.
Definition Resources.cpp:47
void Update()
Performs periodic cleanup of unused resources.
Definition Resources.cpp:12
void Remove(const std::shared_ptr< Resource > &resource)
Removes a resource.
Definition Resources.cpp:75
A fixed-size pool of threads.
Definition ThreadPool.hpp:18