void loom_asset_registerType(unsigned int type, LoomAssetDeserializeCallback deserializer, LoomAssetRecognizerCallback recognizer) { lmAssert(gAssetDeserializerMap.find(type) == UT_NPOS, "Asset type already registered!"); gAssetDeserializerMap.insert(type, deserializer); gRecognizerList.push_back(recognizer); }
static void regenerateSourceBreakpoints() { sourceBreakpoints.clear(); for (UTsize i = 0; i < breakpoints.size(); i++) { Breakpoint *bp = breakpoints.at(i); utFastStringHash fhash(bp->source); if (sourceBreakpoints.find(fhash) == UT_NPOS) { utArray<Breakpoint *> bps; sourceBreakpoints.insert(fhash, bps); } sourceBreakpoints.get(fhash)->push_back(bp); } }
// Helper to deserialize an asset, routing to the right function by type. static void *loom_asset_deserializeAsset(const utString &path, int type, int size, void *ptr, LoomAssetCleanupCallback *dtor) { lmAssert(gAssetDeserializerMap.find(type) != UT_NPOS, "Can't deserialize asset, no deserializer was set for type %x!", type); LoomAssetDeserializeCallback ladc = *gAssetDeserializerMap.get(type); if (ladc == NULL) { lmLogError(gAssetLogGroup, "Failed deserialize asset '%s', deserializer was not found for type '%x'!", path.c_str(), type); return NULL; } void *assetBits = ladc(ptr, size, dtor); if (assetBits == NULL) { lmLogError(gAssetLogGroup, "Failed to deserialize asset '%s', deserializer returned NULL for type '%x'!", path.c_str(), type); return NULL; } return assetBits; }