diff options
| author | 3gg <3gg@shellblade.net> | 2024-02-25 15:07:53 -0800 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2024-02-25 15:07:53 -0800 |
| commit | fd3cbac7a9b47936d28cfcf11b7781c563779129 (patch) | |
| tree | b76c901518c7a2a5c593b9f99a8fee34d89db345 | |
| parent | b5008978a7b5b23358c2a6980b5a1eb2d33bf08d (diff) | |
Log asset load failures.
| -rw-r--r-- | gfx/src/asset/asset_cache.c | 53 |
1 files changed, 52 insertions, 1 deletions
diff --git a/gfx/src/asset/asset_cache.c b/gfx/src/asset/asset_cache.c index 0a9b1f2..1d64d66 100644 --- a/gfx/src/asset/asset_cache.c +++ b/gfx/src/asset/asset_cache.c | |||
| @@ -13,8 +13,54 @@ | |||
| 13 | #include <gfx_assert.h> | 13 | #include <gfx_assert.h> |
| 14 | 14 | ||
| 15 | #include <cstring.h> | 15 | #include <cstring.h> |
| 16 | #include <error.h> | ||
| 16 | #include <log/log.h> | 17 | #include <log/log.h> |
| 17 | 18 | ||
| 19 | static void log_model_load_failure(const LoadModelCmd* cmd) { | ||
| 20 | assert(cmd); | ||
| 21 | |||
| 22 | switch (cmd->origin) { | ||
| 23 | case AssetFromFile: | ||
| 24 | log_error("Failed to load model: %s", mstring_cstr(&cmd->filepath)); | ||
| 25 | break; | ||
| 26 | case AssetFromMemory: | ||
| 27 | log_error("Failed to load model: %p", cmd->data); | ||
| 28 | break; | ||
| 29 | } | ||
| 30 | } | ||
| 31 | |||
| 32 | static void log_texture_load_failure(const LoadTextureCmd* cmd) { | ||
| 33 | assert(cmd); | ||
| 34 | |||
| 35 | switch (cmd->origin) { | ||
| 36 | case AssetFromFile: | ||
| 37 | switch (cmd->type) { | ||
| 38 | case LoadTexture: | ||
| 39 | log_error( | ||
| 40 | "Failed to load texture: %s", | ||
| 41 | mstring_cstr(&cmd->data.texture.filepath)); | ||
| 42 | break; | ||
| 43 | case LoadCubemap: | ||
| 44 | log_error( | ||
| 45 | "Failed to load cubemap texture: %s", | ||
| 46 | mstring_cstr(&cmd->data.cubemap.filepaths.filepath_pos_x)); | ||
| 47 | break; | ||
| 48 | } | ||
| 49 | break; | ||
| 50 | case AssetFromMemory: | ||
| 51 | switch (cmd->type) { | ||
| 52 | case LoadTexture: | ||
| 53 | log_error("Failed to load texture: %p", cmd->data.texture.data); | ||
| 54 | break; | ||
| 55 | case LoadCubemap: | ||
| 56 | log_error( | ||
| 57 | "Failed to load texture: %p", cmd->data.cubemap.buffers.data_pos_x); | ||
| 58 | break; | ||
| 59 | } | ||
| 60 | break; | ||
| 61 | } | ||
| 62 | } | ||
| 63 | |||
| 18 | static Hash calc_model_hash(const LoadModelCmd* cmd) { | 64 | static Hash calc_model_hash(const LoadModelCmd* cmd) { |
| 19 | assert(cmd); | 65 | assert(cmd); |
| 20 | switch (cmd->origin) { | 66 | switch (cmd->origin) { |
| @@ -166,8 +212,11 @@ Model* gfx_load_model(Gfx* gfx, const LoadModelCmd* cmd) { | |||
| 166 | .model = model, | 212 | .model = model, |
| 167 | }; | 213 | }; |
| 168 | log_model_loaded(cmd); | 214 | log_model_loaded(cmd); |
| 215 | return clone_model(model); | ||
| 216 | } else { | ||
| 217 | log_model_load_failure(cmd); | ||
| 218 | return 0; | ||
| 169 | } | 219 | } |
| 170 | return clone_model(model); | ||
| 171 | } | 220 | } |
| 172 | 221 | ||
| 173 | const Texture* gfx_load_texture(Gfx* gfx, const LoadTextureCmd* cmd) { | 222 | const Texture* gfx_load_texture(Gfx* gfx, const LoadTextureCmd* cmd) { |
| @@ -193,6 +242,8 @@ const Texture* gfx_load_texture(Gfx* gfx, const LoadTextureCmd* cmd) { | |||
| 193 | .hash = hash, | 242 | .hash = hash, |
| 194 | .texture = texture, | 243 | .texture = texture, |
| 195 | }; | 244 | }; |
| 245 | } else { | ||
| 246 | log_texture_load_failure(cmd); | ||
| 196 | } | 247 | } |
| 197 | return texture; | 248 | return texture; |
| 198 | } | 249 | } |
