summaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/util')
-rw-r--r--src/util/asset_manager.cc1
-rw-r--r--src/util/asset_manager.h40
-rw-r--r--src/util/asset_manager_dcl.h16
-rw-r--r--src/util/asset_manager_utils.h32
4 files changed, 52 insertions, 37 deletions
diff --git a/src/util/asset_manager.cc b/src/util/asset_manager.cc
index c12331c..650f220 100644
--- a/src/util/asset_manager.cc
+++ b/src/util/asset_manager.cc
@@ -2,6 +2,7 @@
// It implements the generic asset retrieval logic with runtime caching.
#include "util/asset_manager.h"
+#include "util/asset_manager_utils.h"
#if defined(USE_TEST_ASSETS)
#include "test_assets.h"
#else
diff --git a/src/util/asset_manager.h b/src/util/asset_manager.h
index 0c2cc63..ed7f1aa 100644
--- a/src/util/asset_manager.h
+++ b/src/util/asset_manager.h
@@ -1,17 +1,9 @@
// This file is part of the 64k demo project.
-// It defines the core structures and interface for asset management.
-// Used for efficient retrieval of embedded binary resources.
+// Core asset management interface for basic asset retrieval.
+// For typed helpers (TextureAsset, MeshAsset), include asset_manager_utils.h
#pragma once
-#include <cstddef>
-#include <cstdint>
-
-enum class AssetId : uint16_t; // Forward declaration
-
-// Type for procedural generation functions: (buffer, width, height, params,
-// num_params)
-// Returns true on success, false on failure.
-typedef bool (*ProcGenFunc)(uint8_t*, int, int, const float*, int);
+#include "asset_manager_dcl.h"
struct AssetRecord {
const uint8_t* data; // Pointer to asset data (static or dynamic)
@@ -32,29 +24,3 @@ struct AssetRecord {
// - 'out_size' returns the original asset size (excluding the null terminator).
const uint8_t* GetAsset(AssetId asset_id, size_t* out_size = nullptr);
void DropAsset(AssetId asset_id, const uint8_t* asset);
-
-struct TextureAsset {
- int width;
- int height;
- const uint8_t* pixels;
-};
-
-struct MeshVertex {
- float p[3];
- float n[3];
- float u[2];
-};
-
-struct MeshAsset {
- uint32_t num_vertices;
- const MeshVertex* vertices;
- uint32_t num_indices;
- const uint32_t* indices;
-};
-
-// Helper to retrieve and parse a simple texture asset (from packer's
-// [w][h][pixels] format)
-TextureAsset GetTextureAsset(AssetId asset_id);
-
-// Helper to retrieve and parse a mesh asset (from packer's binary format)
-MeshAsset GetMeshAsset(AssetId asset_id);
diff --git a/src/util/asset_manager_dcl.h b/src/util/asset_manager_dcl.h
new file mode 100644
index 0000000..bf618f0
--- /dev/null
+++ b/src/util/asset_manager_dcl.h
@@ -0,0 +1,16 @@
+// This file is part of the 64k demo project.
+// Forward declarations for asset management system.
+// Use this header when you only need AssetId type.
+
+#pragma once
+#include <cstddef>
+#include <cstdint>
+
+enum class AssetId : uint16_t; // Forward declaration
+
+// Type for procedural generation functions: (buffer, width, height, params,
+// num_params)
+// Returns true on success, false on failure.
+typedef bool (*ProcGenFunc)(uint8_t*, int, int, const float*, int);
+
+struct AssetRecord; // Forward declaration (opaque)
diff --git a/src/util/asset_manager_utils.h b/src/util/asset_manager_utils.h
new file mode 100644
index 0000000..b738692
--- /dev/null
+++ b/src/util/asset_manager_utils.h
@@ -0,0 +1,32 @@
+// This file is part of the 64k demo project.
+// Typed asset helpers for specialized asset retrieval.
+// Only include this if you need TextureAsset or MeshAsset structs.
+
+#pragma once
+#include "asset_manager.h"
+
+struct TextureAsset {
+ int width;
+ int height;
+ const uint8_t* pixels;
+};
+
+struct MeshVertex {
+ float p[3];
+ float n[3];
+ float u[2];
+};
+
+struct MeshAsset {
+ uint32_t num_vertices;
+ const MeshVertex* vertices;
+ uint32_t num_indices;
+ const uint32_t* indices;
+};
+
+// Helper to retrieve and parse a simple texture asset (from packer's
+// [w][h][pixels] format)
+TextureAsset GetTextureAsset(AssetId asset_id);
+
+// Helper to retrieve and parse a mesh asset (from packer's binary format)
+MeshAsset GetMeshAsset(AssetId asset_id);