PawnSwap

Switch between pawns with smooth camera blends and climb into vehicles and mounts with several seats: roster cycling, driver/passenger seats, validated exits, seat locks…

Malware-scannedSigned licence keyInstant downloadUpdates included
PawnSwap β€” screenshot 1
PawnSwap β€” screenshot 2
PawnSwap β€” screenshot 3
PawnSwap β€” screenshot 4
PawnSwap β€” screenshot 5
PawnSwap β€” screenshot 6
PawnSwap β€” screenshot 7
PawnSwap β€” screenshot 8
PawnSwap β€” screenshot 9
PawnSwap β€” screenshot 10
1 / 10
Pawn Swap Manager: possess another pawn on request, server-authoritative
Smooth view-target blend on switch: blend time, blend function, exponent, lock outgoing
Pawn roster: register, cycle next/previous, switch by index or tag, auto registration
Seat component with entry and exit points (scene components or relative offsets)
Multiple seats per vehicle: driver/passenger roles, priority, occupancy, possess the…
Exit validation: ground snap, capsule overlap, line of sight, ring and roof fallback…
$11.99

PawnSwap handles everything around who controls which pawn. Add the Pawn Swap Manager to your PlayerController and switch between a roster of pawns - next, previous, by index or by tag - with a smooth view-target blend on every switch: blend time, blend function, exponent and a locked outgoing camera so the blend starts exactly where the view was. The pawn you leave behind can stay unpossessed, get its AI controller or get back the controller it had before you took it.

Vehicles and mounts get one Pawn Swap Seat per seat. Each seat has entry and exit points (named scene components or offsets), a driver or passenger role, a priority and an occupancy state. Entering the driver seat possesses the vehicle with its own blend; leaving it gives you your character back. The occupant is attached to the seat or to a socket, hidden or kept visible, with collision, movement and controller rotation turned off while seated, and everything is restored on exit. Change seats inside the same vehicle, or seat AI passengers directly from the server.

Exits are validated: every exit point is snapped to the ground, tested with the occupant's capsule and checked for line of sight; when all of them are blocked, rings around the vehicle and finally the roof are searched. Seats can be locked, reserved for their owner (claimed by the first player who enters), for a team, or ruled by your own Blueprint function.

An interaction query finds the best seat or pawn within a radius and view angle and returns its prompt text, ready for "Press E to enter" widgets; one Interact node enters, takes over or exits. Spectate any pawn without possessing it and come back. Each pawn can set its own input mode and mouse cursor, and a Setup Input event fires after every switch. The roster and seat occupancy export to a SaveGame-ready struct and restore - respawning missing pawns if needed.

Everything is server-authoritative: client requests go through Server RPCs, seat occupancy replicates with a RepNotify that applies the seated state on every machine, and every switch, seat change and refusal (with a reason) is reported through Blueprint events.

PawnSwap is part of the Alpha XP collection for Unreal Engine 4.27 and 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against clean UE 4.27 and UE 5.8 projects.

69Blueprint nodes
12Events
2Engine builds
2Platforms

Key features

  • Pawn Swap Manager: possess another pawn on request, server-authoritative
  • Smooth view-target blend on switch: blend time, blend function, exponent, lock outgoing
  • Pawn roster: register, cycle next/previous, switch by index or tag, auto registration
  • Seat component with entry and exit points (scene components or relative offsets)
  • Multiple seats per vehicle: driver/passenger roles, priority, occupancy, possess the
  • Exit validation: ground snap, capsule overlap, line of sight, ring and roof fallback
  • Left-behind controller policy: leave unpossessed, spawn AI controller, restore
  • Seated occupant: attach to seat or socket, offset, hide, collision/movement/rotation
  • Interaction query: best seat or pawn by radius and view angle with prompt text, plus
  • Seat locks and access rules: owner only, same team, owner or team, custom Blueprint rule
  • Events: pawn switched, seat entered, seat exited, enter/exit/switch denied with a
  • Multiplayer: Server RPCs, replicated seat occupancy with RepNotify, owner-only roster
  • Spectate mode: view another pawn without possessing it, cycle the roster, return
  • Input mode and mouse cursor per pawn, applied on switch, plus a Setup Input event
  • Save/restore of roster and seat occupancy in a SaveGame-ready struct
  • Blueprint function library: seats of a vehicle, free seat, occupants, teams, capsule tests

Blueprint & C++ API

The API is organised into these entry points:

ClassTypeNodesUse it for
PawnSwapManagerComponentActor component35Add to a PlayerController (or an AIController for server-side use).
PawnSwapSeatComponentScene component20A seat of a vehicle or mount. Add one per seat to the vehicle actor and place it where the occupant sits.
PawnSwapLibraryFunction library13Blueprint helpers for PawnSwap: lookups, seats of a vehicle, teams and capsule tests.
PawnSwapPawnComponentActor component1Optional per-pawn settings for PawnSwap: roster tag and auto registration, team, interaction switching, camera blend, controller policy and input mode overrides…

Callable runs when executed Β· Pure no exec pin, returns a value

PawnSwap 4
NodeTypeAvailable onDescription
Get Manager Of Controller(Controller: Controller) β†’ Pawn Swap Manager ComponentPureStaticThe Pawn Swap Manager of a controller.
Get Manager Of Pawn(Pawn: Pawn) β†’ Pawn Swap Manager ComponentPureStaticThe Pawn Swap Manager of the controller that controls Pawn.
Get Pawn Profile(Pawn: Pawn) β†’ Pawn Swap Pawn ComponentPureStaticThe Pawn Swap Profile of a pawn, or None.
Get Pawn Team Id(Pawn: Pawn, Controller: Controller) β†’ IntegerPureStaticTeam of a pawn: its profile Team Id, else the team of its controller's manager (or of Controller), else -1.
Seats 12
NodeTypeAvailable onDescription
Get Seats(Vehicle: Actor) β†’ Array of Pawn Swap Seat ComponentPureStaticEvery Pawn Swap Seat of Vehicle sorted by Priority.
Get Driver Seat(Vehicle: Actor) β†’ Pawn Swap Seat ComponentPureStaticThe first driver seat of Vehicle, or None.
Get Free Seat(Vehicle: Actor, Candidate: Pawn, Prefer Driver: Boolean) β†’ Pawn Swap Seat ComponentPureStaticThe best free seat of Vehicle that Candidate may enter (driver first when Prefer Driver).
Get Occupants(Vehicle: Actor) β†’ Array of PawnPureStaticPawns seated in Vehicle.
Find Seat Of Pawn(Pawn: Pawn) β†’ Pawn Swap Seat ComponentPureStaticThe seat Pawn sits in, or None.
Is Pawn Seated(Pawn: Pawn) β†’ BooleanPureStaticTrue when Pawn sits in a Pawn Swap Seat.
Enter Seat(Seat: Pawn Swap Seat Component)CallableComponentEnters Seat with the controlled pawn.
Enter Vehicle(Vehicle: Actor, Prefer Driver: Boolean)CallableComponentEnters the best free seat of Vehicle (driver first when Prefer Driver, then by Priority).
Exit SeatCallableComponentLeaves the current seat at a validated exit location.
Change Seat(New Seat: Pawn Swap Seat Component)CallableComponentMoves to another seat of the same vehicle (no exit check).
Get Current Seat() β†’ Pawn Swap Seat ComponentPureComponentThe seat of the player's pawn, or None.
Is Seated() β†’ BooleanPureComponentTrue while the player's pawn is seated.
Exit 2
NodeTypeAvailable onDescription
Get Pawn Collision Size(Pawn: Pawn, Default Radius: Float, Default Half Height: Float) β†’ Radius, Half HeightPureStaticCapsule radius and half height of a pawn (character capsule, else collision cylinder, else the defaults).
Is Capsule Free(Location: Vector, Radius: Float, Half Height: Float, Channel: Collision Channel, Ignore Actors: Array of Actor) β†’ BooleanCallableStaticTrue when a capsule at Location overlaps nothing blocking on Channel (Ignore Actors are skipped).
Save 3
NodeTypeAvailable onDescription
Get Save Key(Actor: Actor) β†’ NamePureStaticLookup key of an actor for save data: profile Roster Tag, else its first actor tag, else None.
Export State() β†’ Pawn Swap Save DataCallableComponentExports the roster, the active pawn and the seats occupied by roster pawns.
Restore State(Data: Pawn Swap Save Data, Restore Transforms: Boolean, Spawn Missing: Boolean) β†’ BooleanCallableComponentRestores exported data (server): finds the pawns by Roster Tag or name (optionally respawning missing ones), optionally moves them, rebuilds the roster, re-seat…
Switch 8
NodeTypeAvailable onDescription
Switch To Pawn(New Pawn: Pawn)CallableComponentPossesses NewPawn with the switch blend.
Switch To NextCallableComponentSwitches to the next roster pawn.
Switch To PreviousCallableComponentSwitches to the previous roster pawn.
Switch To Index(Index: Integer)CallableComponentSwitches to the roster pawn at Index.
Switch To Tag(Tag: Name)CallableComponentSwitches to the first roster pawn whose profile Roster Tag or actor tag is Tag.
Get Controlled Pawn() β†’ PawnPureComponentThe controlled pawn (a vehicle while driving).
Get Character Pawn() β†’ PawnPureComponentThe player's own pawn: the seated occupant while driving, otherwise the controlled pawn.
Get Owner Controller() β†’ ControllerPureComponentThe controller this manager is attached to.
Roster 9
NodeTypeAvailable onDescription
Register Pawn(In Pawn: Pawn) β†’ BooleanCallableComponentAdds a pawn to the roster (server).
Unregister Pawn(In Pawn: Pawn) β†’ BooleanCallableComponentRemoves a pawn from the roster (server).
Clear RosterCallableComponentEmpties the roster (server).
Get Roster() β†’ Array of PawnPureComponentRoster pawns in order (replicated to the owning client).
Get Roster Count() β†’ IntegerPureComponentNumber of roster pawns.
Get Active Roster Index() β†’ IntegerPureComponentRoster index of the player's pawn, or -1.
Is In Roster(In Pawn: Pawn) β†’ BooleanPureComponentTrue when InPawn is in the roster.
Find Roster Pawn By Tag(Tag: Name) β†’ PawnPureComponentFirst roster pawn with this Roster Tag or actor tag.
Set Team Id(New Team Id: Integer)CallableComponentSets the team id (server).
Interaction 4
NodeTypeAvailable onDescription
Find Best Interaction() β†’ Pawn Swap InteractionCallableComponentBest seat or pawn within the interaction radius and view angle (or Exit while seated).
Interact() β†’ BooleanCallableComponentRuns the best interaction: enters, takes over or exits. Returns false when there was nothing to do.
Interact With(Target: Pawn Swap Interaction) β†’ BooleanCallableComponentRuns a given interaction result.
Get Current Interaction() β†’ Pawn Swap InteractionPureComponentLast result of the auto scan.
Spectate 5
NodeTypeAvailable onDescription
Spectate(Target: Actor) β†’ BooleanCallableComponentViews Target without possessing it (owning client). Calling it again moves to another target.
Spectate Roster(Direction: Integer) β†’ BooleanCallableComponentSpectates the next (Direction > 0) or previous roster pawn other than the controlled one.
Stop Spectating(Blend: Boolean)CallableComponentReturns the view to the controlled pawn.
Is Spectating() β†’ BooleanPureComponent
Get Spectate Target() β†’ ActorPureComponentThe spectated actor, or None.
Input 1
NodeTypeAvailable onDescription
Apply Input Settings(Settings: Pawn Swap Input Settings)CallableComponentApplies an input mode and mouse cursor setting to the owning player controller (local controllers only).
Profile 1
NodeTypeAvailable onDescription
Get Pawn() β†’ PawnPureComponentThe pawn that owns this profile.
Seat 9
NodeTypeAvailable onDescription
Get Occupant() β†’ PawnPureComponentThe seated pawn, or None.
Is Occupied() β†’ BooleanPureComponentTrue when a pawn sits here.
Is Occupant Possessing Vehicle() β†’ BooleanPureComponentTrue when the occupant's controller drives (possesses) the vehicle.
Get Vehicle() β†’ ActorPureComponentThe actor that owns this seat.
Get Vehicle Pawn() β†’ PawnPureComponentThe vehicle as a pawn (None for non-pawn mounts and props).
Get Sibling Seats() β†’ Array of Pawn Swap Seat ComponentPureComponentEvery Pawn Swap Seat of the same vehicle (including this one), by Priority.
Seat Pawn(New Occupant: Pawn, Ignore Access: Boolean) β†’ Pawn Swap Deny ReasonCallableComponentSeats NewOccupant (server). Does not change possession; players should enter through the Pawn Swap Manager.
Unseat Pawn(Force Out When Blocked: Boolean) β†’ Pawn Swap Deny ReasonCallableComponentUnseats the occupant at a validated exit location (server). Force Out When Blocked leaves it at the seat instead of refusing.
Vacate SeatCallableComponentRemoves the occupant without moving it (server).
Access 6
NodeTypeAvailable onDescription
Get Seat Owner() β†’ ActorPureComponentThe owner used by Owner Only rules.
Check Access(Candidate: Pawn, Candidate Controller: Controller) β†’ Pawn Swap Deny ReasonPureComponentWould Candidate (controlled by Candidate Controller) be allowed in? None = yes.
Set Locked(New Locked: Boolean)CallableComponentLocks or unlocks the seat (server).
Set Access(New Access: Pawn Swap Access)CallableComponentChanges the access rule (server).
Set Team Id(New Team Id: Integer)CallableComponentChanges the seat team (server).
Set Seat Owner(New Owner: Actor)CallableComponentSets the owner for Owner Only rules: a controller, a player state or a pawn (server). None = unowned.
Points 5
NodeTypeAvailable onDescription
Get Point Transform(Point: Pawn Swap Seat Point) β†’ TransformPureComponentWorld transform of an entry or exit point.
Get Entry Transforms() β†’ Array of TransformPureComponentWorld transforms of all entry points (the seat transform when there are none).
Get Exit Transforms() β†’ Array of TransformPureComponentWorld transforms of all exit points (the entry points when there are none).
Get Nearest Entry Location(From: Vector) β†’ VectorPureComponentThe entry point closest to From.
Find Exit Transform(For Pawn: Pawn) β†’ Boolean, Out TransformCallableComponentFinds a free exit location for ForPawn: each exit point is snapped to the ground, tested with the pawn's capsule and checked for line of sight; then rings aroun…

Events & delegates

Bind these in Blueprint (drag off the object β†’ Bind Event) or with AddDynamic in C++.

EventParametersFires onWhen it fires
On Pawn SwitchedNew Pawn (Pawn), Old Pawn (Pawn)PawnSwapManagerComponentThe controlled pawn changed through PawnSwap (server and owning client).
On Setup InputNew Pawn (Pawn), Old Pawn (Pawn)PawnSwapManagerComponentFired on the owning client right after a switch, after the input mode was applied: set up your input here.
On Seat EnteredSeat (Pawn Swap Seat Component), Seated Pawn (Pawn)PawnSwapManagerComponentA pawn of this player sat down (server and owning client).
On Seat ExitedSeat (Pawn Swap Seat Component), Seated Pawn (Pawn)PawnSwapManagerComponentA pawn of this player left a seat (server and owning client).
On Enter DeniedReason (Pawn Swap Deny Reason), Seat (Pawn Swap Seat Component)PawnSwapManagerComponentAn enter request was refused (server and owning client).
On Exit DeniedReason (Pawn Swap Deny Reason), Seat (Pawn Swap Seat Component)PawnSwapManagerComponentAn exit request was refused (server and owning client).
On Switch DeniedReason (Pawn Swap Deny Reason), Target Pawn (Pawn)PawnSwapManagerComponentA switch request was refused (server and owning client).
On Spectate ChangedTarget (Actor), Spectating (Boolean)PawnSwapManagerComponentSpectating started, moved to another target or stopped (owning client).
On Interaction ChangedInteraction (Pawn Swap Interaction)PawnSwapManagerComponentThe best interaction changed (owning client, Auto Scan Interaction only).
On Swap PossessedNew Controller (Controller)PawnSwapPawnComponentA player's Pawn Swap Manager took this pawn (server and owning client).
On Swap ReleasedNew Controller (Controller)PawnSwapPawnComponentA player's Pawn Swap Manager left this pawn (server and owning client).
On Occupant ChangedSeat (Pawn Swap Seat Component), New Occupant (Pawn), Previous Occupant (Pawn)PawnSwapSeatComponentCalled on every machine when the occupant changes.

Options & enums

EnumValues
Left BehindLeave Unpossessed Spawn AI Controller Restore Original Controller
Seat RoleDriver Passenger
AccessAnyone Owner Only Same Team Owner Or Same Team
Deny ReasonNone Invalid Target No Pawn No Authority Locked Not Owner Wrong Team Occupied Out Of Range Already Seated Not Seated Exit Blocked Controlled By Other Player Not In Roster Already Controlled Cooldown Custom Rule
ActionSwitch Enter Exit
Input ModeUnchanged Game Only Game And UI UI Only
Interaction TypeNone Seat Pawn Exit

Compatibility

UE 4.27PawnSwap 4.27.zipUE 5.8PawnSwap 5.8.zip

One ready-made build per engine version is included in the download β€” copy the one that matches your project.

PlatformSupported in
WindowsEditor & packaged
macOSEditor & packaged
ModuleTypeLoading phase
PawnSwapRuntimeDefault

Technical details

Code modulesPawnSwap (Runtime)
Blueprints0 Β· C++ classes: 4
Network replicatedYes
Development platformsWindows: Yes, Mac: Yes
Target build platformsWin64, Mac
Third-party softwareNo
Engine versionsUnreal Engine 4.27 Β· 5.8 β€” a build for each is included
C++ classes4 + 9 structs
Blueprint nodes69
Events12
DocumentationDocumentation.html (in the download)
DownloadPawnSwap.zip Β· 179 KB
Versionv1.0.0

What's in the download

FileWhat it is
PawnSwap 4.27.zipPlugin build for Unreal Engine 4.27
PawnSwap 5.8.zipPlugin build for Unreal Engine 5.8
Documentation.htmlDocumentation (open in a browser)

Quick start

  1. Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
  2. Copy the PawnSwap folder into your project's Plugins/ folder (create it if needed).
  3. Open the project, enable PawnSwap under Edit β€Ί Plugins and restart the editor.
  4. Right-click in any Blueprint graph and search PawnSwap β€” or include the public headers from C++.
  5. Package for your target platform (Windows, macOS).

Good to know

Built and verified warning-free for Unreal Engine 4.27 and 5.8. C++ classes: Pawn Swap Manager (component for the PlayerController), Pawn Swap Seat (component for vehicles and mounts), Pawn Swap Profile (optional per-pawn component) and PawnSwap Library. Requests are server-authoritative (Server RPCs); seat occupancy, locks and access rules replicate, roster and current seat replicate to the owning client. Vehicles carrying seats must replicate. Spectating is a client-side view change. No content assets are included. The module is enabled for Win64 and Mac; the code is platform-independent engine C++ with no OS-specific calls. Developed and maintained by Alpha XP.

Everything included

  • Pawn Swap Manager: possess another pawn on request, server-authoritative
  • Smooth view-target blend on switch: blend time, blend function, exponent, lock outgoing
  • Pawn roster: register, cycle next/previous, switch by index or tag, auto registration
  • Seat component with entry and exit points (scene components or relative offsets)
  • Multiple seats per vehicle: driver/passenger roles, priority, occupancy, possess the…
  • Exit validation: ground snap, capsule overlap, line of sight, ring and roof fallback…
  • Left-behind controller policy: leave unpossessed, spawn AI controller, restore…
  • Seated occupant: attach to seat or socket, offset, hide, collision/movement/rotation…
  • Interaction query: best seat or pawn by radius and view angle with prompt text, plus…
  • Seat locks and access rules: owner only, same team, owner or team, custom Blueprint rule
  • Events: pawn switched, seat entered, seat exited, enter/exit/switch denied with a…
  • Multiplayer: Server RPCs, replicated seat occupancy with RepNotify, owner-only roster
  • Spectate mode: view another pawn without possessing it, cycle the roster, return
  • Input mode and mouse cursor per pawn, applied on switch, plus a Setup Input event
  • Save/restore of roster and seat occupancy in a SaveGame-ready struct
  • Blueprint function library: seats of a vehicle, free seat, occupants, teams, capsule tests

Platforms

WindowsmacOS

Requirements

  • Unreal Engine 4.27 and 5.8
  • Develop on Windows (Win64)
  • Blueprints and C++

In the download

FilePawnSwap.zip
FormatZIP
Size179 KB
Versionv1.0.0
SHA-2563b361d07000c0710…

Personal

$11.99

One non-commercial project

  • 1 activation seat
  • 1 year of updates
  • One end product
  • Non-commercial use
  • Community support
  • 14-day refund window
Read the Personal terms
β˜… Most popular

Commercial

$59.99

Ship paid products

  • 5 activation seats
  • 1 year of updates
  • One paid end product
  • Unlimited end users
  • Priority support
  • Source files
  • 14-day refund window
Read the Commercial terms

Extended

$189.00

Resell & white-label

  • Unlimited activation seats
  • Lifetime updates
  • Unlimited end products
  • White-label & resell
  • 1-hour SLA
  • Seat-free team use
  • 14-day refund window
Read the Extended terms

One purchase per product, no subscription. Each licence comes with a signed key β€” 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.

  1. v1.0.0Latest
    • Unreal Engine 4.27 and 5.8
    • Blueprint and C++ API, HTML documentation
β€”
β˜…β˜…β˜…β˜…β˜…
No reviews yet
5β˜…0%
4β˜…0%
3β˜…0%
2β˜…0%
1β˜…0%

Be the first to review PawnSwap β€” reviews come from customers who bought it, so every one is a verified purchase.

Reviews are for customers who bought PawnSwap.
Email supportsupport@alphaxp.net β€” include your order reference.
What support coversInstallation help, download or activation problems, and questions about documented behaviour, for your licence term.
Keys & downloadsLost a key or a download link? Everything you bought is in My library.
Refunds & terms14-day refunds from your order page. Refund policy Β· Personal terms Β· Commercial terms Β· Extended terms

Frequently asked

How do I get the files after paying?

Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.

Which licence do I need?

Personal β€” One non-commercial project. Commercial β€” Ship paid products. Extended β€” Resell & white-label. The Licences tab compares them side by side.

On how many devices can I activate it?

1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.

How long do I get updates?

Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.

Can I get a refund?

Yes β€” paid licences can be refunded within 14 days, straight from your order page.

Is the download safe?

The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β†’ In the download, so you can verify the file you receive.

Do I need an account?

No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.

More like this

From the same studio
$11.99Personal licence Β· PawnSwap
✦ Why TechHarbour

Software you own, from the people who built it.

117 products, one studio. Each ships with a signed licence key, an instant download and 14-day refunds β€” and every file is malware-scanned before it goes on sale.