Appearance
First-person item configs
Motion uses a data-driven first-person item presentation system for local first-person items.
Each item is described by a UMotionFirstPersonItemConfig asset. The asset tells Motion which actor to spawn for local first-person presentation, which linked animation layer to use, which socket to attach to, and which relative transform to apply.
The built-in pistol uses this system through DA_FPItem_Pistol.
What a first-person item config is
A first-person item config is a UPrimaryDataAsset that defines the content-side setup for one local first-person item presentation.
The asset owns the compact set of fields that runtime code consumes:
PresentationActorClass: actor spawned for local first-person presentation.LinkedLayerClass: item or stance layer linked while the item is active.PresentationAttachSocket: socket used for the presentation actor.PresentationRelativeTransform: local framing transform applied after attach.
This keeps per-item presentation in content while keeping Motion's shared first-person body logic in Motion-owned code and linked layers.
Runtime flow
At runtime, UMotionHeldItemComponent treats the active item config as the local first-person item definition for the held item path.
Animation layer responsibilities
Motion uses two item-related linked layers for the current first-person path:
FullBody_FirstPersonItemItemSpace: item-specific helper-space or item-space adjustments.FullBody_FirstPersonItemUpperBody: shared Motion-owned upper-body pitch and solve behavior.
The main AnimGraph path in ABP_Mannequin_Base evaluates item space before upper body.
Built-in pistol asset
DA_FPItem_Pistol is the default first-person pistol config. It points to:
PresentationActorClass:BP_PistolLinkedLayerClass:ABP_PistolAnimLayersPresentationAttachSocket:weapon_rPresentationRelativeTransform: baseline pistol transform
B_MotionCharacter uses this through the MotionHeldItem component's DefaultDebugItemConfig.
Current scope
This system is scoped to local first-person presentation only. It does not own:
- remote third-person item presentation
- inventory semantics
- gameplay equip state
- muzzle logic
- hand target metadata
- generic item role resolution
Those systems can be layered on top of Motion's presentation contract.
Current limitations
- The config drives presentation class, linked layer, socket, and transform only.
- Live PIE tuning uses an explicit save step.
- PIE verification depends on a clean PIE session.
- New reflected editor buttons and properties may require an editor restart if they were added through Live Coding.
Practical recommendation
Use this system as the content-facing boundary for item presentation, not as a full weapon framework.
Keep item-specific attach/framing in the config asset, item-specific item-space graph logic in FullBody_FirstPersonItemItemSpace, and shared body/aim behavior in FullBody_FirstPersonItemUpperBody.
For setup steps, see How to create a first-person item config.