GMUI supports a slot/template system similar to Vue's slots for injecting content into child components.
Basic Slots
In the child scene, define a <Slot /> tag. In the parent scene, wrap the content you want to inject inside a <Template> tag.
Child XML:
<Node2D name="SubScene2">
<Slot></Slot>
</Node2D>
Parent XML:
<Scene name="SubScene2" scene_xml_path="res://layouts/sub_scene2.xml">
<Template>
<Node2D name="node"></Node2D>
</Template>
</Scene>
Named Slots
To handle multiple injection points, use the name attribute on the <Slot> and the slot attribute on the <Template>.
Child XML (Defining multiple slots):
<Node2D name="SubScene1">
<Slot name="slot1"></Slot>
<Slot name="slot2"></Slot>
</Node2D>
Parent XML (Targeting specific slots):
<Scene name="SubScene1" scene_xml_path="res://layouts/sub_scene1.xml">
<Template slot="slot1">
<Node name="node1"></Node>
</Template>
<Template slot="slot2">
<Node name="node2"></Node>
</Template>
</Scene>
<!-- Parent XML Example with Named Slots -->
<Scene name="SubScene1" scene_xml_path="res://layouts/sub_scene1.xml">
<Template slot="slot1">
<Node name="node1"></Node>
</Template>
<Template slot="slot2">
<Node name="node2"></Node>
</Template>
</Scene>