- Add level 1 JSON with 4 asteroids and difficulty config
- Add mission directory with recruit and fuel management missions
- Update base.glb model for space station
- Clean up unused helper functions in planetTextures.ts
- Refactor starBase.ts position handling to use container root node
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Major Changes:
- Fix Level1 double initialization by deferring initialize() call
- Removed initialize() from Level1 constructor
- Main.ts now explicitly calls initialize() after registering ready observable
- Added error logging for double initialization detection
- Refactor Ship to use loadAsset utility and new GLB structure
- Changed from SceneLoader.ImportMeshAsync to loadAsset pattern
- Ship constructor no longer calls initialize() - must be called explicitly
- Updated physics to use transformNode from GLB container
- Adjusted control mappings for yaw/pitch/roll (inverted signs)
- Reduced force multipliers for better control feel
- Remove MaterialFactory pattern
- Deleted src/materialFactory.ts
- LevelDeserializer now creates PBRMaterial directly for planets/sun
- Removed texture quality settings from gameConfig
- Cleaned up settings UI to remove texture quality controls
- Fix UI element hiding when entering VR
- Editor and Settings links now properly hidden on level start
- Update GLB models for new asset structure
- Updated ship.glb and base.glb models
- Modified loadAsset to work with container transformNodes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
## 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>