Skip to content

Dev - #5

Open
yelouafi wants to merge 16 commits into
mainfrom
dev
Open

Dev#5
yelouafi wants to merge 16 commits into
mainfrom
dev

Conversation

@yelouafi

@yelouafi yelouafi commented May 1, 2026

Copy link
Copy Markdown
Collaborator

No description provided.

Nagato and others added 16 commits February 9, 2026 00:40
- Add TextureAssetLoader (wraps THREE.TextureLoader)
- Add MeshMaterial component with texture asset ref
- Add textureResolveSystem to apply loaded textures to mesh materials
- Wire up texture loader and system in editor setup

Uses a separate MeshMaterial component to avoid the one-asset-ref-per-component
constraint in VisualRenderer (which already has an asset ref in the model variant).
Replace createModelResolveSystem and createTextureResolveSystem with a
single createAssetResolveSystem that dispatches to per-type handlers
via AssetResolver.

- AssetResolver class with register() for AssetTypeHandler instances
- createAssetResolveSystem uses peek() for all resolution (no drainReady)
- createModelHandler() and createTextureHandler() factory functions
- Legacy wrappers preserved (deprecated) so existing tests pass as-is
- Editor setup updated to use unified system
- All 379 tests pass
feat: add texture support for mesh materials
feat: generic asset resolve pipeline with AssetResolver
refactor: decouple Geometry from VisualRenderer into own component
…n-only toolbar

- Add inline entity renaming via double-click in the scene tree with
  no-layout-shift input styling
- Add Meta component with entity names shown in the tree
- Split Save into Save (reuses file handle) and Save As (always picks new file)
- Use showOpenFilePicker for Load to enable Save-back-to-origin
- Switch toolbar buttons to icon-only with tooltips
- Fix background sync to process removals before additions (destroy+recreate)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… pipeline

- Fix SpotLight color schema (hex integer → colorTuple RGBA array)
- Fix editor RAF loop frame lifecycle (flushChanges → beginFrame/endFrame)
- Make ThreeBinding required in createLightSyncSystem, remove redundant
  transform sync that duplicated createTransformSyncSystem
- Extract generic asset request/resolve systems into src/engine/assets/systems.ts
  and rendering-specific handlers into src/engine/rendering/asset-handlers.ts
- Replace `as any` casts in lights.ts with `as ComponentType<LightRegistry>`
- Remove deprecated createModelResolveSystem/createTextureResolveSystem wrappers
- Add collapsible inspector sections and proper GPU resource disposal in binding

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…each Three.js

Changes made between frames (e.g. from the editor inspector's React
event handlers) were being cleared by beginFrame() before systems
could see them. Added a pending changes buffer that accumulates
between-frame mutations and merges them into the active change sets
at the start of the next frame.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…l+ModelVisual

Each visual type is now a self-contained component: MeshVisual bundles
geometry, color, and texture inline; ModelVisual holds just an asset ref.
This eliminates orphaned components, cross-component coupling in the sync
system, and simplifies variant transitions to remove+add.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Route AssetRef objects to a dedicated AssetRefField component that renders
a text input with a Browse button, opening the native file dialog filtered
by asset type. Selected files are loaded via Blob URLs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…r overhaul

Add dark/light theme switching with Sun/Moon toggle in title bar, CSS variable
overrides via [data-theme="light"], localStorage persistence, and flash-prevention
script. Introduce ThemeTweaker panel with per-theme defaults. Add AssetBrowser
with file picker, URI resolver, thumbnail cache, and asset type detection.
Refactor editor components to use new design system tokens and layout.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…only storage

Replace File System Access API + IndexedDB with a Hono server backed by
SQLite (scenes), local filesystem (assets), and inline job queue — all behind
swappable interfaces (IDatabase, IBlobStorage, IJobQueue).

Client changes: ProjectFolder now uses fetch(), AssetUriResolver returns
stable server URLs (no blob URL caching), Toolbar does server scene CRUD,
AssetRefField drops blob fallbacks. Vite proxies /api to :3001.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… sizes

- Track scene ID/name in EditorStore with localStorage persistence for auto-reload
- Auto-load last opened scene on startup via Toolbar
- Show scene name in header instead of static "Editor" label
- Auto-import external URLs (http/https) typed into AssetRef fields into blob storage
- Bump default typography sizes (header 11px, label 13px, body 14px)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant