From e281b6ff0884a5b4af8aa2ca79fd01141bc2005b Mon Sep 17 00:00:00 2001 From: skal Date: Fri, 6 Feb 2026 10:16:50 +0100 Subject: refactor(build): Split asset_manager.h into dcl/core/utils headers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split monolithic asset_manager.h (61 lines) into 3 focused headers: - asset_manager_dcl.h: Forward declarations (AssetId, ProcGenFunc) - asset_manager.h: Core API (GetAsset, DropAsset, AssetRecord) - asset_manager_utils.h: Typed helpers (TextureAsset, MeshAsset) Updated 17 source files to use appropriate headers: - object.h: Uses dcl.h (only needs AssetId forward declaration) - 7 files using TextureAsset/MeshAsset: Use utils.h - 10 files using only GetAsset(): Keep asset_manager.h Performance improvement: - Before: Touch asset_manager.h → 4.82s (35 files rebuild) - After: Touch asset_manager_utils.h → 2.01s (24 files rebuild) - Improvement: 58% faster for common workflow (tweaking mesh/texture helpers) Note: Touching base headers (dcl/core) still triggers ~33 file rebuilds due to object.h dependency chain. Further optimization would require reducing object.h's footprint (separate task). Files changed: - Created: asset_manager_dcl.h, asset_manager_utils.h - Modified: asset_manager.h (removed structs), asset_manager.cc - Updated: object.h, visual_debug.h, renderer_mesh.cc, flash_cube_effect.cc, hybrid_3d_effect.cc, test files --- src/util/asset_manager_utils.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/util/asset_manager_utils.h (limited to 'src/util/asset_manager_utils.h') 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); -- cgit v1.2.3