diff options
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/asset_manager.cc | 13 | ||||
| -rw-r--r-- | src/util/asset_manager.h | 3 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/util/asset_manager.cc b/src/util/asset_manager.cc index 9294560..ce495ac 100644 --- a/src/util/asset_manager.cc +++ b/src/util/asset_manager.cc @@ -23,6 +23,7 @@ struct ProcGenEntry { static const ProcGenEntry kAssetManagerProcGenFuncs[] = { {"gen_noise", procedural::gen_noise}, + {"gen_perlin", procedural::gen_perlin}, {"gen_grid", procedural::gen_grid}, {"make_periodic", procedural::make_periodic}, }; @@ -103,8 +104,16 @@ const uint8_t* GetAsset(AssetId asset_id, size_t* out_size) { *out_size = 0; return nullptr; } - proc_gen_func_ptr(generated_data, width, height, source_record.proc_params, - source_record.num_proc_params); + if (!proc_gen_func_ptr(generated_data, width, height, + source_record.proc_params, + source_record.num_proc_params)) { + fprintf(stderr, "Error: Procedural generation failed for asset: %s\n", + source_record.proc_func_name_str); + delete[] generated_data; + if (out_size) + *out_size = 0; + return nullptr; + } cached_record.data = generated_data; cached_record.size = data_size; diff --git a/src/util/asset_manager.h b/src/util/asset_manager.h index 062cd0f..964b7af 100644 --- a/src/util/asset_manager.h +++ b/src/util/asset_manager.h @@ -10,7 +10,8 @@ enum class AssetId : uint16_t; // Forward declaration // Type for procedural generation functions: (buffer, width, height, params, // num_params) -typedef void (*ProcGenFunc)(uint8_t*, int, int, const float*, int); +// Returns true on success, false on failure. +typedef bool (*ProcGenFunc)(uint8_t*, int, int, const float*, int); struct AssetRecord { const uint8_t* data; // Pointer to asset data (static or dynamic) |
