ECS query caching + viewport gizmo GPU-driven + fx-math standalone
The engine's ECS layer now caches archetype-matched queries, yielding up to 3× faster iteration on large scenes; viewport gizmos (translate/rotate/scale handles) have been refactored from CPU-side immediate-mode to a GPU-driven instanced pipeline, eliminating per-frame JS overhead; the shared math library has been extracted into a standalone fx-math package for reuse across engine, editor, and CLI sub-repos; the material system supports hot-reload so PBR tweaks appear instantly without re-entering Play mode; and the scene hierarchy panel now handles multi-root drag-and-drop for bulk entity reorganization.
Engine: ECS query caching with archetype indexing
The ECS runtime now caches archetype-matched component queries across frames. Previously, every world.query(Position, Velocity) call performed a full archetype scan each tick. The engine now builds an archetype index on first query and invalidates only when archetypes are added or removed — a rare event in most gameplay loops. On scenes with 10k+ entities, iteration throughput improves up to 3× in benchmarks.
Editor: Viewport gizmos refactored to GPU-driven pipeline
The translate, rotate, and scale gizmos in the 3D viewport have been rewritten from a CPU-side immediate-mode canvas overlay to a GPU-driven instanced rendering pipeline. Each gizmo handle is now a single instanced draw call with depth-tested picking via a color-ID framebuffer. This eliminates the per-frame JavaScript overhead that previously caused noticeable hitching when manipulating objects in dense scenes.
Sub-repo: fx-math extracted as standalone package
The math primitives (Vec2, Vec3, Vec4, Mat4, Quat, AABB, Ray, etc.) that were previously duplicated across the engine core, editor, and CLI packages have been extracted into a standalone fx-math package. All three sub-repos now depend on this single source of truth, eliminating drift between engine-side and editor-side math and reducing total bundle size by ~40 KB.
Engine: Material system hot-reload
Editing PBR material parameters (albedo, roughness, metallic, normal map, etc.) in the Inspector now takes effect immediately in the viewport without needing to stop and restart Play mode. The engine watches material asset file handles and triggers a GPU resource re-upload on change. This tightens the artist iteration loop significantly — tweak a roughness slider, see the result in real time.
Editor: Scene hierarchy multi-root drag-and-drop
The scene hierarchy panel now supports selecting and dragging multiple root-level entities at once. Previously, only single-entity drag was supported, making large-scale scene reorganization tedious. You can now Ctrl+click or Shift+click to multi-select, then drag the entire selection to reparent under a new node or reorder within the hierarchy.