The reflection adapter is not a standalone product; keep IPropertyAccess VM-free and house ReflectedPropertyModel next to the property contract. Co-authored-by: Cursor <cursoragent@cursor.com>
15 KiB
15 KiB
Editor module gap analysis
This document tracks authoring support by domain capability, rather than by hard-coded editor window. A domain counts as supported only when project code can discover/edit its stable data, route mutations through editor transactions, persist an authoring document, and obtain diagnostics or preview data where applicable.
Priority model
- P0 blocks the basic level-authoring loop or risks destructive/non-reversible edits.
- P1 is required for common content production but has a runtime API workaround.
- P2 improves specialist workflows or scale after the main content loop works.
Current coverage and gaps
| Domain modules | Existing reusable support | Important missing support | Priority |
|---|---|---|---|
scene, editor |
Stable hierarchy/full-TRS targets and multi-edit properties; conflict-aware SceneHost adapter preserving links; safe live component/link metadata inspector; registered module-owned component payload providers with stable generation/revision references, Schema/property routing, diagnostics, standard transactions and atomic undo; reusable bindings expose existing AudioSource, PhysicsCollider and Material targets without copying their state; prefab capture/instantiate/apply/revert, nested revision pins with cycle/stale diagnostics and refresh propagation, structured override badges and versioned snapshots | Runtime link-to-authoring-target lifecycle ownership and prefab nested-child materialization remain module/project concerns | P1 |
graphics, image, stylize, decal, daynight, weather |
Material document/instance properties, diagnostics, atomic staging/undo and reusable Scene component binding; candidate-first Material publishing keeps author state and a live Renderable3D synchronized, resolves all texture/shader assets before mutation and rejects unsupported legacy surface modes without partial writes; revision-safe isolated preview requests/publication; correctly bound/restored Graphics Canvas, bounded offscreen rendering, CPU readback and stale-artifact rejection; Material preview adapter; Light3D/environment property targets and runtime bridges; renderer-neutral point/directional light gizmo geometry; generation-safe AssetDB environment browser validating cubemap/cross/equirectangular metadata and readiness; stable Decal document with transform/projection/atlas/channel/lifetime Inspector, atomic snapshots, projection gizmo and candidate-first texture-resolved DecalManager generation replacement preserving the old decal on failure; ordered Stylize recipe document with stable pass IDs, dynamic metadata-driven parameter Inspector, enable/reorder/reset/undo, stage validation, atomic snapshots, candidate-compiled StyleRecipe generation and isolated revision-safe offscreen application | Non-legacy material pipeline sinks remain renderer/project supplied | P1 |
camera |
Stable camera-rig asset with multi-selection mode/framing/lens/smoothing Inspector, reversible structural/property operations, atomic versioned snapshots, stable cut/event/scalar timeline keys with reference and budget diagnostics, deterministic time scrub, renderer-neutral camera/target/frustum gizmos, and candidate-first publication into the full CameraController director runtime | Collision-world authoring and interactive viewport handles remain scene/host integrations | P1 |
spritestack |
Revisioned primitive/model bake presets, source/sampling/presentation Inspector, atomic snapshots and undo, decoded-memory budgets, candidate-first CPU layer baking, deterministic per-layer checksums and alpha coverage, asset-resolver boundary, stale-generation rejection and live SpriteStack2D publication | Atlas packing/export policy and filesystem naming remain importer/project concerns | P2 |
hd2d |
Revisioned Sprite3D/TileMap3D preset, texture/map AssetRef and frame-grid/animation/extrusion Inspector, atomic snapshots and undo, frame-range and UV validation, deterministic time scrub with flipped frame UV, candidate-first texture resolution and live Sprite3D/TileMap3D publication | Binding a TileMap3D preset to a specific Map document and viewport camera ownership remain scene/host concerns | P2 |
virtualgeometry |
Revisioned cluster/LOD importer preset, source AssetRef and preview-camera Inspector, mesh/index/CPU budgets, candidate-first deterministic cluster-DAG build, structural range/reference checks, generation checksum, stored/source geometry statistics, and logarithmic distance sweep reporting visible clusters, triangles and per-level histograms | GPU asset serialization/upload and platform-specific cache format remain backend/importer concerns | P2 |
animation, model3d, ik, avatar |
Runtime animation/retarget/constraint APIs; state graph and stable-id Clip timeline/events/masks; scrub/skeleton/retarget previews and runtime builder; renderer-neutral skeleton viewport overlay with stable bone names, hierarchy/finite/cycle/budget validation, joints/bone lines, selected local axes, constraint arcs, retarget coloring and mask intensity; real AnimSkeleton/AnimPose world-pose adapter; shared curve timeline; generation-qualified importer tickets reject stale/incomplete products before atomic AssetDB publication; stable image/Live2D/VRoid Avatar asset with layer and reflected-parameter Inspectors, expression channel graphs, reference-safe deletion, atomic snapshots, texture resolver boundary and candidate-first live AvatarInstance publication | Concrete source-format workers, Live2D/VRM plugin metadata discovery and renderer primitive presentation remain host/plugin concerns | P1 |
sceneloader |
Revisioned scene-import asset with quality/balanced/mobile/raw presets expanded into explicit Assimp/load toggles, custom-mode tracking, atomic snapshots and undo; CPU-only option-aware preflight returns copied node/mesh counts, mounted-scene add/remove/modify/move diff, import warnings, sockets and collision nodes without ECS mount or GPU upload | Source thumbnail rendering and project-specific import acceptance policy remain importer/workspace concerns | P1 |
ui, property_access |
Property view, EditorHost and composable workspace; UI hierarchy/layout plus multi-edit Style Inspector (box model/tint/flex), deterministic revision-bound canvas preview, deepest-widget picking, anchor/pivot gizmo geometry, snapshots and optional UIHost reconcile bridge; versioned text/font/texture skin properties; asset-resolved draw plans with stretch/contain/cover UVs, padding and ancestor clipping; injectable offscreen skin renderer plus concrete box-model/tint readback | Concrete font/texture asset cache and interactive gizmo presenter remain host/presentation concerns | P1 |
keyboard, mouse, touch, joystick |
Device-independent revisioned InputActionMap with stable Action/Binding IDs, dynamic action/binding Inspectors, keyboard/mouse/touch/gamepad/joystick controls, composite 1D axes, scale/invert/deadzone response, reference-safe deletion, duplicate-control diagnostics, atomic snapshots, deterministic raw-sample evaluation and thresholded device-filtered rebind capture | Platform glyph discovery, haptics authoring and project-specific chord/modifier policy remain presentation/game concerns | P1 |
map, voxel, procgen, building, housegen |
Tile/height/volume brushes, PCG point graph; schema-reflected TextureRecipe asset with bounded typed Inspector, defaults, atomic snapshots and candidate-first deterministic image/checksum preview; stable BiomeRules layer/weighted-asset Inspector, spatial/exclusion AssetRefs, atomic snapshots, budgets, candidate-first publication and revision-safe deterministic point preview; stable Voxel CubeType palette with six-face material Inspector, directional/compose/connect metadata, atomic snapshots, preflight 255-variant capacity and candidate-first registry publication returning editor-to-runtime ID mappings; map layer/outliner, road splines/object placement; revision-safe generated-road mesh publication, atomic stable-id object import plans; live building footprint preview and exact-id reversible place/move/remove preserving metadata/garrison; stable HouseGen kit/request document with component Inspector, incremental incomplete-kit diagnostics, atomic snapshots, request budgets, candidate-first deterministic generation, stale-generation rejection and renderer-neutral component/room overlays | Concrete graphics mesh sink and project-specific source-format readers remain host/plugin concerns | P2 |
particles, fluids, snow |
Particle graph/runtime bridge and shared curve/gradient timeline; bounded revision-safe particle scrub offscreen preview with an isolated temporary emitter, deterministic fixed-seed CPU stepping, texture resolution, exact single-emitter sprite/ribbon/GPU-capable presentation path and failure-safe cleanup; FluidSimulation PropertySchema target with reversible settings, persistence, solver validation, memory/neighbor budget and live applier; dedicated surface-fluid target covering droplet motion/adhesion, wet-film diffusion/evaporation and wet PBR/render response, with atomic snapshots, structured diagnostics and live runtime publication; deterministic forward/backward surface scrub rebuilt from topology and stable seeds, bounded steps/vertices/droplets, renderer-neutral cap/wetness snapshots and shared offscreen dispatch; live SnowField scalar adapter reusing reversible brushes and bilinear preview | Camera framing and final 2D/3D presentation policy remain host supplied | P2 |
audio, sound |
Runtime playback/query; source property target with atomic staging/undo and reusable Scene component binding; candidate-first publishing target keeps author state and live OpenAL Source synchronized across commit/undo and preserves both when a sink rejects; attenuation/mixer hierarchy, snapshots and live Source applier; codec-neutral bounded PCM waveform/RMS envelopes, loop markers/seam QA and spatial attenuation/direction gizmo geometry; revision-safe play/pause/stop/seek/custom-loop audition transport with real Source backend; import QA for format, clipping, DC offset, silence, decoded memory/compression and streaming policy; reversible typed Effect Chain with ordering, mixer assignment, atomic snapshots and revision-safe runtime sink | Source lifetime/unlink ownership and concrete DSP/EFX sink implementation remain audio-backend/host specific | P1 |
physics, gpgpu |
Runtime physics query; collider/joint targets with atomic staging/undo and reusable Scene component bindings, layer/mask inspector, snapshots/runtime bridge; candidate-first PhysicsCollider publishing creates/configures a new Fixture/Shape3D before destroying the old generation, rolls back Body type on build failure, and applies the same swap on undo; isolated pause/single-step/fixed-step trajectory bake; primitive/sensor collider plus resolved body-anchor/joint-axis/limit gizmo geometry; bounded AssetDB resolver and live builders for 2D convex polygon/open-or-loop chain plus 3D convex hull/static triangle mesh/height-field colliders | Concrete whole-world clone adapters remain backend-specific | P1 |
dialogue, i18n |
Conversation graph domain with stable routes/runtime conversion; localization snapshots and voice QA/audition; revision-safe subtitle safe-area/wrapping/read-duration preview and waveform-derived lip envelope | Graph canvas rendering and project-specific subtitle skin remain presentation concerns | P2 |
definitions, schema, inventory, economy, attributes, effects, weapon, vehicle, card, rpg |
Schema reflection/versioning; DefinitionDocument is a revisioned operation target with reversible field edits; schema-driven generic PropertySchema form adapter, required/range/enum/reference metadata, snapshots, cross-reference diagnostics and registry publisher | Project-specific domain templates and bespoke presenters remain project-owned | P2 |
crowd, steering, sensing, spatial, decision, orders, production, social |
Stable crowd IDs and runtime simulation APIs; revisioned Agent/Zone/Path document with reversible operations, atomic snapshots and cross-reference validation; bounded renderer-neutral overlays; typed behavior graph validation/compiler; live Crowd applier with named-agent publication; shared isolated fixed-step preview controller; copied Orders/Production item and event timelines with filters/invariant diagnostics; reversible Social entity/ownership/control/assignment/relation graph with atomic snapshots and runtime publisher | Zone-to-sensing runtime binding, multi-waypoint patrol progression and queue mutation controls | P2 |
filesystem, plugins, network, database, thread, profiler, eventstream |
Asset database/catalogue, extensions, tasks and diagnostics; schema-driven reversible project/importer settings with restart tracking, atomic snapshots and secret-reference-only sensitive values; narrow-scope plugin permission policy with allow/deny/ask, undo and atomic persistence; bounded copied event timeline with correlation/severity/tick filters, dropped-event accounting and generation-safe paging; thread-safe Network transport telemetry for real sent/received bytes, completions/errors/connections, live socket/channel/backpressure gauges, bounded rate history, reset-safe deltas and health diagnostics; Profiler completed-frame owning snapshots, bounded CPU/GPU history, hotspot filtering/sorting, module summaries and configurable budget diagnostics | Per-peer packet/RPC tracing requires a future payload-redacted trace contract; a profiler call tree remains unavailable until runtime samples expose stable parent identities; live settings appliers and remaining module-specific event ingestion adapters | P2 |
Delivery order
- Complete the scene authoring loop: hierarchy/TRS operations, live-world adapter, multi-selection properties, then prefab semantics.
- Add asset document domains shared by most projects: material, animation, and UI.
- Add simulation/content domains: particles, physics, audio, dialogue, and definition assets.
- Add specialist overlays and scale tooling without embedding project-specific panels in the engine.
Acceptance criteria for each domain
A domain increment is complete only when it provides:
- stable target/document identity and capability discovery;
- immutable reads and revision tracking;
- planned reversible mutations through
DomainOperation/transactions; - schema/property metadata usable by both developer and runtime presenters;
- persistence with conflict-safe revision handling for asset-backed content;
- structured validation/preview diagnostics;
- focused tests for apply, rejection, undo, redo, stale revision and serialization.
Project-specific layout and art/game policy stay outside engine modules. The engine supplies domain adapters, operations, metadata and preview contracts that arbitrary workspaces can compose.