summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/asset_manager.cc13
-rw-r--r--src/util/asset_manager.h3
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)