You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The RFC calls the migration "mechanical — a jq-style script or one-shot editor pass." It isn't purely mechanical: the "components" -> "overrides" rename must be applied inside entity-bearing component fields (Room.movement_nodes) but not elsewhere — and knowing which component fields are entity-bearing requires the engine's comptime knowledge (entity_writer.zig's isNestedEntityArray / hasNestedEntityFields). A blind jq script will either miss embedded refs or over-rename.
Scope
A migrator with engine access that, per file: wraps content in "root", renames entities -> children, drops assets, and renames components -> overridesonly on reference entries — including refs buried in entity-bearing component fields, resolved via the same comptime detection the loader uses.
Running it on flying-platform-labelle produces files that load identically (entity tree + component values byte-equivalent post-spawn) to the pre-migration originals.
stair_room.jsonc (embedded refs in Room.movement_nodes + a children ref) migrates correctly in both places.
Part of #560 (RFC: unify scenes and prefabs).
Problem
The RFC calls the migration "mechanical — a jq-style script or one-shot editor pass." It isn't purely mechanical: the
"components"->"overrides"rename must be applied inside entity-bearing component fields (Room.movement_nodes) but not elsewhere — and knowing which component fields are entity-bearing requires the engine's comptime knowledge (entity_writer.zig'sisNestedEntityArray/hasNestedEntityFields). A blind jq script will either miss embedded refs or over-rename.Scope
"root", renamesentities->children, dropsassets, and renamescomponents->overridesonly on reference entries — including refs buried in entity-bearing component fields, resolved via the same comptime detection the loader uses.Acceptance
flying-platform-labelleproduces files that load identically (entity tree + component values byte-equivalent post-spawn) to the pre-migration originals.stair_room.jsonc(embedded refs inRoom.movement_nodes+ achildrenref) migrates correctly in both places.Refs: #560, #561.