#ifndef _fencer_assets_h #define _fencer_assets_h #include "vmath.h" #include "asset.h" #include typedef void(*AssetDestructor)(void*); // Prepare asset management. // Other asset management functions are invalid until assets_init is called. void assets_init(); // Clean up and shut down assets management. void assets_clean(); // Clear all loaded assets void assets_reset(); // Submit an object to be managed as an asset. If the destructor is NULL, free will be used. // Returns zero if asset could not be stored. asset_id store_asset(Asset drop); // Get an asset already submitted to the asset manager. // Returns 0 if asset does not exist. void* get_asset(asset_id id); // Get an asset id, returns 0 if no such asset exists. asset_id get_asset_id(void* asset); // Free an asset managed by the asset manager using it's destructor, or free(..) if NULL. void free_asset(asset_id id); // load a file's contents into json cJSON* load_json_from_file(const char* filepath); // Get the length of a cJSON array size_t json_array_len(cJSON* array); static inline Vector json_array_to_vector(cJSON* array) { return (Vector) { (float)cJSON_GetArrayItem(array, 0)->valuedouble, (float)cJSON_GetArrayItem(array, 1)->valuedouble, }; } static inline IVector json_array_to_ivector(cJSON* array) { return (IVector) { cJSON_GetArrayItem(array, 0)->valueint, cJSON_GetArrayItem(array, 1)->valueint }; } #endif // !_fencer_assets_h