Skip to content

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_Pistol
  • LinkedLayerClass: ABP_PistolAnimLayers
  • PresentationAttachSocket: weapon_r
  • PresentationRelativeTransform: 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.

Motion - Advanced First Person Character Controller