Table of contents
Authored UI Surface Renderer
The authored UI surface renderer turns .aetherui layout nodes into Bevy UI entities for standalone and multiplayer surfaces. It is the shared rendering boundary below layout authoring and above runtime-specific panel behavior.
How It Works
Layout documents resolve into surface nodes, style data, images, text, buttons, containers, and slot descriptors. The renderer spawns Bevy Node, ImageNode, text, and interaction entities from that resolved structure. Runtime callers supply the context that decides which surface is being rendered and what behavior belongs to the spawned entities.
Document-level spawning owns tree shape. Surface-node spawning owns the local conversion from authored layout data into Bevy components.
How To Use It
Add reusable layout rendering behavior in the shared renderer only when both standalone and multiplayer UI can use it. Put panel-specific behavior, gameplay state projection, and input routing in the caller layer.
When adding a node feature, update layout validation and at least one runtime caller so authors can see the feature and runtime can render it.
Invariants
Runtime behavior must not be hidden in generic layout conversion. Slot descriptors must remain stable across reloads. Font handles, parent sizes, and focus policy should be explicit inputs. Missing assets should fail visibly enough for layout validation or preview to explain them.
Debugging
Missing slot descriptors, bad parent dimensions, unresolved font handles, stale layout documents, and focus capture mismatches are the common causes of broken surfaces. Compare authored layout preview with multiplayer Bevy sync when a surface renders in one mode but not the other.