Blacksite/docs/editor/roadmap.md
Rbanh 2054fa2558
Some checks are pending
CI / Format, lint, test, build (push) Waiting to run
Advance M0 scene and rendering foundations
2026-06-06 03:50:03 -04:00

8.3 KiB
Raw Blame History

Editor Framework Roadmap

Phased work for the in-process editor (crates/editor). Status reflects the current codebase; update this file when closing a phase.

Production editor program (complete — P5 partial)

Goal: Zero-debt authoring loop — hydration modules, mandatory ActorKind, actor inspector only, schema v2 migrations. See ADR 00090012 and .cursor/plans/editor_rendering_and_ux_*.plan.md.

Phase Status Notes
P0 Hydration + lighting Done shared/hydration/*, strip-on-save, schema v2 migrate, live ambient/sun, Rendering Diagnostics
P1 Actor model Done ActorKind, validate_actor, history snapshots, ADRs 00090012
P2 Actor inspector Done ui/actor_inspector/; removed DefaultInspectorConfigPlugin + ECS dump on Inspector tab
P3 Hierarchy tree + sibling order Done HierarchySiblingIndex, tree outliner, DnD reorder, visibility/lock
P4 Viewport modes Done Lit / Unlit / Collider toolbar, light gizmo overlays, Tab pick cycle
P5 Assets + prefabs Partial MaterialAsset, assets/thumbnails/sources/; prefab overrides v1; delete legacy fbx_preview when cache fully unified
P6 Extensibility + CI Done ActorInspectorSection, palette commands, BRP policy, hydration/scene CI
P7 Docs + debt audit Done ADRs 00090012, debt-audit.md, CI matrix

M1.5 — Foundations

Goal: Shared project settings, WYSIWYG rendering profile, and PIE possess/eject.

Item Status Notes
settings crate + assets/project.ron Done Serde types, ProjectSettingsPlugin, SimTuning
Project Settings panel (settings_ui.rs) Done Edit → Project Settings; draft buffer + Apply / Save / Revert
Shared camera FX (ProjectRenderCamera) Done Unified viewport target + editor/player cameras
PIE possess/eject (F8) Done SimEnabled while playing; input only when possessed
Player-only PIE snapshot Done Scene edits retained on stop; not full-scene rollback
Split UI vs data Done Panel open state in editor; paths/dirty in ProjectSettingsIo

Phase 1 — Project workspace

Goal: Treat the repo as a project root with user vs project prefs.

Item Status Notes
ProjectWorkspace resource Done Root, settings path, dirty flags
User prefs (~/.config/bevy-fps/editor_prefs.ron) Done Recent levels, load on startup
Window title from project + scene Done project_io::window_title
New/Open project menu Done File → Project; distinct from level New/Open
Dock layout persistence Done RON in editor_prefs.ron; View → Reset Layout

Phase 2 — Viewport excellence

Goal: Viewport parity with DCC-style navigation aids.

Item Status Notes
viewport.rs module Done Physical viewport, ground raycast, snap
Grid overlay (Ctrl+G) Done Tied to snap increment
Focus selection (F) Done Frames editor camera on selection
Camera bookmarks Done Ctrl+Shift+1/2 + viewport buttons
Scene visualizers Done Colliders, lights, spawns, prefab/model anchors, Project Sun, runtime player/camera markers
Viewport Lit / Unlit / Collider modes Done EditorViewportMode + toolbar; unlit material override
Clean game-view overlay Done G hides editor chrome, grid, visualizers, proxies, gizmos, and selection outlines
Tab cycle overlapping picks Done ViewportPickStack + Tab in viewport
Multi-viewport Scaffolded Primary viewport state is separated from render ownership; secondary viewports remain future work

Phase 2b — Advanced rendering

Goal: Tiered GI + local post-process volumes with full editor workflow.

Item Status Notes
ADR 0013 + GiMode / volume schema Done settings, shared, game_hot resolver
Post-process volume authoring + undo Done SetPostProcessVolume, catalog spawn, scene save
Rendering panel (Active / Project / Volumes) Done Replaces Diagnostics-only view
Volume inspector inherit/override Done post_process_volume_ui.rs
Viewport GI badge + volume HUD + gizmos Done viewport_chrome, visualizers
Solari + Forward fallback Done bevy_solari, RT fallback, point/spot LightDesc disabled while Solari is active
Post FX + rendering profile assets Done assets/post_fx/, assets/rendering_profiles/
Showcase level + docs Done rendering_showcase.scn.ron, rendering.md

Phase 3 — PIE polish

Goal: Predictable play sessions while editing.

Item Status Notes
Unified render-to-texture viewport Done Avoids HDR/atmosphere breakage; player/editor cameras share one target
Game input focus gating Done GameInputFocused while Play-possessed
Gameplay hot reload (game_hot dylib) Done --features dev; see ADR 0004

Phase 4 — Inspector & history

Goal: Authoring ergonomics at component granularity.

Item Status Notes
Hierarchy search filter Done Filter box in Hierarchy tab
Multi-select Done Hierarchy + viewport additive; multi-entity gizmo delta
Per-field undo Partial Typed inspectors + material/light/rigid-body/collider/primitive/static-mesh
Add/remove components Done Registry-driven Inspector Add Component footer

Phase 4b — Editor chrome (follow-up)

Goal: DCC-style hierarchy/inspector/asset browser depth (after shell polish).

Item Status Notes
Dark pro theme + Phosphor icons Done ui/theme.rs, ui/fonts.rs, high-contrast selection states, overlay toolbars
Fixed status bar Done Replaces Status dock tab
Viewport overlay toolbar Done Gizmo/grid/focus/options/game-view toggle (play moved to main toolbar)
Main toolbar transport Done Centered Play/Pause/Stop/Eject; taller bar (~52px)
Pause in PIE Done PlayPaused freezes sim while staying in Play (F6)
Dock layout persistence Done ui/layout.rs + UserPreferences.dock_layout
Hierarchy tree + type icons Partial Authored + generated/runtime rows with icons; expand/collapse state still future
Actor inspector (authoring-only) Done Transform + LightDesc/MaterialDesc/…; no bevy_inspector dump
Inspector component headers Done Header + Transform + component cards + Add Component footer
Asset browser project/file views Done Folder tree, breadcrumb, search/filter/sort, grid/list, details pane, texture + model thumbnails

Phase 5 — Asset pipeline

Goal: Stable asset IDs and import metadata (aligns M5).

Item Status Notes
asset_db.rs registry Done Stable UUIDs by path; import settings in details
Model import formats Done glTF/GLB + FBX (binary); .fbm sidecar copy on import
Thumbnails Done Textures via asset load; glTF albedo fast-path; FBX/untextured models via offscreen studio
Import settings per asset Done Scale/collider/LOD in registry + details pane
Prefab workflow Partial PrefabInstance, save-as-prefab, unpack; Revert Transform v1 in inspector; full override apply/revert future

Phase 6 — Extensibility

Goal: Third-party and game-specific panels without editing core UI.

Item Status Notes
ActorInspectorSection registry Done ext/extensibility.rs + game_inspector.rs
Command registry Done Play, lighting reset, group, focus
Command palette (Ctrl+P) Done Executes registered commands
EditorPlugin trait Done register_editor_plugin; dogfood panel from game::editor_ext
Undo: SetActorKind, add/remove component Done SetActorKind + AddComponent / RemoveComponent
BRP authoring-only policy Done brp.md
CI: shared hydration, scene migration + allowlist Done See .github/workflows/ci.yml

Documentation maintenance

When you ship editor behavior changes:

  1. Update this roadmap status table.
  2. Update architecture.md if subsystems or data flow change.
  3. Update root README controls and editor README module index.