space-game/src/utils/loadAsset.ts
Michael Mainguy 123b341ed7 Replace debugLog and console.* with loglevel logger
- Create centralized logger module (src/core/logger.ts)
- Replace all debugLog() calls with log.debug()
- Replace console.log() with log.info()
- Replace console.warn() with log.warn()
- Replace console.error() with log.error()
- Delete deprecated src/core/debug.ts
- Configure log levels: debug for dev, warn for production
- Add localStorage override for production debugging

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 05:24:18 -06:00

51 lines
1.9 KiB
TypeScript

import {DefaultScene} from "../core/defaultScene";
import {AbstractMesh, AssetContainer, LoadAssetContainerAsync} from "@babylonjs/core";
import log from "../core/logger";
type LoadedAsset = {
container: AssetContainer,
meshes: Map<string, AbstractMesh>,
}
export default async function loadAsset(file: string, theme: string = "default"): Promise<LoadedAsset> {
const assetPath = `/assets/themes/${theme}/models/${file}`;
log.debug(`[loadAsset] Loading: ${assetPath}`);
try {
const container = await LoadAssetContainerAsync(assetPath, DefaultScene.MainScene);
log.debug(`[loadAsset] ✓ Container loaded for ${file}`);
const map: Map<string, AbstractMesh> = new Map();
container.addAllToScene();
log.debug(`[loadAsset] Root nodes count: ${container.rootNodes.length}`);
if (container.rootNodes.length === 0) {
log.error(`[loadAsset] ERROR: No root nodes found in ${file}`);
return {container: container, meshes: map};
}
for (const mesh of container.rootNodes[0].getChildMeshes(false)) {
log.info(mesh.id, mesh);
// Ensure mesh is visible and enabled
mesh.isVisible = true;
mesh.setEnabled(true);
// Fix emissive materials to work without lighting
if (mesh.material) {
const material = mesh.material as any;
// Disable lighting on materials so emissive works without light sources
if (material.disableLighting !== undefined) {
material.disableLighting = true;
}
}
map.set(mesh.id, mesh);
}
log.debug(`[loadAsset] ✓ Loaded ${map.size} meshes from ${file}`);
return {container: container, meshes: map};
} catch (error) {
log.error(`[loadAsset] FAILED to load ${assetPath}:`, error);
throw error;
}
}