All checks were successful
Build / build (push) Successful in 1m18s
## Blender Export Utilities - Add blenderExporter utility with ESM support (tsx) - Create CLI script for exporting .blend files to GLB - Add npm scripts: export-blend, export-blend:watch, export-blend:batch - Support watch mode, batch export, and Draco compression - Complete documentation in docs/BLENDER_EXPORT.md - Add loadAsset utility helper ## Asset Structure Reorganization - Move models to themeable structure: public/assets/themes/default/models/ - Add themes/ directory with source .blend files - Remove old model files from public/ root - Consolidate to asteroid.glb, base.glb, ship.glb ## Level Configuration Improvements - Make startBase optional in LevelConfig interface - Update LevelGenerator to not generate startBase data by default - Update LevelDeserializer to handle optional startBase - Update Level1 to handle null startBase - Fix levelEditor to remove startBase generation references - Update validation to treat startBase as optional ## Dependencies - Add tsx for ESM TypeScript execution - Add @types/node for Node.js types - Update package-lock.json This enables modding support with themeable assets and simplifies level generation by making base stations optional. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
15 lines
670 B
TypeScript
15 lines
670 B
TypeScript
import {DefaultScene} from "../defaultScene";
|
|
import {AbstractMesh, AssetContainer, LoadAssetContainerAsync} from "@babylonjs/core";
|
|
|
|
export type LoadedAsset = {
|
|
container: AssetContainer,
|
|
meshes: Map<string, AbstractMesh>,
|
|
}
|
|
export default async function loadAsset(file: string, theme: string = "default"): Promise<LoadedAsset> {
|
|
const container = await LoadAssetContainerAsync(`assets/themes/${theme}/models/${file}`, DefaultScene.MainScene);
|
|
const map: Map<string, AbstractMesh> = new Map();
|
|
for (const mesh of container.rootNodes[0].getChildMeshes(false)) {
|
|
map.set(mesh.id, mesh);
|
|
}
|
|
return {container: container, meshes: map};
|
|
} |