35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
# ADR 0005: Prefab Instance and Asset Registry
|
|
|
|
## Status
|
|
|
|
Accepted for asset identity; structural ownership superseded by
|
|
[ADR 0027](0027-stable-prefab-ownership-and-variants.md)
|
|
|
|
## Context
|
|
|
|
Editor prefab placement and content pipeline work (H1/H2) require stable asset identity across sessions. The asset browser previously regenerated UUIDs on every sync, breaking references.
|
|
|
|
## Decision
|
|
|
|
- Persist stable `AssetId` (UUID) per `assets/` path in `assets/.index/registry.ron`.
|
|
- Scene-instance `ModelRef` stores the registry UUID plus a cached source path. Hydration resolves
|
|
the UUID-keyed generated manifest first, allowing uniquely identified model moves to retain scene
|
|
and animation references.
|
|
- Catalog refresh reconciles a missing model record to one new path only when its generated content
|
|
hash has exactly one match. Copies and ambiguous matches receive new IDs.
|
|
- Introduce `PrefabInstance { asset_id, source_path, overrides_ron }` on placed prefab roots alongside hydration via `PrefabRef`.
|
|
- Scene save includes `PrefabInstance` and gameplay marker components from `shared`.
|
|
- The initial structural boundary treated instance contents as read-only and required Unpack before
|
|
authored structural edits. ADR 0027 replaces that boundary with explicit generated-member
|
|
ownership while retaining this ADR's asset and instance identity.
|
|
|
|
## Consequences
|
|
|
|
- Prefab paths can be resolved through the registry for dependency tracking.
|
|
- Override apply/revert (H2) builds on `overrides_ron` without changing the instance component shape.
|
|
- Stable child identity, authored local children, nested instances, variants, and recursive graph
|
|
validation are defined by ADR 0027.
|
|
- Registry must be version-controlled with the project.
|
|
- Legacy path-only `ModelRef` values remain readable but require reassignment before they gain stable
|
|
move resolution.
|