9#include <condition_variable>
17#include <unordered_map>
95 virtual std::unique_ptr<LoadedData>
load(
const std::string& url) = 0;
143 void addHandler(
const std::string& type, std::unique_ptr<ResourceHandler> handler);
160 void load(
const std::string& url,
const std::string& type,
194 std::unique_ptr<LoadedData> data;
200 std::weak_ptr<Engine> _engine;
203 std::unordered_map<std::string, std::unique_ptr<ResourceHandler>> _handlers;
207 std::atomic<bool> _running{
false};
210 std::mutex _requestMutex;
211 std::condition_variable _requestCV;
212 std::deque<Request> _requests;
215 std::mutex _completionMutex;
216 std::deque<Completion> _completions;
218 std::atomic<int> _pendingCount{0};
229 std::unique_ptr<LoadedData>
load(
const std::string& url)
override;
239 std::unique_ptr<LoadedData>
load(
const std::string& url)
override;
246 std::unique_ptr<LoadedData>
load(
const std::string& url)
override;
std::unique_ptr< LoadedData > load(const std::string &url) override
Central application orchestrator managing scenes, rendering, input, and resource loading.
std::unique_ptr< LoadedData > load(const std::string &url) override
virtual ~ResourceHandler()=default
virtual std::unique_ptr< LoadedData > load(const std::string &url)=0
ResourceLoader(const std::shared_ptr< Engine > &engine)
void processCompletions(int maxCompletions=0)
void removeHandler(const std::string &type)
void load(const std::string &url, const std::string &type, LoadSuccessCallback onSuccess, LoadErrorCallback onError=nullptr)
void addHandler(const std::string &type, std::unique_ptr< ResourceHandler > handler)
ResourceLoader(const ResourceLoader &)=delete
ResourceLoader & operator=(const ResourceLoader &)=delete
std::unique_ptr< LoadedData > load(const std::string &url) override
std::function< void(std::unique_ptr< LoadedData >)> LoadSuccessCallback
std::function< void(const std::string &error)> LoadErrorCallback
Decoded pixel data — populated only by TextureResourceHandler.
std::vector< uint8_t > pixels
LDR: RGBA8 interleaved.
std::vector< float > hdrPixels
HDR: RGBA32F interleaved.
std::vector< uint8_t > bytes
Raw file bytes (always available for container / font types).
std::optional< PixelData > pixelData
std::shared_ptr< void > preparedData
std::string url
Source file path.
std::shared_ptr< void > preparsed