# Advanced Framework Pro — asset reference

1098 assets · v1.0 · Unreal Engine 5.8 only · updated 2026-10-05

Advanced Framework Pro is a complete rewrite and is not an update to the earlier AFCore framework. There is no conversion path between them.


## AFA_Colors

- **`DA_Color_Amber`** — Amber swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Black`** — Black swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Blue`** — Blue swatch from the shared colour palette. The default popup outlines itself with it, and any colour definition can point its Custom slot at it.
- **`DA_Color_Brown`** — Brown swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Cyan`** — Cyan swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Gray`** — Neutral grey swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Green`** — Green swatch from the shared colour palette. The tag widget borders its tooltip with it, and any colour definition can point its Custom slot at it.
- **`DA_Color_Indigo`** — Indigo swatch from the shared colour palette. The colour button uses it for its blend border, and any colour definition can point its Custom slot at it.
- **`DA_Color_Lime`** — Lime swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Orange`** — Orange swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Pink`** — Pink swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Red`** — Red swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`DA_Color_Yellow`** — Yellow swatch from the shared colour palette, picked as the Custom colour of a colour definition where a widget should hold a fixed colour rather than a theme category.
- **`PDA_Color`** — Data asset holding one named linear colour. Widgets and the UI libraries take these rather than raw colours, so a palette can be changed in one place; the shipped set lives alongside it in the colours plugin. Make one per colour worth naming.

## AFA_Icons

- **`T_Icon_Blank`** — Blank placeholder icon: the texture an icon image carries by default, so an icon that has not been given one keeps its slot and draws nothing.

## AFA_Materials

- **`M_Generic_Plastic_Rough_Black`** — Rough black plastic from the generic world material set, used on the radio prop's casing alongside the white and yellow variants.
- **`M_Generic_Plastic_Rough_White`** — Rough white plastic from the generic world material set, used on the radio prop's casing alongside the black and yellow variants.
- **`M_Generic_Plastic_Rough_Yellow`** — Rough yellow plastic from the generic world material set, used on the radio prop's casing alongside the black and white variants.
- **`M_Hologram`** — Translucent hologram material for meshes that are not really there yet. The spawner dresses its pickup dummy in it, and the snapping connector and anchor previews copy the owner's meshes and apply it, tinting it through its colour parameter.

## AFA_Sounds

- **`BFL_Sound`** — Function library choosing a sound attenuation from how large a thing is: over two metres takes the far setting, over thirty centimetres the medium one, and anything smaller the near one. The sound macro libraries call it, which is how a sound played at an actor's centre carries as far as the actor is big. Call it directly when playing a sound of your own.
- **`ML_Actor_Sound`** — Macro library for actor graphs. Play Sound At Center plays a sound at the middle of the actor's bounds and picks the attenuation from how large the actor is, so there is no setting to choose by hand. Available in any Actor blueprint; the component and scene component sound libraries do the same job elsewhere.
- **`ML_Comp_Sound`** — Macro library for actor component graphs. Play Sound At Center Of Owning Actor plays a sound at the middle of the owner's bounds, with the attenuation taken from the owner's size. The highlight, the grip interaction and the overlap interaction all play their sounds through it.
- **`ML_SceneComponent_Sound`** — Macro library for scene component graphs. Play Sound At Component plays a sound at the component's own world location rather than at the actor's centre, with the attenuation taken from the owner's size. Reach for it where the component's position is what the player should hear, as the connector and the teleport ability do.
- **`SA_Far`** — Attenuation preset for large or distant sources. The sound library returns it from Determine Sound Attenuation From Radius for anything whose bounds give a radius over 200 cm; nothing else in the framework asks for it by name.
- **`SA_Medium`** — Attenuation preset most framework sounds are played through: widget presses, selection, the laser and the teleport all pass it to Play Sound At Location. The sound library returns it for radii between 30 and 200 cm, and the widget component picks it for widgets above 0.025 world scale.
- **`SA_Near`** — Attenuation preset for small, close sources. The sound library returns it below a 30 cm radius, and the widget component falls back to it for widgets scaled under 0.025.
- **`SC_Master`** — Master sound class, whose volume the Master setting drives. Parent a sound class of your own to it if that class should follow the master slider.
- **`SC_Music`** — Sound class for music, whose volume the Music setting drives. Assign it to a music cue so the player's music slider reaches it.
- **`SC_SFX`** — Sound class for effects, driven by both the SFX and the UI volume settings, so those two sliders currently move the same class. Assign it to prop and interface cues.
- **`SC_Voice`** — Sound class for speech, whose volume the Voice setting drives. Assign it to dialogue and voice cues so they follow that slider.

## AFE_Showroom

- **`A_Grip_Gun_Anim`** — Hand pose for holding the pistol. The gun's pickup interaction registers it for both hands under the name Gun, so a hand gripping the pistol takes this pose instead of the default one.
- **`BPC_GameState_Navigation`** — Game state component holding the showroom's level list: the lobby data asset and the grouped pages of levels the navigation widgets read. Its Switch Level forwards to a server event so any widget can request travel without owning a connection. Add it to your own game state to reuse the showroom's level browser; the showroom game state already carries one.
- **`BP_Battery`** — A battery Blueprint that moves upwards when a custom event is fired.
- **`BP_Battery_Small`** — Small battery variant that pins the mesh directly instead of leaving it to the parent's Size property. Nothing references it; it exists as a ready subclass to drop in where the small battery is always wanted.
- **`BP_Bench`** — Bench prop for dressing a showroom scene: a single replicated mesh tagged Mesh, with no interaction of its own. Nothing subclasses it. Place it as furniture, or subclass it and add an interaction pointed at that tag, which is how the interactive props in this plugin are built.
- **`BP_Bomb`** — Cartoon bomb demonstrating the trigger state component: firing the trigger runs a half-second timeline that swells the mesh, drops it out of sight and spawns the explosion effect. Nothing fires it on its own, so drop it in and drive the trigger from a button, a select interaction or a hand.
- **`BP_Button`** — Push button demonstrating the overlap ability. The cap is tagged for a drag state component that travels 18 cm down and springs back, an overlap drag interaction accepts only the left and right controller identifiers, and a timeline turns the cap green while the Pushed section is held. Subclassed by the hand, overlap and pixel examples; drop it in for a button a finger can press.
- **`BP_Chair`** — Chair prop, one tagged mesh and nothing attached. Subclassed by the teleport chair example, which adds a scene-based teleport interaction so a player can sit on it. Take it as furniture, or as the starting point for a seat of your own.
- **`BP_CoffeeTable`** — Coffee table prop: a single replicated mesh tagged Mesh Root, with no interaction and nothing referencing it. Pure set dressing; add a grip or select interaction in a subclass if you want it to react.
- **`BP_Cog`** — Single cog driven by a boolean state component: while the boolean reads true the gear eases up to a spin scaled by Rotation Speed and the machine loop plays, and it eases back to rest when the value goes false. Subclassed by the gaze and select cog examples and attached by the cog system. The clearest small example of boolean state driving continuous motion.
- **`BP_CogSystem`** — Machine of four gears turning at different rates with a permanent loop, plus a boolean state component that gates the medium gear and a Cog To Attach slot pointing at a separate cog actor. Drop it in as animated set dressing. The authority branch on the state change is left empty, so extend it for anything beyond spinning.
- **`BP_Couch`** — Couch prop: a single replicated mesh tagged Mesh Root, with no interaction and nothing referencing it. Set dressing to fill a room; subclass it if the furniture needs to do something.
- **`BP_Cubboard`** — Cupboard with four drawers, each drawer mesh tagged and paired with its own drag state component pointed at that tag so the four slide independently. Ranges, sections and snapping are left to subclasses, which the hand-grip, gaze and select drawer examples each set differently. The clearest example in the showroom of one state component per moving part.
- **`BP_DemoTable`** — Exhibition stand every showroom example stands behind, and the prop most worth copying: a table mesh in one of six variants, a nine-slice back panel and three widget components carrying the info display, the configurator and a replacement card. Fill in Image, Title, Description and Instruction, point Example Actor at the actor demonstrated, and shape it with Use Table, Variant, Flip and Width.
- **`BP_Door`** — Door prop in two parts: a frame and a swinging leaf tagged Mesh Door with its own collision, so a subclass can turn the leaf without moving the frame. The gaze and select door examples do exactly that, driving the leaf from a boolean state component. Place it as scenery or subclass it for a door of your own.
- **`BP_Floor`** — Modular showroom floor: a centre tile with side and corner pieces that the construction script scales and shifts so Width and Height give a floor of any size, plus the branding decal. The Player Position, Navigation and Map Info slots hold the level's spawn point, kiosk and map info actor, which Set Transform Of Relevant Actor places relative to the floor. The base of a showroom level.
- **`BP_GameMode_Showroom`** — Game mode for every showroom level: the loading module's game mode with the showroom game state and player controller set on it. Named by the showroom level data assets rather than in project settings, so a level chooses it by choosing its data asset. Subclass it, as the examples level does, when a level needs classes of its own; Test is unused.
- **`BP_GameState_Showroom`** — Game state for the showroom, carrying the level navigation, the theme manager, the settings and the project info components, the last filled in with the logo, company and project name. Worth reading as the reference list of what a game state is expected to hold in this framework: set it on your game mode, or copy the component set into your own.
- **`BP_Gear`** — Gear driven by a float state component: the interpolated update turns the mesh by that frame's delta, so the gear tracks a slider or dial one for one. Nothing references it. Place it beside a float control as a readout, or copy the single event into a mechanism of your own.
- **`BP_Guitar`** — Guitar built from seven separate meshes, body, neck, head, bridge, strings, tremolo and logo, each set to ignore the camera channel so none of it clips the view. No interaction and nothing references it: set dressing, or a multi-part body to hang your own grip sockets on.
- **`BP_Gun`** — Physics pistol built from a mesh, a muzzle point, a pickup grip and a pickup coordinator. The trigger reaches it as a forwarded button: On Button Forward Key switches on the controller button, spawns a round at the muzzle's world transform with the player pawn as instigator, and plays the fire haptic back through the Source Info so it is felt in the hand that pressed rather than in both. The worked example of forwarding a controller button through to a held actor.
- **`BP_Knob`** — Rotary knob demonstrating the latch grip. A roll drag state component covers -360 to 360 degrees on the knob mesh, a grip latch drag interaction attaches to that mesh within 10 cm, and a simple label with an arrow reads out the percentage as it turns. Drop it in as it stands, or subclass it as the hand interaction example does.
- **`BP_LED`** — A light Blueprint that is turned on by a custom event.
- **`BP_Lever`** — Lever demonstrating the latch grip on an angle: an inverted yaw drag state component running -45 to 45 degrees turns the lever mesh about its pivot, the grip latch drag interaction takes hold of it, and a label shows the percentage. Drop it in, or take it as the base for a lever of your own as the hand interaction example does.
- **`BP_Lightbulb`** — A light Blueprint that is turned on by a custom event.
- **`BP_Lights_Ceiling`** — Ceiling lamp: mesh, spotlight and a half-second timeline that fades the light up to 10,000 units, with a surface connector so the lamp snaps to a ceiling when moved by the snapping system. Nothing drives the timeline on its own, so trigger it from your graph or from a state component in a subclass.
- **`BP_Lights_Wall`** — Wall lamp: mesh, spotlight and the same half-second brightness timeline as the ceiling lamp, with a sphere marked as a navigation obstacle so pawns and the teleporter keep clear of it. No connector, so place it by hand; nothing drives the timeline until you do.
- **`BP_Mirror_RenderTarget`** — Mirror or monitor built from a scene capture: a screen mesh with the capture material and a 2D capture that renders only when Capture is called, so nothing is captured every frame. Frames Per Second is there for a graph of your own to pace those calls. Place it as a mirror and drive Capture at whatever rate you can afford.
- **`BP_MotionController_Controller_Left_Showroom`** — Left hand of the showroom VR pawn in the tracked-controller style, carrying the palm menu, the teleport arc set to fire on a neutral thumbstick, and snap turning. Copy the pair rather than editing them when you want a different scheme; the pawn names both by class.
- **`BP_MotionController_Controller_Right_Showroom`** — Right hand of the showroom VR pawn in the tracked-controller style, carrying the pointing laser and smooth movement. With the left hand it makes up the showroom's default scheme: teleport and menu on one side, laser and locomotion on the other. Swap ability components on a subclass to change it.
- **`BP_MotionController_Hands_Left_Showroom`** — Left hand of the hand-mesh VR pawn: hand grab, finger select, palm menu, teleport arc, snap turn, and an overlap ability identified as Controller_Left, which is the identifier the overlap props such as the push button accept. Used by the interaction hands pawn; copy it for a hand-tracked pawn of your own.
- **`BP_MotionController_Hands_Right_Showroom`** — Right hand of the hand-mesh VR pawn: hand grab, finger select, the hand laser for pointing at things out of reach, and an overlap ability identified as Controller_Right. It carries no menu or teleport ability, both of which live on the left hand, so keep the pair together.
- **`BP_Navigation`** — Navigation kiosk: a widget component floating 160 cm up showing the navigation panel, so a player can walk over and travel to another showroom level. Switch Level hands straight to a server event that runs the loading module's level switch, so the whole session travels together. Drop one into a level, or let the floor place it through its Navigation slot.
- **`BP_Panel`** — Flat panel mesh with nothing attached, subclassed by the hand pickup panel example, which adds the grip interaction. Use it when an example needs a thin board to grab, mount something on or hide behind.
- **`BP_Pawn_Desktop_Char_Showroom`** — Desktop pawn the showroom levels spawn: the walking desktop character with the grip, gaze, select, widget, HUD, pawn UI and menu abilities added, and the desktop menu listed as an initial HUD widget. Copy it as the starting point for a desktop pawn; abilities come from having the component, so remove the ones your project does not want.
- **`BP_Pawn_Mobile_Char_Showroom`** — Mobile pawn the showroom levels spawn: the touch character with the gaze, grip, select, widget, HUD and pawn UI abilities, and no menu component, unlike its desktop counterpart. Copy it as the base for a mobile pawn and add the abilities the touch build needs.
- **`BP_Pawn_VR_Char_Showroom`** — VR pawn the showroom levels spawn: the VR character pointed at the showroom's own left and right controller actors, with the HUD, pawn UI, menu and gaze abilities. It also answers the trace contract, line-tracing 50 m ahead of the headset and caching the hit for a tenth of a second so several systems can ask what is being looked at without re-tracing.
- **`BP_Pipe`** — Base for the pipe set: an empty mesh component tagged Mesh that each variant fills in, so every pipe shares one class. Place the bend, junction or straight subclass rather than this one, and subclass it yourself when a run needs a shape the set does not have.
- **`BP_Pipe_Bend`** — Bend section for pipe runs, the base pipe with the bend mesh set. Decorative geometry with no collision changes and no interaction; lay several out by hand to dress an industrial scene.
- **`BP_Pipe_Junction`** — T junction for pipe runs, the base pipe with the junction mesh set. Decorative geometry only, meant to be combined with the bend and straight sections.
- **`BP_Pipe_Straight`** — Straight section for pipe runs, the base pipe with the straight mesh set. Decorative geometry only; scale and repeat it between bends and junctions.
- **`BP_Plant`** — Potted plant: one replicated mesh tagged Static Mesh. Subclassed by the hand pickup example, which makes it grabbable, and by the label example, which hangs a floating label on it. Take it as greenery or as the body for either.
- **`BP_PlayerController_Showroom`** — Player controller for the showroom, adding the camera fade and the replicated spawner components and nothing else. Copy it as the pattern for a controller of your own: those two components are what fading between levels and spawning replicated actors into a player's hand require.
- **`BP_Projectile_Gun`** — Round the pistol spawns: projectile movement, a sphere for overlaps and a mesh. Spawned rather than placed; reuse it as the round for a weapon of your own.
- **`BP_Projectile_Rifle`** — Projectile fired by player that pushes physics objects
- **`BP_Rack`** — Rack the showroom props stand on, assembled from modular meshes and carrying no interaction of its own. Subclassed by the snapping and spawner examples, which add the anchors or the spawner they need. Start from it when you want a stand rather than a prop.
- **`BP_Radio`** — Radio demonstrating a boolean state component driving audio: switching the value on plays the example song through the attached audio component, switching it off stops it. Should Rotate is exposed on spawn but unused here. Subclassed by the gaze and select radio examples; place it and give it any boolean control.
- **`BP_Recorder`** — Placeable spectator camera with its own screen: the spectator component registers under Name, the Key you bind toggles this camera onto the spectator view, and the screen shows whichever render target the spectator coordinator hands out. Finds or spawns that coordinator itself at begin play. Drop it into a level to demonstrate the spectator module.
- **`BP_Rifle`** — Two-handed rifle, and the fullest grip example in the showroom: a grip on the trigger and a second on the forestock, both feeding one pickup coordinator, so it can be held in either hand or steadied with both. Rapid Fire switches between single shots and automatic, Shoot spawns the round, and an anchor connector lets it snap back onto a rack. A visibility switch fades it in and out rather than popping it.
- **`BP_Screen`** — Video screen prop: a screen mesh and a spatialised media sound component tagged Screen Media Sound. It carries no media player or source of its own, so point a player at the mesh's material and route its audio through this component.
- **`BP_Shape`** — Base grabbable shape and the showroom's general-purpose test object: a physics-simulating mesh with a grip pickup interaction, an actor replication component, a visibility switch and a pickup coordinator set to release into physics. Place one of the five shape subclasses rather than this one, or subclass it for a throwable of your own.
- **`BP_Shape_Ball`** — Ball form of the grabbable shape, and one of the classes the spawner example hands out. The object to reach for when trying the grip ability: pick it up, throw it, watch it replicate.
- **`BP_Shape_Block`** — Flat block form of the grabbable shape. Nothing references it; place it where a stackable slab suits the example better than a ball or a cube.
- **`BP_Shape_Cube_Large`** — Large cube form of the grabbable shape, offered by the spawner example. Differs from its siblings only in the mesh and in having tick enabled; use it for two-handed or heavy-object demonstrations.
- **`BP_Shape_Cube_Small`** — Small cube form of the grabbable shape, used by the spawner example and as the moving body in the overlap example. The handiest of the shapes for throwing at a trigger volume.
- **`BP_Shape_Pyramid`** — Pyramid form of the grabbable shape, offered by the spawner example. Its awkward silhouette makes it the useful one for showing how a pickup settles into the hand.
- **`BP_Shelf`** — Shelf that can be picked up and put back: a grip pickup interaction, an actor replication component so other players see it move, and a surface connector on top so smaller props snap onto the shelf. A compact worked example of the grip, replication and snapping modules on one prop.
- **`BP_SignalLight`** — Rotating warning light driven by a boolean state component: switching it on starts the rotating movement, plays the siren loop and pulses the spotlight between 5,000 and 50,000 units on a one-second timeline that repeats while the light is on. Switching it off stops all three. Place it and give it any boolean control.
- **`BP_Sky`** — Sky sphere for the showroom levels: a static, collisionless sphere carrying the sky material, made dynamic on construction so its light direction parameter follows the Directional Light Actor you point it at. Set Refresh Material to rebuild it after moving that light; the flag clears itself. Place one per level as set dressing rather than as a lighting system.
- **`BP_Slider`** — Linear slider on a rail: a drag state component pointed at the handle mesh and a grip latch drag interaction that takes hold of it. Both drag events are deliberately empty and nothing references the actor, so this is the blank slider to copy when you want your own reaction to a dragged handle.
- **`BP_SlidingDoor`** — Sliding double door: left and right leaves and a lock, each mesh tagged so a subclass can drive it, and nothing else attached. Replicated but inert as it stands. Subclass it and add a state component per leaf to make it open.
- **`BP_Statue`** — Statue prop, one mesh tagged Static Mesh and nothing else. The most reused body in the example set: the highlight examples subclass it four times to compare the material, mesh copy, post process and select styles on identical geometry, and the label example hangs a label on it. Place it as dressing or subclass it for a comparison of your own.
- **`BP_Table`** — Table prop: a single replicated mesh tagged Mesh Root, with no interaction attached and nothing referencing it. Furniture to stand other examples on; subclass it if the table itself should react.
- **`BP_Trigger_Button_Toggle`** — Large button that answers both a finger and a laser: an overlap drag interaction on the cap and a select interaction that pushes the cap to its Pressed section, with a dynamic material lerped from red to green by its own timeline while Toggle is off. The Pressed handler is left empty for your logic. Read it as the example of pairing overlap and select on one control.
- **`BP_Valve`** — Hand-turned valve wheel: a roll drag state component covering a full turn either way with a section that snaps at 359 degrees, and a grip latch drag interaction attached to the wheel mesh. Nothing subclasses it, so it is both a finished prop to place and a clean example of an angle drag with snapping.
- **`BP_Vase`** — Vase prop, a single replicated mesh with nothing attached. Subclassed by the hand pickup example, which adds the grip interaction. Otherwise a breakable-looking object to put on a shelf.
- **`BP_Weight`** — Barbell plate to pick up and pass around: a grip pickup interaction and an actor replication component, and nothing else. The smallest example in the showroom of a replicated pickup, and the one to copy for a plain grabbable object.
- **`Cue_Example_GearMachine_L`** — Looping machine sound for the cog examples. Their audio components activate it when the boolean state switches on and deactivate it when it goes off.
- **`Cue_Example_SignalLight_L`** — Looping alarm for the signal light. Its audio component plays when the light is switched on and stops when it is switched off.
- **`Cue_Showroom_ExampleSong`** — Example song the radio prop plays. Its audio component starts and stops with the radio's boolean state.
- **`MI_Button_Logo_Door`** — Material instance on the face of the Unreal-logo button. The toggle button makes it dynamic and shifts its colour from red to green, along with the fresnel exponent, as the button is pushed.
- **`MI_Sky`** — Material instance for the showroom sky sphere. The sky actor makes it dynamic on construction and feeds it the direction of the directional light it points at.
- **`M_Battery`** — Battery material with a colour parameter. The snapping example's battery anchor makes it dynamic on construction so each battery can be tinted differently.
- **`M_Light_Bulb_Base`** — Glass material of the lightbulb. The prop makes it dynamic on the mesh's second slot and animates its brightness and colour parameters in step with the point light.
- **`M_Mirror_SceneCapture`** — Material that draws a scene capture's render target. The mirror and the recorder both override their screen mesh with it and make it dynamic so the capture can be fed in.
- **`Map_Showroom_Env`** — Not a feature — the environment the examples are dressed in. Worth reading for how the demo tables build a live control for every state on an actor.
- **`Map_Showroom_Template`** — An empty room to duplicate when adding an example of your own, already lit and wired into the navigation list.
- **`Mat_HumanCodeableDecal`** — Human Codeable logo as a decal material. The showroom floor projects it onto the floor through its decal component, which is where the branding in the demo levels comes from.
- **`PDA_Level_Showroom`** — Level data asset for a showroom level. Presets the showroom game mode and the desktop, mobile and VR showroom pawns, and adds the description and the two images, square and banner, that the navigation cards display. Make one per level you want reachable from the kiosk and list it in the game state's navigation component.
- **`P_Explosion_Bomb`** — Explosion effect spawned at the bomb's location at the end of its timeline, once the trigger state has fired.
- **`Pistol`** — Physics pistol demonstrating grip pickup with a custom hand pose. Picking it up applies the Gun pose on either hand, the trigger spawns a projectile at the muzzle and fires a haptic effect, and the pickup coordinator drops it back into physics on release. Drop it in as the worked example of forwarding controller buttons to a held actor.
- **`Projectile`** — Bullet the pistol spawns: projectile movement at 1600 cm/s, a 1.1 cm sphere for overlaps and a ten-second lifespan. On striking anything simulating physics it passes on its impulse, stops and attaches itself at the impact point. Spawned rather than placed; reuse it as the round for a weapon of your own.
- **`SM_Barbell_Plate_Standart_10_LP`** — Barbell plate and the entire body of the weight prop, which adds nothing to it but a pickup interaction and actor replication.
- **`SM_Battery_Big`** — Large battery mesh, set by the battery actor when its Size is the big option.
- **`SM_Battery_Medium`** — Medium battery mesh, set by the battery actor when its Size is the medium option.
- **`SM_Battery_Small`** — Small battery mesh: the battery actor's default size, and the mesh the small battery variant carries directly.
- **`SM_Bench`** — Bench mesh from the showroom furniture set, carried by the bench actor as set dressing with nothing interactive on it.
- **`SM_Body_V`** — V-shaped guitar body, one of the seven pieces assembled by the showroom guitar prop and again by the visibility example, which fades the pieces in and out.
- **`SM_Bomb`** — Bomb prop mesh. When triggered the bomb scales it up and drops it two metres through a timeline before spawning the explosion effect.
- **`SM_Bridge`** — Bridge of the guitar, one of the seven pieces the showroom guitar prop and the visibility example assemble.
- **`SM_Button`** — Cap of the showroom's push button: the travelling part, tagged as the drag mesh so a hand overlapping it pushes it down and it springs back on release.
- **`SM_Button_Base`** — Housing of the showroom's push button, the fixed part the cap is attached to and travels into.
- **`SM_Button_Button`** — Pressable face of the Unreal-logo button, tagged as the drag mesh so an overlapping hand can push it.
- **`SM_Button_Frame`** — Frame of the Unreal-logo button: the fixed housing the pressable face sits in front of.
- **`SM_Chair`** — Chair mesh from the showroom furniture set, carried by the chair actor as set dressing.
- **`SM_CoffeeTable`** — Coffee table mesh from the showroom furniture set, carried by the coffee table actor as set dressing.
- **`SM_Cubboard`** — Cupboard carcass: the fixed body of the showroom's drawer unit, with four drawer meshes sliding inside it.
- **`SM_DoorFrame_Demo`** — Door frame mesh: the fixed half of the showroom's hinged door, with the leaf attached to it.
- **`SM_Door_Demo`** — Leaf of the showroom's hinged door, attached to the frame mesh and tagged so an interaction can swing it.
- **`SM_Drawer`** — Single drawer mesh. The drawer unit carries four of them, each tagged for its own drag state so it can be pulled out and pushed back independently.
- **`SM_Exhibition_Table_Half`** — Half-shaped exhibition stand, one of the six meshes the demo table chooses between; Variant 4 selects it.
- **`SM_Exhibition_Table_Half_Narrow`** — Narrow form of the half-shaped exhibition stand, selected by Variant 5 on the demo table.
- **`SM_Exhibition_Table_UShape`** — Wide U-shaped exhibition stand, selected by Variant 2 on the demo table.
- **`SM_Exhibition_Table_UShape_Narrow`** — Narrow U-shaped exhibition stand and the demo table's default, selected by Variant 3.
- **`SM_Exhibition_Table_VShape`** — Wide V-shaped exhibition stand, selected by Variant 0 on the demo table.
- **`SM_Exhibition_Table_VShape_Narrow`** — Narrow V-shaped exhibition stand, selected by Variant 1 on the demo table.
- **`SM_Floor_Corner`** — Corner piece of the modular showroom floor. The floor actor places four of them and moves them out to the width and height asked for, so the mesh is only useful as part of that set.
- **`SM_Floor_Middle`** — Centre tile of the modular showroom floor, scaled by the floor actor to the Width and Height set on it.
- **`SM_Floor_Side`** — Edge piece of the modular showroom floor. The floor actor places four, one per side, and stretches each one between the corners.
- **`SM_Frame_2D`** — Flat frame marking the plane a two-axis drag stays in, with the slider knob riding inside it in the multi-axis latch example.
- **`SM_Frame_3D`** — Cage frame marking the volume a three-axis drag stays in, used by the combined latcher and by the three-axis latch example.
- **`SM_Gear`** — Plain gear mesh. The gear actor turns one by the delta of its float state, and the spline drag car carries several as moving detail.
- **`SM_Gear_1`** — Toothed gear used by the single cog and by three of the four gears in the cog machine, turning while their boolean state is on.
- **`SM_Gear_2`** — Second gear shape in the cog machine, paired with the other gear mesh to make up its four meshing cogs.
- **`SM_Handle_Twistexample`** — Twist handle for the grip examples. The multi-axis pole example makes it the grabbed part, and the spline drag car carries one as a detail.
- **`SM_HeadStock_01`** — Headstock of the guitar, tagged Head on the guitar prop so it can be addressed on its own.
- **`SM_Interactive_Crank`** — Crank housing serving as the fixed base of both the showroom's knob and its valve, with the turning part attached on top.
- **`SM_LED`** — Small LED mesh. The LED actor makes its material dynamic and drives the emissive colour and a point light from a single call.
- **`SM_Lever`** — Lever arm, the part the lever actor swings through 45 degrees either side of centre while a hand drags it.
- **`SM_Lever_Base`** — Base plate of the showroom's lever, holding the arm and the simple label beside it.
- **`SM_Lightbulb`** — Lightbulb mesh, carried by the lightbulb prop with a point light inside it.
- **`SM_Neck`** — Neck of the guitar, one of the seven pieces the showroom guitar prop and the visibility example assemble.
- **`SM_Object_Couch_Demo`** — Couch mesh from the showroom furniture set, carried by the couch actor as set dressing.
- **`SM_Object_Lamp_Ceiling`** — Ceiling lamp mesh, carried by the ceiling light actor together with its spotlight and a surface connector.
- **`SM_Object_Lamp_Wall`** — Wall lamp mesh, carried by the wall light actor together with its spotlight.
- **`SM_Object_UnrealDoor`** — One leaf of the showroom's sliding door. The sliding door actor uses it twice, mirroring the second leaf on the Y axis.
- **`SM_Object_UnrealDoor_Lock`** — Lock plate of the showroom's sliding door, attached above the left leaf.
- **`SM_Panel`** — Flat panel mesh and the whole of the showroom's panel prop, a bare backing plate to mount things on. Unrelated to the nine-slice panel component, which builds its own meshes.
- **`SM_Pipe_Bend`** — Bend section of the modular pipe set, the mesh on the bend variant of the pipe actor.
- **`SM_Pipe_Junction`** — Junction section of the modular pipe set, the mesh on the junction variant of the pipe actor.
- **`SM_Pipe_Straight`** — Straight section of the modular pipe set, the mesh on the straight variant of the pipe actor.
- **`SM_Pistol`** — Pistol mesh for the gun example. It simulates physics and carries the muzzle point the projectile is spawned from.
- **`SM_Plant`** — Potted plant mesh, carried by the plant actor as set dressing.
- **`SM_Pole_Example`** — Pole the multi-axis grip example is built around, with the twist handle sliding up and down it and turning on it.
- **`SM_Radial_Button_1`** — Dial cap of the showroom's knob: the part that turns when a hand latches onto it, driving the knob's drag state.
- **`SM_Radio_Antenna`** — Antenna of the radio prop, attached to the base and angled back.
- **`SM_Radio_Base`** — Body of the radio prop and the parent of its other parts. It wears the rough plastic materials and holds the audio component that plays the example song.
- **`SM_Radio_Button`** — Button detail on the front of the radio prop, attached to the base as decoration rather than as anything pressable.
- **`SM_Radio_Handle`** — Carrying handle of the radio prop, attached over the base and tilted forward.
- **`SM_RemoteControl`** — Remote control mesh used by three grip examples: plain pickup, the labelled version and the one that flies a UFO. Sized for one-handed pickup.
- **`SM_Screen`** — Large flat screen mesh, used by the media screen prop and by the mirror that renders a scene capture onto it.
- **`SM_Screen_Small`** — Small screen mesh: the handheld display in the grip examples, and the preview panel under the recorder's spectator camera.
- **`SM_Shape_Ball`** — Ball mesh: the default on the shape base actor, and the preview the spawner example shows for its ball. The ball subclass itself swaps in an engine mesh.
- **`SM_Shape_Cube_Large`** — Large cube mesh, carried by the large cube shape actor and shown as the spawner example's preview for it.
- **`SM_Shape_Cube_Small`** — Small cube mesh. Only the spawner example uses it, as its starting representation mesh and as the preview for the small cube; the spawned actor carries an engine mesh.
- **`SM_Shape_Pyramid`** — Pyramid mesh, used only as the spawner example's preview for the pyramid; the pyramid actor it spawns carries an engine mesh instead.
- **`SM_Shelf`** — Shelf mesh from the showroom furniture set. The shelf actor adds a pickup interaction and a surface connector to it, so shelves can be carried and snapped onto a surface.
- **`SM_SignalLight`** — Rotating beacon mesh, the body of the signal light prop, which spins, pulses its spotlight and plays a looping alarm while its boolean state is on.
- **`SM_Sky`** — Sky sphere with a ground plane, scaled up around a showroom level and carrying the sky material. Only the sky actor uses it; it has no collision and casts no shadow.
- **`SM_Slider`** — Slider knob, the grabbed part in most of the drag examples: the slider prop, the two-axis and three-axis latch examples, and the body of the car in the spline drag example.
- **`SM_SliderBase`** — Rail the showroom's slider runs along, with the knob attached to it.
- **`SM_Statue`** — Statue mesh, carried by the statue actor as set dressing.
- **`SM_Strings`** — Strings of the guitar, kept as a separate mesh so they can be shown and hidden apart from the body.
- **`SM_Table`** — Table mesh from the showroom furniture set, carried by the table actor as set dressing.
- **`SM_Tremolo`** — Tremolo unit of the guitar, one of the seven pieces the showroom guitar prop and the visibility example assemble.
- **`SM_ULogo`** — Unreal logo inlay on the guitar, a separate mesh so the visibility example can fade it on its own.
- **`SM_Valve`** — Valve wheel, the turning part of the showroom's valve. A hand latched onto it drives the drag state through a full turn in either direction.
- **`SM_Vase`** — Vase mesh and the whole of the vase prop: set dressing with no interaction on it.
- **`T_Logo_1280x400`** — Wide Human Codeable logo, 1280 by 400. The showroom game state sets it as both the light and dark wide logo on its project info component, which is where the VR menu and the navigation panel read their logo from.
- **`WBP_ConfigItem`** — Base class for one row of a demo table's configurator: an info row with a named slot for the control, and Assigned Component, exposed on spawn, holding the state component that row drives. Use one of the six ready rows or subclass it for a control of your own; the table picks the subclass from the interfaces the state component implements.
- **`WBP_ConfigItem_Color`** — Configurator row for a colour-valued state component, chosen automatically for anything implementing the colour value interface. Only the configurator offers it, not the display or replacement cards. Copy it when adding a row type of your own.
- **`WBP_ConfigItem_DropDown`** — Configurator row for a name-valued state component, letting the reader pick one of its named options from a list. Chosen only by the configurator; the display and replacement cards fall back to the selector row for names.
- **`WBP_ConfigItem_Selector`** — Configurator row that steps through the options of an integer-valued state component, and the fallback for name values on the display and replacement cards. The most reused of the row types, and the one to copy for a stepped control.
- **`WBP_ConfigItem_Slider`** — Configurator row for a float-valued state component, giving the reader a continuous handle over its range. Chosen automatically for anything implementing the float value interface, on all three demo table widgets.
- **`WBP_ConfigItem_Toggle`** — Configurator row for a boolean-valued state component, with the control right-aligned in the info row rather than filling it. Chosen automatically for anything implementing the boolean value interface.
- **`WBP_ConfigItem_Trigger`** — Configurator row for a trigger state component: a right-aligned button that fires the trigger, for state that has no value to show, only a moment. Chosen automatically for anything implementing the trigger value interface.
- **`WBP_Example_Configurator`** — Interactive face of a demo table. Builds one config row per state component on the demonstrated actor, choosing the row from the value interface that component implements: slider for float, toggle for boolean, selector for integer, drop-down for name, trigger and colour swatch. The Reset button resets every listed component through the value interface with the widget's own Source Info.
- **`WBP_Example_Display`** — Reading face of a demo table: image, title, scrolling description and an instruction line with an action icon, sized 1000 by 1200 for the table's widget component. Maps state components to rows as the configurator does, but offers no colour swatch and no reset. Fill its text through the demo table rather than editing the widget.
- **`WBP_Example_Replacement`** — Card a demo table shows in place of the live example: a rounded background image behind a title and a scrolling description, and nothing interactive. Switched on with the table's Show Replacement flag and filled from its Replacement Image, Title and Description. Use it where an example needs a poster instead of a working prop.
- **`WBP_IdleScreen`** — Attract screen for a headset nobody is wearing: a blurred backdrop behind the project logo, the company and project names, the level name and description, and an instruction line reading Put on the headset to continue. Nothing references it in the corpus, so spawn it from your own graph or take it as the pattern for an idle screen of your own.
- **`WBP_Navigation`** — Full navigation panel used by the kiosk: logo, a vertical pagination menu and a switcher that builds a page of level cards for the selected group, plus a Lobby button that asks for confirmation before travelling. Takes its groups from the navigation component on the game state. Set it as the widget class of a widget component to reproduce the kiosk.
- **`WBP_Navigation_Menu`** — Compact form of the navigation panel, sized 1000 by 1000 for a menu rather than a wall: a horizontal pagination row above a scrolling switcher of level pages, fed by the same navigation component. Nothing in the corpus uses it; it is here to be dropped into a menu of your own where the kiosk panel would be too large.
- **`WBP_Navigation_Page`** — One page of level cards. Initiate With Levels fills a vertical button group with a card per level data asset, taking the name and square image from each, and clicking one spawns a confirmation overlay before the switch happens. Built by the navigation panels rather than placed yourself.

## AFL_Libraries

- **`BFL_Math`** — Static maths helper holding one function. Average Transforms averages an array of transforms, summing the locations and scales and blending the rotations as quaternions with a sign check, so rotations pointing opposite ways do not cancel each other out. An empty array returns an identity transform. Call it from any graph; there is nothing to place.
- **`BFL_Save`** — Pass-through nodes, one per common type, that hand their input straight back out unchanged. They are named hooks to wrap around values a project saves and loads, so that logic can be added later without rewiring the graph; as shipped they serialise nothing, and nothing in the framework calls them.
- **`BPC_GameState_ProjectInfo`** — Branding for the project, held on the game state: project and company name, a version string and two logos, wide and lettering-free, each with a light and a dark variant. Add it to your own game state, as the showroom one does, and fill it in the details panel so every widget showing a title or a logo reads from one place.
- **`BPI_Sort`** — Comparison contract for the sorting library: one call answering whether the first item belongs before the second. Implement it on the class you want sorted and pass one of those objects in as the comparison target, so the ordering rule lives with your data rather than in the sort.
- **`BPI_Trace`** — Contract a pawn implements to publish what it is pointing at: the latest trace hit, the focus location and direction, and the screen control mode for mouse-driven pawns. The gaze, grip, select and widget abilities, the HUD and the crosshair all read the pawn through it, so a pawn of your own must implement it before those abilities work.
- **`BPI_TreeObject`** — Contract for objects that form a hierarchy: return your children, and return the object holding your visuals. Nothing in the framework implements or calls it, so treat it as a ready-made hook for tree-shaped data of your own rather than as something already wired up.
- **`BPL_Platform`** — Static platform check. Its one function, Is Editor, reports whether the game is running in a play-in-editor session by testing the current level name for the editor's prefix, which lets a graph take one path in the editor and another in a packaged build. Call it directly; nothing in the framework does.
- **`BP_Value`** — Bare event listener for a value that changes: an object carrying nothing but the On Value Updated delegate. A state component creates one and hands it out through the value interface, so anything watching the value can bind to it without knowing what produces it. Subclass it when the value needs data of its own, as the settings value does; it is created in code, never placed.
- **`Curve_EaseInOut`** — Float curve running from 0 to 1 with both ends eased, and the framework's default timeline shape. The teleport ability's motion, the laser's grab-speed ramp, a connector snapping into place and the widget component's fade all pass it to the Timeline macro, which is what gives those animations the same feel.
- **`FL_Materials`** — Static material helpers for meshes. Get Dynamic Material returns the dynamic instance in a material slot, creating one from whatever material is already there if the slot has none, which is the call to make before writing a parameter at runtime. Set All Materials replaces the material in every slot of a primitive at once.
- **`FL_Sort`** — Static sorting for arrays of objects. Bubble Sort Objects and Insert Sort Objects both order an array by asking a comparison object, one implementing the sort interface, which of any two items comes first, so the ordering rule stays in your class. A float variant is included as well. Call them directly; nothing in the framework does.
- **`FL_UI`** — Static helpers for preparing UI content. Most of it turns arrays of integers, floats, booleans, vectors or names into the string option arrays that selectors and drop-downs display, and parses them back again. The rest fits a width and height inside a maximum box while keeping the aspect ratio, and truncates text or strings to a length with three trailing dots.
- **`FL_Utilities`** — Static odds and ends called from any graph. Find Closest Value In Array returns the entry nearest a value and its index; Get Index From Array Of Weighted Values picks a random index treating the entries as weights; Get Component By Name And Class finds one of an actor's components by object name; Project Vector Onto Plane flattens a rotation against a surface normal.
- **`ML_Actor_Interpolation`** — Interpolation macros for use inside an actor's graph. Each eases a current value towards a target under its own loop, firing Update every step with the new float, vector, rotator, transform or colour and Completed once it is inside tolerance; two variants write the result straight into a dynamic material parameter instead. The component-parented copy carries the same set.
- **`ML_Actor_Replication`** — Authority branches for actor graphs. They answer what the framework asks before running network code: does this actor replicate at all, and if so are we on the machine with authority, so one graph can serve both a single-player and a replicated setup. Parented to Actor; components and plain objects have their own copies of the same idea.
- **`ML_Actors`** — Flow control and timing for actor graphs, and the most-used library in a pawn. Holds while loops with a delay, waits for an object to become valid or a condition to turn true, timed gates, an elapsed-time timer, a timer stack, continuous execution between a start and a stop, and a hold-button split into short click, hold and release. Parented to Actor.
- **`ML_Comp_Interpolation`** — The interpolation set again, parented to Actor Component so the macros can be used inside a component's graph. Each eases a value towards a target under its own loop, firing Update per step and Completed on arrival, with two variants driving a dynamic material parameter. Pick this copy or the actor one to match the graph you are working in.
- **`ML_Comp_Replication`** — Authority branches written from a component's point of view, asking about the owning actor rather than the component. Covers has authority, does the owner replicate, the two combined, and Comp Is Owner, which is true only on the machine whose player controls the owner. A wait-until-valid loop sits here too. Parented to Actor Component.
- **`ML_Components`** — Flow control and timing for component graphs, and the library most ability components lean on. Holds a delay-driven timeline that plays, pauses, reverses and scrubs a float curve without needing a timeline component, repeated and delayed execution, cooldown and timed exclusive gates, an elapsed-time timer and several waits for an object to validate.
- **`ML_Object_Array`** — Two index steppers for walking an array one entry at a time, forwards and backwards, each with the option to wrap round the ends rather than run past them. Parented to Object, so they are available in any graph. Nothing in the framework calls them.
- **`ML_Object_Debug`** — Debug drawing, available in any graph. Draw Gizmos takes an array of transforms and draws a red, green and blue axis cross at each one for a single frame at the size and thickness you pass in. Put it on a tick to see where spawn points, anchors or snap targets actually sit. Nothing in the framework calls it; it is there for your own diagnosis.
- **`ML_Object_FlowControl`** — Flow control usable in any graph, being parented to Object. Its centrepiece is the tick-free timeline, a float curve you play, pause, reverse and scrub that is advanced by a Tick pin you drive yourself, and which the component and widget timelines are both built on. Around it sit flip-flop gates with and without a reset, loops advanced by a trigger and a float compare with a deadzone.
- **`ML_Object_Gate`** — Gates that stop a graph acting on a value that has not changed. One Only If Different macro per common type passes execution through, and hands back the new value, only when it differs from the old, which is how the framework avoids re-broadcasting and redrawing on every set. Conditional Gate is here too. The most widely used of these libraries.
- **`ML_Object_Math`** — Maths macros for any graph. Interpolate With Nearly Check comes in float, vector, vector 2D, rotator, transform and colour flavours, stepping towards a target and firing Value Reached once inside the snap tolerance. Alongside are increment and decrement with modulo for cycling indices, angle between vectors, a looking-at-location test and clamping against an unordered range.
- **`ML_Object_Replication`** — Two replication branches parented to Object, so they can be used in graphs the actor and component copies cannot reach: does this actor replicate, and does the owner of this component replicate, the second also taking a separate exit when the component itself is not valid.
- **`ML_Object_Transform`** — Single-axis transform setters. Each macro writes one component of a scene component's relative location, rotation or scale and leaves the other two as they were, saving the break-and-remake that would otherwise be needed. Parented to Object, so they work in any graph; doors, floors and the pawn UI position helper use them.
- **`ML_Object_Utility`** — Two odd jobs available in any graph. Does Implement Interface branches on whether an object is both valid and implements a given interface, which is the check the interaction and ability code makes before calling anything on a hit object. Manipulate Timeline jumps a timeline component to its start or its end.
- **`ML_SceneComponents`** — Distance and angle tests measured from a scene component to the player camera. Each fires only as the reading crosses in or out of the band you set, with a deadzone either side so a value hovering on the boundary does not flicker, and each can be reset. Parented to Scene Component; labels and world widgets use it to hide themselves at range or off-angle.
- **`ML_UserWidget`** — Flow control, timing and interpolation for widget graphs. Plays a widget animation with a Finished pin, eases a float, vector, vector 2D, rotator or transform towards a target with a Stop pin, and provides the delay-driven timeline, a timed gate and waits for an object or condition. Wait For Widget To Establish Size is the one to reach for before measuring a freshly added widget.
- **`ML_Widget`** — Single macro parented to Widget rather than User Widget, so it can be used on the plain widgets inside a layout: Get Widget Coordinates converts an anchor point on a widget into absolute coordinates. Nothing in the framework calls it, so treat it as a spare part for layout maths of your own rather than as something already in play.

## AFM_Abilities

- **`BFL_ActorRegistry`** — Function library for the attachment registry, called statically with the parent actor as an argument. Register Actor, Unregister Actor and Get Registered Actors put the registry component on the parent the first time one is needed, so grabbing, pickups and teleport can record what a pawn is carrying without anyone having to add the component first.
- **`BPC_ActorAbility`** — Base class for an ability living on an ordinary actor rather than on a pawn or a hand. Carries the identifier, the blocker list and the Source Info it hands to interactions, and works the acting pawn out through its owner's owner, so an actor spawned by a pawn still reports who is behind it. Subclass it to write an ability of your own; the base on its own does nothing.
- **`BPC_AttachmentRegistry`** — Registry component recording the actors a pawn is currently carrying or dragging along. Registering one makes it the owner's, has a character owner's capsule ignore it while moving, and drops it again if it is destroyed; teleport and grabbing read the list back to bring held objects along and keep traces off them. The actor registry library adds it on demand, so there is no need to add it by hand.
- **`BPC_ControllerAbility`** — Base class for an ability belonging to one hand: the laser, grabbing, teleport, turning and movement abilities are all built on it. Add a subclass to a motion controller and the controller initiates it with the pawn, itself and the hand side, after which the ability can trace, spawn its helper actor and answer for its Source Info. Suppressed through Set Active With Blocker rather than removed.
- **`BPC_Interaction`** — Base interaction component: the target side of the ability contract. Add it to any actor that should respond to being hovered or acted on, or subclass it when the response needs its own logic. Carries the highlight it adds to the owner on demand, the hover sounds, the tag limiting which components count and the blocker list that suppresses the interaction without removing it.
- **`BPC_PawnAbility`** — Pawn component tracking what the pawn is currently pointing at, expressed as an interaction state data asset. Abilities push a state through Set Pawn Interaction State, the highest priority wins, and it falls back to the default a tenth of a second after the pushing stops. Applies the state's mouse cursor and cursor widget to the player controller; the crosshair reads its colour.
- **`BPC_Pawn_InteractionState`** — Base class for an ability the pawn owns rather than one hand: gaze, grip, select, teleport, the head-up display and the pawn interface are all built on it. Add a subclass to a pawn and the pawn gains that capability; the pawn calls Possess to hand over itself and its platform type, and until that happens a blocker keeps the ability inactive. Subclass it rather than adding the base.
- **`BPC_Socket`** — Named point on an actor that abilities can attach to or snap against. Add one wherever a hand should take hold, or subclass it, as the grip and attach-point sockets do, when the name has to be worked out rather than typed in. Interactions gather the sockets on their owner alongside its primitive components, filtered by the same relevant-components tag.
- **`BPI_Ability`** — Smallest contract an ability answers to: which pawn it ultimately belongs to. All three ability bases implement it and each works the answer out differently, so code holding an unknown ability component can ask for the pawn without knowing whether it sits on a hand, on the pawn or on an ordinary actor.
- **`BPI_AbilityRestriction`** — Contract for switching whole groups of abilities off on a pawn. Set Ability Restriction takes a component tag and puts a named blocker on every pawn and controller ability carrying it, which is how a menu or a cutscene suspends grabbing or movement without touching abilities one at a time. All three shipped pawns implement it.
- **`BPI_MotionController`** — Contract every motion controller answers to: which side it is, what is attached to it, whether the controller mesh is shown, and which ability currently has exclusive focus. Hand abilities call it on the actor they were initiated with, so implement it on a controller of your own instead of expecting them to cast to the shipped one.
- **`BPI_MotionController_Hands`** — Extra contract for the hand-mesh style of motion controller, on top of the plain one: snapping the hand to a socket, reading the grab transform, switching hand collision on and off, asking whether the hand is open and getting or setting its pose. Only the hand grabbing ability calls it, so a controller-mesh hand can leave it alone.
- **`BPI_PawnInfo`** — Contract letting a shared ability ask the pawn what it needs without knowing the pawn class: the camera component, the platform type and a request to recentre the capsule under the head. All three shipped pawns implement it, and any pawn of your own that is to carry framework abilities should too.
- **`BPI_SourceInfo`** — Contract for reading and writing the Source Info an object acts with, the pawn, the ability and its identifier. Abilities implement the getter so interactions can tell who is acting on them; widgets and interactions implement the setter so they can remember what last reached them. Implement it on anything of your own that has to pass that identity on.
- **`BPI_WidgetInteraction`** — Contract handing a widget the widget interaction component currently pointing at it. The laser and the pawn's widget ability push theirs onto whatever they hit, the widget component stores it, and the text field reads it back so the virtual keyboard it opens is driven by the same pointer. Implement it on any widget host of your own.
- **`BP_Helper_ControllerAbility`** — Base actor for the helpers a hand ability spawns to do its work out in the world: the laser's beam and physics handle, the teleport arc, the movement and turn helpers all inherit from it. Carries the hand side it was spawned for and an auto-destroy component that tidies it away with its owner. Spawned for you rather than placed; subclass it when an ability of your own needs a world-side actor.
- **`FL_Haptics`** — Function library playing controller haptics from a Source Info rather than from a hand. It works out which hands to buzz from the ability that acted, one side for a hand ability and both for a pawn ability, then plays, holds or stops the effect on that pawn's player controller. Call it statically from an interaction that should be felt; the caller never has to know which controller is which.
- **`Interface_Socket`** — Contract for anything offering itself as a named attachment point: it reports the socket name to look for on the mesh. The socket component implements it and grip searches through it, so a component of your own can serve as a snap target without inheriting from the socket component.
- **`ML_Actor_Input`** — Macro library for adding and removing Enhanced Input mapping contexts from an actor, plain or picked by hand side out of a mapping context struct. Parented to Actor, so the macros are offered in any actor; the desktop and mobile pawns use them to swap their contexts as the control mode changes.
- **`ML_Actors_Haptics`** — Macro library holding the continuous-haptics macro for actors: it keeps a buzz running while the macro is re-entered and stops it a tenth of a second after the calls stop, so a repeating event never has to remember to switch it off. Parented to Actor. Nothing in the shipped content uses this version; the component one does the same job inside abilities and interactions.
- **`ML_Comp_Input`** — Macro library for adding and removing Enhanced Input mapping contexts from a component, plain or picked by hand side out of a mapping context struct. Parented to Actor Component, so the macros are offered inside any ability; the laser, grab, teleport, grip, select and widget abilities use them to bring their input in and out as they activate.
- **`ML_Component_Haptics`** — Macro library holding the continuous-haptics macro for components: it keeps a buzz running while the macro is re-entered and stops it a tenth of a second after the calls stop. Parented to Actor Component, so it is offered inside any ability or interaction; the drag state uses it to make a handle rattle while it is being pulled.
- **`ML_ControllerAbilities`** — Macro library for hand abilities: a side guard that only continues on the hand the ability belongs to, a button handler folding left and right triggered and completed input events into one boolean, and a Source Info shortcut. Parented to the controller ability base, so the macros only appear inside abilities that inherit from it.
- **`ML_Helper_ControllerAbility`** — Macro library for the helper actors hand abilities spawn, mirroring the ability-side one: a side guard that only continues on the hand the helper was spawned for, and a button handler folding left and right start and completed events into one boolean. Parented to the helper base, so the macros only appear in helpers inheriting from it.
- **`ML_Object_SourceInfo`** — Macro library with the locally-controlled branch for a Source Info: one pin continues when the pawn that acted is the local player's, the other when it is not. Parented to Object, so it is offered everywhere, and it is the usual guard before running an effect that should only happen on the machine of whoever caused it.
- **`ML_PawnAbility`** — Macro library for pawn abilities: a Source Info shortcut, a locally-controlled branch on the possessed pawn, and Set Pawn Interaction State, which pushes an interaction state data asset onto the pawn's interaction state component when it has one. Parented to the pawn ability base, so the macros only appear inside abilities inheriting from it.
- **`PDA_InteractionState`** — Data asset describing one thing the pawn can be pointing at: its priority, the colour the crosshair takes, and the mouse cursor and cursor widget a desktop pawn switches to. Make one per interaction style and set it on the ability that should raise it; the pawn's interaction state component keeps whichever pushed state has the highest priority.
- **`WBP_MouseCursor`** — Base widget for a software mouse cursor. It holds nothing but the reference object it is created with, which is whatever raised the interaction state, so a cursor can show something about the thing under it. Subclass it, name the subclass on an interaction state data asset, and the pawn's interaction state component creates it and hands it to the player controller.

## AFM_AutoDestroy

- **`BPC_AutoDestroy`** — Lifetime component for spawned helper actors: at begin play it binds to the owning actor's own owner and destroys the helper when that owner goes. Nearly every helper the framework spawns carries one, and you should add it to any helper of your own that is spawned with an owner. With no owner it prints a warning and does nothing.

## AFM_CameraFade

- **`BPC_PlayerController_CameraFade`** — Fade component for a player controller. Client Fade runs the camera fade on the owning client over a duration, or applies it in one step when the duration is zero or less. Add it to a player controller of your own; teleport, level loading and the intro all fade through it, and a controller without it stays unfaded through those transitions.

## AFM_MeshCopy

- **`BP_Helper_MeshCopy`** — Ghost actor that duplicates another actor's mesh components and follows them every frame, so the copy can be faded, tinted or given a different material without touching the original. Highlights, previews, snap ghosts and the visibility switch are all built on it. Spawned rather than placed; subclass it when a copy of your own needs its own fade curve.

## AFM_Panel

- **`BPC_Panel`** — Scene component that builds a flat panel out of nine static meshes, a centre, four corners and four sides, scaled to Size around Pivot so the edges keep their proportions. Draw Panel creates the meshes on the owner, after which size, thickness, opacity and the border and base colours can all be changed at runtime. Add it wherever a widget or a prop needs a backing plate rather than a stretched quad.
- **`M_Panel`** — Material behind the nine-slice panel, carrying its base colour, border colour and fade opacity parameters. The panel component makes it dynamic and drives those; the widget component passes it in when it builds a panel behind a widget.
- **`SM_Panel_Center`** — Centre section of the nine-slice panel, scaled out to fill the panel's size while the corners keep their proportions.
- **`SM_Panel_Corner_Rounded`** — Rounded corner section of the nine-slice panel, and the corner a panel built behind a widget uses when the theme gives its large corner category a size above zero.
- **`SM_Panel_Corner_Straight`** — Square corner section of the nine-slice panel, used in place of the rounded corner when the theme's large corner category has no size.
- **`SM_Panel_Side`** — Edge section of the nine-slice panel, used on all four sides and stretched along each one between the corners.

## AFM_Replication

- **`BPC_Replication`** — Base for the transform replication components: it owns the tick intervals, the tolerance, the interpolation speed and the replicated transform, but not the question of what is being moved. Add the actor or the component variant instead of the base, or subclass it and override Get Controlled Scene Component when neither of those fits.
- **`BPC_Replication_Actor`** — Transform replication for the whole actor. Sends the actor's transform, made relative to its attach parent where it has one, and applies incoming transforms back to the actor. Add it to anything whose movement is driven locally, by grabbing or by physics, and has to be seen on the other machines.
- **`BPC_Replication_Component`** — Transform replication for one scene component rather than the whole actor. Set Component Tag to the tag on the component that should be followed; the first match is cached on the first look-up and its relative transform is what travels. Used where the actor itself does not move, as with the laser's end point.

## AFM_Settings

- **`BFL_Settings`** — Function library for the settings module. Register Object To Settings hands an object to the game state's settings component so it is applied and saved alongside everything else. Call it statically from anything that should take part in settings without owning a value asset of its own.
- **`BPC_GameState_Settings`** — Settings component the whole settings module hangs off. Add it to your game state and the framework has a settings system: it creates one object per settings value class the first time anything asks for it, keeps them in a map, and loads, applies and saves them through a save game in the named slot. Also holds the sound mix that volume settings override and the editor-set default overrides.
- **`BP_SaveGame_Settings`** — Save game the settings component reads and writes: four maps, one per value type, each keyed by the settings value class so a stored value can be matched back to the setting it belongs to. Created or loaded automatically from the save slot. Subclass it only if a project needs extra fields saved alongside, then name that subclass as Save Game Class.
- **`BP_Value_Settings`** — Base class for one editable setting: the name and caption a settings row displays, and a reference back to the settings component that made it. Settings are identified by their class, not by an instance you place, so the component creates one object per class and calls Init on it. Subclass one of the typed variants below rather than this directly.
- **`BP_Value_Settings_Bool`** — Base for an on/off setting, carrying the texts shown for the false and true states and the default that Reset restores. Where the value actually lives is left open: subclass it and override Get Boolean and Set Boolean, or use the console variant, which already stores it in a console variable.
- **`BP_Value_Settings_Bool_Console`** — On/off setting stored in a console variable. Reads the variable named in Console Command for its current state and writes the false or true string back as a console command when the player changes it. Subclass it and fill in the command and the two strings to expose any boolean cvar as a setting, as the dynamic resolution preset does.
- **`BP_Value_Settings_Bool_Console_DynamicResolution`** — Ready-made toggle for dynamic resolution, driving the r.DynamicRes.OperationMode console variable. No shipped settings screen uses it, so point a toggle row at it to offer it to players, or copy it as the pattern for another boolean cvar.
- **`BP_Value_Settings_Float`** — Base for a continuous setting: the range the value is stored in, the range, units, segment marks and fractional digits a slider draws itself from, and the default that Reset restores. Reading and writing the value is left to subclasses, so use the console or volume variant, or override Get Float and Set Float yourself.
- **`BP_Value_Settings_Float_Console`** — Continuous setting stored in a console variable. Reads the variable named in Console Command and normalises it to 0-1 against Value Range for the slider, then writes the interpolated figure back as a console command when the slider moves. Subclass it with the command and range filled in, as the VR resolution preset does.
- **`BP_Value_Settings_Float_Console_PixelDensity`** — Ready-made slider for VR render resolution, driving xr.SecondaryScreenPercentage.HMDRenderTarget between 50 and 150 per cent and shown to the player as 0.5 to 1.5, defaulting to the middle. Used by the desktop graphics tab; copy it and change the ranges if your headset target differs.
- **`BP_Value_Settings_Float_Volume`** — Continuous setting that mixes one sound class. Keeps its level as a plain value and pushes it to the settings component's sound mix as a class override whenever it changes, displayed as a whole number from 0 to 100. Subclass it and choose a Sound Class to add a mix your project needs; the four volume presets are exactly that.
- **`BP_Value_Settings_Float_Volume_Master`** — Ready-made volume setting for the master sound class, so it scales everything else in the mix. Used by the sound tab of the desktop settings screen; point a slider row at it to offer it elsewhere.
- **`BP_Value_Settings_Float_Volume_Music`** — Ready-made volume setting for the music sound class. Used by the sound tab of the desktop settings screen; point a slider row at it to put music volume on a screen of your own.
- **`BP_Value_Settings_Float_Volume_SFX`** — Ready-made volume setting for the sound effects class. Used by the sound tab of the desktop settings screen; point a slider row at it to put effects volume on a screen of your own.
- **`BP_Value_Settings_Float_Volume_UI`** — Volume setting intended for interface sounds, but as shipped it carries the SFX label and the effects sound class, so it duplicates the SFX preset. Nothing references it. Give it a sound class and a name of its own before putting it on a settings screen.
- **`BP_Value_Settings_Float_Volume_Voice`** — Ready-made volume setting for the voice sound class. Used by the sound tab of the desktop settings screen; point a slider row at it to put dialogue volume on a screen of your own.
- **`BP_Value_Settings_Integer`** — Base for a setting chosen from a numbered list, holding the texts that label each value and the default that Reset restores. The value is not stored here: subclass it and override Get Integer and Set Integer, or use the console variant, which maps the setting onto a scalability cvar.
- **`BP_Value_Settings_Integer_Console`** — Whole-number setting stored in a console variable, and the pattern behind every quality level the framework ships. Reads the variable named in Console Command and writes the new number back as a console command. Subclass it and set the command, the default and the texts naming each level; the graphics presets are all one-liners over this.
- **`BP_Value_Settings_Integer_Console_AntiAA`** — Ready-made quality setting for anti-aliasing, driving the sg.AntiAliasingQuality scalability variable and defaulting to level 3. Unlike the other quality presets it is not on the shipped graphics tab, so add a selector row for it if you want it offered.
- **`BP_Value_Settings_Integer_Console_Effects`** — Ready-made quality setting for effects, driving the sg.EffectsQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Integer_Console_FFR`** — Ready-made quality setting for fixed foveated rendering, driving the vr.FixedFoveationLevel variable and defaulting to level 4. Used by the graphics tab of the desktop settings screen. Only meaningful on headsets that support foveation.
- **`BP_Value_Settings_Integer_Console_Foliage`** — Ready-made quality setting for foliage, driving the sg.FoliageQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Integer_Console_PostProcess`** — Ready-made quality setting for post processing, driving the sg.PostProcessQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Integer_Console_ShadowQuality`** — Ready-made quality setting for shadows, driving the sg.ShadowQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Integer_Console_Texture`** — Ready-made quality setting for textures, driving the sg.TextureQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Integer_Console_ViewDistance`** — Ready-made quality setting for view distance, driving the sg.ViewDistanceQuality scalability variable and defaulting to level 3. Used by the graphics tab of the desktop settings screen; point a selector row at it to offer it elsewhere.
- **`BP_Value_Settings_Name`** — Base for a setting whose value is one of several named options, holding the IDs, the texts shown for them and the default ID. Current Index reports where the present value sits in the list, and Next Value and Previous Value step through it. Storing the value is left open: subclass it and override Get Value and Set, as the theme setting does.

## AFM_Spawner

- **`AFOverlay_Spawner`** — Overlay putting a spawner in front of a three-dimensional widget: wrap it around the content and it spawns the spawner actor at Relative Distance From Widget, then keeps it shown, hidden or deleted as the widget appears, is covered by an overlay or is switched away. Set the spawn class and the mesh representation here rather than on the spawner itself.
- **`BPC_Helper_SpawnedActor`** — Despawn timer added to an actor once it has been spawned from a spawner rather than placed by hand. It watches the actor's pickup coordinator: releasing the actor starts the countdown to Despawn Timer, picking it up again cancels it, and the actor is deleted through its visibility component when the time runs out. Added for you by the pickup dummy.
- **`BPC_PlayerController_ReplicatedSpawner`** — Player controller component that spawns replicated actors on the server and reports them back to the client that asked for them. Each request carries an identifier and the server keeps the spawned actors in a replicated buffer until the client has seen every one, which is how a client can grab an object the instant it appears. Add it to a player controller; the spawner's pickup dummy expects to find it.
- **`BPC_Spawner`** — Component that hands out copies of a class: it shows the spawnable as a mesh, and gripping that mesh spawns the real actor straight into the player's hand. Add it to an actor and set Spawn Class, the mesh representation, whether only one instance may exist at a time, how long a released actor survives and the spawn sound. Update Spawner swaps the class and the preview in place, so a stand can change what it offers without being rebuilt, and replicated classes go through the player controller's replicated spawner.
- **`BP_Helper_Spawn_PickupDummy`** — Stand-in actor a spawner shows in place of the thing it spawns. Gripping it spawns the real actor, locally or through the player controller's replicated spawner, and passes the grip straight over so the object arrives already in hand. While it is a hologram its grip is blocked and the hologram material replaces the mesh's own. Spawned by the spawner rather than placed.
- **`BP_Spawner`** — Actor that hands out copies of a class: it shows the spawnable as a mesh, and gripping that mesh spawns the real actor straight into the player's hand. Drop it into a level and set Spawn Class, the mesh representation, whether only one instance may exist at a time and how long a released actor survives. Replicated classes go through the player controller's replicated spawner.

## AFM_Spectator

- **`BP_Helper_Spectator`** — Scene capture actor behind a spectator component, spawned and attached by it. It holds the capture component, its post process settings and the field of view; the component points it at a render target and asks it to capture each frame while that spectator is the active one. Spawned for you rather than placed.
- **`BP_Manager_Spectator`** — Coordinator holding every spectator camera in the level, keyed by name, and deciding which one feeds the headset's spectator screen. Activating one stops the previous one and applies the screen mode, whether that is the full screen or a corner inset. Spawned on demand by the first spectator component that looks for it, so place one only if you want to reach it from your own graph.
- **`BP_SpectatorCamera`** — Ready-made spectator camera to place in a level: a spectator component, a name label drawn in the editor and a key binding that toggles this camera onto the spectator screen. Set Name and Key and it registers itself with the spectator coordinator at begin play. Use it as it stands, or add the spectator component to a camera actor of your own.
- **`Comp_Spectator`** — Camera component rendering a second view to the headset's spectator screen. It spawns its own scene capture helper and render target, registers with the spectator coordinator under Key at begin play, and captures only while it is the active spectator. Add it to any actor that should be able to take over the spectator view; each one needs a key of its own.

## AFM_Spline

- **`BPC_SplineMesh`** — Spline mesh component drawing a single beam from itself to an end point, set directly or found by a line trace. Colour changes interpolate rather than snap, and Set Expand drives the material's linear mask so the beam can grow and retract. Add it where a short pointer line is wanted without spawning the spline helper actor.
- **`BP_Helper_Spline`** — Tube-drawing actor: it builds a chain of spline meshes along a spline and can set the two end points, the start and end radius, the colour and how much of the length is drawn. The laser beam, the teleport arc and the label leader lines are all this actor. Spawned by whatever needs a curve; pass an existing spline component on spawn to follow that instead of its own.
- **`M_Spline`** — Material the framework's spline tubes are drawn with, carrying the colour parameter and the linear mask the spline mesh component animates to grow a tube from one end. The widget interaction pointer overrides its spline with it, and the laser and teleport abilities hand it to the spline helper they spawn.
- **`SM_Spline`** — Short tube segment that spline meshes bend along their path. It is the default mesh on the spline mesh component and on every segment the spline helper builds, so a spline of your own is shaped like this unless you replace it.

## AFM_State

- **`BPC_State`** — Abstract base for every state component: the framework's way of giving an actor one named, replicated value that its parts and its widgets can agree on. Holds the title and caption shown for that value and hands out the value object widgets bind to for change notifications. Abstract, so add one of the typed variants or subclass it for a value type of your own.
- **`BPC_State_Boolean`** — State component holding one replicated on/off value, along with the labels shown for false and true. Add it to an actor whose parts need to agree on a switch: interactions set it through Set Boolean or Toggle Boolean, widgets read and drive it, and the owner reacts to On Value Updated. Apply and Toggle push the default value from the editor so you can preview it.
- **`BPC_State_Color`** — State component holding one replicated linear colour, plus an interpolated copy that ticks towards the target at Interpolation Speed. Add it where a colour has to be shared and animated rather than set once, as the highlight examples do when they drive their materials, and read either the exact value or the smoothed one.
- **`BPC_State_Drag`** — State component turning a dragged handle into a value. It moves the child component named by Tag To Controlled Component along an axis, around an axis or along a spline as an interaction drags it, clamped to the value range and optionally snapping to sections that report as names as well as numbers. Add it to levers, drawers, dials, buttons and sliders.
- **`BPC_State_Float`** — State component holding one replicated number, with a range, units and an interpolated copy that eases towards the target each tick. Add it wherever a continuous value has to be shared: a dimmer, a speed, a slider's position. It also answers as a boolean, true above 0.5, so a toggle widget can drive it.
- **`BPC_State_Integer`** — State component holding one replicated whole number, with an optional list of texts naming each value so a drop-down or stepper can label it. Add it for discrete choices such as a quality level or a selected index; it broadcasts only when the value actually changes.
- **`BPC_State_Name`** — State component holding one replicated name chosen from a list of available names, with matching display texts. Add it where the state is one of several named options rather than a number; widgets step through it with Next Value and Previous Value, and Current Index gives its place in the list.
- **`BPC_State_Trigger`** — State component for a value with nothing to store: a one-shot event, replicated to everyone. Add it where a button or interaction should announce that something happened rather than change a setting. Value Trigger fires On Trigger locally and multicasts to the other machines, which skip the pawn that started it so it is not heard twice.
- **`BPI_Value`** — Common face of every value in the framework, whatever its type: the title and caption a widget displays, the reset call, and the value object a widget binds to so it hears about changes. Implemented by the state components and by settings objects. Implement it on anything the framework's input widgets should be able to drive.
- **`BPI_Value_Boolean`** — Typed half of the value contract for on/off values: read, set, toggle, and the two texts naming false and true. A widget calls it on whatever object it was handed, which is how one toggle can drive a boolean state, a float state above half or a boolean setting without knowing which it has.
- **`BPI_Value_Color`** — Typed half of the value contract for colours: read and set the current linear colour, and read the interpolated one for smooth transitions. Implemented by the colour state component; implement it on an object of your own to make it drivable by the colour picker widget.
- **`BPI_Value_Float`** — Typed half of the value contract for numbers: read and set the value, read its interpolated and lerped forms, and ask for the display content a slider needs to draw itself, meaning the range, the units, the segment marks and the fractional digits. Implemented by the float, drag and settings values.
- **`BPI_Value_Integer`** — Typed half of the value contract for whole numbers: read, set, and fetch the texts labelling each value. Implemented by the integer state and by integer settings, and spoken by the drop-down and stepper widgets, so implement it to make an object of your own editable by them.
- **`BPI_Value_Name`** — Typed half of the value contract for named options: set the current name, read it, step to the next or previous one, and fetch the available IDs with their display texts. Implemented by the name state and also by the drag state, whose sections behave as names, so the same drop-down drives both.
- **`BPI_Value_Trigger`** — Typed half of the value contract for values that only fire: the trigger call, carrying the source info of whoever pressed it, and the text a button shows for it. Implemented by the trigger state; implement it on an object of your own that should sit wherever the framework expects a value.
- **`BP_Helper_DragOffset`** — Invisible rig the drag state does its maths in: a handle with location and rotation offset points that it moves about to work out where a dragged component should sit. Spawned by the drag state component for its own use and tidied up through auto-destroy, so there is no reason to place or reference one.
- **`Cue_State_Drag_Instance`** — Click played over and over as a drag state travels, once for every Sound Tick Distance of movement, at the handle's location and through the attenuation set on the drag. Named directly in the drag component rather than exposed as a property, so it is the ratchet under every lever, drawer and slider unless that code is changed.

## AFM_Teleport

- **`BPC_PawnAbility_Teleport`** — Pawn ability that performs the teleport itself: the fade, the optional motion towards the destination, the move and the sound, run as timed phases so the pawn arrives at the darkest point of the fade. Actors registered against the pawn are carried along with it. Add one of its two subclasses rather than the base, and call Teleport from an interaction instead of moving the pawn by hand.
- **`BPC_PawnAbility_Teleport_Character`** — Teleport ability for a pawn built on Character. Corrects the landing point by the capsule half height or by the camera height, depending on the tracking level asked for, and switches character movement and capsule collision off while the pawn is attached to a destination component so a moving platform can carry it. All three shipped pawns use this variant.
- **`BPC_PawnAbility_Teleport_Pawn`** — Teleport ability for a plain Pawn, with no capsule to measure against: it offsets the landing point by a fixed eye height, or by the camera's own height where the destination is given at ground level. Add it to a pawn of your own that does not inherit from Character. Nothing in the shipped content uses it, since all three shipped pawns are Characters.
- **`Cue_Teleport`** — Sound of a pawn arriving somewhere, passed to the teleport ability as the sound for the move. The player position actor uses it when it teleports a pawn onto itself, and the selectable teleport area uses it when a player points and selects; the teleport arc supplies its own.

## AFM_Visibility

- **`BPC_Visibility`** — Show and hide component for an actor, replicated, which also follows the actor's collision and tick unless those are switched off. Delete fades the actor out and then destroys it, over the network where the actor replicates. Add it for a plain instant switch, or add the switch variant when the change should be animated.
- **`BPC_Visibility_Switch`** — Animated form of the visibility component: rather than switching the actor off, it spawns a mesh copy of the owner and fades that in or out over Animation Duration, hiding the real meshes at the halfway point. Tag Selection and Mesh Selection Tag choose which meshes are copied. Add it in place of the plain visibility component wherever the change should be seen rather than just happen.
- **`BP_Helper_MeshCopy_Visibility`** — Mesh copy used by the visibility switch, with a fade curve of its own that fires a trigger halfway through, which is the moment the real meshes are hidden or shown behind it. Spawned by the visibility switch; there is nothing here to configure.
- **`Cue_Visiblity_Hide`** — Sound of something dissolving away, set as the Sound Hide default on the switching visibility component and passed to the mesh copy that performs the fade.
- **`Cue_Visiblity_Show`** — Sound of something resolving into view, set as the Sound Show default on the switching visibility component and passed to the mesh copy that performs the fade.
- **`FL_Delete`** — Function library with a single call, Delete Actor, which removes an actor politely: where it has a visibility component the removal goes through that, so the actor fades out and the deletion replicates, and where it has not the actor is destroyed outright. Call it in place of Destroy Actor.

## AFM_WidgetInteraction

- **`BFL_WidgetInteraction`** — Function library returning a pointer index no other widget interaction is using. The counter lives on the game state and is added the first time an index is asked for, so two hands or two players never share one. Call it statically whenever you set up a widget interaction of your own.
- **`BPC_WidgetInteraction`** — Component giving its owner a UMG pointer of its own: while active it spawns the widget interaction helper, which draws the beam and the cursor and forwards presses, releases and scrolling to whatever widget the trace lands on. Add it to an actor that has to work widgets without being a motion controller; the laser and the hand abilities carry their own instead.
- **`BP_Helper_PointerIndexCounter`** — Counter handing out a fresh pointer index each time it is asked, kept on the game state so every widget interaction in the session ends up with a distinct one. Internal: call Widget Interaction Get Free Pointer Index on the function library, which adds the counter the first time one is needed.
- **`BP_Helper_WidgetInteraction`** — World-side actor driving a UMG widget from a trace: it owns the widget interaction component, the cursor plane drawn on the widget's surface and the short spline reaching out to it, interpolating the cursor between hits so it glides rather than jumps. Spawned by the widget interaction component or by a hand ability, never placed.
- **`SM_WidgetInteraction_CursorPlane`** — Flat quad drawn as the cursor where a pointer meets a world-space widget. The widget interaction helper carries it with an absolute transform and no collision, and makes its material dynamic to fade the cursor in and to mark it while the button is held.

## AFS_Core_Highlight

- **`BPC_Highlight`** — Base highlight component, the visual half of hovering. Carries the highlight colour, the start and stop sounds and the tag deciding which meshes are affected, and ends the highlight once Tick Highlight stops arriving. An interaction adds one for you from its Highlight Class, so choose the material, mesh-copy or post-process variant there, or subclass this.
- **`BPC_Highlight_Material`** — Highlight drawn through the owner's own materials, fading a scalar parameter on every dynamic material instance of the tagged meshes and writing the colour into a vector parameter. Name it as an interaction's Highlight Class when the meshes already carry highlight parameters, and set the two parameter names to match the material.
- **`BPC_Highlight_MeshCopy`** — Highlight drawn as a ghost duplicate of the owner's meshes, spawned as a mesh copy helper in the hologram material, leaving the owner's own materials untouched. Name it as an interaction's Highlight Class for objects whose materials cannot carry a highlight parameter.
- **`BPC_Highlight_PostProcess`** — Highlight drawn as an outline by a post-process pass. Finds the highlight post process actor in the level, spawning one if there is none, and asks it for a stencil index matching the highlight colour. Name it as an interaction's Highlight Class for a crisp outline; it needs custom depth, and only a few distinct colours can be live at once.
- **`BP_Helper_MeshCopy_Highlight`** — Ghost duplicate of a highlighted actor's meshes, spawned by the mesh-copy highlight. It adds nothing to the mesh copy helper it inherits from and exists so the highlight has a class of its own to spawn and to restyle; subclass it to change how the ghost looks.
- **`BP_PostProcess_Highlight`** — Level actor supplying the outline pass that post-process highlights are drawn with. It hands out custom depth stencil values, one per requested colour, writes those colours into the outline material and frees them again as the requesting objects go away. The first highlight that needs it spawns one, so place it yourself only to control where it sits or to change its post-process settings.
- **`M_Highlight_Outline_PostProcess_Color`** — Post-process material drawing the outline around highlighted meshes, with one colour parameter per custom depth stencil value. The highlight post-process actor blends it in, makes it dynamic and writes a colour into the slot it hands out for each highlight that asks for one. Nothing to set up on the material itself.

## AFS_Core_Loading

- **`BPI_PlayerPosition`** — Contract the loading system uses to find where a player should appear: the spawn transform, the player index, whether this is the default position, and the calls made when a pawn spawns here or is teleported here. The framework's player position actor implements it; implement it on a spawn point of your own rather than changing the loading pawn.
- **`BP_GameMode`** — Game mode the loading system expects: its default pawn is the loading helper, which runs the transition and then spawns the real pawn from the level data asset, and seamless travel is on. Name it on a level data asset, and subclass it rather than the engine's Game Mode when your project wants its own game state or player controller.
- **`BP_Helper_Pawn_Loading`** — Temporary pawn every player possesses before the real one exists. It fades the camera down, spawns the level's transition actor, streams the level's maps in, waits out the minimum transition time, then has the server spawn the level's pawn at a matching player position and destroys itself. Spawned by the framework game mode; not something to place.
- **`BP_MapInfo`** — Level marker naming the level data asset this map belongs to. Drop one into a map and set Level Key; the loading library looks it up the first time anything asks which level is running and caches it, so the game mode, the pawn choice and the streaming maps all come from the right data asset.
- **`BP_PlayerPosition`** — Player start the loading system understands. Place them where players should appear and give each one an index, or tick Default Position for the fallback everyone uses; the loading pawn matches a joining player to one of these and spawns the level's pawn on its transform. Teleport To Position moves a pawn here later through the teleport ability.
- **`BP_Transition`** — Base class for the loading screen shown while streaming maps load. The loading pawn spawns whichever transition class the level data asset names, calls Start Loading, then Loading Finished once the maps are in, then destroys it. Empty by design: subclass it to build a transition of your own, or name the default one instead.
- **`BP_Transition_Default`** — Ready-made loading screen: a sky dome, a grid floor, a directional light and a world-space widget carrying the loading throbber, which follows the camera's height so it stays in view. Name it as Transition Class on a level data asset to use it as it stands, or copy it as the starting point for a branded one.
- **`Cue_State_Loading_End`** — Sound of a loading screen going away, set as the Fade Out Sound on the widget component of the default transition.
- **`Cue_State_Loading_Start`** — Sound of a loading screen coming up, set as the Fade In Sound on the widget component of the default transition.
- **`FL_Loading`** — Function library for the level info the loading system runs on. Get Level Info returns the current level data asset, falling back to the map info actor in the level and caching it in the object registry; Set Level Info replaces it before travel; and Get Level Path From Reference turns a soft world reference into the map name servertravel wants. Called statically.
- **`MI_Loading_Sky_Default`** — Sky the default loading transition is wrapped in, applied to the loading sky mesh. The intro screen substitutes an instance of its own, so make another instance rather than editing this one when a transition needs a different look.
- **`ML_Comp_Loading`** — Macro library holding Loading Switch Level for components: it fades every player's camera to black, then either opens the level data asset's persistent map with its game mode or, with authority outside the editor, servertravels the whole session there. Its macro appears in any actor component; the actor library does the same job for actors.
- **`ML_Loading`** — Macro library holding Loading Switch Level for actors: it fades every player's camera to black, then either opens the level data asset's persistent map with its game mode or, with authority outside the editor, servertravels the whole session there. Call it from a portal, a menu button or an intro screen; the component library does the same job for components.
- **`M_Grid`** — Grid floor for the empty spaces the framework shows while nothing is loaded. The default transition and the intro screen both put it on a large engine plane so the player has ground underfoot between levels.
- **`PDA_Level`** — Data asset describing one playable level: the game mode, the desktop, VR and mobile pawns to choose between, the persistent and streaming maps, the loading screen class and the least time it stays up. Make one per level and point a map info actor at it. Get Pawn To Spawn picks the pawn for the current device, or you can force one.
- **`SM_Loading_Sky`** — Inward-facing dome the loading environments are built inside. The default transition and the intro screen each carry one with collision and shadows off, overriding it with their own sky material.
- **`WBP_Loading`** — Contents of the loading screen: a linear throbber above the word Loading, in a fixed-width overlay scaffold. The default transition actor draws it on its widget component. To change what a loading screen says, point your own transition class at a widget of your own rather than editing this one.

## AFS_Core_Pawn

- **`ABP_Hand`** — Animation blueprint driving the framework's hand mesh. It implements the hand animation contract, easing every value handed to it (pointing, thumb up, trigger and grip axes, hand tracking and a custom pose) into a blend weight over time rather than snapping, and mirrors the right-handed pose set for the left hand after asking the owning motion controller which side it is. Assign it as the animation class on a hand mesh, or subclass it to add poses of your own.
- **`A_Hand_Base_R_Grasp`** — Closed fist, right hand. The hand animation blueprint blends towards it as the grip axis rises, with the idle pose at the other end of that blend.
- **`A_Hand_Base_R_Idle`** — Relaxed open hand, right. The resting pose of the hand animation blueprint and the base that every finger pose is layered over.
- **`A_Hand_Base_R_IndexCurl`** — Curled index finger, right hand. Layered onto the index bones in proportion to the trigger axis, so the finger follows the trigger while the rest of the hand keeps whatever the grip is doing.
- **`A_Hand_Base_R_Point`** — Extended index finger, right hand. Layered onto the index bones when the hand reports pointing, which on a touch-sensing controller means the finger has come off the trigger.
- **`A_Hand_Base_R_ThumbUp`** — Raised thumb, right hand. Layered onto the thumb bones when the hand reports a thumbs up, which on a touch-sensing controller means the thumb has come off the stick and buttons.
- **`BPC_Input_Touch`** — Actor component turning raw touch into gestures. Feed it Touch Pressed, Moved and Released and it keeps each finger's location, starting location, delta, smoothed swipe delta and duration, then broadcasts a delegate for single and double taps with one or two fingers, for swipes and for drags, and presses named keys so the same gestures can be bound as Enhanced Input actions. It also keeps a line trace under the first finger unless Use Trace is off. Add it to a pawn that takes touch input.
- **`BPI_AnimBP_Hand`** — Contract between a hand motion controller and the animation blueprint on its mesh: index pointing, thumb up, trigger and grip axes, hand tracking on or off, a custom pose and the hand-tracking bone transforms. The controller calls it on whatever animation instance the mesh happens to have, so an animation blueprint of your own needs only to implement this to stand in for the shipped one.
- **`BPI_Pawn_VR`** — Contract letting a motion controller announce itself to the VR pawn it belongs to, along with the hand side it stands for. The pawn records it in its per-side controller map and, when no headset is running, parks it in front of the camera so the setup still works on a flat screen. Implement it on a VR pawn of your own that has to accept the framework's controllers.
- **`BP_MotionController`** — Base motion controller actor, one per hand: the actor that hand abilities are added to and initiated by. The VR pawn spawns it from its per-side controller class and attaches it to the camera handle, handing over the pawn, the headset type and the hand side, all three of which replicate. It answers the motion controller contract for side and attached actors, and grants one ability exclusive focus by holding a blocker on every other ability on the hand. Subclass it rather than placing it.
- **`BP_MotionController_Controller`** — Motion controller that shows a controller model rather than a hand: a static mesh, a small collision sphere at the tip and the engine's XR device visualisation component. Change Controller Mesh picks the mesh and material for the headset in use out of the built-in Quest, Rift, Vive, Index and Windows Mixed Reality sets, or hides them and leaves OpenXR to draw its own model. Use the Left and Right variants, which fill in the per-hand mesh and offset.
- **`BP_MotionController_Controller_Left`** — Left-hand instance of the controller-model motion controller, carrying the Quest 2 left mesh and the offset that seats it on the tracked pose. Set it as the VR pawn's Left Controller when the pawn should show controllers rather than hands; subclass it if you want to start from a different default model.
- **`BP_MotionController_Controller_Right`** — Right-hand instance of the controller-model motion controller: the Quest 2 right mesh, the offset that seats it on the tracked pose, and the motion source switched to the right hand. Set it as the VR pawn's Right Controller when the pawn should show controllers rather than hands; subclass it if you want to start from a different default model.
- **`BP_MotionController_Hands`** — Motion controller that shows an animated hand instead of a controller model. It carries the hand mesh and its animation blueprint under a per-headset offset, folds grip, trigger, index-touch and thumb-touch input for its own side into replicated hand state and pushes that to the animation, and feeds OpenXR hand-tracking bones through when the headset reports them. Answers the hands contract: snapping to a socket, hand collision and whether the hand is open. Use the Left and Right variants.
- **`BP_MotionController_Hands_Left`** — Left-hand instance of the hand-mesh motion controller: the mannequin XR left mesh, the offset that seats it on the tracked pose, and a grab transform read from that mesh's left grab-search socket. Set it as the VR pawn's Left Controller for hand-style VR, or subclass it to use a hand mesh of your own.
- **`BP_MotionController_Hands_Right`** — Right-hand instance of the hand-mesh motion controller: the mannequin XR right mesh, its offset, the motion source switched to the right hand, and a grab transform read from that mesh's right grab-search socket. Set it as the VR pawn's Right Controller for hand-style VR, or subclass it to use a hand mesh of your own.
- **`BP_Pawn_Desktop`** — Base keyboard-and-mouse pawn: a character with a camera, the pawn interaction state component and the character teleport ability. Handles look, move, jump, crouch and sprint from the desktop mapping context, switches between Game Only, Game and UI and UI Only control modes, and answers the trace contract by tracing from the camera or the mouse and caching the hit for a fiftieth of a second. Subclass it to add abilities; the Char variant adds a visible body.
- **`BP_Pawn_Desktop_Char`** — Desktop pawn with a visible body: head, torso and headset meshes marked owner-no-see, so other players in a networked session see a figure where the local player sees only the view from the camera. It adds no behaviour beyond the desktop pawn it inherits from, so subclass it, as the showroom pawns do, to give the pawn the abilities it needs.
- **`BP_Pawn_Mobile`** — Base touch pawn: a character with a camera, the touch input component, the pawn interaction state component and the character teleport ability. One finger swiping turns and pitches the view, a double tap on ground within thirty degrees of level teleports the pawn there, and focus and traces follow the first finger through the trace contract. Subclass it to add abilities; the Char variant adds a visible body.
- **`BP_Pawn_Mobile_Char`** — Touch pawn with a visible body: head, torso and headset meshes marked owner-no-see, so other players in a networked session see a figure where the local player sees only the view from the camera. It adds no behaviour beyond the mobile pawn it inherits from, so subclass it, as the showroom pawns do, to give the pawn the abilities it needs.
- **`BP_Pawn_VR`** — Base VR pawn: a character carrying the camera on a replicated camera handle, alongside the character teleport ability. It spawns one motion controller per hand from the Left Controller and Right Controller class settings, recentres the capsule under the head, matches capsule height to the camera, and applies ability restrictions to its own pawn abilities and to every controller ability on either hand. Choose the controller classes, then subclass it to add abilities.
- **`BP_Pawn_VR_Char`** — VR pawn with a visible body: head and torso meshes marked owner-no-see, so other players see an avatar while the wearer sees only the world, with the camera raised to standing height. It adds no behaviour beyond the VR pawn it inherits from, so subclass it, as the showroom pawns do, to give the pawn the abilities it needs.
- **`BP_Value_Settings_Float_Pawn_Speed`** — Ready-made slider for how fast the pawn moves, scaling the movement ability's speed. Point a slider row at it to put locomotion speed on a settings screen.
- **`CR_Hand_HandTracking`** — Control rig posing the hand mesh from tracked hand data. It takes the bone transforms the motion controller reports, maps them onto the named left and right bone chains, and mirrors the right-hand set when it drives the left. Driven by the hand animation blueprint; there is nothing to set unless your hand skeleton names its bones differently.
- **`IA_MotionController_Hand_GripAxis_Left`** — Input action carrying how far the left grip is squeezed. The hand-mesh motion controller acts on it only on the actor whose side is Left, storing it as the grip axis, replicating it and blending the fist pose from it. Map it in the hand mapping context for the headset you support.
- **`IA_MotionController_Hand_GripAxis_Right`** — Input action carrying how far the right grip is squeezed. The hand-mesh motion controller acts on it only on the actor whose side is Right, storing it as the grip axis, replicating it and blending the fist pose from it. Map it in the hand mapping context for the headset you support.
- **`IA_MotionController_Hand_IndexTouch_Left`** — Input action for the touch sensor under the left index finger. The hand-mesh motion controller inverts it into Is Pointing and replicates that, so lifting the finger off the trigger makes the hand point rather than any button doing it.
- **`IA_MotionController_Hand_IndexTouch_Right`** — Input action for the touch sensor under the right index finger. The hand-mesh motion controller inverts it into Is Pointing and replicates that, so lifting the finger off the trigger makes the hand point rather than any button doing it.
- **`IA_MotionController_Hand_ThumbTouch_Left`** — Input action for the touch sensor under the left thumb. The hand-mesh motion controller inverts it into Thumbs Up and replicates that, so the thumb rises when it leaves the stick and buttons. Headsets without capacitive sensing leave the pose flat.
- **`IA_MotionController_Hand_ThumbTouch_Right`** — Input action for the touch sensor under the right thumb. The hand-mesh motion controller inverts it into Thumbs Up and replicates that, so the thumb rises when it leaves the stick and buttons. Headsets without capacitive sensing leave the pose flat.
- **`IA_MotionController_Hand_TriggerAxis_Left`** — Input action carrying how far the left trigger is pulled. The hand-mesh motion controller acts on it only on the actor whose side is Left, keeping it as the trigger axis and curling the index finger by it.
- **`IA_MotionController_Hand_TriggerAxis_Right`** — Input action carrying how far the right trigger is pulled. The hand-mesh motion controller acts on it only on the actor whose side is Right, keeping it as the trigger axis and curling the index finger by it.
- **`IA_Pawn_Crouch`** — Input action for crouching, held rather than toggled: the desktop pawn crouches while it is down and stands when it is released. Crouching has to be allowed on the character movement component for it to do anything.
- **`IA_Pawn_Desktop_ToggleFreeMouse`** — Input action releasing the mouse from the desktop pawn's camera. Each press moves the pawn between Game Only and Game and UI, which shows the cursor, recentres it and stops look input so the player can click widgets on screen.
- **`IA_Pawn_Jump`** — Input action for jumping on the desktop pawn: Jump while it is held, Stop Jumping when it is released, so tap height and hold height differ.
- **`IA_Pawn_Look`** — Input action carrying look as a two-axis value, added to the desktop pawn's controller yaw and pitch. It is ignored unless the pawn is in Game Only mode, so the view stops turning the moment the cursor is freed.
- **`IA_Pawn_Move`** — Input action carrying movement as a two-axis value. The desktop pawn applies X along its right vector and Y along its forward vector, and keeps doing so whether or not the cursor is free.
- **`IA_Pawn_Sprint`** — Input action for sprinting, held rather than toggled: the desktop pawn doubles Max Walk Speed while it is down and halves it again on release, so anything else changing that speed mid-sprint is undone.
- **`IA_Pawn_VR_ResetOrientation`** — Input action for recentring the headset, which the VR pawn answers with Reset Orientation and Position. The VR pawn adds no mapping context of its own, so put it in one your project or a controller ability supplies if players should be able to recentre.
- **`IMC_Pawn_Desktop`** — Mapping context holding the keyboard and mouse bindings for the desktop pawn: move, look, jump, crouch, sprint and the free-mouse toggle. The pawn adds it once it is locally controlled and removes it when unpossessed, so this is the asset to edit to rebind desktop controls.
- **`IMC_Pawn_Mobile`** — Mapping context for the mobile pawn, added once it is locally controlled and removed when unpossessed. The pawn binds no input actions itself, taking movement from the touch input component instead, so this is the place to hang a project's own touch or gamepad bindings.
- **`MDT_Hand`** — Mirror table turning the right-handed pose set into a left hand. The hand animation blueprint mirrors its finished pose through it whenever the motion controller it belongs to reports the left side, which is why only right-hand animations are shipped.
- **`MI_VivePreControllerMaterial_Inst`** — Material instance for the Vive controller model, applied by the controller-model motion controller for the Vive and the Vive Pro. Made dynamic on assignment, so a project can tint the controller.
- **`ML_MotionController`** — Macro library for motion controllers: a side guard that only continues on the hand this controller stands for, and a button handler folding the left and right start and completed input events into one boolean with that guard applied. Parented to the motion controller base, so the macros appear only inside controllers inheriting from it; the hand controller uses them for its per-hand input.
- **`M_Controller_Index`** — Material for the Valve Index controller models, applied by the controller-model motion controller when the headset is an Index. Made dynamic on assignment, so a project can tint the controller.
- **`M_OculusQuest2_Controller`** — Material for the Quest controller models, applied by the controller-model motion controller for Quest 1, Quest 2 and the generic OpenXR case. Made dynamic on assignment, so a project can tint the controller.
- **`M_SM_Mesh_OculusControllerMesh`** — Material for the Oculus Rift and Rift S controller models. The controller-model motion controller applies it when the headset is one of those two, making it dynamic first so a project can tint the controller.
- **`M_WMR_Body`** — Material for the Windows Mixed Reality controller models, applied by the controller-model motion controller for the Reverb, the Acer and Samsung headsets and, as the nearest match on offer, for PSVR. Made dynamic on assignment.
- **`SKM_MannyXR_left`** — Left hand of the Mannequin XR pair and the mesh on the left hand-mesh motion controller, which reads its grab transform from the left grab-search socket. A hand of your own can replace it on a subclass as long as it keeps that socket and the XR skeleton.
- **`SKM_MannyXR_right`** — Right hand of the Mannequin XR pair and the mesh on the right hand-mesh motion controller, which reads its grab transform from the right grab-search socket. A hand of your own can replace it on a subclass as long as it keeps that socket and the XR skeleton.
- **`SK_MannequinsXR`** — Skeleton shared by the Mannequin XR hands and the one the hand animation blueprint is built against. A replacement hand mesh has to use it, or the shipped poses, the mirror table and the hand-tracking control rig no longer apply.
- **`SM_Framework_HMD_Futuristic`** — Stylised headset for the framework's placeholder avatar, attached to the avatar head on the desktop and mobile character pawns and hidden from the player wearing it. The VR character pawn does not carry it.
- **`SM_Framework_Head`** — Head of the framework's placeholder avatar and the mesh other players see turning as this player looks around. All three character pawn variants carry it, marked owner-no-see, with the torso attached under it.
- **`SM_Framework_Torso`** — Torso of the framework's placeholder avatar, hanging off the head on all three character pawn variants and hidden from its own player. Swap it and the head for a model of your own on a subclass rather than editing the pawns.
- **`SM_Mesh_OculusControllerMesh_Left`** — Left Oculus Rift controller model, one of the per-headset meshes the controller-model motion controller swaps in. Chosen for the Rift and the Rift S.
- **`SM_Mesh_OculusControllerMesh_Right`** — Right Oculus Rift controller model, one of the per-headset meshes the controller-model motion controller swaps in. Chosen for the Rift and the Rift S.
- **`SM_OculusQuest2_Controller_Left`** — Left Quest 2 controller model, chosen by the controller-model motion controller for Quest 1, Quest 2 and the generic OpenXR case. It is also the mesh the left controller variant carries out of the box.
- **`SM_OculusQuest2_Controller_Right`** — Right Quest 2 controller model, chosen by the controller-model motion controller for Quest 1, Quest 2 and the generic OpenXR case, and the mesh sitting on the base controller actor before any headset has been detected.
- **`SM_Valve_Index_Controller_Left`** — Left Valve Index controller model, chosen by the controller-model motion controller when the headset reports as an Index.
- **`SM_Valve_Index_Controller_Right`** — Right Valve Index controller model, chosen by the controller-model motion controller when the headset reports as an Index.
- **`SM_VivePreControllerMesh`** — Vive controller model, chosen by the controller-model motion controller for the Vive and the Vive Pro. The wand is symmetrical, so the same mesh is used for both hands.
- **`SM_WMR_Controller_Left`** — Left Windows Mixed Reality controller model, chosen by the controller-model motion controller for the Reverb, Acer and Samsung headsets and standing in for PSVR.
- **`SM_WMR_Controller_Right`** — Right Windows Mixed Reality controller model, chosen by the controller-model motion controller for the Reverb, Acer and Samsung headsets and standing in for PSVR.
- **`T_Framework_Pawn_Crosshair`** — Crosshair for the desktop HUD. The crosshair widget draws it 64 by 64 in the centre of the viewport and tints it with the pawn's interaction state colour, so it reads what is under the pointer.
- **`UI_Thumbstick`** — On-screen virtual thumbstick for touch pawns. It claims the first or second finger that lands within its own radius, drags the stick image with that finger clamped to Thumbstick Size, and broadcasts Stick Input every frame it is held; Invert X, Invert Y and Scale Output shape the value it reports. Place it in a touch interface of your own, as the simple touch overlay does.
- **`UI_TouchSimple`** — Example touch overlay: two thumbsticks and a jump button over the viewport, with the mouse cursor switched on and Game and UI input set on construct. Its button and stick events are empty stubs and nothing in the shipped content creates it, so treat it as a starting point to copy and wire up rather than a finished control scheme.
- **`Widget_Crosshair`** — Screen-centre crosshair for the desktop pawn, which creates it on possession and adds it to the viewport. Its colour comes from the pawn's interaction state component, so it follows whatever is under the pointer, and it hides itself whenever the mouse cursor is showing or the control mode is anything other than Game Only. The desktop pawn names this class directly, so change the look by editing it rather than by pointing the pawn elsewhere.

## AFS_Core_Snapping

- **`BPC_Anchor`** — Fixed point on an actor that connectors may snap to. Add it wherever something should be attachable, list the connector IDs it accepts and set the sphere radius within which a connector can find it. It registers itself with the anchor cache at begin play, shows a hologram of the approaching actor while a connector is searching, and stops accepting once occupied.
- **`BPC_AnchorCache`** — Registry of every snapping anchor in the world, keyed by connector ID and held on the game state, so a searching connector never has to sweep the level. Anchors add and remove themselves as they begin play and are destroyed. It is added to the game state automatically the first time an anchor or connector asks for it, so there is nothing to place or configure.
- **`BPC_Connector`** — Abstract base for the moving side of a snap: the component that searches for somewhere to attach to. Handles the replicated attachment, the attach and detach sounds, the hologram preview and the motion into place, and blocks the owner's interactions while it repositions. Its own search finds nothing, so add the anchor or surface variant, or subclass it and override the search.
- **`BPC_Connector_Anchor`** — Connector that snaps to prepared anchor points. It asks the anchor cache for every anchor registered under its Connector ID, takes the nearest one inside that anchor's radius, and priority rises the closer it gets. Add it to an actor that should click into place at known positions and set the ID to match the anchors you want it to accept.
- **`BPC_Connector_Surface`** — Connector that snaps to whatever surface it is traced against rather than to a prepared anchor. Accepts hits up to sixty degrees off, optionally only on components carrying the required tag, and can align the owner to the surface normal with a rotation adjustment for meshes that do not face along X. Add it to shelves, ceiling lights and anything placed against walls or floors.
- **`BP_Helper_MeshCopy_Anchor`** — Hologram copy of the connecting actor's meshes, shown at an available anchor while a connector is searching so the player can see where it would go. Tints briefly to the hovered colour when the connector passes over that anchor. Spawned and destroyed by the anchor, not placed by hand.
- **`BP_Helper_MeshCopy_Preview`** — Hologram preview of the owner's meshes shown at the place a connector has decided it would snap to. It adds nothing to the mesh copy helper it inherits from, and the connector spawns and moves it for you; subclass it to change how the preview looks.
- **`BP_Helper_SnapLocation`** — Bare marker actor the snapping system spawns to hold a destination transform while a connector works out where to go. Empty apart from auto-destroy, with nothing to configure; the anchor cache keeps one and hands it out.
- **`FL_Snapping`** — Function library exposing the snapping maths on its own: the transform that would put a connector on a given anchor or surface point, and the rotation that aligns a component to a surface normal. Call these statically when placement has to be worked out away from a live connector, in an editor tool or a preview of your own.

## AFS_UI

- **`AFBorder`** — Themed surface at the root of the border family: a flat fill drawn with a material the theme builds, coloured from a colour definition rather than a literal value and rebuilt whenever the theme changes. Use it in a widget's hierarchy in place of a plain Border, or subclass it when a variant needs a material of its own.
- **`AFBorder_Custom`** — Themed surface that draws a material you supply instead of one of the framework's. Give it a normal and a desktop material and it keeps their corner and colour parameters fed from the theme, re-applying them on every theme change. Reach for it when a panel needs artwork of its own; the colour picker and the custom-material slider are the shipped examples.
- **`AFBorder_Linear`** — Rounded surface coloured from a plain linear colour instead of a theme colour definition, with its own corner override. Use it in the few places where the colour comes from data or from the user rather than the palette, as the colour picker does for its preview; prefer the ordinary rounded border everywhere else.
- **`AFBorder_Rounded`** — Rounded version of the themed surface and the default choice for panels, cards and button bodies. Same fill as the plain border, drawn with the theme's corner radii or a custom size from its corner definition. Parent of the hover, outline, gradient, separator and side-colour variants, so subclass it when you need a material the family does not cover.
- **`AFBorder_Rounded_AutoBlend`** — Rounded surface that blends between its own colour and one picked to stay legible against the background behind it, under a single value from 0 to 1. Implements the widget blend contract, so the colour, radio and toggle buttons drive it as their state changes. Place it where a fill has to shift colour without the widget knowing which colours are involved.
- **`AFBorder_Rounded_Gradient`** — Rounded surface filled with a gradient derived from one colour definition, with Gradient Rotation setting the sweep angle. Use it where a flat fill would read as dead space; take the two-colour variant instead when the far end of the gradient needs a colour of its own.
- **`AFBorder_Rounded_Gradient_2Color`** — Rounded gradient surface with both ends under your control: a second colour definition, and an option to invert the sweep as the blend moves. The main button styles use it as their body and drive it through the widget blend contract, so a press or a selection slides between the two colours rather than cutting.
- **`AFBorder_Rounded_Hover`** — Rounded surface that carries a button's hover highlight. Transparent by default and faded in through the widget blend contract as a pointer, laser or hand arrives, so buttons stack one over their body instead of recolouring it. Add it above the fill you want the highlight to sit on, and let the button own the blend value.
- **`AFBorder_Rounded_Outline`** — Rounded surface drawing only an edge, its weight taken from the theme's outline categories and its opacity driven through the widget blend contract. Nothing is painted in the middle, so it can sit above other content. Layer it over cards, text fields, overlays and anything that needs a focus or selection ring.
- **`AFBorder_Rounded_Separator`** — Preset of the rounded surface configured as a divider: background colour, a small fixed corner radius and even padding on all four sides. Drop it between rows or sections rather than styling a border by hand. Nothing in the shipped content uses it, so treat it as a convenience preset rather than something already wired in.
- **`AFBorder_Rounded_SideColor`** — Rounded surface that paints one or more of its four edges in a second colour, with the Sides vector choosing which. The default scaffold uses it for the accent rule down its edge. Place it where a panel needs a coloured edge without a separate widget stacked behind it.
- **`AFGradient`** — Image drawing a soft gradient tinted from a colour definition, with a rotation for its direction; both are re-applied whenever the theme changes. Used behind the expanding scaffold. Place it as a backdrop where a panel should fade out into the scene rather than end on a hard edge.
- **`AFHorizontalBox`** — Horizontal container that owns the spacing between its children. On theme update and on restyle it re-applies Default Padding between them and trims it from the outer edge, skipping collapsed children so a hidden entry leaves no gap. Use it in place of a plain Horizontal Box inside a framework widget.
- **`AFImage`** — Themed image at the root of the image family: draws a texture through a material the theme builds, and can take its size from that texture or fit it inside Max Dimensions. Collapse If Empty hides it when no texture is set, so optional artwork leaves no hole in a layout. Use it in place of a plain Image, or subclass it for a variant with its own material.
- **`AFImage_Icon`** — Image preset for icons: a blank 64-pixel icon by default, tinted from a colour definition rather than from the texture's own pixels. Blends towards a legible contrast colour through the widget blend contract, so an icon inside a button follows the button's state, and Override With Custom Color swaps in a colour data asset. The framework's standard way to show an icon.
- **`AFImage_Rounded`** — Image with rounded corners, their radii taken from the theme's corner definition or overridden per instance. Parent of the background, transition and translated variants. Use it for thumbnails and card artwork where a square edge would cut across the panel's shape.
- **`AFImage_Rounded_Background`** — Rounded image with a themed colour drawn behind the texture, so artwork that is transparent or does not cover the whole brush still reads as a solid card. Used by the image button. Place it where the picture cannot be relied on to fill its frame.
- **`AFImage_Rounded_Transition`** — Rounded image that cross-fades between textures instead of swapping them. Give it an image list and call Switch To Index, or switch auto-scroll on to step through the list on a timer; Fade Duration is the length of one cross-fade, in seconds. Only the images example uses it, so it is here for slideshows and hero images of your own.
- **`AFImage_Rounded_Translated`** — Rounded image whose texture is panned and zoomed inside the brush rather than stretched to fill it, driven by a translation struct holding an offset and a zoom. Use it to frame part of a larger picture at a fixed size; the images example is the only shipped user.
- **`AFLogo`** — Image showing the project's logo, taking the light or dark artwork from a logo struct to match the theme in use and refreshing when the theme changes. The auto-colour options let it pick against the background it is placed on. Set the logo on the idle screen, the VR menu and the navigation bar through this rather than swapping textures yourself.
- **`AFProgressbar`** — Root of the progress bar family: an image drawn with a material whose fill it drives from Percent, between 0 and 1, with foreground and background colours taken from the theme and re-applied whenever the theme changes. Update Percent can interpolate towards the new value at Interp Speed rather than jumping. Take one of the three shapes, or subclass it and return a material of your own.
- **`AFProgressbar_Circular`** — Progress bar drawn as a ring, 400 by 400 pixels by default. Percent, interpolation and theme colours behave as they do across the family; only the material differs. Use it where a bar would not fit, for a radial gauge or a loading dial.
- **`AFProgressbar_Horizontal`** — Progress bar filling from left to right, 500 by 20 pixels by default and the shape the sliders are built on. Corners rounds the ends from the theme's corner definition, and it swaps to a desktop material when the interface is drawn on screen rather than in the world.
- **`AFProgressbar_Vertical`** — Progress bar filling from bottom to top, 20 by 500 pixels by default. Same corner definition and desktop material swap as the horizontal one. Use it for meters running up the edge of a panel, as the left-hand head-up display example does.
- **`AFScrollbox`** — Scroll box for framework widgets: interpolated scrolling to an offset rather than jumping, a scroll sound played through the widget component, and a scrollbar built from four theme colours that fades away while there is nothing to scroll. Scroll position replicates to other players unless Should Replicate is off. Use the horizontal or vertical preset rather than placing this directly.
- **`AFScrollbox_Horizontal`** — Horizontal preset of the framework scroll box, with the orientation set and the scrollbar padded off the bottom of the content. Nothing else is added; use it instead of reconfiguring the base scroll box by hand.
- **`AFScrollbox_Vertical`** — Vertical preset of the framework scroll box, with the bar and its track always visible and padded off the left of the content, plus Boxed and Small for the two styling variants. The default scrolling container throughout the framework's widgets; reach for it whenever content can outgrow its panel.
- **`AFSwitcher`** — Overlay holding several widgets and cross-fading between them, optionally sliding them with Move Transform and playing a switch sound. Switch by index, by widget, or by an ID from its Widgets map, in which case it creates the page on demand and can drop it again once it has faded out. Registers with the widget component so the visible page replicates. The framework's page, tab and step container.
- **`AFText`** — Text styled from the theme: choose a Typography level and it takes the matching font, colour and desired padding, or set the colour rule to use a custom colour definition instead. Blends towards a contrast colour through the widget blend contract so text inside a button follows its state, and Collapse If Empty hides it when the text is blank. Use it in place of a plain Text Block.
- **`AFThrobber_Circular`** — Circular busy indicator drawn with the round throbber material and tinted from a colour definition. The animation lives in the material, so it runs for as long as the widget is visible and needs no starting or stopping. Drop it in while something loads; the loading overlay and the loading switcher already use one.
- **`AFThrobber_Linear`** — Indeterminate progress bar: a sweep running along a rounded track, with separate foreground and background colours from the theme and corners matched to it. Use it where a spinner would be too tall, as the top HUD example and the loading screen do, and a determinate progress widget where the amount of work is actually known.
- **`AFVerticalBox`** — Vertical container that owns the spacing between its rows, re-applying it on theme update and on restyle and skipping collapsed children so a hidden row leaves no gap. Custom Padding For First Item and Last Element As Footer adjust the ends. The most-used container in the framework's widgets; use it in place of a plain Vertical Box.
- **`BFL_ReplicatedUI`** — Function library holding the one call that registers or unregisters a widget component with a pawn's replicated UI component, which is what starts or stops that interface being mirrored to other players. It does nothing when the pawn has no such component, which is how the feature stays opt-in.
- **`BPC_GameState_ThemeManager`** — This component hold the current globally used theme.
- **`BPC_Panel_Widget`** — Panel component specialised for sitting behind a widget. It keeps its nine-slice meshes matched to the widget component's current draw size and pivot, and recolours them from the theme, choosing rounded or straight corners from the theme's corner sizes. The widget component adds and removes it as Use Panel changes, so there is rarely a reason to add it yourself.
- **`BPC_PawnAbility_HUD`** — Pawn ability giving a pawn a head-up display. Add it and the pawn can add, remove and toggle widgets in numbered frames; on a VR pawn it spawns a helper actor carrying the display in front of the camera, on desktop and mobile it goes to the viewport. It also acts as those widgets' widget component, resolving actor references, playing sounds and following the theme manager.
- **`BPC_ReplicatedUI`** — Pawn component that mirrors a player's world-space interfaces to the other clients as ghost copies. Add it to the pawn on both sides: where the pawn is locally controlled it gathers the transform, draw size, pivot and visibility of the widget components registered with it and replicates them, and elsewhere it spawns a ghost widget for each entry and fades out the ones that stop arriving.
- **`BPC_Widget`** — Default widget component
- **`BPC_Widget_ReplicatedUI`** — Ghost stand-in for another player's interface: a widget component with collision switched off, its own material and a fixed placeholder widget, whose opacity is interpolated towards a target and which destroys itself once it reaches zero. Created and driven by the replicated UI component, so there is no reason to add it by hand.
- **`BPI_KeyboardInput`** — Contract letting a virtual keyboard deliver what was pressed, whether that is a character, a key or a named command such as Upper or Close Keyboard, to whatever it is typing into. The keyboard calls it on the field it was opened for; implement it on an input widget of your own that is not built on the framework's text field.
- **`BPI_WidgetComponent`** — Contract between a widget and whatever is presenting it: closing widgets, playing widget sounds, opening and closing overlays, registering widgets for replication and resolving named actor references. Widgets call it on their widget component, so implement it on any component of your own that should host framework widgets.
- **`BPI_WidgetElement`** — Contract every element inside a framework interface answers to, covering construct, initiate, theme update, replication and the slot and child queries the recursive widget walk uses to reach nested elements. The widget base already implements it; implement it yourself only on a widget built on something else that still has to be themed and initialised with the rest of the tree.
- **`BPI_Widget_Blend`** — One blend value for elements that cross-fade between two looks, such as a rounded border easing into its hover colour. Implemented by borders, icons and text so the button around them can drive the transition with a single call, without knowing what each element does with it.
- **`BPI_Widget_TreeElement`** — Contract for an object that knows which tree element widget should display it, so a tree can build a row straight from its contents. Nothing in the shipped content implements it, which makes it an extension point for trees of your own rather than something already wired up.
- **`BP_Helper_HUD`** — Carrier actor the head-up display ability spawns for VR pawns. Holds the display's widget component on a spring arm with rotation lag so the interface trails head movement instead of being welded to it, and tidies itself up through the auto-destroy component. Spawned for you; not something to place.
- **`BP_KeyboardLocation`** — Base data asset deciding where a virtual keyboard appears when a text field asks for one, and broadcasting when that keyboard closes. Point a text field at an instance of one of the supplied subclasses, or subclass it yourself and fill in Create Keyboard, which is empty here.
- **`BP_KeyboardLocation_Overlay`** — Keyboard location that opens the keyboard as an overlay hanging below the text field, initialises it with the field it is typing into and makes the overlay non-focusable so the field keeps focus. Broadcasts Keyboard Closed when the overlay is dismissed. Choose it for fields on a world-space interface with room beneath them.
- **`BP_Overlay`** — Actor the framework spawns to float a widget in world space in front of whatever opened it, used for pop-ups, dropdowns, confirmations and keyboards. Carries its own widget component, animates out from the source on open, plays the overlay sounds and destroys itself once the closing animation ends. Reached through Spawn Overlay on a widget rather than placed.
- **`BP_PDA_Theme`** — Theme data asset: colour families and their intensity steps, fonts per typography level, corner sizes, outline widths and gradient strength, which together decide how every widget in the framework looks. It also writes those values into the dynamic materials elements draw with. Duplicate a supplied theme and edit that to restyle the interface, rather than editing widgets.
- **`BP_UI_Button_Object`** — List item object standing in for a button that has not been built yet. It carries the content, padding, hierarchy preset, height and options a button should take on, plus its selected state and the pressed and selection-changed delegates. Feed these to a list view and each row's button configures itself from one, which is how button groups stay data-driven.
- **`BP_Value_Settings_Name_Theme`** — Settings entry exposing the interface theme as a named choice. Its value is read straight from the game state's theme manager, and it re-broadcasts On Value Updated when the theme changes elsewhere so the settings row stays in step. Register it with your settings component to offer theme switching; the desktop gameplay page already lists it.
- **`BP_Widget`** — Ready-made actor for putting a world-space interface in a level: a scene root, an editor billboard and a widget component already set up with fade sounds, a six-metre content fade and a large draw size. Drop it in and choose the widget class on its component. Fade In Out fades the widget away, and the actor destroys itself once the fade finishes.
- **`BP_WidgetEventListener_Mouse`** — Small relay object carrying a single mouse-button-pressed delegate. A widget component creates one on demand and hands it out, so a widget that needs to know a click landed anywhere in the interface can bind to the listener instead of to the component.
- **`DA_Theme_Default_Light`** — The framework's light theme: the colours, fonts, corner sizes and outline widths every widget draws itself from. It is also the fallback both the widget component and the head-up display ability reach for when the game state has no theme manager, so keep it valid. Duplicate it and edit the copy to restyle the interface.
- **`FL_UI_Material`** — Function library building the dynamic material instances the framework's elements draw with, one call per border, image, outline and gradient variant, each fed from a theme and a colour definition. Also holds the contrast and auto-blend helpers that pick a readable foreground against a given background. Called statically by the elements, and by any element you write yourself.
- **`FL_UI_Overlays`** — Function library of ready-made overlays: a general message with icon, title, body and a row of buttons, a confirmation, a notification with a single acknowledge button, and a loading overlay. Call one from any framework widget and it spawns centred over that widget and hands back the overlay widget for you to bind to.
- **`ML_UserWidget`** — Macro library for plain User Widgets, covering size box width and height overrides driven by the size override struct, animation playback, timed gates and float interpolation. Parented to User Widget, so its macros are offered in any widget, including ones not built on the framework's widget base.
- **`ML_WBP_Base`** — Macro library for widgets built on the framework's widget base: playing an animation while telling the widget component it is animating, looking up reference actors and components by key, show and collapse helpers, a temporary replication block and a Source Info lookup. Parented to that base, so the macros only appear inside widgets inheriting from it.
- **`M_UI_Border`** — Flat themed fill and the material the plain border element draws itself with: Create Material Border makes it dynamic and the theme writes one colour into it. Everything with corners is handled by the rounded instances beside it instead.
- **`M_UI_Border_Rounded_Desktop`** — The rounded-corner border fill in its on-screen form, which the material library picks whenever the interface is drawn as a desktop head-up display rather than in the world. Restyle it and the world-space instance together.
- **`M_UI_Border_Rounded_Gradient_2Colors_Desktop`** — The two-colour gradient border fill in its on-screen form, swapped in when the widget is drawn as a desktop head-up display instead of in the world.
- **`M_UI_Border_Rounded_Gradient_2Colors_Normal`** — Rounded gradient fill with both ends coloured separately and a rotation for the sweep. The two-colour gradient border draws itself with it, which is how the main button styles slide between two colours as they are pressed; world-space instance of the pair.
- **`M_UI_Border_Rounded_Gradient_Desktop`** — The single-colour gradient border fill in its on-screen form, chosen when a widget reports itself as a desktop head-up display rather than as world space.
- **`M_UI_Border_Rounded_Gradient_Normal`** — Rounded fill shaded as a gradient from a single colour, with a rotation setting the sweep angle. Create Material Border Rounded Gradient builds it for the gradient border and for the scroll box's thumb; this is the world-space instance.
- **`M_UI_Border_Rounded_Normal`** — Rounded-corner fill for the border family in world space, taking a colour and the theme's corner radii. Create Material Border Rounded builds it for the rounded and linear borders and for the scroll box's track.
- **`M_UI_Border_Rounded_SideColor_Desktop`** — The side-colour border fill in its on-screen form, picked when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Border_Rounded_SideColor_Normal`** — Rounded fill that paints one or more of its four edges in a second colour, the Sides vector choosing which and how far in. Built by Create Material Border Rounded Sides for the side-colour border; world-space instance.
- **`M_UI_Brightness_Desktop`** — The colour picker's brightness ramp in its on-screen form, picked when the picker is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Brightness_Normal`** — Ramp running from black through a hue to white, forming the track of the colour picker's lower slider. The picker feeds it the currently chosen hue as its Color parameter; world-space instance of the pair.
- **`M_UI_Gradient`** — Soft gradient with a Rotation parameter for its direction, drawn by the gradient image element. Its colour arrives as the brush tint rather than as a material parameter, so the same instance serves every gradient in the interface.
- **`M_UI_HSVGradient_Normal`** — Full hue ramp forming the track of the colour picker's upper slider, with a Brightness parameter the picker keeps in step with the colour being edited. Only this world-space instance exists, so a picker drawn on screen has no desktop counterpart to swap to.
- **`M_UI_Hover_Rounded_Desktop`** — The rounded hover highlight in its on-screen form, picked when the widget is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Hover_Rounded_Normal`** — Rounded highlight that fades in over a button's body as a pointer, laser or hand arrives, built by Create Material Hover from a colour and the theme's corners. The world-space instance of the pair.
- **`M_UI_Image`** — Master image material, drawing a texture straight through with no corner or colour work. Create Material Image makes it dynamic for the plain themed image element; the rounded instances handle everything that needs a shape.
- **`M_UI_Image_Icon`** — Image material that tints a texture from a colour definition instead of drawing the texture's own colours, which is how an icon follows the theme and the state of the button it sits in. Used by the icon image element.
- **`M_UI_Image_Rounded_Background_Desktop`** — The rounded image with a colour behind it in its on-screen form, picked when the widget is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Image_Rounded_Background_Normal`** — Rounded image with a themed colour painted behind the texture, so artwork that is transparent or does not fill the brush still reads as a solid card. The world-space instance used by the background image element.
- **`M_UI_Image_Rounded_Desktop`** — The rounded image material in its on-screen form, chosen when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Image_Rounded_Normal`** — Texture drawn with rounded corners, their radii coming from the theme's corner definition. Create Material Image Rounded builds it for the rounded image element and its variants; world-space instance.
- **`M_UI_Image_Rounded_Transition_Desktop`** — The cross-fading rounded image material in its on-screen form, chosen when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Image_Rounded_Transition_Normal`** — Rounded image material that cross-fades between two textures rather than swapping them, which is what lets the transition image element run a slideshow. World-space instance of the pair.
- **`M_UI_Image_Rounded_Translated_Desktop`** — The panning and zooming rounded image material in its on-screen form, picked when the widget is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Image_Rounded_Translated_Normal`** — Rounded image material that pans and zooms its texture inside the brush instead of stretching it to fit, driven by the translation values the theme writes in. World-space instance.
- **`M_UI_Outline_Rounded_Desktop`** — The rounded outline in its on-screen form, chosen when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Outline_Rounded_Normal`** — Rounded outline drawing an edge only and nothing in the middle, its weight taken from the theme's outline categories and its colour from a colour definition. Behind the outline border element in world space.
- **`M_UI_Progressbar_Circular`** — Ring filled clockwise under the Percent parameter, with fill and background colours from the theme. The circular progress bar's only material: there is no separate on-screen instance, so it is used in the world and on a head-up display alike.
- **`M_UI_Progressbar_Linear_Horizontal_Desktop`** — The horizontal progress bar's material in its on-screen form, picked when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Progressbar_Linear_Horizontal_Normal`** — Bar filling from left to right under the Percent parameter, with separate fill and background colours and ends rounded from the theme. The world-space material of the horizontal progress bar, and so of the sliders built on it.
- **`M_UI_Progressbar_Linear_Vertical_Desktop`** — The vertical progress bar's material in its on-screen form, picked when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Progressbar_Linear_Vertical_Normal`** — Bar filling from bottom to top under the Percent parameter, with separate fill and background colours and rounded ends. The world-space material of the vertical progress bar.
- **`M_UI_Throbber_Linear_Desktop`** — The linear throbber's material in its on-screen form, picked when the interface is drawn as a desktop head-up display rather than in the world.
- **`M_UI_Throbber_Linear_Normal`** — Sweep travelling along a rounded track, animated inside the material so nothing has to tick it. Foreground colour, background colour and corners come from the theme; this is the linear throbber's world-space instance.
- **`M_UI_Throbber_Round`** — Spinner animated inside the material and tinted from a single colour definition, so it runs for as long as the circular throbber is visible. One instance serves both world space and the desktop head-up display.
- **`PDA_WidgetPage`** — Data asset pairing a widget class with the button content that opens it, so a menu can carry its pages as data. Make one per page and list it on a menu subpage or on a pawn's page list rather than wiring the widget into the menu itself.
- **`SC_UI_Button_Arrow_Blocked`** — Refusal played when a deactivated arrow button is pressed. Returned as the blocked sound by both the arrow button and the content scroller's scroll arrow.
- **`SC_UI_Button_Arrow_Hover`** — Tick played once as a pointer arrives on an arrow button, and not at all while the button is deactivated. Shared by the arrow button and the scroll arrow.
- **`SC_UI_Button_Arrow_Press`** — Click played when an arrow button is pressed, by the arrow button and the scroll arrow alike. Arrow buttons have no per-hierarchy press variants, so this is their only one.
- **`SC_UI_Button_Card_Blocked`** — Refusal played when a deactivated card button is pressed. Both card styles, image on top and image on the left, return it as their blocked sound.
- **`SC_UI_Button_Card_Hover`** — Tick played once as a pointer arrives on a card button, in both the top-image and left-image styles.
- **`SC_UI_Button_Card_Press`** — Click played when a card button is pressed, shared by the top-image and left-image styles. Set Sound Press Override on an instance to give one card a different voice.
- **`SC_UI_Button_Checkbox_Blocked`** — Refusal played when a deactivated checkbox is pressed, so a blocked option still answers the player.
- **`SC_UI_Button_Checkbox_Hover`** — Tick played once as a pointer arrives on a checkbox.
- **`SC_UI_Button_Checkbox_Off`** — Click of a checkbox being cleared, the counterpart to the on sound; the checkbox picks between the two from its selected state as the press arrives.
- **`SC_UI_Button_Checkbox_On`** — Click of a checkbox being ticked, chosen because the box was clear at the moment it was pressed.
- **`SC_UI_Button_Color_Blocked`** — Refusal played when a deactivated colour swatch is pressed.
- **`SC_UI_Button_Color_Hover`** — Tick played once as a pointer arrives on a colour swatch. Swatches are usually built for you by the colour group, so this is what a whole row of them sounds like.
- **`SC_UI_Button_Color_Press`** — Click played when a colour swatch is chosen, the same whether the swatch is being selected or deselected.
- **`SC_UI_Button_Image_Blocked`** — Refusal played when a deactivated image button is pressed.
- **`SC_UI_Button_Image_Hover`** — Tick played once as a pointer arrives on an image button.
- **`SC_UI_Button_Image_Press`** — Click played when an image button is pressed. Image buttons take no per-hierarchy press variants, so every thumbnail in a grid sounds the same.
- **`SC_UI_Button_Keyboard_Blocked`** — Refusal played when a deactivated key on the on-screen keyboard is pressed.
- **`SC_UI_Button_Keyboard_Hover`** — Tick played once as a pointer arrives on a key of the on-screen keyboard, and again for each further key a hand or laser crosses.
- **`SC_UI_Button_Keyboard_Press`** — Keystroke played when a key on the on-screen keyboard is pressed. It comes from the keyboard's own key class, so every layout the keyboard shows uses it.
- **`SC_UI_Button_Radio_Blocked`** — Refusal played when a deactivated radio button is pressed.
- **`SC_UI_Button_Radio_Hover`** — Tick played once as a pointer arrives on a radio button.
- **`SC_UI_Button_Radio_Off`** — Click of a radio button being emptied, played when an already selected one is pressed. Buttons in a single-select group are cleared by the group rather than by a press, so this is heard only where a radio button can be switched off directly.
- **`SC_UI_Button_Radio_On`** — Click of a radio button being filled in, played when an unselected one is pressed.
- **`SC_UI_Button_Rectangle_Blocked`** — Refusal played when a deactivated standard button is pressed. Used by the standard rectangular button and by the drop-down row button.
- **`SC_UI_Button_Rectangle_Hover`** — Tick played once as a pointer arrives on a standard rectangular button, and so the sound most of the framework's own interfaces make on hover.
- **`SC_UI_Button_Rectangle_Primary_Press`** — Press of a standard rectangular button at the Primary hierarchy. That button and the drop-down row button pick between the three rectangle press sounds by their hierarchy preset, so a confirm and a cancel side by side do not sound the same.
- **`SC_UI_Button_Rectangle_Secondary_Press`** — Press of a standard rectangular button set to the Secondary hierarchy, which is also the drop-down row button's default.
- **`SC_UI_Button_Rectangle_Tertiary_Press`** — Press of a standard rectangular button set to the Tertiary hierarchy, the last of the three rectangle press sounds.
- **`SC_UI_Button_Round_Blocked`** — Refusal played when a deactivated small round button is pressed.
- **`SC_UI_Button_Round_Hover`** — Tick played once as a pointer arrives on a small round icon button.
- **`SC_UI_Button_Round_Primary_Press`** — Press of a small round button at the Primary hierarchy. The small button chooses between the three round press sounds by its preset, so an icon button carries the same weight as the rectangular button beside it.
- **`SC_UI_Button_Round_Secondary_Press`** — Press of a small round button at the Secondary hierarchy, one of the three round press sounds its preset chooses between.
- **`SC_UI_Button_Round_Tertiary_Press`** — Press of a small round button at the Tertiary hierarchy, the last of the three round press sounds.
- **`SC_UI_Button_Squared_Blocked`** — Refusal played when a deactivated large button is pressed.
- **`SC_UI_Button_Squared_Hover`** — Tick played once as a pointer arrives on a large button, and not at all while it is deactivated.
- **`SC_UI_Button_Squared_Primary_Press`** — Press of a large button at the Primary hierarchy, chosen from the three squared press sounds by its preset.
- **`SC_UI_Button_Squared_Secondary_Press`** — Press of a large button at the Secondary hierarchy, one of the three squared press sounds its preset chooses between.
- **`SC_UI_Button_Squared_Tertiary_Press`** — Press of a large button at the Tertiary hierarchy, the last of the three squared press sounds.
- **`SC_UI_Button_Tab_Blocked`** — Refusal played when a deactivated tab is pressed, in both the horizontal and vertical pagination styles.
- **`SC_UI_Button_Tab_Hover`** — Tick played once as a pointer arrives on a tab, shared by the horizontal and vertical pagination styles.
- **`SC_UI_Button_Tab_Press`** — Click of a page being changed, played when a tab is pressed in either pagination direction. Tabs have no per-hierarchy variants, so every tab in a strip sounds alike.
- **`SC_UI_Button_Toggle_Blocked`** — Refusal played when a deactivated toggle is pressed.
- **`SC_UI_Button_Toggle_Hover`** — Tick played once as a pointer arrives on a toggle switch.
- **`SC_UI_Button_Toggle_Off`** — Sound of a toggle being switched off, played when one that was on is pressed; the toggle reads its selected state as the press arrives to choose between the two.
- **`SC_UI_Button_Toggle_On`** — Sound of a toggle being switched on, played when one that was off is pressed.
- **`SC_UI_ChipSelector_Blocked`** — Refusal played when a deactivated chip in a chip selector is pressed.
- **`SC_UI_ChipSelector_Hover`** — Tick played once as a pointer arrives on a chip in a chip selector.
- **`SC_UI_ChipSelector_Press`** — Click played when a chip is picked out of a chip selector.
- **`SC_UI_Collapse_Collapse`** — Sound of a collapsible section folding shut, played by the collapse widget as its state turns to collapsed.
- **`SC_UI_Collapse_Expand`** — Sound of a collapsible section opening out, played by the collapse widget as its state turns to expanded.
- **`SC_UI_Dropdown_Open`** — Sound of a drop-down menu unfolding. Both anchor menus, the button list and the colour picker, pass it as the open and the close sound of the menu they create, so as shipped it plays in both directions.
- **`SC_UI_Expandable_Collapse`** — Sound of an expandable panel closing, played as its expanded state is cleared. A separate pair from the collapse widget's, so the two layout widgets can be told apart by ear.
- **`SC_UI_Expandable_Expand`** — Sound of an expandable panel opening, played as its expanded state is set.
- **`SC_UI_HUD_Fade_In`** — Sound of a head-up display panel arriving on screen. Only the HUD example plays it, passing it as the show sound in the frame information for each of the nine screen positions it fills; frames added anywhere else are silent unless you name a cue yourself.
- **`SC_UI_Keyboard_Case_Lower`** — Sound of the on-screen keyboard dropping to its lower-case layout, played by Set Keyboard Case as the layout changes.
- **`SC_UI_Keyboard_Case_Numeric`** — Sound of the on-screen keyboard switching to its numeric layout, played by Set Keyboard Case as the layout changes.
- **`SC_UI_Keyboard_Case_Special`** — Sound of the on-screen keyboard switching to its special-character layout, played by Set Keyboard Case as the layout changes.
- **`SC_UI_Keyboard_Case_Upper`** — Sound of the on-screen keyboard shifting to its upper-case layout, played by Set Keyboard Case as the layout changes.
- **`SC_UI_Selector_Hover`** — Tick played as a pointer arrives on either of the stepper's chevrons. It reaches them as a Sound Hover Override on the two small buttons, which is how the stepper sounds unlike an ordinary pair of icon buttons.
- **`SC_UI_Selector_Press_Left`** — Click of a stepper moving to the previous value, set as the press override on its left chevron so the direction is audible.
- **`SC_UI_Selector_Press_Right`** — Click of a stepper moving to the next value, set as the press override on its right chevron and the counterpart to the left-hand one.
- **`SC_UI_Slider_Default_Drag`** — Ratchet played over and over as the default slider's handle travels, once for every Sound Tick Interval of movement, so the rate of the clicks reports the speed of the drag.
- **`SC_UI_Slider_Default_Hover`** — Tick played once as a pointer arrives on the default slider. The custom-material slider, and so the colour picker, inherits the same set.
- **`SC_UI_Slider_Default_Press`** — Sound of the default slider's handle being taken hold of, played as the pointer captures it.
- **`SC_UI_Slider_Default_Release`** — Sound of the default slider's handle being let go, played when the pointer's capture ends.
- **`SC_UI_Slider_Unit_Drag`** — Ratchet played as the unit slider's handle travels, once for every Sound Tick Interval of movement, so a drag across the track clicks off the units as it goes.
- **`SC_UI_Slider_Unit_Hover`** — Tick played once as a pointer arrives on the unit slider.
- **`SC_UI_Slider_Unit_Press`** — Sound of the unit slider's handle being taken hold of, played as the pointer captures it.
- **`SC_UI_Slider_Unit_Release`** — Sound of the unit slider's handle being let go, played when the pointer's capture ends.
- **`SC_UI_Widget_FadeIn`** — Sound of a world-space widget appearing, set as the Fade In Sound on the widget actor's widget component and played at the centre of the widget's surface. The label, hand and pawn UI systems each ship a cue of their own; this is the plain widget actor's.
- **`SC_UI_Widget_FadeOut`** — Sound of a world-space widget going away, set as the Fade Out Sound on the widget actor's widget component. Point that property at a cue of your own rather than editing this one if only some widgets should sound different.
- **`T_Billboard_Widget`** — Icon marking a widget actor in the editor viewport, carried by the actor's billboard component at a small fixed screen size. Nothing at runtime draws it.
- **`T_Edge`** — Small triangular tail. The label frame and the slider's tooltip each place it as their arrow image, rotating it towards whatever the frame is pointing at.
- **`T_Fallback_Icon`** — Placeholder icon standing in wherever an example needs one: the confirmation overlay, the button and image examples and the statue label all carry it. Replace it with artwork of your own rather than shipping it.
- **`T_Fallback_Logo_Wide`** — Placeholder wide logo and the texture the logo widget starts with, so a logo slot shows something before a project supplies its light and dark artwork.
- **`T_Fallback_Squared_Small`** — Square placeholder image: the default texture on the left-image card box, and the stand-in artwork in the button and scrolling examples.
- **`T_Fallback_Wide_Small`** — Wide placeholder image, the default texture on the top-image card box so a card reads correctly before real artwork is set.
- **`T_Fill`** — Plain white fill, set as the brush of the themed border element before the theme replaces that brush with a material. It keeps the border visible in the designer and is not something to reference yourself.
- **`T_Icon_BulletPoint`** — Bullet dot, drawn at 40 by 40 in front of each line of the bullet point widget.
- **`WBP_AnchorMenu`** — Base for a control that pops a menu out beside itself. Owns the drop-down currently open, opens, closes and toggles the anchor, and passes on the placement, the size overrides and the fit-in-window setting. It has no anchor or visuals of its own, so subclass it, return your menu anchor and build the menu in Create Drop Down Menu, as the drop-down button and the colour picker do.
- **`WBP_AnchorMenu_Buttons`** — Anchor menu whose drop-down is a list of buttons. It holds the content array, the button class, the selection type and the selected indexes, and keeps them in step with the menu whether it happens to be open or not. The drop-down is built on it; use it directly when you want a button list hanging off a widget of your own.
- **`WBP_AnchorMenu_ColorPicker`** — Anchor menu that opens the colour picker's drop-down, creating it with the current colour and passing changes back out again. It sits between the colour field and the sliders and is already wired into that field, so there is nothing to configure here unless you are assembling a picker of your own.
- **`WBP_Base`** — Root class for every widget in the framework. Carries the theme, the widget component the widget belongs to, the parent and replication chain and the tooltip settings, and provides the recursive walk that initiates, themes and cleanly removes nested elements, plus the overlay, sound and reference lookups widgets rely on. Inherit from this rather than User Widget; not something to place directly.
- **`WBP_Box`** — Root of the box family: a container wrapping its content in a size box and exposing Width Override and Height Override so a panel can be pinned to a fixed size in the details panel or changed at runtime. It draws no layout of its own, so use one of the box variants or subclass it and return your own size box.
- **`WBP_Box_Card`** — Box pairing a picture with its content. Adds a Texture and an Update Image call on top of the plain box while leaving where the image sits to its subclasses. Take the left or top card for the shipped arrangements, or subclass it when a card of your own needs the picture somewhere else.
- **`WBP_Box_Card_Left`** — Card with its picture down the left-hand side and the content slot filling the space beside it, sized 800 by 250 by default. Use it for a wide, row-shaped card in a list or a scrolling field, and set Texture on the instance; a fallback image shows until you do.
- **`WBP_Box_Card_Top`** — Card with its picture across the top and the content slot beneath it, sized 300 by 400 by default. The upright counterpart to the left-hand card, meant for grids and galleries of tiles. Set Texture on the instance and put the caption or controls in the slot.
- **`WBP_Box_Default`** — Plain rounded panel with a single content slot, its fill and corner radius taken from the theme. The everyday container for grouping a few elements inside a larger interface: drop it in and fill the slot. Use a scaffold instead when the panel is the outermost frame of a whole widget.
- **`WBP_BulletPoint`** — One line of a bulleted list: an icon and a piece of text side by side, either of which can be changed later through Set Icon and Set Text. The bullet points group creates one per entry, so reach for that group unless you need a single bullet on its own.
- **`WBP_BulletPoints`** — Group building a vertical list of bulleted lines from an array of text. Populate Bulletpoints clears the group and creates one bullet widget per entry, all sharing the same icon. Drop it in and fill Texts in the details panel, or hand it a fresh array at runtime.
- **`WBP_Button`** — Base class for every button in the framework. Owns the pressed, hovered, selected, custom and deactivated states, the repress gate, the sound and animation hooks and the content struct feeding its text and icon, and it can bind itself to a boolean or trigger value object. Subclass it by overriding the frame, sound, animation and blendable-element getters; it has no visuals of its own, and the shipped variants are all subclasses.
- **`WBP_ButtonContent`** — Swappable inner content for a button. It carries the same content struct as the button that owns it and is handed the hover, action and custom state as both animations and blend values, so a button's frame and its contents can react separately. Subclass it and name the subclass as a button's Content Widget Class when text and an icon are not enough.
- **`WBP_ButtonContent_Card_Default`** — Two-line card content for a button, a title above a body line, both drawn from the owning button's content struct and following its hover and action blends. Name it as a card button's Content Widget Class, as the navigation page does, or copy it as the pattern for content of your own.
- **`WBP_ButtonFrame`** — Clickable frame every button variant is built around: a size box wrapping an invisible Slate button whose named slot holds the button's visuals. It applies the width and height overrides and exposes that slot to the widget element walk. Put it at the root of a button subclass; it does nothing beyond sizing and taking the click.
- **`WBP_Button_Arrow`** — Chevron button for stepping and expanding: an icon in a button frame with an editable angle and size, so one asset serves up, down, left and right. Carries the arrow sound set. Drop it in wherever a bare directional control is wanted; the expandables and the vertical scrollable field already use it.
- **`WBP_Button_Card_Left`** — Card button with its image on the left and a named slot beside it for whatever the card should show. Fill that slot yourself, or feed image and text through the button content struct; an outline marks selection and a separate border follows the pointer. Use it for menu and list entries that need more than a label.
- **`WBP_Button_Card_Top`** — Card button with its image above the content rather than beside it, otherwise the left-hand card's twin: a named slot for the body, a selection outline and a hover border. Nothing in the shipped content uses it, so it stands as the vertical alternative to reach for when a card should read top to bottom.
- **`WBP_Button_Checkbox`** — Checkbox: a square tick box beside a label, the tick fading in as the button becomes selected, with different sounds for switching on and off. It is a button like any other, so bind it to a boolean value object or listen for the selection change. Use it for independent options rather than a set where only one may be chosen.
- **`WBP_Button_ChipSelector`** — Single chip inside the chip selector: an icon and a label with no frame or fill of its own, auto-blending against the highlight sliding behind it. The chip selector creates these as its button class, so there is no reason to place one directly.
- **`WBP_Button_Color`** — Swatch button holding one colour definition, drawn as a filled rounded square whose hover and selection borders auto-blend against the fill so a pale swatch stays legible. The colour group that owns it sets what it shows as it builds the row, so it is normally created for you rather than placed by hand.
- **`WBP_Button_Image`** — Image button: a rounded picture with a caption beneath it and a named slot over the image for a badge or overlay of your own. 300 by 400 by default, and it truncates its caption at forty characters. Use it for thumbnail grids and pickers where the picture, not the text, is the label.
- **`WBP_Button_Large`** — Square button with its icon above the text, 250 by 250 by default, taking fill and text colours from the hierarchy preset and blending them towards the active colour while selected. Use it for tile grids and launcher menus; the contract is the same as any other button, only the layout differs.
- **`WBP_Button_Normal`** — Standard rectangular button, an icon and a label in a gradient rounded frame, and the one to reach for unless something else fits better. The hierarchy preset picks its fill, its text colour and its press sound, and given two texts in the content struct it swaps label as it becomes selected. Most of the framework's own interfaces are built from it.
- **`WBP_Button_Normal_Keyboard`** — Single key of a virtual keyboard. Its text, icon, key binding and command are held in maps addressed by keyboard case, so one key serves every layer, and a press hands the entry for the current case to the keyboard as a command, a key or a string. Add it to a keyboard layout and fill in the maps; it also swaps the standard button sounds for the keyboard set.
- **`WBP_Button_Radio`** — Radio button: a round indicator beside a label, filling in as it becomes selected, with separate on and off press sounds. It enforces no exclusivity itself, so put several inside a button group set to single select to get the one-of-many behaviour the shape implies.
- **`WBP_Button_Scrollarrow`** — Round arrow button the horizontal scrolling field pins over its content, with Angle rotating the icon to point whichever way a press should scroll. Carries its own press, hover and blocked sounds and a hover animation that swells the icon. Built for that widget; use the standard arrow button for arrows elsewhere.
- **`WBP_Button_Small`** — Small round icon button, 120 by 120 with no label, taking its colours and press sound from the hierarchy preset. Use it where an icon alone says enough; the framework's own furniture does, as the stepper's two side buttons and the reveal toggle on the password field.
- **`WBP_Button_Tab_Horizontal`** — Tab button for the horizontal tab bar: icon and text in a row, with an underline that grows in along the bottom edge as the tab becomes the selected one, and hover, press and blocked sounds of its own. The tab bar builds these from its button content, so subclass it rather than placing it when tabs need a different look.
- **`WBP_Button_Tab_Vertical`** — Tab button for the vertical tab bar: icon and text in a row, with a full background fading in behind the selected entry and an accent strip widening on hover. Carries the same tab sounds as its horizontal counterpart and asks for no outer padding, so entries stack flush. Built by the tab bar; subclass it to restyle a side menu.
- **`WBP_Button_Toggle`** — Toggle switch: a track between an Off and an On label that fills towards the selected side, with separate sounds for the two directions. Selected means on. Bind it to a boolean value object, or use it wherever a setting reads better as a switch than as a checkbox.
- **`WBP_ChipSelector`** — Segmented chip selector: a row of chips in one rounded frame with selection and hover highlights that slide between them, driven by interpolating spacers rather than by moving a widget. Built on the button group, so the options come from its content array and selection is read the same way. Use it where a short set of mutually exclusive choices should read as a single control.
- **`WBP_Collapse`** — Wrapper that slides its content out of view and back. Direction chooses which edge it collapses towards; Set Collapse and Toggle Collapse drive it, animating the content's maximum desired size, playing the collapse and expand sounds and replicating the state to other players. Put the content in the slot rather than hiding widgets yourself.
- **`WBP_ColorPicker`** — Colour field: a bar filled with the current colour that opens the picker menu when clicked and broadcasts every change. Bind it to a colour value object and the field and the value follow each other; the colour also replicates. Drop it into a settings page or configurator, the menu and its sliders come with it.
- **`WBP_DropDown`** — Base class for drop-downs. Holds the options, the selected index and the lookup between index and identifier, drives the anchor menu that displays them, and binds to an integer or name value object so selection and value follow each other. The selection replicates. Subclass it and supply the anchor menu, hover animation and visual update to give it a look, or place the default drop-down instead.
- **`WBP_DropDownButton`** — Row button for a drop-down list: an icon and a label in a gradient frame, defaulting to the secondary hierarchy and swapping between its two content texts as it becomes selected. Named as the button class on the default drop-down's anchor menu. Point that at a class of your own rather than editing this one.
- **`WBP_DropDownMenu`** — Base for the content that appears inside an anchor menu. Handles its own dismissal: it watches for a mouse press anywhere in the interface and broadcasts On Selected Outside when the press lands elsewhere, then plays the appear animation backwards with the close sound and removes itself. The anchor menu spawns it; subclass it and return your size box and appear animation.
- **`WBP_DropDownMenu_Buttons`** — Panel a drop-down opens: a vertical button group inside a scroll box, capped at 400 units tall, built from the content array it is spawned with and reporting the pressed index back to its anchor menu. Created for you; set the button class, selection type and initial selection on the anchor menu rather than here.
- **`WBP_DropDownMenu_ColorPicker`** — Panel the colour picker opens: a hue slider above a brightness slider, both drawn with gradient materials, converting between the pair of them and the linear colour they describe and broadcasting each change back to the anchor menu. Created for you by the colour field; not a widget to place.
- **`WBP_DropDown_Default`** — Ready-made drop-down: a labelled bar with an arrow that opens its options beneath it, showing the substitute text while nothing is chosen. This is the concrete drop-down to place, and the one the debug scene and the input examples use; the options, the selected index and the value binding all come from its parent class.
- **`WBP_Enumerator`** — Group building a numbered or lettered list from an array of enumerator entries. Populate Texted Points clears the group and creates one item per entry, each with its own marker and line of text. Spacing sets how far the text sits from the marker, and is passed on to every item.
- **`WBP_EnumeratorItem`** — One row of an enumerated list: the marker and the line of text, laid out in an overlay so the text starts at the same offset however wide the marker is. The enumerator group creates one per entry; there is rarely a reason to place it yourself.
- **`WBP_Error`** — Slot with an error line beneath it. Show Error fades the message in, fades it away again when the text is empty, and does nothing when the message has not changed; if the widget is replicating, the text goes out to the other clients too. Put your content in the Error slot and call Show Error when validation fails.
- **`WBP_ExpandTree`** — Container building a tree of collapsible rows. Draw Tree empties the vertical group and creates one widget of Tree Item Class per object it is given, passing each the object, the reference object and the tree itself so an item can go on to build its own children. Drop it in, set the item class and call Draw Tree.
- **`WBP_Expandable`** — Base for a header that reveals a block of content beneath it. Owns the expanded state, the reveal animation, the expand and collapse sounds, replication of the state and keeping its header button's selected look in step. Use the default variant, or subclass it and return your own expandable area, animation and button.
- **`WBP_Expandable_Default`** — Expandable with a header row and an arrow button at its right-hand end that toggles the content open and shut. Fill the header slot with a title or a whole row of widgets and the content slot with what should be revealed; the button is wired up for you.
- **`WBP_Expandable_Empty`** — Expandable with no button of its own: the header slot spans the full width and you decide what opens it, calling Set Expanded or Toggle Expanded from your own widget. Nothing in the shipped content uses it, so treat it as the starting point for a header that is not a plain arrow row.
- **`WBP_Expandable_TreeItem`** — Base for one row of an expanding tree: an expandable header holding the object it stands for, the reference object and the tree it belongs to. Take the default variant, or subclass it and return the group its child rows are added to and the named slot its header content fills.
- **`WBP_Expandable_TreeItem_Default`** — Ready-made tree row: an arrow button expanding and collapsing the area beneath it, a header slot for the row's own content and a vertical group holding its children. Nothing references it, so it is a starting point rather than something already in use — name it as an expanding tree's item class, or subclass it to change the look.
- **`WBP_Fallback`** — Slot that swaps its content for a line of replacement text when there is nothing to show. Show Replacement Text switches the two over and Update Replacement Text sets the wording; the Show Replacement tick previews the swap while you are designing. Put the real content in the Fallback slot.
- **`WBP_Group`** — Root of the group family: a widget owning a list of child widgets and keeping a panel in step with it. Add, remove, populate, clear and resize the list through its functions and it applies the size rule, the alignment and each child's preferred padding, then trims the padding off the outer edges. Use a button or widget group, whose variants supply the panel.
- **`WBP_Group_Button`** — Button Collections allow the listing and Management of Buttons.
- **`WBP_Group_Button_Horizontal`** — Button group arranging its buttons in a row, spaced by the preferred padding of whichever button class is chosen. Use it for a bar of actions across the bottom of a panel; the default popup and overlay build their confirm and cancel row with it.
- **`WBP_Group_Button_Vertical`** — Button group arranging its buttons in a column, which is the framework's default menu shape and by far the most used group. Fill Content with button entries and it creates, spaces and manages the selection of the buttons; the desktop menu, the drop-down list and most of the examples are built on it.
- **`WBP_Group_Button_WrapBox`** — Button group whose buttons flow onto a new line when they run out of width. Num Of Elements In Column fixes how many sit on a line by overriding the group's width from the button width and padding; leave it at zero to let the wrap box decide. Use it for a keypad or a grid of choices rather than a single row.
- **`WBP_Group_Button_WrapBox_Colors`** — Palette: a wrap box of swatch buttons built from a list of colour data assets, with automatic selection on. Bound to a colour value object, picking a swatch writes that colour through and an outside change selects the matching swatch. Nothing references it in the shipped content; fill in its colour list and place it where a fixed palette beats a free picker.
- **`WBP_Group_Widget`** — Group that fills itself with instances of one widget class rather than with buttons. Set Widget Class and it can add default items, resize itself to a given length, or spawn a number of demo items so the layout reads properly while you are designing. Take the horizontal, vertical or wrap box variant.
- **`WBP_Group_Widget_Horizontal`** — Widget group arranging its items in a row. Nothing in the shipped content uses it, unlike the vertical and wrap box variants, but it is the one to reach for when a run of identical widgets should sit side by side: set Widget Class and populate it in the usual way.
- **`WBP_Group_Widget_Vertical`** — Widget group arranging its items in a column, the usual choice for a stack of identical rows. Set Widget Class, then populate or resize the group and each item is created, added and padded for you. The example configurator and the expand tree build their contents this way.
- **`WBP_Group_Widget_WrapBox`** — Widget group arranging its items in a wrap box, so they flow onto a new line when they run out of width. Use it for a gallery of tiles or colour swatches whose count is not known in advance, as the example configurator does.
- **`WBP_HUD`** — Root widget of a pawn's head-up display, holding one frame per open widget. Provides add, remove and toggle by class or object, finds the outermost framework widget when something nested asks to close, and works out which screen control mode the desktop pawn should be in from the frames currently asking for the mouse. Driven by the head-up display ability rather than created directly.
- **`WBP_HUD_Frame`** — Wrapper the head-up display puts around each widget it shows: a dimming background, a canvas placed at the frame's anchors and z-layer, and a show animation played forward on open and reversed on close before the widget is cleanly removed. Created for you when a widget is added to the display, with its look and sound taken from the frame info passed in.
- **`WBP_Header`** — Title row in three slots: a fixed-width slot at each side and a filling title slot between them, so headings line up across pages whatever sits in the corners. Nothing in the shipped content uses it. Drop it at the top of a widget of your own, or copy it when the sides need different widths.
- **`WBP_Indicator`** — Badge overlaying a count on whatever sits in its slot, placed on its own canvas by Anchors, Position and Alignment. Update Number pops it with a scale animation and only when the value has actually changed, Show fades the badge in and out, and the number blends to stay legible against the badge behind it.
- **`WBP_InfoRow`** — Labelled row pairing a title and optional caption on the left with a slot on the right for whatever the row controls. The framework's standard way of laying out a settings or information list, and the most used layout widget in the pack. Set Title and Caption on the instance or update them at runtime; the caption hides itself when empty.
- **`WBP_Keyboard`** — Base class for the virtual keyboard. Tracks the current case and caps lock, forwards characters, keys and commands both to the text field it was opened for and to the widget interaction component driving the interface, and drops shift again after each keystroke. Subclass it to lay out a keyboard, overriding the button and extension slot getters; it has no keys of its own.
- **`WBP_Keyboard_Default`** — Full alphabetic layout for the virtual keyboard, four rows of keys above an extension slot, with every key carrying its lower case, upper case, numeric and symbol faces. Name it as the keyboard class on a text field, or copy it as the starting point for a layout of your own.
- **`WBP_Keyboard_Extension`** — Base for a strip of extra content shown above the keyboard, such as suggestions or controls belonging to one field. It is created into the keyboard's extension slot with the text box and text field already set on it. Subclass it and name the subclass as the extension class when the keyboard is created.
- **`WBP_Keyboard_Numpad`** — Numeric layout for the virtual keyboard: digits, plus and enter in a narrower frame, fixed to the lower case character set so it never switches layers. Name it as the keyboard class on a text field that only takes numbers.
- **`WBP_LoadingSwitcher`** — Slot that cross-fades between its content and a circular throbber while something loads. Set Loading plays the fade in either direction and ignores repeats, and a replacement line can be shown in place of the content when there is nothing to display. The Show Loading tick previews the loading state while you are designing.
- **`WBP_Overlay_Confirm`** — Confirmation overlay with an icon, title, body and two buttons whose content and hierarchy are set when it is populated. Spawn it through the overlay library. The deny button broadcasts On Button Clicked and closes the overlay, while the confirm button carries no behaviour of its own, so bind the action you want to it.
- **`WBP_Overlay_Default`** — General message overlay: coloured icon, title and body, with a horizontal button group built from an array of button contents and presets, and body text centred when short and left-aligned when long. Buttons report back through On Button Clicked, identified by their index in that array. Spawn it through the overlay library.
- **`WBP_Overlay_Loading`** — Loading overlay: a circular throbber with a title and optional body text, and no buttons at all. Spawn it through the overlay library to hold the interface while something finishes, and close it yourself when the work is done, since nothing in it will.
- **`WBP_Overlay_Notification`** — Notification overlay with an icon, title, body and one acknowledge button that broadcasts On Button Clicked and closes the overlay. Spawn it through the overlay library when the player only has to read something and dismiss it.
- **`WBP_PageTree`** — Container showing a tree one page at a time rather than expanding it in place, holding the pages in a switcher and building them from Page Class. Nothing in the shipped content uses it and it has no navigation of its own, so treat it as the skeleton for a drill-down browser you finish yourself.
- **`WBP_PageTree_Page`** — One page of a page tree: a group filled with widgets of Tree Item Class, plus a back delegate for stepping up to the page above. The page tree creates it from its page class, and the group is left for a subclass to supply, so expect to subclass it rather than place it.
- **`WBP_Pagination`** — Button group wired to a widget switcher: pressing a button switches the switcher to the matching page, and a page change from anywhere else selects the matching button, by index or by ID. Switcher Tag names the switcher to drive, which is looked up by tag anywhere inside the parent widget. Take one of the variants; this class has no panel of its own.
- **`WBP_Pagination_Horizontal`** — Pagination in a plain horizontal box, with no framing and no button class chosen. Nothing uses it, and the horizontal menu variant is the one to reach for when you want tabs; take this only when you intend to supply the button class and styling yourself.
- **`WBP_Pagination_Menu_Horizontal`** — Ready-made tab bar: pagination drawing horizontal tab buttons across a row, over a rule that runs the full width behind them. The framework's standard page switcher, used by the examples, the desktop settings and both menu subpages. Drop it in, point Switcher Tag at your switcher and fill in the button content.
- **`WBP_Pagination_Menu_Vertical`** — Ready-made side navigation: pagination drawing vertical tab buttons down a column, stretched past its own bounds so the entries run edge to edge. Used by the VR menu and the navigation bar. Drop it in, point Switcher Tag at your switcher and fill in the button content.
- **`WBP_Pagination_Vertical`** — Pagination in a plain vertical box, with no framing and no button class chosen. Nothing uses it, and the vertical menu variant is the one to reach for when you want side navigation; take this only when you intend to supply the button class and styling yourself.
- **`WBP_ReplicatedUI`** — Placeholder widget the ghost copies of other players' interfaces show, a single rounded border in a theme colour standing in for content that is never replicated. Change it on the ghost widget component if remote interfaces should read as something other than a blank panel.
- **`WBP_Scaffold`** — Root of the scaffold family: the outer frame of a widget, wrapping everything in a size box with Width Override and Height Override that can be set in the details panel or changed at runtime. It draws nothing itself, so use one of the scaffold variants or subclass it and return your own size box.
- **`WBP_Scaffold_Bar`** — Small rounded scaffold, 600 by 200 by default, for a strip of controls rather than a page of them. The desktop menu uses it as its bar. Put the controls in the slot and override the dimensions when the bar needs to be a different length.
- **`WBP_Scaffold_Default`** — Standard page frame: a rounded panel with generous padding around a single content slot, and a side-coloured border whose highlighted edges and tint are set at runtime through Update Sides and Update Side Colour. The usual outermost widget for a menu page, an information panel or an example screen.
- **`WBP_Scaffold_Expand`** — Page frame in two parts: a content area of fixed size and a panel beside it that collapses away sideways behind a gradient. Toggle Collapse and Set Collapsed drive the side panel, On Collapsed State Changed reports it and the state replicates. The navigation bar and the VR menu are built on it.
- **`WBP_Scaffold_Overlay`** — Frame for a panel floating over the world: a rounded fill with an outline above it and tighter padding than the page scaffold. Outline Colour takes a colour asset, applied at runtime by Update Outline Colour. Every head-up display corner uses it, so reach for it when the widget sits in the view rather than in a menu.
- **`WBP_ScrollableField`** — Base for a scrolling area driven by its own back and forward buttons instead of a visible scroll bar. Each press moves the scroll box by Scroll Step Distance, and the buttons deactivate as the content reaches either end. Take the horizontal or vertical variant, or subclass it and return your own scroll box and arrow pair.
- **`WBP_ScrollableField_Horizontal`** — Scrolling field laid out sideways, with round scroll-arrow buttons pinned over the left and right edges of the content and a default step of 800. Use it for a row of cards or buttons wider than the space available; fill the slot and it drives and deactivates the arrows itself.
- **`WBP_ScrollableField_Vertical`** — Scrolling field laid out downwards, with the framework's arrow buttons floating above and below the content. Use it for a tall list inside a panel of fixed height; fill the slot and the arrows enable and disable themselves as each end of the content comes into view.
- **`WBP_Slider`** — Base class for sliders. Owns the normalised value, the mapped range and unit used to write it out, the optional segment list it can snap to, the interpolated visual progress and the press, drag, release and hover sounds, and binds to a float value object that can also supply range, unit and segments. Subclass it and override the slider, animation and segment box getters; it draws nothing itself.
- **`WBP_SliderFrame_Default`** — Decoration frame for a slider: an icon either side of a named slot the slider goes into, with one width override for the whole row. Nothing references it, so it is there to be used as it stands when a slider wants a quiet and a loud icon at its ends, or copied for a frame of your own.
- **`WBP_SliderSegment`** — Base class for the marks a slider draws at its snap points. The slider creates one per entry in its segment list and calls Update Active as the value passes each mark; that event is empty here and the class has no visuals. Subclass it, or name the supplied default, as a slider's segment class.
- **`WBP_SliderSegment_Default`** — Default segment mark: two nested rounded borders that change colour as the slider's value passes them. Both the standard and the custom-material slider use it as their segment class; name it on a slider of your own, or copy it for a different mark.
- **`WBP_Slider_CustomMaterial`** — Slider whose track is a material rather than a coloured bar, with separate materials for VR and desktop and a thin outlined knob. The colour picker's hue and brightness sliders are both this class. Use it when the track has to show a gradient or some other shader-driven fill.
- **`WBP_Slider_Default`** — Standard slider: a progress bar track with a round knob, segment marks where the parent's segment list puts them, and a tooltip above the knob showing the current value when Show Value is on. The one to place for an ordinary numeric control.
- **`WBP_Slider_Unit`** — Slider that writes its value and unit across the track itself instead of into a tooltip, in a taller frame with a hover border. Use it where the number matters as much as the position, such as a volume in decibels or a distance in metres.
- **`WBP_Stepper`** — Base class for steppers: a list of text entries with a current index, a decrease and an increase button that deactivate at the ends, and a replacement text shown whenever the index falls outside the list. Binds to an integer value object, and the index replicates. Subclass it and override the button, text and animation getters, or place the ready-made default.
- **`WBP_Stepper_Default`** — Ready-made stepper: two small chevron buttons either side of a centred value in a rounded frame, with an adjustable content width. This is the stepper to place; the entries, the index and the value binding come from its parent class.
- **`WBP_Tag`** — Small rounded label: a line of text on a coloured pill, taking its colour from a colour data asset rather than from the theme, with the text blended to stay readable against it. Carries its own tooltip anchor, so the widget base's tooltip settings work on it. Drop it in for statuses, categories and chips.
- **`WBP_Template_Widget`** — Empty widget with the framework's construct, initiate, theme update, post-initiate and replication events already overridden and left blank. Copy it as the starting point for a widget of your own; nothing references it, and it is meant to be duplicated rather than used.
- **`WBP_TextField`** — Base class for text fields. Holds the text, the hint and the character limit, raises the framework's virtual keyboard through the widget component where one is supported and falls back to Slate keyboard focus where it is not, and reports changes and commits; the text replicates. Choose the keyboard class, extension and keyboard location on it, and subclass it when a field needs a new look.
- **`WBP_Textfield_Area`** — Multi-line text field for longer input. Same keyboard handling and character-limit counter as the single-line field, but Enter inserts a line break rather than committing, so the text commits when the keyboard closes. Use it for descriptions and notes.
- **`WBP_Textfield_Default`** — Standard single-line text field: a rounded box with a hint, a selection outline and a character-limit counter that appears once a limit is set. The one to place for ordinary text input; the keyboard, the replication and the text events all come from its parent class.
- **`WBP_Textfield_Password`** — Password field: a single-line text field with its characters masked, plus a small round button carrying an eye icon that reveals them while it is selected. Otherwise identical to the standard field. Use it wherever typed text should not be readable over the player's shoulder.
- **`WBP_Tooltip`** — Base for tooltips. Holds the text, the placement and whether it is currently shown; the widget base creates one from a widget's Tool Tip Class when the tooltip anchor opens, then calls Show Tooltip, Hide Tooltip and Update Text on it. No visuals of its own, so subclass it for a tooltip of your own design and use the default variant otherwise.
- **`WBP_Tooltip_Default`** — The framework's standard tooltip: text in a rounded panel up to 400 pixels wide, fading in from above or below to match the placement it was given. The main button styles all name it as their tooltip class, so setting Tool Tip Text on one of them is enough; subclass it, or start from the tooltip base, to design your own.
- **`WBP_Tooltip_Slider`** — Value tooltip the standard slider raises above its knob: a rounded box with an arrow beneath it and one line of text the slider keeps updated as the value moves. Created on demand by the slider; not something to place, nor to set as a widget's tooltip class.
- **`WBP_TreeElement`** — Base for a widget standing in for one object in a tree. Carries the object it represents and the reference object the tree was built around, and nothing more. It is the class the tree element contract hands back, so subclass it to give the row a layout.

## AFS_UI_Hand

- **`BPC_ControllerAbility_HandUI`** — Hand ability that carries a UMG menu on the palm. While active it spawns the hand UI helper, for the locally controlled pawn only, and the helper shows or hides the menu as the palm turns towards the head past Appear Angle. Add it to a motion controller and set Widget VR to the widget class the hand should carry.
- **`BP_Helper_HandUI`** — World-side actor for the hand UI ability: a spring arm that lets the menu lag behind the hand, an anchor the menu element attaches to, and a ticked check of the palm angle that plays the menu in or out. Spawned by the ability rather than placed, and the element carrying the actual widget connects to its anchor.
- **`BP_Helper_HandUI_Element`** — Actor carrying the palm menu itself: a widget component at hand scale, a pickup grip and a connector holding it on the hand UI helper's anchor. Because it is a separate actor with a grip of its own, the menu can be pulled off the hand and left hanging in the world. Spawned for you; the widget class comes from the hand UI ability.
- **`SC_UISpace_Hand_Close`** — Sound of a panel folding away beside the hand, set as the Fade Out Sound on the widget component of the hand UI element.
- **`SC_UISpace_Hand_Open`** — Sound of a panel unfolding beside the hand, set as the Fade In Sound on the widget component of the hand UI element.

## AFS_UI_InfoPanels

- **`BFL_InfoPanel`** — Function library for the stacked info panels on the pawn's head-up display. Show, Toggle, Remove and Is Visible each take the pawn and a widget class, adding the panel to the display the first time one is asked for. Call these statically rather than creating the panel yourself; the pawn needs the head-up display ability.
- **`WBP_InfoElement`** — Frame around one widget inside an info panel: it hosts the widget in a switcher, pops in when spawned, and plays that animation backwards before removing itself and telling the panel it has gone. Created by the info panel rather than placed in a hierarchy of your own.
- **`WBP_InfoPanel`** — Panel stacking the open info widgets down one corner of the screen, each in its own element, interpolating them into place as the stack changes and closing itself once the last one is gone. Added to the head-up display by the info panel library, which is what you should call; there is no need to create it directly.

## AFS_UI_Labels

- **`BPC_Label`** — Base label component: floating world-space UI pinned to a point on an actor. It spawns and destroys the label helper actor as it activates, and holds every setting the label uses: the leader spline and its direction, the arrow, the theme override, camera-facing rotation and hiding by distance. Add the simple or info variant, or subclass it for content of your own.
- **`BPC_Label_Info`** — Label with a title, a subtitle, a body of text and a button, drawn in a collapsible frame with collision switched on. Add it to an actor that needs a full information panel next to it, and change any of the four through the matching Update calls at runtime.
- **`BPC_Label_Simple`** — Label showing a single line of text. Add it to an actor that only needs naming, and call Update Title to change the text at runtime; it is the label nearly all the shipped examples use.
- **`BP_Helper_Label`** — Actor that actually draws a label: the widget component on a handle that turns to face the camera, the leader spline with its arrow, and the fade in and out before it destroys itself. The label component spawns one while the label should be visible, passing it every setting; subclass this and point the component's Label Class at it only when a label needs building differently.
- **`SC_UI_Label_FadeIn`** — Sound of a world label appearing, set as the Fade In Sound on the widget component of the label helper actor the label component spawns.
- **`SC_UI_Label_FadeOut`** — Sound of a world label going away, set as the Fade Out Sound on the widget component of the label helper actor. The HUD example also reuses it as the fade-out of every frame it adds, so it is heard outside the label system as well.
- **`WBP_Label`** — Root class for every label widget. Get Label Component walks back through the label helper actor that owns the widget to the label component that spawned it, which is how a label reads its content. Inherit from this, or from the simple or info variant, for a label of your own and point the label component's Label Widget Class at it.
- **`WBP_LabelFrame`** — Rounded frame with a pointer arrow, shared by the label widgets. Content goes in its named slot, and Set Direction moves the arrow to the chosen edge and turns it so it points back at the thing being labelled. Use it as the outer frame of a label widget of your own.
- **`WBP_Label_Info`** — Label widget laying out a title, subtitle and body inside the label frame, with a large button that collapses and expands the body. It reads all four from the info label component whenever the content changes. Copy or subclass it for a panel of your own rather than editing it in place.
- **`WBP_Label_Simple`** — Label widget showing one line of title text in the label frame, read back from the simple label component whenever the content changes. It is the widget class the simple label defaults to; copy it as the starting point for a small label of your own.

## AFS_UI_Menu

- **`BPC_Pawn_Menu`** — Pawn component listing the pages the in-game menu offers. Add it to a pawn and fill in Pages; the desktop and VR menu widgets read the list back off the pawn to build their navigation, so one menu widget serves every pawn and the pages are configured per pawn instead. Without it the menu has nothing to show.
- **`WBP_Menu_Desktop`** — Desktop in-game menu: a vertical button bar in a side scaffold, with the chosen entry building a subpage beside it. The pages behind each entry come from the pawn's menu component, so configure the menu there and leave this widget alone. Used by the showroom's desktop pawn.
- **`WBP_Menu_Desktop_Subpage`** — One entry's worth of the desktop menu: a horizontal pagination row above a switcher that creates the selected page's widget. Initiate With Pages fills it from a list of widget page data assets, and the row collapses when there is only one page. Created by the desktop menu; not something to place yourself.
- **`WBP_Menu_VR`** — VR in-game menu: logo, a vertical pagination list and a quit button in an expanding scaffold, with the chosen entry building a subpage next to it. Pages come from the player pawn's menu component, and quitting asks for confirmation in an overlay first. Opened from a motion controller, as the showroom hands and controllers do.
- **`WBP_Menu_VR_Subpage`** — One entry's worth of the VR menu: a horizontal pagination row above a switcher that creates the selected page's widget and removes the previous one after it has faded. Initiate With Pages fills it from widget page data assets and collapses the row when there is only one. Created by the VR menu; not something to place yourself.
- **`WBP_SettingItem`** — Base widget for one row of a settings screen: an info row carrying the setting's name and caption with a named slot for the control. Set Settings to the settings value class the row edits and it does the rest. Add one of the toggle, slider, selector, colour picker or drop-down variants, or subclass this when the control is your own.
- **`WBP_SettingItem_Boolean_Toggle`** — Settings row whose control is a toggle, aligned to the right of the row. Point Settings at a boolean settings value class to put that setting on a screen. Unused as shipped, so it is there for you to place.
- **`WBP_SettingItem_Color_Picker`** — Settings row whose control is a colour picker. Point Settings at a colour settings value class to let the player choose it on a settings screen. Unused as shipped, so it is there for you to place.
- **`WBP_SettingItem_Float_Slider`** — Settings row whose control is a slider. Point Settings at a float settings value class; the shipped graphics and sound tabs use it for pixel density and for the four volume mixes.
- **`WBP_SettingItem_Integer_Selector`** — Settings row whose control steps through whole numbers. Point Settings at an integer settings value class; the shipped graphics tab uses it for every quality level it offers.
- **`WBP_SettingItem_Name_DropDown`** — Settings row whose control is a drop-down of named options. Point Settings at a name settings value class; the shipped gameplay tab uses it for the theme selector.
- **`WBP_SettingsFrame_Buttons`** — Save and Reset buttons a settings frame shows along its foot, and they do the work themselves rather than reporting to the frame: Reset calls Reset All Settings on the game state's settings component, and Save calls Save All Settings and raises a notification confirming it. Subclass it to change what the row offers.
- **`WBP_Settings_Desktop`** — Complete settings screen: graphics, sound and gameplay tabs over a switcher, with Reset and Save beneath, Reset asking the game state's settings component to restore every setting. Nothing in the framework opens it, so give it a menu page of your own, or copy it and swap the three tabs for yours.
- **`WBP_Settings_Desktop_Gameplay`** — Gameplay tab of the desktop settings screen: a scrolling column that as shipped holds a single row, the theme selector. Add setting items to it to give your project's gameplay options a home, or copy it as the pattern for a tab of your own.
- **`WBP_Settings_Desktop_Graphics`** — Graphics tab of the desktop settings screen: a scrolling column of setting rows bound to the console-variable settings presets, covering pixel density, shadows, post process, effects, fixed foveated rendering, foliage, textures and view distance. Copy it and change the preset on each row to offer a different set.
- **`WBP_Settings_Desktop_Sound`** — Sound tab of the desktop settings screen: sliders bound to the master, music, effects and voice volume settings presets. Copy it and point each slider at a different preset if your project mixes its audio some other way.
- **`WBP_Settings_Mobile_Gameplay`** — Gameplay tab of the mobile settings screen: setting rows bound to the comfort and interaction presets, laid out in the widget tree with no logic behind them. Unlike the VR tab it does not collapse anything, so every row stays visible. Copy it and change the preset on each row to offer a different set.
- **`WBP_Settings_Mobile_Graphics`** — Graphics tab of the mobile settings screen, bound to the console-variable quality presets. The mobile counterpart of the desktop tab, with the settings a phone can actually act on.
- **`WBP_Settings_Mobile_Sound`** — Sound tab of the mobile settings screen: sliders bound to the master, music, effects and voice volume presets.
- **`WBP_Settings_VR_Gameplay`** — Gameplay tab of the VR settings screen, and the one that matters most in a headset: the comfort rows bound to their settings presets. The teleport, locomotion and turn toggles each collapse the rows beneath them when switched off, so options that no longer apply disappear instead of sitting there inert. The tab to copy when building a comfort screen of your own.
- **`WBP_Settings_VR_Graphics`** — Graphics tab of the VR settings screen, bound to the console-variable quality presets. The VR counterpart of the desktop tab.
- **`WBP_Settings_VR_Sound`** — Sound tab of the VR settings screen: sliders bound to the master, music, effects and voice volume presets.

## AFS_UI_Notifications

- **`BFL_Notifications`** — Function library reducing the notification flow to one static call. Show Default Notification builds a default notification for a pawn from an icon, a line of text, a colour and a duration, shows it and returns the widget. Call this rather than creating the notification object yourself.
- **`BP_Notification`** — Object describing one notification: which pawn sees it, the widget class that draws it, how long it lasts and the sound it plays. Spawn Inside Notification Container adds the container to the pawn's HUD ability and hands itself over to be built into a widget. Subclass it when a notification needs content of its own, as the default one does; it is created in code rather than placed.
- **`BP_Notification_Default`** — Ready-made notification carrying an icon, a line of text and a colour data asset, paired with the default notification widget and a ten second duration. Created for you by Show Default Notification, so reach for the library first and copy this class only when you want a notification with different content.
- **`SC_UI_Notification`** — Sound a notification arrives with. The notification object falls back to it whenever its own Sound has been left empty, so it is what plays unless a notification names something else.
- **`WBP_Notification`** — Root class for every notification widget: a named slot for the content, the slide-and-fade in and out animations, and Despawn Notification, which plays the fade, tells the container it has gone and removes itself. Inherit from this for a notification look of your own and point a notification object's Widget Class at it.
- **`WBP_NotificationContainer`** — Stack that holds the notifications currently on screen. It builds each widget from a notification object, keeps the pile interpolating upwards as sizes change, and closes itself once the last one has despawned. Added to the pawn's HUD by the notification itself, so it is not a widget to add by hand.
- **`WBP_Notification_Default`** — The shipped notification look, an icon beside a line of text behind a rounded outline whose colour comes from the colour data asset on the notification. Paired with the default notification; copy it when you want a different arrangement of the same parts.

## AFS_UI_Pawn

- **`BPC_PawnAbility_PawnUI`** — Pawn ability owning the UI that travels with the pawn. Add Widget places a widget at a position data asset: floating in the world around a VR pawn as a pooled element actor, or handed to the HUD ability on desktop and mobile, so the same call works on all three. Add it to a pawn to grant pawn UI, and drive it through Add, Toggle and Remove Widget or the pawn UI library.
- **`BP_Helper_PawnUIPosition`** — Invisible reference frame the pawn UI is arranged around, following the pawn's camera location and yaw. It only re-centres once the player has moved or turned past the tolerances of the open panels, which is what keeps the UI still while you look about and brings it with you when you walk. The pawn UI ability spawns one while elements are open.
- **`BP_Helper_PawnUI_Element`** — Carrier actor for one panel of pawn UI: a widget component on a lagging spring arm, with a scale-up appearance, fade sounds and an auto-destroy. Spawned by the pawn UI ability, which also pools it when pooling is asked for, and it removes itself from the ability when the widget requests closing. Not an actor to place.
- **`BP_KeyboardLocation_PawnUI`** — Placement rule that opens the virtual keyboard as a pawn UI element floating in front of the player instead of on the flat HUD, using the keyboard position data asset. Point a text field's Keyboard Location at this class for VR pawns; nothing references it by default, and the pawn needs the pawn UI ability.
- **`DA_PawnUIPosition_Far`** — Pawn UI position for panels placed out of arm's reach, meant to be worked with a laser. Used by the pawn UI example page as the far half of its Near and Far pair; copy it as the starting point for a position of your own.
- **`DA_PawnUIPosition_Keyboard`** — Pawn UI position the virtual keyboard opens at. The pawn UI keyboard location passes it to Add Widget, so it is what sets the distance, pitch and height the keyboard appears at; edit it rather than the location class to move the keyboard.
- **`DA_PawnUIPosition_Near`** — Pawn UI position for panels close enough to be touched with a hand. Used by the pawn UI example page as the near half of its Near and Far pair; copy it when a panel of your own should sit within reach.
- **`FL_PawnUI`** — Function library wrapping the pawn UI ability in two static calls, Add Element and Remove Element, so a widget can be put in front of a pawn without first fetching the component. Call them from anywhere with a pawn to hand; the pawn must carry the pawn UI ability.
- **`PDA_PawnUIPosition`** — Data asset describing one place around the pawn where UI may appear: the distance, pitch and height offset used in VR, how far the player must move or turn before panels follow, whether several widgets stack there, and the frame used when the same widget goes to a flat HUD instead. Create one per position your project needs and pass it to Add Widget.
- **`SC_UI_PawnUI_FadeIn`** — Sound of a pawn UI panel arriving in front of the player, set as the Fade In Sound on the widget component of the pawn UI element.
- **`SC_UI_PawnUI_FadeOut`** — Sound of a pawn UI panel leaving, set as the Fade Out Sound on the widget component of the pawn UI element.

## AFS_UI_Popups

- **`BFL_Popups`** — Function library for modal popups. Show Popup Default adds the default popup widget to the pawn's UI space at the popup position and fills in its icon, title, body, button row and sound in a single call, returning the widget so you can bind to its buttons. Called statically; the pawn needs the pawn UI ability for anything to appear.
- **`DA_PawnUIPosition_Popup`** — Pawn UI position modal popups open at. Show Popup Default passes it to Add Widget, so it decides where every popup sits in front of the player; edit it to move them all at once.
- **`WBP_Popup_Default`** — Default popup layout: an icon, a title, a body and a row of buttons inside an outlined scaffold, with each of the colours taking a colour data asset. Initiate Popup fills the whole thing in one call and plays the sound half a second later. Shown through the popup library; subclass or copy it when a popup of your own wants a different arrangement.

## AFS_UX_Gaze

- **`BPC_Interaction_Gaze`** — Interaction that responds to being looked at. While a pawn's gaze ability holds its trace on the owner, an indicator appears just off the surface facing the camera and fills over Trigger Time, then fires. Add it to any actor that should be worked without a controller, set the indicator widget and the time, and implement the gaze interface on the owner if it needs to refuse a gaze.
- **`BPC_PawnAbility_Gaze`** — Pawn ability letting a pawn work things by looking at them. Each tick it reads the pawn's latest trace and, where the hit actor carries a gaze interaction willing to be gazed at, keeps that interaction's highlight alive and puts the pawn into the gaze interaction state. Add it to a pawn to grant gaze; it needs the pawn to answer the trace interface.
- **`BP_Helper_GazeIndicator`** — Indicator actor showing how far a gaze has progressed: a widget component carrying the progress widget, a sound that rises with the fill, and a timeline run at the interaction's trigger time. The gaze interaction spawns and destroys one per gaze, so this is not an actor to place.
- **`Interface_Gaze`** — Contract an actor implements to decide for itself whether it may be gazed at. The gaze interaction asks Can Gaze View, passing itself and the source info, before starting the fill. Implement it on the owning actor when gazing depends on the actor's own state; without it, every gaze on an active interaction is allowed.
- **`M_CircularProgress`** — Radial fill material with a Percent parameter, drawn by the circular gaze indicator. The indicator makes it dynamic on construct and writes gaze progress into it as the ring sweeps round.
- **`WBP_Gaze_Circular`** — Circular gaze indicator: a radial progress material that sweeps round and brightens as the gaze fills. Progress Updated is called with the new value as the dwell advances, which is the only event a replacement has to implement. The default indicator; point a gaze interaction's progress bar at it unless a bar reads better.
- **`WBP_Gaze_Linear`** — Gaze indicator drawn as a horizontal bar rather than a ring, filling as the gaze progresses. Set it as a gaze interaction's progress bar where a bar suits the design better than a circle; it implements the same Progress Updated event as the circular one.
- **`Widget_GazeIndicator`** — Root class for the widget that shows gaze progress. Set Progress does nothing here, so subclass it and fill in that event to draw the progress however you like, and set Desired Dimensions, which the indicator actor uses as the draw size of its widget component.
- **`Widget_GazeIndicator_Circular`** — Circular gaze indicator: a radial progress material that sweeps round and brightens as it fills. The default indicator on the gaze helper, and the one to point a gaze interaction at unless a bar suits the design better.
- **`Widget_GazeIndicator_Linear`** — Gaze indicator drawn as a horizontal bar rather than a ring, filling and brightening as the gaze progresses. Nothing uses it by default; set it as a gaze interaction's Progress Bar class where a bar reads better than a circle.

## AFS_UX_Grip

- **`BPC_ControllerAbility_Hand_Grab`** — Hand ability letting a hand-mesh motion controller take hold of things. A sphere trace at the palm finds the highest-priority grip interaction, then pickups are held on the helper's physics handle or snapped to a grip socket with a matching hand pose, and latches get a latching helper. Add it to a hand controller, which must answer the hands motion controller contract for posing, snapping and collision. It forwards face, trigger and thumbstick input to whatever is held.
- **`BPC_Interaction_Grip`** — Base interaction making its owner grabbable, the target side of every grip. It answers Can Be Gripped with a priority worked out from the distance to the closest grip socket, remembers the ability currently holding it, plays the grip and release sounds and haptics, and releases the holder if the owner is destroyed. Add the pickup, latch or proxy variant rather than this one; subclass it when a hold of your own needs different rules.
- **`BPC_Interaction_Grip_Latch`** — Grip interaction for something worked in place rather than carried away, a lever, a valve or a drawer. Gripping spawns a latch helper at the closest attach-point socket and parents it to the hand, and the grabbing ability's supported latch types decide whether it may be taken hold of at all. Add the drag or physics variant for a working latch; subclass this one when the helper it spawns should be yours.
- **`BPC_Interaction_Grip_Latch_Drag`** — Latch that drives drag components on its owner. Gripping spawns a drag latch helper carrying the drag tag, and every drag component on the owner marked with that tag follows the hand. Add it to levers, knobs, sliders, valves and hinged doors and set the tag to match the drag components it should move; it is the latch nearly all the shipped examples use.
- **`BPC_Interaction_Grip_Latch_Physics`** — Latch that holds its owner through a breakable physics constraint instead of driving it directly, spawning the physics latch helper at the attach-point socket. Add it when the object should resist and swing rather than track the hand exactly; pulling past the break threshold releases the hold. Nothing in the shipped content uses it, so treat it as a starting point rather than a worked example.
- **`BPC_Interaction_Grip_Pickup`** — Grip interaction for an object meant to be picked up and carried, and the most-used grip in the framework. Add it alongside a pickup coordinator on the same actor: this component is the grabbable side that a hand, a laser or a desktop pawn finds, while the coordinator holds the grab type, release rule, upright and snapping settings it reads back and unregisters from on release.
- **`BPC_Interaction_Grip_Proxy`** — Grip interaction that passes the grab on to its attach parent. Asked whether it can be gripped, it puts the question to the grip component on the actor it is attached to and names that component as responsible, so the parent is held rather than the child. Add it to an attached actor that should be grabbed by the thing it hangs off.
- **`BPC_PawnAbility_Grip`** — Pawn ability giving a desktop or mobile pawn the ability to grab. The pawn's latest trace finds the highest-priority grip interaction; pickups are carried on a physics handle out in front of the camera, latches get a latching helper. Add it to a non-VR pawn, which must answer the pawn info contract for its camera. Zoom pushes and pulls the held object, and the four interaction state assets set the cursor as the pointer passes over something grabbable. Replicated through its grab definition.
- **`BPC_PickupCoordinator`** — Settings and state hub for a pick-up-able actor, one per actor however many hands hold it. Carries the grab and release types, the upright, snapping and interpolation options, tracks every ability currently holding the actor and averages their desired transforms for two-handed carries, and switches physics simulation on and off at the right moments. It also searches the snapping connectors while the actor is held and connects on release. Pair it with the pickup grip interaction.
- **`BPC_Socket_AttachPoint`** — Socket marking a place a latch may take hold of, with its name preset to the Attach Point prefix the latch interaction searches for. Add one per handhold on a lever, valve or drawer; gripping picks whichever of the owner's attach points sits closest to the hand and parents the latch helper there.
- **`BPC_Socket_Grip`** — Socket marking where a hand may take hold of an object, with its name preset to the Grip prefix that grabbing searches for. Name each one for the hand and the pose, Grip_L_ or Grip_R_ followed by a pose key, and the hand ability picks the socket for the correct side and looks the matching hand pose up on the grip interaction. Add one per hold position.
- **`BP_Helper_ControllerAbility_Hand_Grip`** — World-side helper the hand grabbing ability spawns. Holds the physics handle that actually carries picked-up objects, the handles fixing where a held object sits relative to the hand, and the palm offset used when nothing snaps to a socket. It is also where the VR button, trigger and thumbstick actions arrive before the ability forwards them to whatever is being held. Spawned with the ability; not something to place.
- **`BP_Helper_Latch`** — Base for the actor a latch spawns between the hand and the thing being worked. Spawned owned by the grabbing ability and attached to it, it remembers the latched actor, the Source Info of whoever took hold and the socket it took hold of, and tidies itself away through the auto-destroy component. It does nothing on its own; the drag and physics subclasses do the work, and a latch of your own spawns its own subclass of this.
- **`BP_Helper_Latch_Drag`** — Latch helper that works drag components. It gathers every drag component on the latched actor carrying the drag tag and feeds them the hand's movement each frame, which is what turns a valve, slides a drawer or swings a lever. Spawned by the drag latch interaction rather than placed, and destroyed with the hold.
- **`BP_Helper_Latch_Physics`** — Latch helper that holds the object through a physics constraint rather than driving it: a hidden handle mesh with a breakable linear and angular drive between hand and body. Breaking the constraint releases the grabbing ability, and destroying the helper breaks it first so nothing is left attached. Spawned by the physics latch interaction; not something to place.
- **`BP_Helper_PawnAbility_Grab`** — World-side helper the desktop and mobile grabbing ability works through: a physics handle plus the grabbing, offset and hovering handles that decide where a carried object floats in front of the camera. It has no logic of its own, the ability moves the handles, and it is spawned for you rather than placed.
- **`BP_Helper_PickupOffset`** — Bare marker actor: a single scene root and nothing else. Nothing in the framework spawns or references it, and it has no logic of its own, so treat it as a stub left for positioning a picked-up object rather than as working content.
- **`BP_Value_Settings_Integer_Grip_GrabAssist`** — Ready-made selector for how forgiving grabbing is, widening or narrowing the hand's grab search. Point a selector row at it to offer precise, normal and generous reach; it is the single biggest accessibility win on a settings screen.
- **`Cue_Interaction_Latch`** — Sound of taking hold of a latched object, set as the Grip Sound default on the latch interaction. Override that property on the component rather than editing this cue when one latch should sound different.
- **`Cue_Interaction_Latch_Release`** — Sound of letting a latched object go, set as the Release Sound default on the latch interaction.
- **`Cue_Interaction_Pickup`** — Sound of picking something up, set as the Grip Sound default on the pickup interaction and so heard on most grabbable props. Override that property on the component rather than editing this cue when one prop should sound different.
- **`Cue_Interaction_Pickup_Release`** — Sound of putting something down, set as the Release Sound default on the pickup interaction.
- **`FL_Interaction`** — Function library behind grabbing and selecting, called statically with no component to add. Find Closest Socket searches a set of scene components for the nearest socket whose name starts with a given prefix, and the two highest-priority functions walk an actor's grip or select interactions and return the one that wins. The grabbing abilities are built on these, and an ability of your own can call them the same way.
- **`IA_Desktop_Grip`** — Input action for grabbing and letting go on a desktop pawn. The grip ability grabs whatever the pawn's trace is on when the action starts and releases when it completes, so it is held rather than toggled.
- **`IA_Desktop_Zoom`** — Input action for pushing a held object further away and pulling it closer on a desktop pawn, passed as an axis to the grip ability's Zoom. Usually mapped to the mouse wheel.
- **`IA_VR_ButtonForward_Face01_Left`** — Input action forwarding the left controller's first face button to whatever that hand is holding. The hand grip and laser helpers pass it on as Face 01 through Button Forward Key, which the held object's grip interaction broadcasts. Belongs in the button-forward mapping contexts the grip adds while something is held.
- **`IA_VR_ButtonForward_Face01_Right`** — Input action forwarding the right controller's first face button to whatever that hand is holding. The hand grip and laser helpers pass it on as Face 01 through Button Forward Key, which the held object's grip interaction broadcasts. Belongs in the button-forward mapping contexts the grip adds while something is held.
- **`IA_VR_ButtonForward_Face02_Left`** — Input action forwarding the left controller's second face button to whatever that hand is holding, passed on as Face 02 through Button Forward Key by the hand grip and laser helpers. Only the left hand's helper answers it.
- **`IA_VR_ButtonForward_Face02_Right`** — Input action forwarding the right controller's second face button to whatever that hand is holding, passed on as Face 02 through Button Forward Key by the hand grip and laser helpers. Only the right hand's helper answers it.
- **`IA_VR_ButtonForward_ThumbstickAxis_Left`** — Input action forwarding the left thumbstick's two axes to whatever that hand is holding. The hand grip and laser helpers pass it to Button Forward Thumbstick, so a carried object can read the stick continuously rather than as four directions.
- **`IA_VR_ButtonForward_ThumbstickAxis_Right`** — Input action forwarding the right thumbstick's two axes to whatever that hand is holding. The hand grip and laser helpers pass it to Button Forward Thumbstick, so a carried object can read the stick continuously rather than as four directions.
- **`IA_VR_ButtonForward_ThumbstickPress_Left`** — Input action forwarding a click of the left thumbstick to whatever that hand is holding, passed on as Thumbstick Press through Button Forward Key. Only the left hand's helper answers it.
- **`IA_VR_ButtonForward_ThumbstickPress_Right`** — Input action forwarding a click of the right thumbstick to whatever that hand is holding, passed on as Thumbstick Press through Button Forward Key. Only the right hand's helper answers it.
- **`IA_VR_ButtonForward_Thumbstick_Down_Left`** — Input action forwarding the left thumbstick pushed down to whatever that hand is holding, passed on as Thumb Stick Down through Button Forward Key. Use it where a held object wants the stick as four discrete presses rather than as an axis.
- **`IA_VR_ButtonForward_Thumbstick_Down_Right`** — Input action forwarding the right thumbstick pushed down to whatever that hand is holding, passed on as Thumb Stick Down through Button Forward Key. Use it where a held object wants the stick as four discrete presses rather than as an axis.
- **`IA_VR_ButtonForward_Thumbstick_Left_Left`** — Input action forwarding the left thumbstick pushed left to whatever that hand is holding, passed on as Thumb Stick Left through Button Forward Key. The trailing part of the name is the hand, not the direction.
- **`IA_VR_ButtonForward_Thumbstick_Left_Right`** — Input action forwarding the right thumbstick pushed left to whatever that hand is holding, passed on as Thumb Stick Left through Button Forward Key. The trailing part of the name is the hand, not the direction.
- **`IA_VR_ButtonForward_Thumbstick_Right_Left`** — Input action forwarding the left thumbstick pushed right to whatever that hand is holding, passed on as Thumbstick Right through Button Forward Key. The trailing part of the name is the hand, not the direction.
- **`IA_VR_ButtonForward_Thumbstick_Right_Right`** — Input action forwarding the right thumbstick pushed right to whatever that hand is holding, passed on as Thumbstick Right through Button Forward Key. The trailing part of the name is the hand, not the direction.
- **`IA_VR_ButtonForward_Thumbstick_Up_Left`** — Input action forwarding the left thumbstick pushed up to whatever that hand is holding, passed on as Thumb Stick Up through Button Forward Key. Only the left hand's helper answers it.
- **`IA_VR_ButtonForward_Thumbstick_Up_Right`** — Input action forwarding the right thumbstick pushed up to whatever that hand is holding, passed on as Thumb Stick Up through Button Forward Key. Only the right hand's helper answers it.
- **`IA_VR_ButtonForward_TriggerAxis_Left`** — Input action forwarding how far the left trigger is pulled to whatever that hand is holding. The hand grip and laser helpers pass it to Button Forward Trigger Axis, so a held object can read a continuous squeeze rather than a press.
- **`IA_VR_ButtonForward_TriggerAxis_Right`** — Input action forwarding how far the right trigger is pulled to whatever that hand is holding. The hand grip and laser helpers pass it to Button Forward Trigger Axis, so a held object can read a continuous squeeze rather than a press.
- **`IA_VR_ButtonForward_Trigger_Left`** — Input action forwarding the left trigger as a press to whatever that hand is holding, passed on as Trigger through Button Forward Key. Pair it with the trigger axis action when an object wants both the press and the squeeze.
- **`IA_VR_ButtonForward_Trigger_Right`** — Input action forwarding the right trigger as a press to whatever that hand is holding, passed on as Trigger through Button Forward Key. Pair it with the trigger axis action when an object wants both the press and the squeeze.
- **`IA_VR_Grab_Left`** — Input action for grabbing and letting go with the left hand, and the one that starts a grip rather than being forwarded on. The hand grip and laser helpers hand it to their ability's Grip, which searches for the highest-priority grip interaction under the hand or the beam; only the left hand's helper answers it.
- **`IA_VR_Grab_Right`** — Input action for grabbing and letting go with the right hand, and the one that starts a grip rather than being forwarded on. The hand grip and laser helpers hand it to their ability's Grip, which searches for the highest-priority grip interaction under the hand or the beam; only the right hand's helper answers it.
- **`Interface_GrabbingActor`** — Contract every grabbing ability answers to: take hold and let go, which grip interaction it currently holds, whether it can offer a physics handle, which latch types it can work and the transform it wants the held actor to have. Grip interactions and the pickup coordinator call it without knowing whether a hand, a laser or a desktop pawn is holding them, so implement it on a grabbing ability of your own.
- **`Interface_Grip`** — One-question contract letting an actor veto being grabbed. Grip interactions ask their owner Can Be Gripped before reporting themselves available, so answering false for a given Source Info leaves the object unable to be picked up by that ability while remaining perfectly grabbable by another. Implement it on an actor that has to decide for itself; an actor that does not implement it stays grabbable throughout.
- **`SM_Latch_Indicator`** — Handle mesh of the physics latch helper, hidden in game and used as the anchor a physics constraint drives towards. Nothing about it is seen by the player; it exists so the latch has something to attach to.

## AFS_UX_Laser

- **`BPC_ControllerAbility_Laser`** — Hand ability giving one motion controller a pointing laser: hovering, selecting, gripping at a distance and driving UMG widgets all run through it. Add it to a motion controller and it spawns the laser helper with the beam, the physics handle and the widget interaction, choosing a laser style per hover state. Pointer Transform Interaction decides what the thumbstick does to a remotely grabbed actor.
- **`BP_Helper_ControllerAbility_Laser`** — World-side actor for the laser ability, spawned with it: the beam start and end points, the sphere at the tip, the point light, the physics handle used for remote grabbing, the widget interaction and the attach points a snapped object hangs from. It also carries the laser's own input bindings. Spawned for you rather than placed; edit it to change what the laser looks like.
- **`IA_VR_TransformModes_Left`** — Input action stepping the left laser through its transform modes while something is held at the end of the beam, cycling the ability's pointer transform one entry on each press. The laser helper answers it only on the hand whose side is Left.
- **`IA_VR_TransformModes_Right`** — Input action stepping the right laser through its transform modes while something is held at the end of the beam, cycling the ability's pointer transform one entry on each press. The laser helper answers it only on the hand whose side is Right.
- **`IA_VR_TransformXAxis_Left`** — Input action carrying the horizontal axis that reshapes whatever the left laser is holding. What it does depends on the current transform mode: it yaws the object in either rotate mode and scales it in the scale mode. Answered only by the left hand's laser helper.
- **`IA_VR_TransformXAxis_Right`** — Input action carrying the horizontal axis that reshapes whatever the right laser is holding. What it does depends on the current transform mode: it yaws the object in either rotate mode and scales it in the scale mode. Answered only by the right hand's laser helper.
- **`IA_VR_TransformYAxis_Right`** — Input action carrying the vertical axis for a held object on the laser: it pitches the object in the rotate-all mode and slides it nearer or further in the others, clamped by the maximum grab distance offset. It is the only vertical action shipped, and the laser helper reads it on the hand whose side is Left despite the name.

## AFS_UX_Locomotion

- **`BPC_ControllerAbility_Movement`** — Hand ability turning a thumbstick into smooth locomotion. Movement Direction chooses whether the stick is read against the camera or against the controller, Movement Speed scales the input, and the pawn is recentred under the head before each move. Add it to a motion controller; the pawn has to implement the pawn info contract for the camera to be found.
- **`BPC_ControllerAbility_Turn`** — Hand ability giving one motion controller snap turning. Each flick rotates the pawn by Rotate Step Degree over Rotate Step Duration, behind a cooldown so a held stick cannot turn twice, and it goes through the pawn's teleport ability so the fade matches an ordinary teleport. Add it to a motion controller; without the teleport ability on the pawn nothing turns.
- **`BP_Helper_ControllerAbility_Movement`** — Input carrier for the movement ability, spawned alongside it. It holds the thumbstick bindings and forwards them to its ability once the hand side matches, since input actions have to live on an actor rather than on a component. Spawned for you, and of interest only when remapping the movement input.
- **`BP_Helper_ControllerAbility_Turn`** — Input carrier for the snap turn ability, spawned alongside it. It holds the turn bindings and calls Turn Left or Turn Right on its ability for the matching hand. Spawned for you; touch it only to remap which action turns which way.
- **`BP_Value_Settings_Boolean_Locomotion_Smooth`** — Ready-made toggle for smooth locomotion, activating or blocking the movement ability on both hands. The first comfort setting worth offering, because a player who cannot use it needs teleport instead.
- **`BP_Value_Settings_Boolean_Locomotion_Turn`** — Ready-made toggle choosing between snap and smooth turning on the turn ability. Snap is the comfortable default; offer the choice rather than deciding for the player.
- **`BP_Value_Settings_Float_Locomotion_TurnSpeed`** — Ready-made slider for how long a turn takes. Zero is an instant snap, which most players find most comfortable; raising it animates the turn instead.
- **`BP_Value_Settings_Integer_Locomotion_Direction`** — Ready-made selector for whether the thumbstick moves the player relative to where they are looking or where the controller points. Head-relative is the more intuitive default; experienced players often prefer hand-relative.
- **`BP_Value_Settings_Integer_Locomotion_SnapAngle`** — Ready-made selector for how far a snap turn rotates. Pair it with the turn-style toggle and disable it while smooth turning is chosen, since it has no meaning there.
- **`IA_VR_Movement_Left`** — Input action carrying the left thumbstick's two axes for smooth locomotion, handed to the movement ability as its movement axis. The movement helper takes this and the right-hand action alike without filtering on side, so either stick moves the pawn unless you rebind them.
- **`IA_VR_Movement_Right`** — Input action carrying the right thumbstick's two axes for smooth locomotion, handed to the movement ability as its movement axis. The movement helper takes this and the left-hand action alike without filtering on side, so either stick moves the pawn unless you rebind them.
- **`IA_VR_Movement_Turn_Left`** — Input action for turning with the left hand, read as a signed axis rather than as two buttons: a positive value calls Turn Right on the turn ability and a negative one Turn Left, so a single stick axis covers both directions.
- **`IA_VR_Movement_Turn_Right`** — Input action for turning with the right hand, read as a signed axis rather than as two buttons: a positive value calls Turn Right on the turn ability and a negative one Turn Left. The turn helper answers whichever of the pair matches the hand it belongs to.

## AFS_UX_Overlap

- **`BPC_ActorAbility_Overlap`** — Actor ability marking its owner as something overlap interactions react to. It adds no logic beyond the ability base; what matters is the identifier given to it, which overlap interactions match against their allowed list. Add it to a motion controller, a hand or any actor whose collision should be able to trigger an overlap.
- **`BPC_Interaction_Overlap`** — Interaction that fires when a tagged collision component on the owner is overlapped by an actor carrying the overlap ability. Point Component Tag Of Collision at the primitive that should detect, and list the identifiers you accept; an ability whose identifier is not listed is ignored. The base only reports and plays its sounds, so bind to On Overlap Start or subclass it for a response of your own.
- **`BPC_Interaction_Overlap_Drag`** — Overlap interaction that starts a drag rather than a one-off event. When an overlapping ability arrives it spawns a drag latch at the contact point and hands it to a drag state component on the owner, destroying it again when the overlap ends. Add it to a lever, button or slider whose handle is meant to be pushed by a hand rather than gripped.
- **`Interface_Overlap`** — Contract for an actor that wants a say in whether it may be overlapped, given the source info and the overlap interaction asking. Nothing in the shipped content calls it, so treat it as an extension point for overlap logic of your own; the shipped overlap interaction decides from its own list of allowed identifiers.

## AFS_UX_Select

- **`BPC_ControllerAbility_Hand_Finger`** — Hand ability giving one motion controller a fingertip poke, for pressing world widgets and near objects at very short range. Add it to a hand controller and position it at the index fingertip, as the showroom hands do, then set the trace distance in centimetres.
- **`BPC_ControllerAbility_Hand_Laser`** — Hand ability giving one motion controller a pointing laser. It traces ahead of the hand each frame, keeps the highest-priority select interaction highlighted and feeds the widget interaction helper, so world widgets can be clicked and scrolled. Pressing select clicks the widget or presses the interaction. Add it to a hand controller and set the length, thickness and colour.
- **`BPC_Interaction_Select`** — Interaction making its owner selectable, whether by a hand laser, a fingertip or a desktop click. It answers whether it may be selected right now, lets the owner veto or move the reported hit point through the select interface, and on press broadcasts On Select with the source info, plays the select sound and fires the haptic effect. Add it to any actor that should respond to being clicked.
- **`BPC_PawnAbility_Select`** — Pawn ability giving a desktop or mobile pawn the select action. Each tick it highlights the highest-priority select interaction under the pawn's trace and sets the pawn's interaction state from the chosen style; the select input then presses that interaction. Add it to a pawn along with its input mapping context. VR pawns use the hand laser instead.
- **`BPC_PawnAbility_Widget`** — Pawn ability letting a desktop or mobile pawn use world-space widgets. It adds a widget interaction component on activation, feeds it the pawn's latest trace, maps press and scroll input onto it and passes the source info to widget components that ask who is pointing at them. Add it to a pawn beside the select ability; without it, widgets in the world cannot be clicked.
- **`BP_Helper_ControllerAbility_Hand_Finger`** — Per-hand helper actor for the fingertip ability, carrying the select and hover spheres and the widget interaction component that presses world widgets at the fingertip. Spawned by the ability rather than placed, and nothing else in the framework references it; subclass it only if the fingertip needs different collision.
- **`BP_Helper_ControllerAbility_Hand_Laser`** — Per-hand helper actor for the hand laser. It holds the VR select and scroll input bindings and forwards them, after checking they came from its own hand, to the laser ability that spawned it. Spawned by the ability rather than placed; subclass it to bind extra input to the laser.
- **`Cue_Selection_Pressed_Nothing`** — Sound of a select press that landed on nothing selectable, played at the hand's location through the medium attenuation preset by both the laser and hand-laser abilities. Named directly in their graphs rather than exposed as a property.
- **`IA_Desktop_Select`** — Input action for selecting on a desktop pawn, mapped through the select ability's own input context. Pressing it works the highest-priority select interaction under whatever the pawn is currently tracing at.
- **`IA_Desktop_Widget_Press`** — Input action for pressing a world-space widget from a desktop pawn. The widget ability turns it into a left mouse button press and release on its widget interaction component, so widgets behave as they would under a real cursor.
- **`IA_Desktop_Widget_Scroll`** — Input action carrying the scroll axis for world-space widgets on a desktop pawn, passed straight to Scroll Wheel on the widget ability's widget interaction component.
- **`IA_VR_Scroll_Left`** — Input action carrying the scroll axis for the left hand, passed to the laser or hand-laser ability so a stick can scroll a world-space widget the beam is pointing at. Answered only by the helper whose side is Left.
- **`IA_VR_Scroll_Right`** — Input action carrying the scroll axis for the right hand, passed to the laser or hand-laser ability so a stick can scroll a world-space widget the beam is pointing at. Answered only by the helper whose side is Right.
- **`IA_VR_Select_Left`** — Input action for selecting with the left hand. The laser and hand-laser helpers pass it to their ability's Select, which presses widgets under the beam and works the select interaction it is pointing at, releasing the press when the action ends.
- **`IA_VR_Select_Right`** — Input action for selecting with the right hand. The laser and hand-laser helpers pass it to their ability's Select, which presses widgets under the beam and works the select interaction it is pointing at, releasing the press when the action ends.
- **`Interface_Select`** — Contract an actor implements to control its own selection. Can Be Selected can refuse a select, or defer by leaving the override off, and Select Hit Location Override replaces the point the ability reports back. Implement it on the actor owning a select interaction; without it, selection is always allowed and the real impact point is used.

## AFS_UX_Teleporter

- **`BPC_ControllerAbility_Teleport`** — Hand ability giving one motion controller the teleport arc. Holding the teleport button spawns a spline laser and a landing indicator and traces a straight or projectile line each frame; the trigger teleports the pawn there. Add it to a motion controller and choose the line style, the surface rule, any surface or navigation mesh, and how the landing rotation is picked. Where the trace lands on a teleport interaction, that interaction decides the destination instead.
- **`BPC_Helper_GameState_TeleportManager`** — Ring, inner circle and direction arrow showing where a teleport will land. Scales itself in and out over three tenths of a second and destroys itself once it has gone, colours itself according to whether the landing is valid, and hides the arrow unless a rotation type was given at spawn. Spawned by the teleport ability and by the select-driven teleport area rather than placed by hand.
- **`BPC_Interaction_Teleport`** — Interaction marking its owner as a teleport destination: the arc hovering it asks for the landing location, the rotation and where to draw the indicator, and Teleport To Location drives the pawn's teleport ability with this component's duration, fade, motion, tracking level and sound. The base hands the impact point straight back, so add the scene or interface variant, or subclass it. Registers with the game state's teleport manager so it can appear and disappear with the teleporter.
- **`BPC_Interaction_Teleport_Interface`** — Teleport destination that asks its owning actor where to land, forwarding all four location questions through the teleport location interface and falling back to the impact point and the owner's own transform when the owner does not implement it. Add it when the destination has to be worked out in the actor's own graph, as the default teleport area does.
- **`BPC_Interaction_Teleport_Scene`** — Teleport destination that takes its landing point from a tagged scene component on the owner rather than from where the arc struck. Point it at that component by tag and the pawn lands on the component's world location and rotation, optionally attaching to it so a chair or a moving platform carries the pawn along. Add it to any actor with a fixed place to stand or sit.
- **`BP_Helper_ControllerAbility_Teleport`** — Game state component holding every teleport interaction in the level and the teleport sources currently searching. Interactions register with it as they activate, and it tells them all when the first source starts and when the last one stops, which is how destination markers appear the moment anyone raises a teleport arc. Added to the game state on demand, so there is no need to add it by hand.
- **`BP_Helper_TeleportIndicator`** — World-side helper the teleport hand ability spawns for itself. Carries the arc's start and end handles, the looping hold sound and the teleport input actions, forwards the start and trigger presses back to the ability, and reports the thumbstick direction the ability aims the landing rotation with. Spawned and destroyed with the ability; not something to place.
- **`BP_TeleportArea`** — Base actor for a flat patch of floor a player may teleport onto: a plane carrying the grid material, a box registered as a navigation obstacle, and a timeline that fades the grid in and out over a tenth of a second. Project Grid Location To Ground Location traces downwards so a landing point sits on the floor rather than on the grid. It carries no interaction of its own, so place one of its two subclasses or subclass it for an area of your own.
- **`BP_TeleportArea_Default`** — Ready-made teleport area for the teleport arc. Pairs the base area with an interface-driven teleport interaction set to show on hover, and answers the destination questions itself by dropping the hit point to the ground and clamping it to the plane. Drop it into a level to mark a region players may teleport into; the plane only takes trace collision while a teleporter is actually searching.
- **`BP_TeleportArea_Select`** — Teleport area worked by the select ability rather than by the teleport arc. Hovering spawns the teleport indicator at the hit point and turns it with the hand, and selecting calls the pawn's teleport ability directly with this area's own duration and rotation type. Drop it into a level where players teleport by pointing and selecting; the pawn needs the teleport ability for anything to happen.
- **`BP_TeleportLocation`** — Base actor for one fixed spot a player may teleport to, drawn as an outer ring, an inner circle and a direction arrow that only appears when Use Rotation is set. Holds the valid and invalid colours its subclasses swap between and the timeline that fades the marker in and out. No interaction of its own, so place one of its two subclasses or subclass it for a marker of your own.
- **`BP_TeleportLocation_Default`** — Fixed teleport spot for the teleport arc. Adds a scene-based teleport interaction pointed at the marker's own mesh handle, so the pawn lands exactly on the marker rather than where the arc struck, and the marker shows itself the moment any teleporter starts searching. Drop it into a level wherever players should be able to stand; Use Rotation decides whether the marker forces its own facing.
- **`BP_TeleportLocation_Select`** — Fixed teleport spot reached with the select ability instead of the teleport arc. Selecting it calls the pawn's teleport ability with this actor's location and its own duration, fade, motion and sound, and hovering tints the marker with the valid colour. Drop it into a level for point-and-select teleporting; the pawn needs the teleport ability.
- **`BP_Value_Settings_Boolean_Teleport`** — Ready-made toggle for whether teleport is available at all, activating or blocking the teleport ability on both hands.
- **`BP_Value_Settings_Boolean_Teleporter_Execute`** — Ready-made toggle for how a teleport is committed: by letting the thumbstick fall back to neutral, or by pulling the trigger. Releasing the stick is what most players expect.
- **`BP_Value_Settings_Boolean_Teleporter_Line`** — Ready-made toggle between the projectile arc and a straight line for the teleport aim. The arc reads better over uneven ground; the straight line is easier to aim precisely.
- **`BP_Value_Settings_Float_TeleportTime`** — Ready-made slider for how long a teleport onto plain geometry takes, fade included. Shorter is more comfortable for most players, which is why it is worth exposing rather than fixing.
- **`BP_Value_Settings_Integer_Teleport_Rotation`** — Ready-made selector for where the arrival rotation comes from: keep the pawn's current facing, or aim it with the hand while the arc is up. Keeping the current facing is the comfortable default.
- **`Cue_Teleporter_Hold`** — Sound held for as long as a teleport arc is out. It sits on the audio component at the far end of the teleport helper actor, attenuated at the medium preset so it is heard from the landing point, and the ability starts and stops it as searching begins and ends.
- **`Cue_Teleporter_Hover`** — Sound of an arc settling on somewhere the player may teleport to, set as the Hover Sound default on the teleport interaction.
- **`Cue_Teleporter_Unhover`** — Sound of an arc leaving a teleport target, set as the Unhover Sound default on the teleport interaction.
- **`IA_VR_Teleport_Start_Left`** — Input action that raises the teleport arc on the left hand, calling Start Teleporter on the teleport controller ability so it begins looking for a landing point. Answered only by the helper whose side is Left.
- **`IA_VR_Teleport_Start_Right`** — Input action that raises the teleport arc on the right hand, calling Start Teleporter on the teleport controller ability so it begins looking for a landing point. Answered only by the helper whose side is Right.
- **`IA_VR_Teleport_Trigger_Left`** — Input action that commits the teleport once the left hand's arc is up, calling Trigger on the teleport controller ability so the pawn moves to the point being shown. Without it the arc only ever aims.
- **`IA_VR_Teleport_Trigger_Right`** — Input action that commits the teleport once the right hand's arc is up, calling Trigger on the teleport controller ability so the pawn moves to the point being shown. Without it the arc only ever aims.
- **`Interface_TeleportLocation`** — Contract letting an actor answer where a teleport aimed at it should put the pawn: the landing location, the landing rotation, where to draw the indicator and the nearest point to a location in two dimensions. Implement it on an actor whose destination has to be worked out in its own graph and add the interface teleport interaction, which is what calls it.
- **`M_TeleportGrid`** — Grid a teleport area is drawn with, applied to the engine plane inside the area actor and faded in and out as a teleporter starts and stops searching. It marks the region players may land in.
- **`M_TeleportMaterial_New`** — Material every teleport marker is drawn with, carrying a Color parameter and an Opacity parameter. The fixed teleport location makes one dynamic instance on construction and shares it across its ring, disc and arrow so all three tint and fade together; the spawned landing indicator carries it on its inner mesh.
- **`SM_PlayerTeleportIndicator`** — Ring showing where a teleport will put the player, and the main body of the indicator actor the teleport ability spawns while a teleporter is searching. It carries no collision and is tinted red or blue according to whether the landing is valid.
- **`SM_PlayerTeleportIndicatorArrow`** — Direction arrow attached to the landing indicator's ring, showing which way the player will face on arrival. Hidden unless the indicator was given a rotation type when it was spawned.
- **`SM_TeleportIndicator2`** — Outer ring of a fixed teleport location marker, and the only part of it with collision: it answers on the teleport trace channel, so this is the mesh an arc or a select trace actually hits.
- **`SM_TeleportIndicator_Arrow2`** — Direction arrow of a fixed teleport location marker, shown only when Use Rotation is set on the marker so that landing there forces a facing.
- **`SM_Teleport_InnerCircle`** — Disc filling the middle of a fixed teleport location marker, drawn with the shared teleport material and carrying no collision.
- **`SM_Teleport_InnerSphere`** — Inner mesh at the centre of the spawned landing indicator, drawn with the shared teleport material and carrying no collision. The fixed markers use the flat inner circle beside it instead.

## AFU_Debug

- **`BFL_Debug`** — Function library holding one static call, Get Platform Type, which folds the running platform and whether a headset is enabled into a single name: PC, PC VR, Mobile, Mobile VR, Console or Console VR. Call it when behaviour should branch by device rather than by pawn.
- **`WBP_Debug`** — Root widget of the debug menu, pairing a horizontal pagination bar with a switcher over the scene and level pages. Show it through the pawn UI or HUD when you want the debug tools in a build; nothing in the framework opens it for you.
- **`WBP_Debug_Levels`** — Level page of the debug menu. Walks every actor in the world to collect the streaming levels in play, lists them as checkbox buttons and loads or unloads a level when its button is clicked, flushing streaming so the change is immediate. Part of the debug menu rather than a widget to use alone.
- **`WBP_Debug_Scene`** — Scene page of the debug menu. Holds the view mode drop-down, which runs the matching viewmode console command, and the toggles for the frame rate, object and scene info panels and for skeletal mesh and particle rendering. Part of the debug menu rather than a widget to use alone.
- **`WBP_InfoPanel_FPS`** — Debug overlay showing frames per second and frame time in milliseconds, both coloured against their limits. Refreshed by calling Update FPS, and toggled from the scene page of the debug menu rather than opened directly.
- **`WBP_InfoPanel_Objects`** — Debug overlay counting the live objects, components and widgets in the running game, useful for tracking down leaks and pooling that never returns anything. Refreshed by calling Update Count, and toggled from the scene page of the debug menu.
- **`WBP_InfoPanel_Scene`** — Debug overlay showing the triangle count and draw calls of the current frame, the two numbers that matter most on standalone headsets. Refreshed by calling Update Count, and toggled from the scene page of the debug menu.
- **`WBP_Stat_Row`** — One row of a debug info panel: a title, a caption carrying the maximum, and a value that shifts from green to red as it approaches that maximum, or the other way round when inverted. Reused by the frame rate, object and scene panels; the format text decides the unit shown after the number.

## AFU_Intro

- **`BP_GameMode_Intro`** — Game mode for the intro level, setting the intro pawn and the intro player controller and doing nothing else. Choose it in the intro level's world settings, or copy it when building a splash level of your own. Nothing references it, because a game mode is picked in level settings rather than by another asset.
- **`BP_IntroScreen`** — Stage actor for the intro level: a curved widget component playing the intro sequence, a grid floor, the sky mesh and a directional light, so the level itself needs nothing else in it. Set Level To Load to the level data asset that should come up behind the intro; the intro widget triggers it through Load Level once the animation has run.
- **`BP_Pawn_Intro`** — Static pawn for the intro level: a camera at head height on a bare scene root, with no movement and no input of its own. It exists so the intro screen has somewhere to be watched from, and the intro game mode spawns it. Copy it when a splash level of your own wants a different camera height or post process.
- **`BP_PlayerController_Intro`** — Player controller for the intro level. It adds nothing but the camera fade component, which the loading macros use to fade the intro out before the real level appears. Spawned by the intro game mode; copy it when a splash level of your own needs input handling as well.
- **`Cue_Level_Intro_TextAnimation`** — Sound played once at the intro screen's location as the logo animation starts, four seconds after the intro widget is constructed.
- **`MI_Loading_Sky_Intro`** — Sky the intro screen is wrapped in, an instance of the loading sky applied to the loading sky mesh inside the intro actor. Make another instance rather than editing this one when an intro of your own wants a different backdrop.
- **`T_Intro_Image_Part_01`** — Left half of the animated intro logo. The intro widget fades it in, holds it, then slides it off to the left as the title comes up.
- **`T_Intro_Image_Part_02`** — Right half of the animated intro logo, faded in alongside the first half and slid off to the right as the title comes up.
- **`T_Logo_AdvancedFramework`** — Advanced Framework wordmark, faded in by the intro widget once the two logo halves have parted. Swap it for artwork of your own when you copy the intro.
- **`Widget_Intro`** — Intro sequence itself: the two logo halves, the title and the version number, animated in over about twelve seconds. On construct it waits, plays the animation with its sound, then calls Load Level on the intro screen actor in the level. Copy it to put your own logo in front of a game; it expects that actor to be present.

## AF_Examples

- **`BP_Battery_Anchor`** — Snapping example prop: a showroom battery carrying an anchor that accepts only connectors with the ID Lightbulb, inside a 25 cm sphere. Its editable Colour tints the battery on construction and is read back by whatever lightbulb attaches, so the bulb lights in the battery's own colour. Copy the pattern when an anchor should hand data to whatever docks with it.
- **`BP_Button_Example_Hands`** — Showroom button as placed in the hand interaction example. It adds nothing to the button it derives from, whose overlap drag already answers to a finger pushing it, and exists so the level has a class of its own to place and configure. Read the parent for how the button works.
- **`BP_Button_Example_Overlap`** — Showroom button set up for the overlap example, with Invert Percent switched on so its drag reads 1 when the button is fully pressed rather than when it is released. That flag is the only change over the button it derives from. Read it beside the plain button to see what inverting does.
- **`BP_Button_Example_Pixel`** — Showroom button wired into the pixel arcade game: when its drag state enters the Pushed section the button fires the player's gun through the Ship Game reference. Point that reference at the game controller placed in the level. Read it for the least you need to do to turn a physical button into a game input.
- **`BP_Chair_Example_Teleport`** — Teleport target demonstration: a showroom chair with a scene teleport interaction and two arrows, one at seat height for the indicator and one at 110 cm marking where the pawn's eyes land. Attach To Target and Force Rotation are on, so teleporting seats the player facing forwards and keeps them with the chair if it moves. Copy the arrow and tag setup for any seat.
- **`BP_Cog_Gaze`** — Gaze demonstration on the showroom cog: a gaze interaction using the circular indicator widget, so looking at the gear long enough toggles its boolean state and the gear starts or stops turning. The shortest of the gaze examples and the one to copy for a look-to-activate object.
- **`BP_Cog_Select`** — Select demonstration on the showroom cog: a select interaction whose trigger toggles the cog's boolean state, starting or stopping the gear. The pointer counterpart to the gaze version of the same prop, and the shortest example of the select module.
- **`BP_Cubboard_Example_Hands`** — Hand interaction demonstration on the four-drawer cupboard: one latch drag interaction per drawer, each restricted by Relevant Components to its own drawer mesh and grabbing only within 10 cm, so hands pull the drawers out individually along 40 cm of travel. The example to copy when one actor needs several independent grab points.
- **`BP_Cubboard_Gaze`** — Gaze demonstration on the four-drawer cupboard: one gaze interaction over the whole piece, and triggering it steps every drawer's drag state to its next named section, so all four slide between Closed and Open at staggered snapping speeds. Read it for a single gaze driving several state components at once.
- **`BP_Cubboard_Select`** — Select demonstration on the four-drawer cupboard: selecting anywhere on it steps every drawer's drag state to its next named section, sliding all four between Closed and Open at staggered speeds. Read it for one selection driving several state components; the gaze version does the same thing from a look.
- **`BP_Display`** — Screen prop for the grip examples: a small screen mesh with a media sound component attenuated to a couple of metres, so video played onto the screen is heard from in front of it. It carries no interaction of its own. Place it as scenery, or take the pickup version, which is the subclass that makes it grabbable.
- **`BP_Display_Pickup`** — Pickup version of the screen prop: a grip pickup interaction and an actor replication component added to the plain screen, so it can be lifted, carried and seen moving by everyone else. Two components and no graph changes, which is the point. The example to copy when a prop of yours needs to become grabbable in multiplayer.
- **`BP_Door_Gaze`** — Gaze demonstration on the showroom door: gazing toggles a boolean state, and the state's update event plays a 0.7 second timeline swinging the door through 90 degrees. Copy it for the pattern of keeping the animation on the state rather than on the interaction, so anything else that flips the value opens the door too.
- **`BP_Door_Select`** — Select demonstration on the showroom door: selecting toggles a boolean state whose update event plays a 0.7 second timeline swinging the door through 90 degrees. The animation lives on the state rather than the interaction, so the same door opens from a gaze or from anything else that flips the value.
- **`BP_Drag_Car`** — Spline drag demonstration: a slider car latched to a spline, its drag state set to the Spline With Rotation kind so grabbing the handle runs the car along the spline and banks it into the curves. The four gear meshes are spun from the drag velocity on every update, a cheap way to show how fast a drag is moving. Copy the drag component's setup rather than the car.
- **`BP_Example_Latch_Multiaxis_2D`** — Grip latch demonstration in two axes: a slider inside a flat frame with X and Z drag states behind one latch drag interaction, each clamped to 30 cm either side. The smallest complete example of one grip feeding several drag components, and a sound starting point for a two-axis handle of your own.
- **`BP_Example_Latch_Multiaxis_3D`** — Grip latch demonstration in three axes: a slider inside a cube frame with X, Y and Z drag states behind one latch drag interaction, each clamped to 30 cm either side. Single-player counterpart to the replicated latcher; copy whichever suits whether the object needs to move for other players too.
- **`BP_Example_Locomotion`** — Live settings panel for the locomotion ability: a name state choosing whether movement follows the camera or the controller, and a float state setting speed between 0.5 and 1.5 m/s. Each update walks every motion controller in the level and writes the value into its movement ability, so a change takes effect immediately. Read it for how to reach an ability at runtime.
- **`BP_Example_Pole_Multiaxis`** — Grip latch demonstration of two unlike axes on one handle: a twist grip on a pole held by a single latch drag, with a linear Z drag over 90 cm either way and a yaw drag over 180 degrees either way. It shows that the drags behind one grip need not be of the same kind. Copy it for a handle that both slides and turns.
- **`BP_Example_Shape_Cube_Small_Overlap`** — Overlap demonstration: a small showroom cube carrying an overlap actor ability under the identifier Cube, so anything watching for overlaps can tell which shape it met. The smallest example of the overlap module; copy the single component onto a shape of your own.
- **`BP_Example_Snapping_Anchor`** — Driver for the anchor and connector snapping example: it holds the batteries and the two lightbulbs placed in the level and gives each bulb an integer state naming which battery it is plugged into. Changing the state attaches that bulb's connector to the chosen anchor, and attaching or detaching by hand writes the choice back. Read it for two-way binding between a state component and a connector.
- **`BP_Example_States`** — Reference actor for the State module: one component of every kind, boolean, colour, drag, float, integer, name and trigger, each titled and pre-filled with sample options, with a text render component beside it showing the live value. Stand it in front of a demo table and the configurator gives you a control per state. The first thing to read when learning state components.
- **`BP_Example_Teleport`** — Demonstration of the Teleport module's Teleport call: three arrow components mark destinations, and state components choose the destination, the fade, the motion style and the duration in seconds. Triggering it finds the teleport ability on the pawn that acted and sends that pawn to the chosen arrow with those settings. Read it for the argument list rather than placing it in a project of your own.
- **`BP_Example_TeleportNavMesh`** — Live setting for the teleporter ability: a single boolean state that switches every motion controller in the level between teleporting onto any surface and teleporting only where the navigation mesh allows. Meant to stand beside a demo table rather than ship in a project; read it for how to reach the teleport ability at runtime.
- **`BP_Example_UI`** — Theme demonstration for the UI system. On begin play it registers two further themes, Edged and Green, with the theme manager on the game state, and a name state then switches the whole session between those and the two defaults. Read it to see how to add a theme data asset of your own; Widget Actor Reference points at the widget actor being restyled.
- **`BP_Example_Visibility`** — Visibility module demonstration: a guitar built from seven separate meshes with a single visibility switch over them, so one boolean state hides or shows the lot rather than each mesh in turn. A second state, Destroy, deletes the actor outright. Copy the switch and the one handler, not the guitar.
- **`BP_GameMode_Showroom_Examples`** — Game mode for the example levels: the showroom game mode with the examples game state and player controller substituted in. Set it in world settings for a level that needs the examples navigation, or subclass it as the snapping level does when one level wants rules of its own.
- **`BP_GameMode_Showroom_Examples_Snapping`** — Game mode for the snapping example level. It adds nothing to the examples game mode it derives from, and exists so that one level can be given rules of its own without disturbing the others. Copy the pattern rather than the asset when a level of yours needs the same separation.
- **`BP_GameState_Showroom_Examples`** — Game state for the example levels, carrying the showroom's navigation component so the kiosk and the pawn menu can list the example levels and travel between them. Selected by the examples game mode; you would not set it directly.
- **`BP_Handscanner`** — Hand interaction demonstration of automatic gripping: a wall scanner whose latch interaction takes hold by itself as soon as a hand comes within 10 cm, with no button press. The left hand runs the scan, a decal sweeping down over two seconds and ending with the housing glowing green, while the right hand turns it red. Copy the auto-grip setup; the timeline is set dressing.
- **`BP_Joystick_PixelGame`** — Arcade joystick for the pixel game: a handle held by a latch drag with two angle drag states, both set to snap back, so pushing the stick steers the ship and letting go re-centres it. Gripping the stick starts a game, releasing it quits, and the trigger fires. Point Ship Game at the game controller; copy it for any spring-return stick.
- **`BP_Knob_Example_Hands`** — Showroom knob as placed in the hand interaction example. Nothing is added over the knob it derives from, which already carries the latch drag and the percentage label; the subclass exists so the example level can be tuned without touching the shared prop. Read the parent rather than this.
- **`BP_Latcher_3D`** — Grip latch demonstration in three axes with replication: one latch drag interaction over a slider inside a cube frame, with X, Y and Z drag states all sharing the tag the interaction drags by, each clamped to 30 cm either side. A replication component makes it the multiplayer form of the plain multiaxis example. Copy it when a grabbed object must move in three axes for everyone.
- **`BP_Lever_Example_Hands`** — Showroom lever as placed in the hand interaction example. It adds nothing to the lever it derives from, whose grip, yaw drag and percentage label do all the work, and exists only to give the example level a class of its own. Read the parent rather than this.
- **`BP_Lightbulb_Anchor`** — Snapping example prop: a showroom lightbulb with a connector under the ID Lightbulb, plus a pickup interaction and coordinator so it can be carried from battery to battery. Attaching switches the light on and recolours it from the battery it landed on; detaching turns it off and clears the colour. Copy it when a carried object should react to what it snaps into.
- **`BP_Panel_Example_Hands_Pickup`** — Two-handed pickup demonstration on the showroom panel: a separate pickup interaction for each hand, told apart by the Grip_L and Grip_R prefixes, with a pickup coordinator over them so either hand or both can carry the panel. Copy the three components onto any prop that should be grabbable with both hands.
- **`BP_Pawn_Desktop_Char_Showroom_Examples`** — Desktop pawn for the example levels: the showroom desktop character with its menu component filled in with three pages, navigation, desktop settings and debug. Nominated through a level data asset rather than placed. Copy the Pages list when assembling a pawn menu of your own.
- **`BP_Pawn_Mobile_Char_Showroom_Examples`** — Mobile pawn for the example levels. It adds nothing to the showroom mobile character it derives from and, unlike the desktop and VR pawns, carries no menu; it exists so the examples have a mobile pawn of their own to nominate in a level data asset.
- **`BP_Pawn_VR_Char_Showroom_Examples`** — VR pawn for the example levels: the showroom VR character with its menu component filled in with the navigation, settings and debug pages. Nominated through a level data asset rather than placed, and the class the hand interaction pawn subclasses when tracked hands are wanted in place of controllers.
- **`BP_Pawn_VR_Char_Showroom_InteractionHands`** — VR pawn for the hand interaction example level: the examples showroom pawn with the hand-mesh motion controllers put in place of the controller models, plus a gesture recogniser per hand watching for pinch and fist. Nominate it as the VR pawn of a level where tracked hands are the point, or copy the two defaults into a pawn of your own.
- **`BP_Pixel_Projectile`** — A basic projectile that emits light. Variables for color and speed are exposed on spawn.
- **`BP_Pixel_Ship_Enemy`** — An enemy spaceship that strafes left and right and fires projectiles when a player is in front of it.
- **`BP_Pixel_Ship_Game_Controller`** — A Blueprint controlling the camera and game logic (spawning enemies, etc) for the Pixel Ship pawn.
- **`BP_Pixel_Ship_Player`** — A spaceship player pawn that can move left and right and shoot projectiles.
- **`BP_Plant_Example_Hands_Pickup`** — Two-handed pickup demonstration on the showroom plant, built exactly as the panel version is: a left and a right pickup interaction separated by the Grip_L and Grip_R prefixes, with a coordinator over them. It is here so the example level can show the same setup on an awkwardly shaped object. Copy either one.
- **`BP_Plant_Example_Label`** — Labels demonstration: a showroom plant wearing three simple labels, Pot, Stem and Leaves, each pinned to a named socket on the plant's spline rather than to a fixed offset. States toggle all three on and off, switch auto-scaling and step the rotation mode through its four options. Copy it for the spline-attached label setup.
- **`BP_PlayerController_Showroom_Examples`** — Player controller for the example levels. It adds nothing to the showroom player controller it derives from, and is here as the place to put input or UI handling specific to the examples. The examples game mode already selects it.
- **`BP_Rack_Example_Spawner`** — Rack carrying a spawner, so a prop can be pulled off it and kept. The spawner demonstration's stand; read it for how the spawner component sits on an ordinary actor.
- **`BP_Rack_Snapping_Example`** — Rack with anchors on it, so props carried over click into place rather than being balanced. The snapping demonstration's stand.
- **`BP_Radio_Gaze`** — Gaze demonstration on the showroom radio: a gaze interaction whose trigger toggles the radio's boolean state, starting and stopping the music. Nothing else is added over the radio itself. Read it beside the select version of the same prop to compare the two ways in on identical wiring.
- **`BP_Radio_Select`** — Select demonstration on the showroom radio: a select interaction whose trigger toggles the radio's boolean state and so starts or stops the music. Nothing else is added over the radio. Read it beside the gaze version to compare the two interactions on identical wiring.
- **`BP_RemoteControl`** — Grip demonstration of button forwarding: a remote control with a pickup interaction for each hand and text render components across its face. While it is held in the right hand the name of whatever controller button is pressed is printed onto it, which shows how input reaches a held object through the grip rather than through the pawn. The axis lines are static sample text.
- **`BP_RemoteControl_Label`** — Labels demonstration of a hint that gets out of the way: a grabbable remote control with a Grab This label and an arrow pointing at it. The pickup coordinator deactivates the label the moment the remote is picked up and reactivates it on release. Copy the two handlers whenever an instruction should disappear once the player has taken the point.
- **`BP_RemoteControl_UFO`** — Button forwarding demonstration: a remote control with a pickup interaction per hand, told apart by the Grip_L and Grip_R prefixes, and a coordinator over them. While it is held, controller input is forwarded to the saucer named in its UFO reference, the thumbstick flying it, the trigger switching the abduction beam and the bottom face button boosting. Point UFO at the saucer placed in the level.
- **`BP_Spawner_Example`** — Spawner module demonstration: a spawner offering a hologram of a showroom shape that a hand can pull off and keep. A Type state switches both the spawned class and its preview mesh between small cube, large cube, pyramid and ball, and a Despawn Time state sets how long a spawned actor survives after release, up to 10 seconds. Copy it for a spawner driven by state components.
- **`BP_Statue_Example_Label`** — Info label demonstration: the showroom statue wearing a single info label with a title, a subtitle, a paragraph of body text and a Show button, opening to the left of the statue. The whole example is one component and its defaults, which is the point. Copy it as the minimal info label setup.
- **`BP_Statue_Highlight_Material`** — Highlight demonstration on the showroom statue, material variant: the highlight component writes a scalar and a colour parameter into the statue's own materials, which is why its mesh is tagged Highlight. A Colour state retints the highlight live. Stands beside the mesh-copy and post-process statues so the three techniques can be compared; copy the component choice, not the statue.
- **`BP_Statue_Highlight_MeshCopy`** — Highlight demonstration on the showroom statue, mesh-copy variant: the highlight component spawns a duplicate of the tagged mesh in a highlight material instead of touching the statue's own materials, which is the technique to reach for when those materials cannot be changed. A Colour state retints it live. Copy the component choice, not the statue.
- **`BP_Statue_Highlight_PostProcess`** — Highlight demonstration on the showroom statue, post-process variant: the highlight component finds or spawns the shared highlight post-process actor and outlines the tagged mesh through it, so one actor serves every highlighted object in the level. A Colour state retints it live. Copy the component choice, not the statue.
- **`BP_Statue_Highlight_Select`** — Highlight demonstration with no highlight component of its own: the showroom statue carries only a select interaction, which builds its highlight from its Highlight Class the first time something hovers it. Read it beside the material, mesh-copy and post-process statues to see what an interaction gives you for free before you add anything.
- **`BP_UFO_Physics`** — A UFO pawn capable of beaming up static meshes that are simulating physics.
- **`BP_Value_Settings_Name_Example_VaseColor`** — Example settings value exposing the vase's colour as a named choice. Nothing in the framework uses it; it is here to show a setting driving something in the level rather than a console variable.
- **`BP_Vase_Example_Hands_Pickup`** — Smallest pickup example in the plugin: the showroom vase with a grip pickup interaction and a pickup coordinator over it, and no graph at all. Those two components are the whole of what it takes to make a prop liftable by a tracked hand. Copy the pair onto a prop of your own.
- **`BP_Vase_Example_Settings`** — Vase whose colour follows a named settings value through a name state component. The worked example of a setting changing something a player can see in the world.
- **`DA_Theme_Example_Edged`** — Alternative theme shipped with the UI example. The example actor registers it with the game state's theme manager under the name Edged on begin play, so its Theme state can switch every widget in the level over to it. Duplicate it as the starting point for a theme of your own.
- **`DA_Theme_Example_Green`** — Alternative theme shipped with the UI example. The example actor registers it with the game state's theme manager under the name Green on begin play, so its Theme state can switch every widget in the level over to it. Read it beside the Edged theme to see how far a theme can move the look.
- **`M_Abduction_Beam`** — Beam material of the UFO example, applied to the cone hanging under the saucer. The UFO makes a dynamic instance of it on construction and turns the beam on and off by writing its Opacity parameter between 0.4 and 0.01, rather than by hiding the mesh.
- **`M_Decal_Handscanner`** — Scan line of the hand scanner example, carried by a decal component that stays hidden until the left hand grips the scanner and then sweeps down the wall over the two seconds of the scan.
- **`M_Glow_Master`** — Glow material the hand scanner's housing is dressed in. The scanner creates a dynamic instance of it on begin play and drives its colour parameter, turning the panel red while the right hand holds it and green once the left hand's scan has finished.
- **`M_Pixel_Cube_Enemy_2_Inst`** — Material the pixel game's projectile is drawn with. The projectile makes a dynamic instance of it on construction and writes the colour it was spawned with into its Color2 parameter, which is how the player's blue shot and the enemy's orange one come from a single mesh. The name is misleading: both sides use it.
- **`Map_Examples_Gaze`** — Acting by looking, with a dwell timer standing in for a button — for hands-free use and as a fallback wherever there is no controller.
- **`Map_Examples_Grip`** — Picking things up and holding them: what may be grabbed, where it may be held, and how it behaves once it is being carried.
- **`Map_Examples_HandUI`** — A menu carried on the hand and revealed by turning the palm over, so controls are always within reach without occupying space in the world.
- **`Map_Examples_Highlight`** — Highlighting tells the player what they can act on before they act, which is most of what makes an interactive scene legible. The techniques trade art control against cost.
- **`Map_Examples_InfoPanels`** — Persistent readouts stacked beside the player, for anything that has to stay visible while they get on with something else.
- **`Map_Examples_Interaction_Hands`** — Reaching out and touching things rather than pointing at them, which is what tracked hands make possible and what makes controls feel physical.
- **`Map_Examples_Intro`** — Something to look at while the first level streams in, so a cold start reads as deliberate rather than as a frozen frame.
- **`Map_Examples_Labels`** — Attaching text to a point in the world, to name a part, explain a control, or push the player towards what to do next.
- **`Map_Examples_Lobby`** — How a session travels between levels: every player moves together, behind a fade and a transition screen, with no one dropped on the way.
- **`Map_Examples_Locomotion`** — Continuous movement — walking rather than teleporting — and the settings that decide whether it feels comfortable.
- **`Map_Examples_Notifications`** — Saying briefly that something happened and then getting out of the way — the right shape for confirmations and warnings that need no answer.
- **`Map_Examples_Overlap`** — Interactions that fire from a volume rather than a pointer, so things react to presence: walking through, reaching into, setting down.
- **`Map_Examples_Popups`** — Stopping to ask and waiting for an answer — the pattern for anything destructive, irreversible, or branching.
- **`Map_Examples_Select`** — Acting on something out of reach by pointing at it, and a demonstration that the way you reach a thing is separable from what happens when you do.
- **`Map_Examples_Snapping`** — Snapping lets objects find their own correct position, so assembly, docking and putting things away work without the player having to place anything precisely.
- **`Map_Examples_Spawner`** — Spawners hand out a fresh copy of something on demand, so a scene can offer tools or parts without pre-placing them or leaking actors once they are dropped.
- **`Map_Examples_States`** — States hold a value on an actor and announce when it changes, so an interaction, a widget and the logic behind them stay in step without knowing about each other.
- **`Map_Examples_Teleport`** — Moving a pawn deliberately rather than by walking — for comfort in VR, and for reaching somewhere no path leads.
- **`Map_Examples_Teleporter`** — Marking where a player may arrive and how they should be facing when they land — seats and platforms, or free movement across a navigation mesh.
- **`Map_Examples_UI`** — The widget set the framework gives you to build interfaces from, and how a single theme restyles all of it at once, in the world or on the screen.
- **`Map_Examples_UI_PawnUI`** — A panel that follows the player instead of sitting in the level, placed either within finger reach or far enough back to point at.
- **`Map_Examples_Visibility`** — Showing and hiding a whole actor as one decision rather than mesh by mesh, which keeps complex objects manageable as they appear and disappear.
- **`Mesh_Joystick_Base`** — Housing of the arcade joystick in the pixel game example: the fixed part the stick stands on. Used by that one actor and nothing else.
- **`Mesh_Joystick_Handle`** — Stick of the arcade joystick in the pixel game example. It is the part a hand latches onto, tagged so the two drag states can tilt it 20 degrees either way and spring it back to centre when the hand lets go.
- **`PM_UFO`** — Physical material overriding the body of the UFO example's hull, so the saucer slides and bounces off the level the way that example wants. It sits among the meshes but is a physical material, not one.
- **`P_Metal_Impact`** — Sparks spawned at the impact point when the UFO example's hull strikes something, and only while it is moving faster than 300 units a second.
- **`P_Pixel_Engine`** — Engine trail of the pixel game's player ship, attached to the ship mesh and running for as long as that pawn is alive.
- **`P_Pixel_Explosion`** — Burst spawned where a pixel game projectile overlaps something, immediately before the shot applies its damage and destroys itself.
- **`P_Pixel_Explosion_Enemy`** — Explosion spawned where an enemy ship of the pixel game dies, both when its health runs out and when it rams the player.
- **`P_Pixel_Explosion_Player`** — Explosion spawned where the pixel game's player ship dies, once damage has taken its health to zero and before the game controller respawns it.
- **`P_UFO_Engine`** — Engine glow of the saucer in the UFO example, carried by both engine components as a continuous effect.
- **`P_UFO_Engine_Boost`** — Flare spawned on both engines of the UFO example when Boost is called, marking the forward kick that then puts the saucer on an 0.8 second cooldown.
- **`P_Vertical_Boost`** — Downward jet spawned under the UFO example when Eject drops the last abducted actor back out of the beam.
- **`P_Vertical_Boost_Inverted`** — Upward jet spawned under the UFO example each time the beam takes hold of a static mesh actor and hides it inside the saucer. The counterpart to the plain vertical boost, which plays when one is dropped back out.
- **`SM_Handscanner`** — Wall panel of the hand scanner example. It is tagged for the latch interaction, so a hand coming within 10 cm takes hold of it without a button press, and it is the mesh the glow material is applied to.
- **`SM_Pixel_Cube`** — Voxel cube forming the body of the pixel game's projectile, tinted per shot by the material overriding it.
- **`SM_Pixel_Enemy_1`** — Enemy ship of the pixel arcade game. The enemy pawn is drawn with it, and the game controller carries a second copy at its enemy spawn point, hidden in game, so the spawn line can be seen while placing the cabinet.
- **`SM_Pixel_Player`** — Player ship of the pixel arcade game. The player pawn is drawn with it, and the game controller carries a second copy at its player spawn point, hidden in game, as an editing marker.
- **`SM_UFO_Hub`** — Dome on top of the saucer in the UFO example, kept as a separate mesh so it can turn: the UFO adds 20 degrees of yaw to it every frame.
- **`SM_UFO_Main`** — Hull of the saucer in the UFO example. It is the simulated physics body, flown with gravity switched off and with everything else on the pawn attached to it.
- **`T_Logo_1280x720`** — Project logo of the example content, drawn at 150 by 150 by the logo widget at the top of the showroom's idle screen.
- **`WBP_Example_Overlay`** — Custom overlay raised by the Custom button on the overlays catalogue page: an overlay scaffold holding a wide image, a heading, three bullet points and a Close button that broadcasts On Example Closed before closing itself. Copy it as the template for an overlay of your own, since the framework's own overlay calls cover only the standard shapes.
- **`WBP_Example_PawnUI_Far`** — Sample panel spawned at the far pawn-UI distance, whose own body text explains the trade: elements this far out can only be reached with a laser, but they are less likely to overlap objects in the world. Its Close button closes it. Spawned by the pawn UI example page; read it beside the near version.
- **`WBP_Example_PawnUI_Near`** — Sample panel spawned at the near pawn-UI distance, close enough to be touched with a hand rather than pointed at, as its own body text explains. Its Close button closes it. Spawned by the pawn UI example page; read it beside the far version to decide which distance suits a panel of your own.
- **`WBP_Example_UI`** — Root of the UI catalogue and the widget to open first when learning the widget set. An expanding scaffold with a vertical pagination menu over four pages, Basics, Display, Input and Layout, each swapped into a tagged switcher. Also worth reading as a working pagination-and-switcher pairing to copy into a menu of your own.
- **`WBP_Example_UI_Basics`** — Basics page of the UI catalogue: a horizontal pagination menu over the border, image, switcher, text and throbber examples, each swapped into a tagged switcher. It holds no content of its own. Read the leaf pages it points at; copy this one only for the two-level pagination pattern.
- **`WBP_Example_UI_Basics_Borders`** — Catalogue page for the border widgets: rounded borders at several corner settings and theme colours, a gradient border, a two-colour gradient and three outline borders. The Switch button interpolates the two-colour border's blend through the Widget Blend interface, which is the part worth copying. Reached from Basics in the UI catalogue.
- **`WBP_Example_UI_Basics_Images`** — Catalogue page for the image widgets: icons auto-blending against light and dark backgrounds, a rounded image, one on a tinted background, a transition image and a translated one zoomed and offset inside its frame. Every variant is capped to 300 by 300. Reached from Basics in the UI catalogue; read it to pick an image class.
- **`WBP_Example_UI_Basics_Switcher`** — Catalogue page for the switcher: four coloured borders in one switcher with a four-chip selector above them, the selected index calling Switch To Index. The smallest complete example of driving a switcher from a selector, and the same pattern the catalogue's own pagination uses. Reached from Basics in the UI catalogue.
- **`WBP_Example_UI_Basics_Text`** — Catalogue page for the text widget, listing every typography level the theme defines from Display 1 down to Caption 1, one line each. Purely a specimen sheet, with no graph behind it. Open it to choose a Typography value rather than guessing. Reached from Basics in the UI catalogue.
- **`WBP_Example_UI_Basics_Throbber`** — Catalogue page for the throbbers, showing the linear and the circular one in a row each and nothing else. Open it to see which of the two suits a wait in a UI of your own. Reached from Basics in the UI catalogue.
- **`WBP_Example_UI_Display`** — Display page of the UI catalogue: a horizontal pagination menu over the info, list, loading and progress examples, each swapped into a tagged switcher. It holds no content of its own, so read the leaf pages it points at rather than this.
- **`WBP_Example_UI_Display_Info`** — Catalogue page for the small display widgets: two error wrappers, a row of coloured tags and an indicator badge. Show Error puts a message on a text field and a checkbox at once, and the stepper drives the indicator's number, hiding the badge at zero. Reached from Display in the UI catalogue; copy the error and indicator handlers.
- **`WBP_Example_UI_Display_Lists`** — Catalogue page for the list widgets: a bullet point list and a numbered enumerator, both filled with placeholder text and with no graph behind them. Reached from Display in the UI catalogue; read it to see which of the two to reach for.
- **`WBP_Example_UI_Display_Load`** — Catalogue page for the loading widgets and the busiest of the display examples. Load switches the loading switcher on for three seconds, then refills its button group with a random count and shows No items found when that count is zero. A stepper resizes a second group behind a fallback so its replacement text appears when the group empties. Copy either handler for a list that can be empty.
- **`WBP_Example_UI_Display_Progress`** — Catalogue page for the progress bars, showing the horizontal and the circular variant side by side at fixed sample values. Reached from Display in the UI catalogue; read it to compare the two shapes before choosing one, then drive the percentage from your own code.
- **`WBP_Example_UI_HUD`** — Demo page for the head-up display: nine checkboxes named after the HUD's screen positions, each adding the matching sample widget to the pawn's HUD ability with its own frame info and removing it again when unticked. The frame infos differ deliberately, Game Only around the edges, Game And UI along the bottom and UI Only in the centre. Read it for Add Widget Class and its frame argument.
- **`WBP_Example_UI_HUD_Bottom`** — Sample HUD widget for the bottom slot: a horizontal group of five small buttons, the shape an action bar usually takes. Added and removed by the HUD example page; copy the group setup rather than the widget itself.
- **`WBP_Example_UI_HUD_BottomLeft`** — Sample HUD widget for the bottom-left slot, deliberately empty: an overlay scaffold 800 wide with nothing inside it, so the example can show the slot's position and its fade without content getting in the way. Add your own children if you copy it.
- **`WBP_Example_UI_HUD_BottomRight`** — Sample HUD widget for the bottom-right slot: a vertical group of five buttons, the shape a menu column usually takes. Added and removed by the HUD example page; copy the group setup rather than the widget itself.
- **`WBP_Example_UI_HUD_Center`** — Sample HUD widget for the centre slot: a heading, a line of explanatory text and a horizontal progress bar. The HUD example page adds it in UI Only screen control mode, the only one of the nine that takes input away from the game, which is what a centred panel demanding attention usually wants.
- **`WBP_Example_UI_HUD_Left`** — Sample HUD widget for the left slot: a single vertical progress bar, the shape a stamina or charge gauge usually takes. Added and removed by the HUD example page; copy the arrangement rather than the widget itself.
- **`WBP_Example_UI_HUD_Right`** — Sample HUD widget for the right slot: an enumerator listing five numbered tasks, the shape an objective list usually takes. Added and removed by the HUD example page; copy the enumerator and its Content list as a starting point.
- **`WBP_Example_UI_HUD_Top`** — Sample HUD widget for the top slot: a linear throbber stretched across a thousand units, the shape a loading or progress strip usually takes. Added and removed by the HUD example page.
- **`WBP_Example_UI_HUD_TopLeft`** — Sample HUD widget for the top-left slot: one paragraph of placeholder text 500 wide, the simplest of the nine. Added and removed by the HUD example page; read it to see the least a HUD widget needs to be.
- **`WBP_Example_UI_HUD_TopRight`** — Sample HUD widget for the top-right slot: an expandable whose header carries a paragraph and whose body reveals a More Information section when opened. Added and removed by the HUD example page, and the one of the nine showing that a HUD widget can be interactive rather than a read-only readout.
- **`WBP_Example_UI_InfoPanels`** — Demo page for the Info Panels module. Four checkboxes, Mute Status, FPS, Stats and Display, each show or remove the matching sample panel on the player pawn through Info Panel Show and Info Panel Remove, so any combination can be up at once. Read it for those two calls; the panels themselves are separate widgets in the same folder.
- **`WBP_Example_UI_InfoPanels_Display`** — Sample info panel listing display settings in three info rows: resolution, view distance and shadows. The values are static placeholder text. Spawned by the info panels example page; copy the row layout when building a panel of your own rather than using it as it stands.
- **`WBP_Example_UI_InfoPanels_FPS`** — Sample info panel showing a frame rate and a frame time in two info rows. The numbers are static placeholder text rather than live measurements. Spawned by the info panels example page as the small, always-on kind of panel; copy the layout and feed it real values.
- **`WBP_Example_UI_InfoPanels_Mute`** — Smallest of the info panel samples: a single mute icon in an overlay scaffold and nothing else. Spawned by the info panels example page to show that a panel can be one glyph rather than a table of rows. Copy it as the starting point for a status indicator.
- **`WBP_Example_UI_InfoPanels_Stats`** — Sample info panel counting actors, static meshes and widgets in three info rows, and the only one of the four with live data behind it. Collect Data walks every actor in the world, tallies its static mesh and widget components and writes the totals into the rows. Spawned by the info panels example page; copy Collect Data for a debug readout of your own.
- **`WBP_Example_UI_Input`** — Input page of the UI catalogue: a horizontal pagination menu over the button, selector, slider and text field examples, each swapped into a tagged switcher. It holds no content of its own, so read the leaf pages it points at rather than this.
- **`WBP_Example_UI_Input_Buttons`** — Catalogue page for the buttons and the widest of the input examples: small, normal and large in the primary, secondary and tertiary presets, plus image, colour, toggle, checkbox and radio rows. On group initiated the colour row is filled by walking the group and handing each button one of fourteen colour data assets, which is the handler worth copying.
- **`WBP_Example_UI_Input_Selector`** — Catalogue page for the selection widgets: a colour picker, a dropdown, a chip selector with replication switched on and a stepper. None of the four is bound to anything, so the page shows their look and their editable defaults rather than any wiring. Reached from Input in the UI catalogue.
- **`WBP_Example_UI_Input_Slider`** — Catalogue page for the sliders: a default slider reading 0 to 100 per cent, a second snapping to five segments, a unit slider and one drawn with a custom material. Reached from Input in the UI catalogue; read it to choose a slider class and to see how segments and units are configured.
- **`WBP_Example_UI_Input_Text`** — Catalogue page for the text fields: a plain one, one capped at ten characters, a multi-line area and a password field, each with a hint. Reached from Input in the UI catalogue; read it to pick a field class and to see what the character limit and the hint do.
- **`WBP_Example_UI_Layout`** — Layout page of the UI catalogue: a horizontal pagination menu over the box, expand, scrolling and overlay examples, each swapped into a tagged switcher. It holds no content of its own, so read the leaf pages it points at rather than this.
- **`WBP_Example_UI_Layout_Boxes`** — Catalogue page for the boxes: the default box and the two card boxes, left and top, filled with placeholder paragraphs at a few sizes and with no graph behind them. Reached from Layout in the UI catalogue; read it to see how the three frame their content before picking one.
- **`WBP_Example_UI_Layout_Expand`** — Catalogue page for the widgets that grow and shrink: an expandable with a header over a hidden body, and two collapse widgets, one closing upwards and one to the right, both driven from a single Collapse and Expand toggle button. Reached from Layout in the UI catalogue; copy the toggle handler.
- **`WBP_Example_UI_Layout_Overlays`** — Catalogue page for the overlays: four buttons raising a confirmation, a loading, a notification and a custom overlay, with a line underneath reporting the answer. The confirmation button shows the whole call, title, icon, message and two button contents at secondary and primary emphasis, and binds the result delegate. Reached from Layout in the UI catalogue.
- **`WBP_Example_UI_Layout_Scrolling`** — Catalogue page for scrolling content: the horizontal and vertical scrollable fields, each holding a button group, set beside plain horizontal and vertical scroll boxes of placeholder text. Reached from Layout in the UI catalogue; read it to judge when the scrollable field earns its extra furniture over a plain scroll box.
- **`WBP_Example_UI_Notifications`** — Demo page for the Notifications module: a button for a short notification, a button for a long one and a Duration slider covering 2 to 20 seconds. The notifications themselves appear in the pawn's notification container rather than in this page. Read it alongside Show Default Notification when adding notifications to a project of your own.
- **`WBP_Example_UI_PawnUI`** — Demo page for the pawn UI space: Near and Far buttons that add the matching sample panel to the player pawn through Pawn UI Add Element, each paired with the position data asset for that distance. Read it for the call and for which data asset goes with which distance; the two panels are separate widgets in the same folder.
- **`WBP_Example_UI_Popups`** — Demo page for popups: four buttons raising a confirmation, a warning, an error and a multiple-choice popup, with a line underneath reporting what you answered. The handlers show how a popup's answer comes back, as a selected index or as an acknowledgement. Read it for the wiring rather than embedding it in a project.
- **`WBP_Settings_Example`** — Settings screen for the settings example level, built from the same rows as the shipped ones so the two can be read side by side.
- **`WBP_Settings_Example_Examples`** — Tab of the settings example screen holding the example's own values, so a custom setting can be seen beside the shipped presets.
- **`WBP_Template_Widget`** — Empty widget to copy when writing a UI element of your own. Its graph is a numbered walkthrough of the element lifecycle - pre-construct, construct, initiation, theming, post-initiation and replication - with every step left empty and commented with what belongs in it and when it runs. Nothing references it, so duplicate it and fill in the copy.
