mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-06 02:00:46 +00:00
Closes the last "subsystem holds an Editor ref" holdout. SceneUtils now takes a SceneUtilsDeps surface (Phase 2 idiom — same shape as SaveManagerDeps, CameraControllerDeps, SelectionBridgeDeps, GizmoControllerDeps) instead of the full Editor. Deps surface — 9 single-purpose getters/callbacks for the cross- subsystem reaches the methods need: - Gizmo lifecycle (getGizmoControl/detachGizmo/removeGizmoFromScene) used by removeTransformControls - Outline pass (getOutlinePass) used by removeTransformControls - Selection (publishSelect/clearSelected) used by deleteObject and removeTransformControls - Camera name (getCameraName) used by deleteObject's ::CAM:: guard - Selected object lookup (getSelectedObject) used by getSelectedSum - Three scene root (getThreeScene) — provided for future use; the current deleteObject still goes through this.scene.scene since Scene is an injected primitive, not a subsystem Editor wires deps inline at SceneUtils construction. Constructor signature flips: was (editor, scene); now (scene, deps). Re P2 holdouts: ViewportController already used Deps (ViewportEngineRefs); roadmap memory was stale. PostProcessingPipeline and GizmoController.configure only take primitives (renderer/scene/ camera/dom), no subsystem coupling — converting them to options objects would be pure style and was deferred.