How-To: Get the Building Blocks

Goal: obtain every object the other pages assume - the component, a target provider, the settings, and the profile - in both Blueprint and C++.

Prerequisites
A character with a Crimson Motion Warping component, as set up in Quick Start.

1. Get the warping component

Call Find Warp Component with the actor. It is a static pure node, so it needs no reference to the component itself. Leaving Actor unset defaults it to self.

Verify
The returned component is valid. If it is null, the component is missing from the character Blueprint.

2. Supply a target

The plugin never picks targets itself. It asks the avatar for an ICrimsonWarpTargetProvider, an interface that lives in CrimsonCommon so that any system can answer without this plugin depending on it. Implement it on the pawn or on any of its components; when an actor carries several, the highest GetCrimsonWarpTargetPriority wins, and ties break on object name so the choice is identical on every machine.

FCrimsonWarpTargetResult reports the target actor and the aim point separately, and they are not interchangeable. The actor is the standoff reference: the plugin centres its stopping ring on the actor's location and reads its capsule radius. The aim point is a look-at position, typically a chest or head socket, which on a large enemy sits well off the actor's horizontal centre - centring a stopping ring on it would place the ring off the target's own collision.

Add the Crimson Warp Target Provider interface to your component or pawn (Class Settings -> Interfaces -> Add). Implement Get Crimson Warp Target: set Target Actor on the out struct, set Aim World Location, and return true. Return false when you have nothing - that is normal, not an error.

Also implement Get Crimson Warp Target Priority and return a constant. Anything above the default wins over a lower-priority provider on the same pawn.

Already using lock-on
UCrimsonLockOnComponent (CrimsonCamera) implements this interface, so a character that already locks on needs no work here. It reports the hard-locked target when there is one, otherwise the soft-tracked target, and sets bIsCommitted for the hard lock.
Verify
Attack with a target selected. The dev tool's Resolve tab shows a Target other than (none). See How-To: Diagnose a Warp.

3. Pass a target explicitly instead

When you already know what to warp toward, skip the provider. Set the profile's Target Source to Explicit and fill the Request pin, or leave it on Provider Then Explicit so the request is a fallback.

On Crimson Warp To Target, expand the Advanced section and split the Request pin (right-click -> Split Struct Pin). Set Explicit Target to an actor, or set Explicit Location and tick b Has Explicit Location.

Verify
The Resolve tab reports the actor you passed.

4. Reach the project settings

Project Settings -> Crimson -> Crimson Motion Warping holds the project-wide safety nets: the missing-target warning and its rate limit, the server's acceptance tolerance, the lease watchdog slack, and the debug drawing gate. Anything describing a particular attack belongs on a profile instead.

Edit them in Project Settings. They are read by the plugin at runtime; there is no Blueprint accessor, because nothing in a project should be changing project-wide safety limits at play time.

See also

  • Quick Start
  • How-To: Diagnose a Warp
  • API Reference