 |
CUGL 1.3
Cornell University Game Library
|
48 #ifndef __CU_ASSET_MANAGER_H__
49 #define __CU_ASSET_MANAGER_H__
50 #include <cugl/util/CUThreadPool.h>
51 #include <cugl/util/CUDebug.h>
52 #include <cugl/assets/CULoader.h>
88 #pragma mark Internal Helpers
91 std::unordered_map<size_t,std::shared_ptr<BaseLoader>>
_handlers;
123 bool readCategory(
size_t hash,
const std::shared_ptr<JsonValue>& json);
158 void readCategory(
size_t hash,
const std::shared_ptr<JsonValue>& json,
159 LoaderCallback callback);
173 bool purgeCategory(
size_t hash,
const std::shared_ptr<JsonValue>& json);
205 #pragma mark Constructors
262 #pragma mark Static Constructors
275 static std::shared_ptr<AssetManager>
alloc() {
276 std::shared_ptr<AssetManager> result = std::make_shared<AssetManager>();
277 return (result->init() ? result :
nullptr);
302 #pragma mark Loader Management
316 bool attach(
const std::shared_ptr<BaseLoader>& loader) {
317 size_t hash =
typeid(T).hash_code();
325 loader->setManager(
this);
338 size_t hash =
typeid(T).hash_code();
353 size_t hash =
typeid(T).hash_code();
358 it->second->setThreadPool(
nullptr);
359 it->second =
nullptr;
372 it->second =
nullptr;
385 std::shared_ptr<Loader<T>>
access()
const {
386 size_t hash =
typeid(T).hash_code();
389 CUAssertLog(
false,
"No loader assigned for given type");
393 return std::dynamic_pointer_cast<
Loader<T>>(it->second);
397 #pragma mark Progress Monitoring
451 return (size == 0 ? 0.0f : ((
float)
loadCount())/size);
456 #pragma mark Loading/Unloading
469 std::shared_ptr<T>
get(
const std::string& key)
const {
470 size_t hash =
typeid(T).hash_code();
473 CUAssertLog(
false,
"No loader assigned for given type");
477 std::shared_ptr<Loader<T>> loader = std::dynamic_pointer_cast<
Loader<T>>(it->second);
478 return loader->
get(key);
493 std::shared_ptr<T>
get(
const char* key)
const {
494 return get<T>(std::string(key));
517 bool load(
const std::string& key,
const std::string& source) {
518 size_t hash =
typeid(T).hash_code();
521 std::shared_ptr<Loader<T>> loader = std::dynamic_pointer_cast<
Loader<T>>(it->second);
522 return loader->
load(key,source);
525 CUAssertLog(
false,
"No loader assigned for given type");
549 bool load(
const char* key,
const std::string& source) {
550 return load<T>(std::string(key),source);
573 bool load(
const std::string& key,
const char* source) {
574 return load<T>(key,std::string(source));
597 bool load(
const char* key,
const char* source) {
598 return load<T>(std::string(key),std::string(source));
626 void loadAsync(
const std::string& key,
const std::string& source, LoaderCallback callback) {
627 size_t hash =
typeid(T).hash_code();
630 it->second->loadAsync(key,source,callback);
634 CUAssertLog(
false,
"No loader assigned for given type");
662 void loadAsync(
const char* key,
const std::string& source, LoaderCallback callback) {
663 loadAsync<T>(std::string(key),source,callback);
691 void loadAsync(
const std::string& key,
const char* source, LoaderCallback callback) {
692 loadAsync<T>(key,std::string(source),callback);
720 void loadAsync(
const char* key,
const char* source, LoaderCallback callback) {
721 loadAsync<T>(std::string(key),std::string(source),callback);
740 size_t hash =
typeid(T).hash_code();
743 it->second->unload(key);
747 CUAssertLog(
false,
"No loader assigned for given type");
766 unload<T>(std::string(key));
779 it->second->unloadAll();
784 #pragma mark Directory Support
900 void loadDirectoryAsync(
const std::shared_ptr<JsonValue>& json, LoaderCallback callback);
std::shared_ptr< Loader< T > > access() const
Definition: CUAssetManager.h:385
void loadDirectoryAsync(const char *directory, LoaderCallback callback)
Definition: CUAssetManager.h:968
static std::shared_ptr< AssetManager > alloc()
Definition: CUAssetManager.h:275
std::shared_ptr< T > get(const std::string &key) const
Definition: CUAssetManager.h:469
bool unloadDirectory(const char *directory)
Definition: CUAssetManager.h:1006
Definition: CULoader.h:749
AssetManager()
Definition: CUAssetManager.h:213
bool load(const char *key, const std::string &source)
Definition: CUAssetManager.h:549
void loadAsync(const std::string &key, const std::string &source, LoaderCallback callback)
Definition: CUAssetManager.h:626
bool unloadDirectory(const std::shared_ptr< JsonValue > &json)
std::unordered_map< size_t, std::shared_ptr< BaseLoader > > _handlers
Definition: CUAssetManager.h:91
void loadDirectoryAsync(const std::shared_ptr< JsonValue > &json, LoaderCallback callback)
std::shared_ptr< T > get(const char *key) const
Definition: CUAssetManager.h:493
void unload(const std::string &key)
Definition: CUAssetManager.h:739
bool load(const std::string &key, const char *source)
Definition: CUAssetManager.h:573
std::shared_ptr< T > get(const std::string &key) const
Definition: CULoader.h:817
bool detach()
Definition: CUAssetManager.h:352
bool complete() const
Definition: CUAssetManager.h:434
bool load(const char *key, const char *source)
Definition: CUAssetManager.h:597
bool loadDirectory(const std::shared_ptr< JsonValue > &json)
bool load(const std::string &key, const std::string &source)
Definition: CULoader.h:370
void loadAsync(const std::string &key, const char *source, LoaderCallback callback)
Definition: CUAssetManager.h:691
bool loadDirectory(const char *directory)
Definition: CUAssetManager.h:864
std::atomic< bool > _wait
Definition: CUAssetManager.h:99
~AssetManager()
Definition: CUAssetManager.h:218
bool load(const std::string &key, const std::string &source)
Definition: CUAssetManager.h:517
bool purgeCategory(size_t hash, const std::shared_ptr< JsonValue > &json)
bool readCategory(size_t hash, const std::shared_ptr< JsonValue > &json)
void loadAsync(const char *key, const std::string &source, LoaderCallback callback)
Definition: CUAssetManager.h:662
bool isAttached()
Definition: CUAssetManager.h:337
bool attach(const std::shared_ptr< BaseLoader > &loader)
Definition: CUAssetManager.h:316
std::shared_ptr< ThreadPool > _workers
Definition: CUAssetManager.h:93
bool _preload
Definition: CUAssetManager.h:96
void unload(const char *key)
Definition: CUAssetManager.h:765
Definition: CUAssetManager.h:83
float progress() const
Definition: CUAssetManager.h:449
void unloadAll()
Definition: CUAssetManager.h:777
void loadAsync(const char *key, const char *source, LoaderCallback callback)
Definition: CUAssetManager.h:720
void detachAll()
Definition: CUAssetManager.h:370