# Blueprint reference Everything below is reachable from Blueprint, and every class meant to be extended can have a Blueprint child. The lab proves it with `Tools/check_blueprint_api.py`: it makes a Blueprint child of 21 classes, compiles each, and checks 140 calls, events and settings through reflection. ## Classes you can make a child of | Class | Why you would | |---|---| | `ATRCCharacter` | Your character, with the Traversecraft CMC already on it | | `UTRCCharacterMovementComponent` | Your own CMC on top of it | | `UTRCCharacterMoverComponent`, `UTRCMoverTraversalEventsComponent` | Your own Mover component, or the events on one you already have | | `UTRCLadderComponent`, `UTRCZiplineComponent`, `UTRCRopeComponent` | A ladder, zipline or rope with its own look or rules | | `ATRCTraversalNavLink` | A nav link with its own give-up rule | | The Mover modes and the start transition | A mode with its own data | | `ATRCExampleCharacter`, `ATRCExampleLadder`, `ATRCExampleZipline`, `ATRCExampleRope` | The example map's actors, as a starting point | ## The character On `UTRCCharacterMovementComponent`, `UTRCCharacterMoverComponent` and the **TRC Mover Traversal Events** component, the same answer on every machine: | Call | What it gives | |---|---| | `GetTraversal()` | What the character is doing: None, Vault, Mantle, Climb, Ladder, Hang, Slide, WallRun and the rest | | `IsTraversing()` | Any of them | | `GetTraversalAnimationVariant()` | 0 the main animation, 1 and up the variants | | `GetLadderClimbRate()`, `GetHangShimmyRate()` | -1 to 1, for loops that follow the input | | `GetWallRunSide()` | 1 wall on the right, -1 on the left | | `FindTraversal(Plan)` | Looks without doing anything: kind, path, how long | | `OnTraversalStarted`, `OnTraversalFinished` | Events with the kind | To start one: `TryTraverse()` on the CMC, `RequestTraverse()` on Mover (server only, for AI). On the CMC, **Find Ladder** gives the ladder a jump would grab. For tests and debugging: `GetCorrectionCount()` and `GetLastCorrectionDistance()` on the CMC, `GetRollbackCount()` on Mover. `GetTraversalHandWarp()` gives what the Traversal Hand IK node reads: how far the hands are from the real edge, how much each holds it now, and the edge itself. For an IK or Control Rig of your own. See [Hands on the edge](../animation/#hands-on-the-edge). ## Co-op On the same three components: | Call | What it does | |---|---| | `SetHelping(bool)` | Helping on or off: hold a key for it. Only the owner can ask | | `GetHelpStance()` | None, Boost or ReachDown, the same on every machine | | `OnHelpGiven`, `OnHelpReceived` | Events with the help kind, on the helper and on the one helped | `Can Be Helped By` is an interface the helped character implements: who may help it (a team). See [Co-op](../coop/). ## Settings at runtime Every setting in [Settings](../settings/) is a Blueprint property. On the CMC change **Traversal** on the component directly (Get Traversal, Set Members, set it back). On Mover the settings live in the shared settings object, so the events component has **Get Traversal Settings** and **Set Traversal Settings**. Change them on the server and on the owner together, as you would any movement setting, or the server corrects the owner. ## Ladders, ziplines and ropes | Component | Calls | |---|---| | Ladder | `GetBottom`, `GetUp`, `GetOutward`, `GetFacing`, `GetDistanceAlong`, `GetDistanceSideways`, `GetClimbLocation` | | Zipline | `GetStart`, `GetEndPoint`, `GetLength`, `GetDirection`, `GetClosestPoint`, `GetAllZiplines` | | Rope | `GetAnchor`, `GetBottom`, `GetAllRopes` | Their properties (height, width, end, length, downhill only and so on) are Blueprint read and write. ## Game rules `Can Traverse` and `Choose Traversal Variant` are interfaces your character implements in Blueprint: stamina, a cooldown, a weapon in hand, which animation by height and speed. See [Settings](../settings/#moves-on-and-off) and [Animation](../animation/).