14 #ifndef __CU_ASSET_LOADER__
15 #define __CU_ASSET_LOADER__
16 #include <unordered_set>
20 #include "CUThreadPool.h"
26 #pragma mark Abstract Base Class
53 #pragma mark Asset Coordinator
63 std::unordered_map<std::string,Asset*> _objects;
65 std::unordered_map<std::string, int> _refcnts;
67 std::unordered_map<std::string,std::vector<std::function<void(Asset* s)>>> _callbacks;
100 bool isLoaded(std::string
id)
const {
return _objects.find(
id) != _objects.end(); }
110 bool isPending(std::string
id)
const {
return _callbacks.find(
id) != _callbacks.end(); }
113 #pragma mark Allocation Methods
149 void loadAsync(
Asset* asset, std::function<
void(
Asset* s)> callback);
176 void release(
Asset* asset);
184 #pragma mark Asset Loader
198 void allocate(std::string key,
Asset* asset);
202 #pragma mark Activation/Deactivation
225 void start()
override;
237 void stop()
override;
240 #pragma mark Loading/Unloading
251 size_t waitCount()
const override {
return _aqueue.size(); }
257 Asset*
load(std::string key, std::string source)
override {
return nullptr; }
283 void loadAsync(std::string key, std::string source)
override {}
316 void unload(std::string key)
override;
330 CC_CONSTRUCTOR_ACCESS:
331 #pragma mark Initializers
347 #pragma mark Asset Loader Template
376 loader->autorelease();
379 CC_SAFE_DELETE(loader);
419 #pragma mark Loading/Unloading
464 T*
get(std::string key)
const override {
466 return dynamic_cast<T*
>(asset);
482 T*
load(std::string key, std::string source)
override {
483 T* asset = T::create(source);
484 if (asset !=
nullptr) {
485 Asset* result = _internal->
load(key,asset);
486 return dynamic_cast<T*
>(result);
505 void loadAsync(std::string key, std::string source)
override {
506 T* asset = T::create(source);
507 if (asset !=
nullptr) {
538 #pragma mark Initializers
554 _internal->release();
virtual void start()
Definition: CULoader.h:66
size_t instances
Definition: CUGenericLoader.h:76
void unload(std::string key) override
Definition: CUGenericLoader.h:523
bool isPending(std::string id) const
Definition: CUGenericLoader.h:110
void start() override
Definition: CUGenericLoader.cpp:219
GenericLoader()
Definition: CUGenericLoader.h:542
Definition: CUGenericLoader.h:358
T * load(std::string key, std::string source) override
Definition: CUGenericLoader.h:482
virtual T * get(std::string key) const
Definition: CULoader.h:265
void unload(std::string key) override
Definition: CUGenericLoader.cpp:345
void loadAsync(std::string key, std::string source) override
Definition: CUGenericLoader.h:505
bool isLoaded(std::string id) const
Definition: CUGenericLoader.h:100
virtual size_t loadCount() const override
Definition: CULoader.h:293
void loadAsync(std::string key, std::string source) override
Definition: CUGenericLoader.h:283
Definition: CUGenericLoader.h:60
Definition: CUThreadPool.h:51
static Coordinator * _gCoordinator
Definition: CUGenericLoader.h:180
void start() override
Definition: CUGenericLoader.h:394
void unloadAll() override
Definition: CUGenericLoader.h:534
bool contains(std::string key) const override
Definition: CUGenericLoader.h:452
virtual bool contains(std::string key) const
Definition: CULoader.h:253
void unloadAll() override
Definition: CUGenericLoader.cpp:363
size_t waitCount() const override
Definition: CUGenericLoader.h:251
void stop() override
Definition: CUGenericLoader.h:410
virtual void unload(std::string key)
Definition: CULoader.h:125
Definition: CUGenericLoader.h:46
size_t waitCount() const override
Definition: CUGenericLoader.h:430
static GenericBaseLoader * create()
Definition: CUGenericLoader.cpp:198
virtual void unloadAll()
Definition: CULoader.h:138
GenericBaseLoader * _internal
Definition: CUGenericLoader.h:361
Asset * load(std::string key, std::string source) override
Definition: CUGenericLoader.h:257
std::unordered_set< std::string > _aqueue
Definition: CUGenericLoader.h:186
virtual ~GenericLoader()
Definition: CUGenericLoader.h:552
virtual void stop()
Definition: CULoader.h:82
Definition: CULoader.h:237
static GenericLoader< T > * create()
Definition: CUGenericLoader.h:373
virtual T * load(std::string key, std::string source)
Definition: CULoader.h:310
void stop() override
Definition: CUGenericLoader.cpp:242
bool isActive() const
Definition: CULoader.h:92
size_t loadCount() const override
Definition: CUGenericLoader.h:441
virtual void loadAsync(std::string key, std::string source)
Definition: CULoader.h:111