---
title: AFS_UX_Teleporter
product: Advanced Framework Pro
version: 1.0
engine: Unreal Engine 5.8
updated: 2026-10-05
canonical: https://docs.human-codeable.com/plugins/afs-ux-teleporter.html
---

System

# AFS_UX_Teleporter

Teleport targeting: areas and locations, the aiming controller ability, the indicator, and a game-state manager coordinating destinations.

#### What it gives you

- Arc-based teleport targeting with a visual indicator
- Free-form areas and fixed destination points
- Selectable teleport targets for desktop
- Destination coordination across players

#### Requires

None

#### Required by

None

19 assets100 API members

## Description

Teleport is split between two plugins on purpose. `AFS_UX_Teleporter` handles **targeting** — where the player is aiming and what counts as a valid destination. `AFM_Teleport` handles **execution** — the fade, motion and relocation. You can replace either without touching the other.

Destinations come in two shapes. `BP_TeleportArea` covers a region the player may land anywhere within; `BP_TeleportLocation` is a fixed point with a defined arrival rotation, for seats and marked positions. Both have `_Select` variants that are also selectable by laser or click, so the same destinations work on desktop.

## Setup

1. Enable `AFS_UX_Teleporter` and `AFM_Teleport`.
2. Confirm `BPC_ControllerAbility_Teleport` is on the motion controllers and `BPC_PawnAbility_Teleport_Character` on the pawn.
3. Place `BP_TeleportArea_Default` actors over walkable regions, and `BP_TeleportLocation_Default` actors at fixed destinations.

[![A teleport area placed over a walkable region](../images/AFS_UX_Teleporter_setup-1600.webp?v=c7aff55b)](../images/AFS_UX_Teleporter_setup-1600.webp?v=c7aff55b)

A teleport area placed over a walkable region

## Usage

### Adding a destination

See [Add a teleport area](../workflows/add-teleport-area.html).

### Making a seat

Use `BP_TeleportLocation_Default` and set its arrival rotation so the player faces the right way when they arrive.

### Desktop support

Use the `_Select` variants so destinations respond to click as well as to the arc.

### Custom destinations

Implement `Interface_TeleportLocation` on your own actor.

## Key properties

| Property | When to change |
|---|---|
| Arc and indicator settings | On `BPC_ControllerAbility_Teleport`, to change reach and appearance |
| Fade, motion, tracking level | On `AFM_Teleport`'s pawn ability, for comfort options |
| Arrival rotation | On teleport locations, for seats and marked positions |

## Extending

Implement `Interface_TeleportLocation` for custom destinations, or derive from `BP_TeleportArea` for custom region behaviour.

## Example map

`Map_Examples_Teleporter` covers areas, locations and nav-mesh teleport. `Map_Examples_Teleport` covers the execution options.

## Troubleshooting

**The arc finds nothing.** No teleport area or location covers the region, and nav-mesh teleport is not enabled.

## API reference

Every blueprint asset in this plugin. Expand an asset to see its members.

### Blueprints

**BP_TeleportArea**4 members

extends `Actor`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Grid Material`Required | `MaterialInterface` | defines what the teleport area looks like |
| var | `Visibility`Required | `bool` | enables the player to perceive the teleport area in the application |
| fn | `ProjectGridLocationToGroundLocation` | `(GridLocation: Vector, out GroundLocation: Vector)` | Returns the point where a 50 centimetre trace straight down from the given location meets the floor, so a target on the grid ends up on the ground under it. Hands back the location it was given when the trace hits nothing. |
| event | `ShowTeleportArea` | `(Set: bool)` | Unhides the actor and fades the grid in over a tenth of a second, or fades it out and hides the actor again once the fade has finished. The default teleport area calls it from its On Show Teleporter handler. |

**BP_TeleportArea_Default**0 members

extends `BP_TeleportArea` · implements `Interface_TeleportLocation`

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.

No editor-visible members; this asset configures defaults only.

**BP_TeleportArea_Select**2 members

extends `BP_TeleportArea`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Teleport Duration`Settings | `float` | Seconds a teleport onto this area takes once it has been selected, spent fading out and back in. Passed straight to the selecting pawn's teleport ability. |
| var | `Teleport Rotation Type`Settings | `E_Teleporter_Rotation` | Handed to the teleport indicator as it is spawned, where None hides the direction arrow. The rotation the pawn actually arrives with is always taken from the selecting hand, so this only changes what the preview shows. |

**BP_TeleportLocation**6 members

extends `Actor`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Non Valid Color`Style | `LinearColor` | Colour the indicator's shared material falls back to when nothing is hovering it. Only the selectable location reads it, restoring this colour a tenth of a second after a laser leaves. |
| var | `Valid Color`Style | `LinearColor` | Colour the indicator's shared material takes while a laser is hovering it. Only the selectable location reads it; the default location never changes its colour. |
| var | `Non Valid Scale`Style | `float` | Scale meant for the indicator while its target is not valid. Nothing in this actor or its children reads it, so changing it has no effect. |
| var | `Valid Scale`Style | `float` | Scale meant for the indicator while its target is valid. Like its counterpart it is read nowhere, so changing it has no effect. |
| var | `Use Rotation`Settings | `bool` | Whether this location dictates the rotation the pawn arrives with. The construction script shows the direction arrow when it is set, the default location passes it to its teleport interaction as Force Rotation, and the selectable location sends the pawn the way this actor faces instead of leaving its rotation alone. |
| event | `ShowTeleportLocation` | `(Set: bool)` | Unhides the actor and fades the meshes in over a tenth of a second by driving the opacity of their shared material, or fades them out and hides the actor again. The default location calls it from its On Show Teleporter handler. |

**BP_TeleportLocation_Default**0 members

extends `BP_TeleportLocation`

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.

No editor-visible members; this asset configures defaults only.

**BP_TeleportLocation_Select**4 members

extends `BP_TeleportLocation`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Teleport Duration`Settings | `float` | Seconds a teleport to this location takes once it has been selected. At the default of zero the pawn is moved in a single frame and no fade happens at all. |
| var | `Use Fade`Settings | `E_Teleport_Fade` | How the camera is faded when the pawn is sent here. It only shows when Teleport Duration is above zero, as a duration of zero moves the pawn immediately. |
| var | `Use Motion`Settings | `E_Teleport_Motion` | How much of the trip here the player sees: None cuts straight across, Indication leans the pawn towards this location, Full Motion flies it the whole way over Teleport Duration. |
| var | `Teleport Sound`Settings | `SoundBase` | Sound played to the teleporting player when this location is selected. Leave empty for a silent arrival. |

### Components

**BPC_ControllerAbility_Teleport**29 members

extends `BPC_ControllerAbility`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Teleport on Neutral Thumbstick`Settings | `bool` | Whether letting the thumbstick fall back to its neutral position executes the teleport at the current target rather than only closing the search. Meant to be paired with Teleport Deactivate set to Neutral Thumbstick, as the showroom's left controller does. |
| var | `Teleport Line Style`Settings | `E_Teleporter_SearchTypes` | Shape of the line the teleporter searches along. Projectile predicts an arc launched from the helper's start handle, Straight fires a plain line trace between the ability's line start and end. |
| var | `Teleport Mode`Settings | `E_Teleporter_Style` | What counts as valid ground when the surface has no teleport interaction of its own. Teleport On Any Surface accepts surfaces lying within 30 degrees of horizontal, Nav Mesh snaps the point onto the navigation mesh and drops the hit when the projection fails, and None takes whatever was hit. |
| var | `Teleport Time`Settings | `float` | Seconds a teleport onto plain geometry takes, always with a fade out and back in. Targets carrying a teleport interaction ignore it and use their own Teleport Duration. |
| var | `Use Teleport Motion`Settings | `E_Teleport_Motion` | How much of the journey the player sees when teleporting onto plain geometry: None cuts across behind the fade, Indication leans the pawn towards the destination, Full Motion flies it the whole way. Targets with a teleport interaction supply their own motion instead. |
| var | `Teleport Rotation Type`Settings | `E_Teleporter_Rotation` | Where the arrival rotation comes from while searching: None keeps the pawn's current rotation, Rotate By Hand follows how far the controller has been rolled since the search opened, Rotate By Thumbstick aims with the stick and holds the last rotation while the stick rests inside its deadzone. A target that forces its own rotation overrides all three. |
| var | `Teleport Deactivate`Settings | `E_Teleporter_Deactivate` | When the search closes. Only On Execute keeps the line up until the trigger is pulled, Neutral Thumbstick also ends it as soon as the thumbstick returns to centre. |
| var | `Sound Start`Sound | `SoundBase` | Sound played from this component when the search opens, ahead of the looping hold sound on the teleport helper. Leave empty for a silent start. |
| var | `Sound Close`Sound | `SoundBase` | Sound played when the trigger is pulled with nothing solid under the line, so the teleporter closes without moving the pawn. Leave empty for silence. |
| var | `Sound Teleport`Sound | `SoundBase` | Sound handed to the pawn's teleport ability when teleporting onto plain geometry. Targets carrying a teleport interaction play their own sound instead; leave empty for silence. |
| var | `Max Trace Length`Settings | `float` | Launch speed given to the predicted teleport arc, in centimetres per second, which is what decides how far ahead the player can aim. Read only by the Projectile line style. |
| var | `Max Interpolation Distance`Settings | `float` | Distance in centimetres above which the aim point jumps straight to a new hit instead of easing across to it. Shorter moves ease at Interpolation Speed; left at zero, every move is a jump. |
| var | `Interpolation Speed`Settings | `float` | Speed at which the aim point eases towards a new hit, higher being snappier. Applies only while the move is shorter than Max Interpolation Distance. |
| var | `Laser Visual Interp Time`Style | `float` | Speed at which the line settles on the colour and thickness wanted for the current state, higher reaching the new look sooner. Despite the name it is an interpolation speed, not a duration in seconds. |
| var | `Mapping Context Direction`Input | `ST_MappingContext_Side` | Input mapping contexts, one per hand side, added at priority 10 for as long as a search is open and removed when it closes. Carries the thumbstick binding that aims the arrival rotation. |
| var | `Mapping Context Teleporter`Input | `ST_MappingContext_Side` | Input mapping contexts, one per hand side, added when the component is activated and removed when it is deactivated. Carries the bindings that open the teleporter and execute it, and is applied only on the locally controlled pawn. |
| fn | `SetLaserVisuals`Laser | `()` | Applies the standard teleporter line look: dark blue and flaring out towards the end while the search is on something solid, red and thinner while it is pointing at nothing. |
| fn | `SetLaserColor`Laser | `(WantedColor: LinearColor, RadiusStart: Vector2D, RadiusEnd: Vector2D)` | Interpolates the spline line towards the given colour and towards the start and end radii, at the rate set by Laser Visual Interp Time. Does nothing until the line has been spawned. |
| fn | `SetLocationValues`Teleport | `()` | Moves the aim point and the arrival rotation towards the latest hit, easing at Interpolation Speed. Jumps instead of easing on the first frame of a search and when the new point is further away than Max Interpolation Distance; with no blocking hit it follows the end of the trace. |
| fn | `Trace`Teleport | `(out TraceResult: HitResult)` | Runs the search trace for the current line style and hands back what it found: a straight line trace, or a predicted projectile arc from the start handle whose trace end is set to the last point of the arc. Actors following the pawn are ignored either way. |
| fn | `SetHoverState`Laser | `()` | Classifies whatever the trace hit. A teleport interaction that accepts this ability becomes the current target, is told to tick its highlight and has its own teleport and indicator locations written into the hit result; anything else is judged by Teleport Mode, which can project the point onto the navigation mesh or clear the hit. |
| fn | `TryToTeleport`Teleport | `()` | Executes the teleport at the current aim point. A target with a teleport interaction is asked to do it, so that component's duration, fade and sound apply; plain geometry goes to the pawn's teleport ability with this component's settings; and a line pointing at nothing only plays the close sound. |
| fn | `getAllAttachedActors`Ability | `(out Actors: Actor[])` | Returns every actor this ability currently owns or has attached to itself, so the motion controller can gather everything it is carrying. |
| fn | `getActorsToIgnore`Controller Ability | `(out Result: Actor[])` | Returns every actor registered as following the pawn, hands and carried objects included, so the teleport trace passes through them instead of stopping on them. |
| fn | `getTeleportLocationManager`Control | `(out TeleportManager: BPC_Helper_GameState_TeleportManager)` | Returns the teleport manager living on the game state, caching it on this component the first time. Adds the manager to the game state when there is not one yet, so it always comes back valid. |
| fn | `getDesiredRotation`Control | `(out Rotation: Rotator)` | Returns the rotation the pawn would arrive with at the current aim point. A target whose interaction forces rotation settles it outright; otherwise Teleport Rotation Type chooses between the pawn's rotation, the roll of the hand since the search opened, and the thumbstick direction. |
| event | `InitiateControllerAbility` | `(Pawn: Pawn, MotionController: Actor, Side: E_Side)` | Called by the motion controller once it has spawned this ability, handing over the owning pawn, the controller actor and the hand side. Extend it to add setup that needs to know which hand the teleporter belongs to. |
| event | `SetLaser` | `(Set: bool)` | Raises or lowers the teleport line. The spline helper is spawned the first time it is switched on and expanded over 0.3 seconds; switching it off collapses the spline again over the same time and leaves the helper in place for the next search. |
| event | `StartTeleporter` | `(Set: bool)` | Opens or closes the teleport search, ignoring any call that does not change the state. Opening enables ticking, raises the line, plays the start and hold sounds, takes focus of the motion controller, adds the direction mapping context, runs a first trace, spawns the indicator and tells the teleport manager a source is active; closing undoes all of it. |

**BPC_Interaction_Teleport**18 members

extends `BPC_Interaction`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Teleport Duration`Settings | `float` | Determines the time the teleport takes in seconds. |
| var | `Teleport Fade`Settings | `E_Teleport_Fade` | Defines how the camera handles the teleport. |
| var | `Teleport Motion`Settings | `E_Teleport_Motion` | Determines how much of the movement of the pawn during teleport is shown to the player. |
| var | `Teleport Level`Settings | `E_Teleport_TrackingLevel` | Adjusts which part of the pawn is teleported to exactly the chosen location. |
| var | `Sound Teleport`Sound | `SoundBase` | Specifies the sound effect upon teleport execute. |
| var | `Show Behavior`Settings | `E_Teleporter_ShowBehavior` | When the owning actor is asked to show itself. Unchanged leaves it alone; Show On Teleporter Source Activation broadcasts On Show Teleporter the moment any teleporter starts searching and again once the last one stops; Show On Hover raises nothing on activation, leaving the actor to react to being hovered. |
| var | `Force Rotation`Settings | `bool` | Whether the arrival rotation is dictated by this target rather than by how the player aimed. When set, Teleport To Location takes the rotation from Get Desired Teleport Rotation and the teleporter's thumbstick or hand rotation is discarded. |
| var | `Show Indicator`Settings | `bool` | Whether the teleporter keeps its floating indicator visible while this target is under the line. Turn it off for targets such as a seat that already make the arrival point obvious. |
| fn | `getShowIndicator`Target | `(out Show: bool)` | Returns whether the teleporter's indicator should stay visible over this target. Plain accessor over Show Indicator. |
| fn | `getDistanceTo2DLocation`Target | `(ReferenceLocation: Vector2D, out TeleportLocation: Vector2D)` | Asks the owning actor, through the Teleport Location interface, for the point on the ground plane a teleport should be sent to. In spite of the name it hands back a location rather than a distance, and leaves the output at zero when the owner does not implement that interface. |
| fn | `getDesiredIndicatorLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the teleporter should draw its indicator for a given impact point, which here is the impact point unchanged. Overridden by children that want the preview somewhere other than where the line landed. |
| fn | `getDesiredTeleportRotation`Target | `(out TeleportRotation: Rotator)` | Returns the rotation the pawn should arrive with, which in this base implementation is zero. Child components override it to read the rotation of the target itself. |
| fn | `TeleportToLocation`Teleport | `(Pawn: Pawn, ImpactLocation: Vector, InputRotation: Rotator)` | Teleports the pawn here through its teleport ability, using the point from Get Desired Teleport Location and this component's duration, fade, motion, tracking level and sound. The rotation comes from Get Desired Teleport Rotation when Force Rotation is set, and from the rotation the caller aimed with otherwise. |
| fn | `getDesiredTeleportLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the pawn should land for a given impact point, which in this base implementation is the impact point unchanged. Child components override it to send the pawn to a scene component or to ask the owning actor. |
| fn | `getForceRotation`Target | `(out ForceRotation: bool)` | Returns the Force Rotation setting. Internal accessor used when working out the rotation the pawn arrives with. |
| fn | `CanTeleport`Target | `(SourceInfo: ST_SourceInfo, out CanTeleport: bool)` | Returns whether this target accepts a teleport, which here is true whenever the interaction is active; the Source Info is not looked at. Override it to turn particular pawns or hands away. |
| event | `TeleportSourceActivated` | `(Set: bool)` | Called by the teleport manager when the first teleporter starts searching and again when the last one stops. Stores the state, broadcasts On Teleporter Source Activation Changed, and raises On Show Teleporter as well when Show Behaviour asks for it; repeated calls with the same value are ignored. |
| event | `TickHighlight` | `(SourceInfo: ST_SourceInfo, TraceResult: HitResult)` | Called by a teleporter while its search line rests on this target. The override is empty, so a teleport target runs none of the base interaction's highlighting and never broadcasts On Highlight Tick. |

**BPC_Interaction_Teleport_Interface**4 members

extends `BPC_Interaction_Teleport`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `getDistanceTo2DLocation`Target | `(ReferenceLocation: Vector2D, out TeleportLocation: Vector2D)` | Asks the owning actor, through the Teleport Location interface, for the point on the ground plane a teleport should be sent to. In spite of the name it hands back a location rather than a distance, and leaves the output at zero when the owner does not implement that interface. |
| fn | `getDesiredIndicatorLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the teleporter should draw its indicator for a given impact point, which here is the impact point unchanged. Overridden by children that want the preview somewhere other than where the line landed. |
| fn | `getDesiredTeleportRotation`Target | `(out TeleportRotation: Rotator)` | Returns the rotation the pawn should arrive with, which in this base implementation is zero. Child components override it to read the rotation of the target itself. |
| fn | `getDesiredTeleportLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the pawn should land for a given impact point, which in this base implementation is the impact point unchanged. Child components override it to send the pawn to a scene component or to ask the owning actor. |

**BPC_Interaction_Teleport_Scene**10 members

extends `BPC_Interaction_Teleport`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Name Of Target Component`Target | `name` | Component tag meant to pick the scene component the pawn is teleported onto. Nothing reads it as things stand, because Get Target Component searches by the indicator tag instead, so give both settings the same tag unless you want the pawn to land on the indicator. |
| var | `Name Of Indicator Component`Target | `name` | Component tag picking the scene component the teleport preview is drawn at. It also decides where the pawn lands, since Get Target Component searches by this tag as well. |
| var | `Attach to Target`Settings | `bool` | Whether the pawn stays attached to the target component after arriving, so it rides along when that component moves. Use it for seats and moving platforms; leave it off for a fixed spot on the floor. |
| fn | `getIndicatorComponent`Components | `(out SceneComponent: SceneComponent)` | Returns the first scene component on the owning actor tagged with Name Of Indicator Component, which is where the teleport preview is drawn. |
| fn | `TeleportToLocation`Teleport | `(Pawn: Pawn, ImpactLocation: Vector, InputRotation: Rotator)` | Teleports the pawn here through its teleport ability, using the point from Get Desired Teleport Location and this component's duration, fade, motion, tracking level and sound. The rotation comes from Get Desired Teleport Rotation when Force Rotation is set, and from the rotation the caller aimed with otherwise. |
| fn | `getTargetComponent`Components | `(out SceneComponent: SceneComponent)` | Returns the first scene component on the owning actor tagged with Name Of Indicator Component. In spite of the name it does not read Name Of Target Component, so an actor that tags target and indicator differently lands the pawn on its indicator. |
| fn | `getDistanceTo2DLocation`Target | `(ReferenceLocation: Vector2D, out TeleportLocation: Vector2D)` | Asks the owning actor, through the Teleport Location interface, for the point on the ground plane a teleport should be sent to. In spite of the name it hands back a location rather than a distance, and leaves the output at zero when the owner does not implement that interface. |
| fn | `getDesiredIndicatorLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the teleporter should draw its indicator for a given impact point, which here is the impact point unchanged. Overridden by children that want the preview somewhere other than where the line landed. |
| fn | `getDesiredTeleportRotation`Target | `(out TeleportRotation: Rotator)` | Returns the rotation the pawn should arrive with, which in this base implementation is zero. Child components override it to read the rotation of the target itself. |
| fn | `getDesiredTeleportLocation`Target | `(ImpactLocation: Vector, out DesiredLocation: Vector)` | Returns where the pawn should land for a given impact point, which in this base implementation is the impact point unchanged. Child components override it to send the pawn to a scene component or to ask the owning actor. |

### Helper

**BPC_Helper_GameState_TeleportManager**4 members

extends `ActorComponent`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `TeleporterSourceActivated` | `(Source: Object)` | Called by a teleporter as it starts searching. Records that source and tells every registered teleport interaction that a source is now active, which is what makes teleport targets show themselves. |
| event | `TeleportSourceDeactivated` | `(Source: Object)` | Called by a teleporter as it stops searching. Drops that source, and only tells the registered teleport interactions to stand down once no source is left, so targets stay up while a second hand is still aiming. |
| event | `RegisterTeleportComponent` | `(NewItem: BPC_Interaction_Teleport)` | Adds a teleport interaction to the manager's list so that it hears about teleporters starting and stopping. Called by the interaction itself when its component is activated. |
| event | `UnregisterTeleportComponent` | `(NewItem: BPC_Interaction_Teleport)` | Removes a teleport interaction from the list and tells it the source has gone, so a target deactivated mid-search hides itself again. Called by the interaction when its component is deactivated. |

**BP_Helper_ControllerAbility_Teleport**2 members

extends `BP_Helper_ControllerAbility`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Controller Ability` | `BPC_ControllerAbility_Teleport` | The teleport ability that spawned this helper, handed over on spawn. The helper's input events hold no logic of their own; they call straight into this ability. |
| fn | `getThumbStickDirection` | `() → Vector2D` | Returns the current thumbstick axes for this helper's hand side, read from the sided input action. The teleport ability uses it to aim the arrival rotation. |

**BP_Helper_TeleportIndicator**8 members

extends `Actor`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| var | `Teleport Rotation Type` | `E_Teleporter_Rotation` | Which rotation scheme the teleporter that spawned this indicator is using, passed in on spawn. Read once at Begin Play, where None hides the direction arrow, so changing it later has no effect. |
| fn | `getDesiredColor` | `() → LinearColor` | Returns the colour the indicator ought to be showing: blue while the current aim point can be teleported to, red while it cannot. |
| fn | `SetColor` | `(Color: LinearColor)` | Applies one colour to the ring, the inner circle and the arrow at once by setting the Color parameter on each of their materials. |
| event | `Disappear` | `()` | Called by the teleporter when the search closes. Runs the appear timeline backwards and destroys the actor once it has shrunk away, so an indicator is never reused. |
| event | `Appear` | `()` | Called by the teleporter once the indicator has been spawned. Unhides the actor and scales it up over 0.3 seconds. |
| event | `SetDesiredRotation` | `(DesiredRotation: Rotator)` | Stores the rotation the indicator should show. Called every frame by the teleporter with the rotation the pawn would arrive with. |
| event | `SetCanTeleport` | `(CanTeleport: bool)` | Stores whether the current aim point can be teleported to, which is what decides the colour through Get Desired Colour. Called every frame by the teleporter. |
| event | `SetShowIndicator` | `(ShowIndicator: bool)` | Stores whether the indicator should be on show. Called every frame by the teleporter, which passes on the Show Indicator setting of the target under the line, or true over plain geometry. |

### Interface

**Interface_TeleportLocation**4 members

extends `Interface`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| fn | `Teleport_getTeleportLocation2D`Teleport | `(ImpactLocation: Vector2D, out TeleportLocation: Vector2D)` | Implemented by an actor to say where on the ground plane a teleport should land, in X and Y. The default teleport area answers with the closest point on its own grid, which pulls an aim near the edge back onto the area. |
| fn | `Teleport_getTeleportRotation`Teleport | `(out TeleportRotation: Rotator)` | Implemented by an actor to say which way a pawn teleporting to it should face. Read only when the teleport interaction forces rotation, and reports zero when left unanswered. |
| fn | `Teleport_getTeleportLocation`Teleport | `(ImpactLocation: Vector, out TeleportLocation: Vector)` | Implemented by an actor to say where a pawn teleporting to it should land, given the point the line hit. The default teleport area answers with that point projected down onto the ground; left unanswered it reports the world origin. |
| fn | `Teleport_getIndicatorLocation`Teleport | `(ImpactLocation: Vector, out IndicatorLocation: Vector)` | Implemented by an actor to say where the teleport preview should be drawn for the point the line hit. Called by the interface teleport component; left unanswered it reports the world origin, so implement it deliberately. |

### Settings

**BP_Value_Settings_Boolean_Teleport**1 members

extends `BP_Value_Settings_Bool`

Ready-made toggle for whether teleport is available at all, activating or blocking the teleport ability on both hands.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `Value_setBoolean`Value_Boolean | `(SourceInfo: ST_SourceInfo, Value: bool)` | Implemented by a boolean value to take a new setting from the pawn described by the source info. Buttons call it when their selection changes. |

**BP_Value_Settings_Boolean_Teleporter_Execute**1 members

extends `BP_Value_Settings_Bool`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `Value_setBoolean`Value_Boolean | `(SourceInfo: ST_SourceInfo, Value: bool)` | Implemented by a boolean value to take a new setting from the pawn described by the source info. Buttons call it when their selection changes. |

**BP_Value_Settings_Boolean_Teleporter_Line**1 members

extends `BP_Value_Settings_Bool`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `Value_setBoolean`Value_Boolean | `(SourceInfo: ST_SourceInfo, Value: bool)` | Implemented by a boolean value to take a new setting from the pawn described by the source info. Buttons call it when their selection changes. |

**BP_Value_Settings_Float_TeleportTime**1 members

extends `BP_Value_Settings_Float`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `Value_setFloat`Value_Float | `(SourceInfo: ST_SourceInfo, Value: float)` | Implemented by a float value to take a new value from the pawn described by the source info. Sliders call it as their handle moves; the drag state reads the value as 0 to 1 across its own range. |

**BP_Value_Settings_Integer_Teleport_Rotation**1 members

extends `BP_Value_Settings_Integer`

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.

| Kind | Name | Signature | Description |
|---|---|---|---|
| event | `Value_setInteger`Value_Integer | `(SourceInfo: ST_SourceInfo, Value: int)` | Implemented by an integer value to take a new value from the pawn described by the source info. Drop-downs call it when one of their options is chosen. |
