Runtime Advanced Cables
A physics cable and rope toolkit for Unreal Engine. Verlet simulation, surface draping, player interaction, tethering, riding, swinging, climbing, and towing - all from Blueprint.
Quick Start Guide →
Plugin Type Runtime, Editor
C++ Required No
Engine Version 5.4 - 5.7
Dependencies Niagara (built-in engine plugin, default-enabled)
BP Nodes 293 (230 functions, 63 events)
Multiplayer Not officially supported, basic replication enabled
RAC comes with two cable actors, each built on a different solver. Pick the one that fits your use case - most components (cutting, tether, swing, climb, tow, interaction) work with both. Cable Actor also has a level-placed variant, Spline Cable, shaped by a UE spline gizmo at edit time.
Feature Support
| Feature / Component | Cable Actor | Spline Cable | Wrapping Cable |
| Cable Cutting | Yes | Yes | Yes |
| Runtime Pinning | Yes | Yes | No |
| Extend / Retract | Yes | Yes | Yes |
| LOD Tiers | Yes | Yes | Yes |
| World Collision | Yes | Yes | Yes |
| Collision Traces | Yes | Yes | Yes |
| Cable Interaction (grab) | Yes | Yes | Yes |
| Cable Interaction (cut) | Yes | Yes | Yes |
| Cable Interaction (pin) | Yes | Yes | No |
| Tether Component | Yes | Yes | Yes |
| Cable Point | Yes | No | No |
| Pulley | Yes | Yes | No |
| Zipline | Yes | Yes | Yes |
| Climbing | Yes | Yes | Yes |
| Swing | N/A | N/A | N/A |
| Tether Utils | Yes | Yes | No |
| Web Utils | Yes | No | No |
| Geometry Wrapping | No | No | Yes |
| Wrap Anchors | No | No | Yes |
| Cable Debug | Yes | Yes | Yes |
Components & Features
Installation
- Purchase/download RAC from Fab
- In UE, go to Edit > Plugins, search for RAC, enable it
- Restart the editor
- All components are now available in the Add Component menu and Blueprint palette
Placing Cables
There are several ways to get cables into your level. Pick whichever fits your workflow:
| Method | How | Best For |
| Place Actors | Open the Place Actors panel (or right-click the viewport) and search for Cable Actor, Spline Cable, Wrapping Cable, or Zipline Cable. Drag into the viewport, then set AttachStartTo / AttachEndTo in the Details panel to connect endpoints to other actors. | Hand-placed static cables, one at a time |
| Placement Tool | Activate RAC Cable Placement from the Modes dropdown. Click to route cables visually - click-click to chain. | Hand-routing cable runs through a level |
| Cable Points | Add Cable Point Components to actors. Nearby points auto-detect each other and spawn cables on Play. Set one as IsCableParent to flow defaults to the whole group. | Cable networks, webs, procedural setups |
| Runtime spawn | Call SpawnCableBetween() from the Tether Utils library at runtime in Blueprint or C++. | Gameplay-driven cables (grapple, tow, etc.) |
All methods produce the same Cable Actor or Wrapping Cable - they just differ in when and how the cable is created. You can mix and match freely.
Use in your own Blueprints
Cables work the same whether they live in a level or inside another Blueprint. Pick the class that matches the feature set you need, embed it the way that fits your setup, and drive it from Blueprint at runtime.
Pick the class
| Class | Type | Use when you want |
| Cable Actor | Actor | The full feature set: tube mesh, end caps, pin meshes, cutting + regrow, riding, tether and climb integration, distance-scaled thickness. The default choice for hand-placed or spawned cables. |
| Wrapping Cable | Actor | Cables that wrap around world geometry as they move. Same end caps / cutting / riding feature surface as Cable Actor, but section-based simulation with dynamic anchors. No component form - this one is actor-only by design (the anchor system needs actor-level ownership). |
| Verlet Cable | Component | Just the verlet rope physics. Optional built-in spline mesh visuals, but no tube rendering, no end caps, no cut visuals or regrow, no riding or climb integration. Reach for it when you want bare rope simulation on your own actor and plan to render the cable yourself (Niagara, custom mesh, etc.). |
The Cable Actor wraps a Verlet Cable Component internally and layers all the gameplay and rendering on top, so anything the component can do, the actor can also do.
Make your own cable Blueprint
Three patterns, depending on whether your Blueprint is a cable, has a cable, or wants just the rope physics:
| Pattern | How | Use when |
| Subclass the cable |
Right-click in the Content Browser, choose Blueprint Class, then in the Pick Parent Class dialog expand All Classes (or just type in the search box) and pick RAC Cable, RAC Wrapping Cable, RAC Spline, or RAC Zipline Cable. Your Blueprint inherits the full cable - tweak defaults, add your own logic in the Event Graph, spawn or place it like any actor. |
Your Blueprint is a specialized cable. Hero tow cable, themed zipline, custom grapple variant, glowing electric line, etc. |
| Child Actor Component |
Add a Child Actor Component to your existing Blueprint, then set its Child Actor Class to Cable Actor, Wrapping Cable, Spline Cable, or Zipline Cable. The cable's Details panel becomes available on the Child Actor Component; at runtime, reach the cable via Get Child Actor and cast. |
Your Blueprint has a cable as one piece of something larger. Fishing rod actor with rod + cable, crane with arm + cable, prop with hanging chain, etc. |
| Verlet Cable Component |
In the Components panel of your Blueprint, click Add Component and search for Verlet Cable. |
You want bare rope physics only and plan to render the cable yourself (Niagara via RAC Cable Niagara DI, custom mesh built from Get Particle Positions, etc.). |
Why Wrapping Cable can't be added as a component
Wrapping Cable's anchor placement, route tooling, and section-based simulation all assume actor-level ownership. There is no Wrapping Cable Component. To use it in your own Blueprint, subclass it or wrap it in a Child Actor Component.
Control a cable from Blueprint
All cable properties are BlueprintReadWrite; all cable actions are Blueprint nodes. From any actor reference you can:
- Read or change properties at runtime:
Max Cable Length, Gravity Scale, Allow Grabbing, Allow Cutting, Visual Mesh Scale, drift / wind, attach points, LOD distances, etc.
- Call actions:
Set Cable Length, Extend / Retract, Cut Cable At World Position, Pin At World Position, Grab Cable At Point, Spawn Tow Cable, Tether To Cable, etc.
- Bind events:
On Cable Cut, On Active State Changed, On Grabbed / Released, On Tow Break, etc.
None of this needs C++. The included demo project's character Blueprint wires up grab / cut / pull / swing / climb against the cables in the level - inspect it as a working reference.
Collision
How RAC cables interact with world geometry, and how to detect or interact with cables from gameplay.
How it works
The cable component is a USceneComponent driving spline mesh visuals. It has no collision primitive of its own. World geometry is sampled by per-particle sphere sweeps from the cable, and gameplay code talks to cables through the Cable Interaction Component placed on the player or character.
| What you want |
How |
| Cable drapes, wraps, and slides on world meshes |
Per-particle sphere sweeps on the cable's Collision Channel. Configured in the cable's Collision category. |
| Player or weapon trace finds a cable, returns hit point and particle index |
Two paths:
(a) Cable Interaction Component on the player or character. Get Detected Cable returns the cable currently under aim or in range, with hit point and particle index. Recommended for grab / pin / cut input flows.
(b) Native trace collision New - opt in per cable via Enable Trace Collision, then the cable shows up as a hit on the configured channels for line traces, sphere / box / capsule sweeps, multi-traces, and object-type queries. Recover a segment index from Hit.ImpactPoint via Get Closest Point On Cable. Recommended for hitscan weapons, AI line-of-sight, and anything that already runs a trace and expects the cable to be in the result. |
| Cable enters or exits the player's range, gets grabbed, gets cut |
Cable Interaction Component events: On Cable In Range, On Cable Out Of Range, On Cable Grabbed, On Cable Cut. |
| Rigid body bounces off the cable (e.g. a thrown grenade hits the rope and ricochets) |
The cable's particle sweeps will detect the rigid body and the cable can drape or deflect against it. The rigid body's own physics simulation has no primitive to hit on the cable, so it won't bounce off or feel a reaction force. |
Make the cable collide with world geometry
On the cable's details panel, under the Collision category:
- Tick Enable Collision.
- Pick a Collision Channel (default
WorldStatic). The meshes you want the cable to collide with must block that channel.
- Set Collision Radius to the visual thickness of your cable (default 5 units).
Defaults differ between cable types
Cable Actor (Verlet) comes with
Enable Collision off by default.
Wrapping Cable comes with it on. If you placed a Cable Actor and it's falling through the floor, this is the toggle. Both cable types share the same Collision Channel default of
WorldStatic.
For full property reference (Max Traces / Frame, Adaptive Trace Priority, Segment Collision, Collision Friction, Trace Every Substep) see the Cable Actor and Wrapping Cable property pages.
Detect, grab, or cut a cable from gameplay
Place a Cable Interaction Component on the player or character Blueprint. Pick Aim mode for crosshair-based targeting, or Proximity mode for overlap-based detection. The component exposes:
Get Detected Cable - returns the cable, hit point, particle index, and distance currently under aim or in range.
On Cable In Range / On Cable Out Of Range events for proximity / aim entry and exit.
Grab Cable, Release Cable, Pin Nearest Cable, Cut Nearest Cable, sweep cut for slash-cutting.
The included demo project's character Blueprint has this wired to input bindings; copy it as a starting point.
Native trace collision New
Standard UE trace queries can hit a cable directly, without going through the Cable Interaction Component. Covers line traces, sphere / box / capsule sweeps, multi-traces, and object-type queries on the cable's capsule object type (WorldDynamic by default). Useful for hitscan weapons, AI line-of-sight, fishing-rod aim cones, and any system that already runs a trace and expects the cable to show up as a hit.
On the cable's details panel, under Performance | Overlap:
- Confirm Num Overlap Capsules is > 0 (default 4). Trace collision rides on the same capsule pool used for proximity overlap detection - if you've set this to 0 to opt out of overlap broadphase, traces have nothing to hit. The cable will log a one-time runtime warning in this case.
- Tick Enable Trace Collision.
- (Optional) configure Trace Collision Responses. Defaults block
Visibility and Camera, ignore everything else - so toggling the flag never silently blocks pawn movement, weapon physics, or vehicle wheels.
- (Optional) tune Trace Capsule Radius (default 8 units) for trace thickness, and Trace Segments Per Capsule (default 3) for chord-to-curve fidelity. Drop the segments-per-capsule value to 1 for pixel-tight tracing on heavy sags or wraps; raise it (or set to 0) on tendril-style scenes where you have hundreds of cables and broadphase cost matters more than per-cable accuracy.
The trace's Hit.Component is the cable's overlap capsule, not a particle. To recover a segment index, call Get Closest Point On Cable on the cable with Hit.ImpactPoint:
Hit Actor (cast to Cable Actor) -> Get Verlet Cable
-> Get Closest Point On Cable (World Pos = Hit.Impact Point)
-> returns Out Closest Point, Out Segment Index, Out Distance
Works on Cable Actor, Spline Cable, Zipline Cable, and Wrapping Cable. Wrapping Cable's Get Closest Point On Cable lives directly on the actor (it has no internal Verlet component).
Self-trace caveat
If the actor running the trace is also the cable's owner (e.g. a grapple component on the player firing aim traces, a tow component on a vehicle), add the cable actor to
Actors To Ignore on the trace node. Otherwise the cable will block the actor's own trace.
Mid-curve fidelity
Each capsule is a straight chord between two particle samples. With the auto-fit default of 3 segments per capsule the chord stays close to the visible curve; on heavily curved wraps you can drop it to 1 for tightest tracing, at the cost of more broadphase entries (capped at 64 capsules per cable). The included Cable Debug HUD's
Draw Overlap Capsules toggle visualises trace-enabled capsules in orange so you can dial the density visually.
Debugging collision setup
- Show Collision in the viewport (Alt+C in the editor, or Show menu → Collision in PIE). Meshes with no green wireframe have no collision and the cable cannot see them either.
- Cross-check the trace channel. If your meshes use a custom collision profile that ignores
WorldStatic, switch the cable's Collision Channel to Visibility as a quick test. Most default profiles block both.
- Verify mesh collision is enabled. Static meshes set to Collision Enabled: No Collision or to a profile like OverlapAll won't block the cable's traces.
- Cable ignores its own attachments. The cable automatically ignores its owner actor and the actors set in
Attach Start To / Attach End To. If the cable is attached to your character, it won't collide with that character's capsule. Other characters still collide normally.
- Editor preview shows the trace radius. Selecting a cable in the viewport draws blue spheres along the chain at the configured Collision Radius (only when Enable Collision is on).
Tip
On long cables in heavy contact, the cable auto-promotes to per-substep tracing on the active region. If you're seeing collision misses on fast-swinging short cables, tick
Trace Every Substep on the Cable Actor / Verlet Cable.
Cable Cutting
Both cable types - Cable Actors and Wrapping Cables can both be cut at runtime.
Cut any cable at any point at runtime. The original cable keeps the head portion, and a new cable of the same type spawns for the tail with its own physics, visuals, and events. Both halves continue simulating independently with free-falling cut ends.
How It Works
- The Verlet solver truncates the original cable's particles to
[0..CutIndex] and sets FreeEnd = true so the cut end falls naturally
- A new Cable Actor is spawned with the remaining particles
[CutIndex..End], inheriting all visual settings (mesh, material, scale, end caps, flow tiling)
- Existing pins are remapped. Pins on the head stay on the original, pins on the tail transfer to the new cable with corrected indices
OnCableCut fires on both the Verlet component and the Cable actor with references to both halves
Setup
- On your
Cable actor, select the VerletCable child component and set AllowCutting = true
- Optionally set
MinCutParticles on the Cable actor (default 3). Prevents tiny unusable scraps
- Optionally enable
AutoDestroyCutPieces to clean up cut-off pieces after AutoDestroyDelay seconds
- Optionally enable
RegrowAfterCut to have the cable grow back to its original length
Ways to Cut
Sweep Cut (Interaction Component)
Add a
Cable Interaction Component to your character. Call
StartSweepCut() and move the aim or player across cables to slice through them continuously. Cables are cut the moment they enter the sweep radius - perfect for sword slashes, laser beams, or any sweeping motion. Call
StopSweepCut() when done. Fires
OnSweepCableCut for each cable sliced, plus the standard
OnCableCut. Configure
SweepCutRadius and
SweepCutDistance to control the blade size and reach. Works with both Aim and Proximity detection modes.
Single Cut (Interaction Component)
Same
Cable Interaction Component, but for one-at-a-time cuts. Call
CutNearestCable() to find the closest cable, cut it, and fire
OnCableCut with both halves.
Direct (on Cable Actor)
Call
CutCableAtWorldPosition(HitLocation) or
CutCableAtParticle(Index) directly on any
Cable Actor. Returns the new tail cable. Best for line traces, projectile hits, or scripted events.
Low-Level (on Verlet Component)
Call
CutAtParticle(Index) on the
Verlet Cable component directly. Truncates particles in-place without spawning a new actor. Good for beams/lasers or custom cutting logic.
Events
| Source | Event | Parameters |
| Cable Actor | OnCableCut | CutIndex, OriginalCable (head), NewCable (tail) |
| Verlet Cable | OnCableCut | CutIndex |
| Cable Interaction | OnCableCut | OriginalCable, NewCable, CutPoint |
| Cable Interaction | OnSweepCableCut | OriginalCable, NewCable, CutPoint (fires each sweep cut, also fires OnCableCut) |
Auto-Cleanup & Regrow
- Auto-destroy: Enable
AutoDestroyCutPieces on the Cable Actor to automatically clean up cut-off pieces after AutoDestroyDelay seconds (default 5). Set OnlyDestroyUnattached = true (default) to keep pieces that are still connected to something.
- Regrow: Enable
RegrowAfterCut to make the cable grow back to its original length after being cut. The free end extends outward at RegrowSpeed (default 200 u/s) after RegrowDelay seconds (default 1.0). OnCableRegrown fires when complete.
Example Uses
- Sword slash: Bind
StartSweepCut/StopSweepCut to your melee attack. Swing through a room full of cables and slice them all in one motion
- Power lines: Cut cables to disable circuits. Bind
OnCableCut to toggle CableActive on both halves and trigger downstream logic
- Trap wires: Projectile line trace +
CutCableAtWorldPosition = shoot to sever tripwires
- Grapple ropes: Player cuts their own tether mid-swing for a momentum launch
- Puzzle cables: Cut and reconnect cable networks to reroute energy paths
- Destruction: Combine with physics coupling. Cut a cable holding a physics object and watch it fall
- Regenerating vines: Enable
RegrowAfterCut for cables that grow back after being severed
Editor Visualizer
When you select a cable actor (Cable Actor or Wrapping Cable) in the viewport, the editor draws an overlay showing cable state. No configuration needed - it activates on selection.
| Visual |
Color |
Meaning |
| Dashed/solid line along cable |
Cyan |
Expected cable path with catenary sag (droop preview based on CableLength vs endpoint distance) |
| Wireframe sphere at endpoint |
Cyan |
Start endpoint (matches runtime debug) |
| Wireframe sphere at endpoint |
Orange |
End endpoint (matches runtime debug) |
| Double wireframe sphere (inner + outer) |
Same as endpoint |
Free endpoint (FreeStart / FreeEnd is true - particle simulates freely under gravity) |
| Line from endpoint to actor |
Gold |
Attachment indicator - shows offset from target actor origin (only visible when AttachStartOffset / AttachEndOffset is non-zero) |
| Small spheres along cable |
Blue |
Collision radius preview - shows the CollisionRadius sphere sweep size (only visible when EnableCollision is true) |
Tip
For runtime debug visualization (LOD heatmaps, tension, interaction zones, stats HUD), use the
Cable Debug Component instead.
Cable Placement Tool
An interactive editor mode for placing cables directly in the viewport. Activate it from the Modes dropdown (or the Modes toolbar) - look for RAC Cable Placement. The mode provides four tools in its toolbar: Route, Delete, Select, and Wrap.
Route Tool
The main placement tool. Left-click in the viewport to set a start point, then left-click again to place a cable between the two points. The tool chains automatically - after placing a cable, the end point becomes the next start point so you can keep clicking to lay out a cable run.
| Input |
Action |
| Left Click |
Place cable endpoint. First click sets start, second click places cable and starts next chain. |
| Right Click |
Stop chaining. Ends the current cable run without placing a new cable. |
| Scroll Wheel |
Adjust slack while placing. Scroll up for more slack (saggier cable), scroll down for less. |
While hovering between clicks, a catenary preview line shows where the cable will hang. The preview updates in real time as you move the mouse and adjust slack.
Snapping
When SnapToExisting is enabled (default), the cursor snaps to nearby cable endpoints and Cable Point components within the snap radius. This makes it easy to connect cables to existing attachment points or chain off other cables.
Delete Tool
Hover over a cable to highlight it, then left-click to delete it. Works on both Cable Actors and Wrapping Cables.
Select Tool
Two modes of selection depending on where you click:
- Click a Cable Actor - selects that cable and all cables connected to it (follows the chain through shared endpoint actors via BFS). Great for selecting an entire cable run or network for bulk property edits.
- Click a Wrapping Cable - selects that individual cable (wrapping cables are standalone, no chain selection).
- Click empty space - selects every Cable Actor and Wrapping Cable in the level.
Placement Settings
When the Route tool is active, a settings panel appears in the mode's Details panel. These settings apply to all cables placed while they are set.
Appearance
CableMeshStatic MeshMesh for cable segments. Leave empty to use the cable default.
CableMaterialMaterialMaterial for cable segments. Leave empty to use the cable default.
CableMeshScaleVector2DCross-section scale of the cable mesh. Default (0.5, 0.5).
Length
SlackRatiofloatCable length = distance between endpoints * SlackRatio. 1.0 = perfectly taut, 1.2 = 20% slack (default). Scroll wheel adjusts this in real time.
ScrollSlackStepfloatHow much each scroll wheel tick changes the slack ratio. Default 0.05.
Simulation
NumSegmentsint32Simulation segments. 0 = auto-calculate from distance (default).
GravityScalefloatGravity multiplier. 0 = zero-G, 1 = normal (default).
SolverIterationsint32Constraint solver iterations per substep. Higher = stiffer cable. Default 6. (Advanced)
DampingfloatVelocity damping. 0 = none, 1 = full. Lower values mean more swinging. Default 0.1. (Advanced)
SubstepCountint32Substeps per tick. Higher = more stable with fast-moving endpoints. Default 1. (Advanced)
Collision
EnableCollisionboolEnable per-particle collision so cables drape over geometry. Default true.
CollisionRadiusfloatRadius of each particle's collision sphere (world units). Default 5.
Performance
SleepDistancefloatCamera distance at which the cable sleeps. Default 2500.
EnableLODTiersboolEnable multi-tier LOD (Full / Medium / Low / Sleeping). Default true.
Snapping
SnapToExistingboolSnap to existing cable endpoints and Cable Point components when near them. Default true.
SnapRadiusfloatSearch radius for snap detection (world units). Default 100.
Tip
Each cable placed by the tool is a regular
Cable Actor. After placement you can select it and edit any property in the Details panel - the placement settings are just starting defaults.
Tip
For batch cable setups (spider webs, cable networks), use
Cable Point components with auto-connect, or the
Cable Web Utils library function. The placement tool is best for hand-routing individual cables.
Wrapping Cable Placement
The Wrap tool in the Cable Placement mode lets you route Wrapping Cables around geometry by clicking surfaces. Each click adds a wrap anchor point, and the cable is spawned pinned to those points at runtime.
Workflow
Select the Wrap tool from the Cable Placement mode toolbar. Then click surfaces in the viewport to build a cable route.
| Input |
Action |
| First Left Click |
Sets the cable start point. An orange sphere marks the position. |
| Additional Left Clicks |
Adds a wrap anchor at the clicked surface. Yellow spheres mark anchors. You can place as many as you need to route around corners, pillars, and obstacles. |
| Right Click |
Finishes the cable. The cursor position becomes the end point, and the Wrapping Cable is spawned with all anchors pre-seeded. |
| Scroll Wheel |
Adjust slack ratio. Scroll up for more slack (saggier cable), scroll down for less. |
Preview
While routing, committed segments between placed points show in dark blue and the live segment from the last point to the cursor shows in cyan. Each segment displays a catenary curve based on the current slack ratio, so you can see the approximate sag before finishing.
How Anchors Work
Each anchor you place is offset slightly from the surface (by WrapCollisionRadius) and pinned permanently at runtime. These manual anchors are never removed by the auto-unwrap system - the cable stays routed through your clicked points. The runtime wrapping system can still add and remove its own dynamic anchors between your manual ones.
If the cable is attached to an actor at the start point (i.e. you clicked on a movable actor), the cable's start will follow that actor at runtime.
Placement Settings
When the Wrap tool is active, a settings panel appears in the mode's Details panel. These settings apply to the next cable you place.
Appearance
CableMeshStatic MeshMesh for cable segments. Leave empty to use the wrapping cable default.
CableMaterialMaterialMaterial for cable segments. Leave empty to use the wrapping cable default.
CableMeshScaleVector2DCross-section scale of the cable mesh. Default (0.2, 0.2).
Length
SlackRatiofloatCable length = total polyline distance * SlackRatio. 1.0 = perfectly taut, 1.2 = 20% slack (default). Scroll wheel adjusts this in real time.
ScrollSlackStepfloatHow much each scroll wheel tick changes the slack ratio. Default 0.05.
Simulation
NumSegmentsint32Simulation segments. 0 = auto-calculate from total route distance (default).
GravityScalefloatGravity multiplier. 0 = zero-G, 1 = normal (default).
SolverIterationsint32Constraint solver iterations per substep. Higher = stiffer cable. Default 4. (Advanced)
DampingfloatVelocity damping. 0 = none, 1 = full. Default 0.02. (Advanced)
SubstepCountint32Substeps per tick. Higher = more stable with fast-moving endpoints. Default 2. (Advanced)
Wrapping
EnableWrappingboolEnable runtime auto wrap/unwrap detection around world geometry. Default true.
WrapCollisionRadiusfloatCollision radius for wrap detection traces and anchor surface offset. Default 5.
MaxWrapAnchorsint32Maximum number of runtime wrap anchor points. Manual anchors from the tool do not count toward this limit. Default 16.
Collision
EnableCollisionboolEnable per-particle collision so cables drape over geometry. Default true.
CollisionRadiusfloatRadius of each particle's collision sphere. Default 5.
Features
RideableboolMake the cable rideable as a zipline. Default false.
AllowCuttingboolAllow the cable to be cut at runtime. Default false.
Tip
Each cable placed by the Wrap tool is a regular
Wrapping Cable actor. After placement you can select it and edit any property in the Details panel - add end caps, configure tension material, enable Niagara, etc.
Tip
Place anchors on the
edges of obstacles - corners of pillars, edges of walls - for the most natural-looking wraps. The cable sags between anchors with gravity, so you only need anchors where the cable changes direction.
Segments & Tiling
Every RAC cable has two independent segment counts - one for physics, one for visuals. Understanding the difference is key to getting cables that look great without wasting performance.
Simulation Segments (CPU)
NumSegments controls how many particles the Verlet solver simulates. More particles means smoother curves and more accurate physics, but each particle adds CPU cost every frame. A heavy rope bridge might need 40-60 segments for realistic sag, while a short electrical wire can get away with 4-6.
Visual Segments (GPU)
MaxVisualSegments controls how many spline mesh pieces are used to render the cable. This is completely independent of the simulation - you can simulate 50 particles but only render 12 mesh segments. The visual system interpolates between particles to produce a smooth curve regardless.
Each LOD tier can further reduce the visual count:
- Full LOD: Uses
MaxVisualSegments (default 64, or NumSegments if set to 0)
- Medium LOD: Auto halves the Full count (or set
LODMediumVisualSegments manually)
- Low LOD: Auto quarters the Full count, minimum 4 (or set
LODLowVisualSegments manually)
Flow Tiling (UV)
FlowTiling controls how many times the material texture repeats along the cable length. At 1.0 (default), the texture stretches once across the whole cable. At 4.0, it tiles four times. This works because RAC creates a separate Dynamic Material Instance for each visual segment and sets continuous UVOffset / UVScale values so the texture flows seamlessly across all segments.
Tip
The tiling property is named differently per class:
FlowTiling on Cable Actor and Wrapping Cable,
VisualFlowTiling on Verlet Cable Component, and
LinkFlowTiling on Tether Component. They all do the same thing.
Practical Guidelines
| Scenario |
NumSegments |
MaxVisualSegments |
Why |
| Short wire / cord |
4-8 |
0 (match sim) |
Few particles are enough. No need to cap visuals. |
| Background ambient cable |
10-20 |
8-12 |
Player won't examine closely. Save GPU with fewer meshes. |
| Hero rope / bridge |
30-60 |
20-30 |
Smooth physics matters. Visuals can be slightly lower since interpolation fills the gaps. |
| Hundreds of cables (web) |
6-10 |
4-6 |
Scale demands low counts everywhere. Use Cable Point defaults to set once. |
Tip
When using
Cable Point components, segment counts are auto-calculated from distance (sqrt scaling). You only need to tune manually for gameplay-critical cables or when optimizing large cable webs.
Flow Materials
RAC automatically creates Dynamic Material Instances per segment with continuous UV flow. To use this in your materials:
- Add two
ScalarParameter nodes named UVOffset (default 0) and UVScale (default 1)
- Apply them to your V coordinate:
adjustedV = meshV * UVScale + UVOffset
- Use
FlowTiling / VisualFlowTiling / LinkFlowTiling to control how many times the texture repeats along the cable
Tip
Flow is optional. RAC works with any material.
Wind & Drift
Two systems give cables organic ambient motion without any Blueprint logic. Both are per-cable settings on the Verlet Cable Component (or inherited via Cable Point defaults). Wrapping Cables have their own matching Drift and Wind properties with the same behavior.
World Wind
Place a Wind Directional Source actor in the level and enable UseWorldWind on any cable. The cable samples the scene wind each frame and pushes particles accordingly. Per-particle Perlin noise (WindTurbulence) adds flutter so the cable ripples instead of just leaning.
Simulation | Wind
UseWorldWindboolSample Wind Directional Source actors and apply to cable particles. Sampled once per cable per frame at the cable midpoint. Default false.
WorldWindScalefloatMultiplier on the wind force. 1 = full strength. Default 1.0.
WindTurbulencefloatPer-particle noise modulation. 0 = uniform push (cable just leans), 1 = full turbulence (cable ripples and flutters). Default 0.5, range 0-1.
WindTurbulenceFrequencyfloatHow fast the turbulence pattern changes. Lower = slow rolling gusts, higher = rapid fluttering. Default 1.5.
Ambient Drift
Small Perlin-based forces that give cables gentle ambient movement - perfect for underwater, sci-fi, or organic environments. No Wind Source needed; drift is self-contained per cable.
Simulation | Drift
DriftStrengthfloatForce strength of ambient drift. 0 = disabled. Start with 1-5 for subtle movement. Default 0.
DriftFrequencyfloatHow fast drift direction changes (Hz). Lower = slow, gentle undulation. Higher = rapid direction changes. Default 0.3.
DriftSmoothnessfloatHow smooth drift waves are along the cable. Higher = long, smooth waves where neighbors move together. Lower = each particle drifts independently. Default 8.0, range 1-50. Advanced
LockDriftXboolDisable drift on the X axis. Default false.
LockDriftYboolDisable drift on the Y axis. Default false.
LockDriftZboolDisable drift on the Z axis. Default false.
Tip
Wind and drift stack naturally. Use drift for constant ambient motion and wind for directional, weather-driven movement. For Cable Point networks, set
CableDriftStrength and
CableDriftFrequency in the Cable Parent defaults to apply drift to all cables at once.
Cable Actor RAC Cable
The cable actor. Verlet physics with spline mesh visuals, overlap capsules, end caps, pin indicator meshes, and gameplay active/inactive state.
BP spawn-time pins (v1.0.3): every actor-level authoring property below is
ExposeOnSpawn. In a Blueprint EventGraph, right-click and choose
Spawn Actor From Class → RAC Cable and you'll get spawn pins for visuals, interaction toggles, cutting, regrow, LOD, ride settings, and more - no two-step
BeginDeferredActorSpawn → Set X → FinishSpawningActor needed for actor-level authoring. Component-level simulation parameters (on the inline
Verlet Cable component) still need the deferred-spawn pattern or post-spawn setters -
ExposeOnSpawn doesn't recurse into auto-created components.
Cable
SceneRootScene ComponentRoot scene component. Read-Only
VerletCableVerlet Cable ComponentThe Verlet physics simulation component. Edit cable parameters (length, segments, gravity, collision, etc.) directly on this. Read-Only in Blueprint.
Interaction
CableActiveboolGameplay flag. Does not affect simulation or visuals. Your BP decides consequences. Default true.
ClimbableboolWhether this cable can be climbed via Climb Component. Default false.
AllowTetheringboolAllow this cable to be tethered by the Cable Interaction Component's AutoTetherOnDetect feature. When false, auto-tether detection skips this cable. Manual TetherToCable() still works. Default false.
AllowGrabbingboolWhether players can grab this cable via CableInteractionComponent. Forwarded to VerletCable at BeginPlay. Default true.
AllowPinningboolWhether this cable can be pinned at runtime. When false, all pin functions are no-ops. Forwarded to VerletCable at BeginPlay. Default false.
AllowUnpinningboolWhether pins can be removed at runtime. Forwarded to VerletCable at BeginPlay. Default true.
PinLockDelayfloatSeconds after BeginPlay before pinning auto-locks. 0 = never auto-lock. Lets editor-placed systems pin on init, then lock out new pins. Default 0.
Performance | Overlap
OverlapCapsuleRadiusfloatOverlap detection zone radius for capsules. Used only when NumOverlapCapsules is non-zero. Default 500.
NumOverlapCapsulesIntegerNumber of overlap capsules along the cable. Only needed for the Cable Interaction Component's Proximity detection mode and Auto Tether On Detect. Decorative cables (tendrils, ceiling wires, background ambience), cables interacted with via Aim detection, and cables tethered only through explicit Tether To Cable calls should set 0 to skip the per-frame broadphase cost entirely. Default 4, range 0-20. Note: Enable Trace Collision shares this capsule pool - 0 also disables trace hits regardless of the trace flag. Advanced
Enable Trace CollisionboolNewWhen on, the cable's overlap capsules respond to UE trace queries directly (line traces, sphere / box / capsule sweeps, multi-traces, and object-type queries). Hit results return the capsule component; use Get Closest Point On Cable with Hit.ImpactPoint to recover a segment index. Default off keeps prior behavior (overlap events only). Requires NumOverlapCapsules > 0 - this flag rides on the overlap capsule pool.
Trace Collision ResponsesCollision Response ContainerNewPer-channel response when Enable Trace Collision is on. Defaults block Visibility and Camera, ignore everything else so toggling the flag never silently blocks pawn movement or weapon physics.
Trace Capsule RadiusfloatNewCapsule radius used only when Enable Trace Collision is on. OverlapCapsuleRadius (default 500) is sized for proximity-overlap detection and is far too large for trace fidelity; this lets the same capsules serve both purposes. Default 8.
Trace Segments Per CapsuleIntegerNewAuto-grows capsule count so each capsule covers at most this many particle segments when trace is on. Tighter values follow the cable's visible curve more closely at the cost of more broadphase entries. Default 3, range 0-16; 1 = pixel-tight, 0 = disable auto-fit and use NumOverlapCapsules as-is. Hard-capped at 64 capsules per cable. Advanced
Appearance
CableMeshStatic MeshMesh per segment. Default SM_RAC_HollowCylinder (included with plugin).
CableMaterialMaterialMaterial for all cable segments (slot 0). Default MI_RAC_CableType01. Supports UVOffset/UVScale scalar params for flow tiling.
AdditionalCableMaterialsMaterial ArrayMaterials for additional mesh slots (slot 1, 2, ...) when CableMesh has multiple material sections. Empty = no extra slots.
CableMeshScaleVector 2DCross-section scale. Default (0.2, 0.2).
FlowTilingfloatUV flow tiling. Default 1.0.
CastShadowboolCast shadow from cable meshes. Default false.
ReceiveDecalsboolWhether cable segments, end caps, and pin meshes receive decals. Default true.
Appearance | Tension Material
DriveMaterialTensionboolAuto-feed the cable's tension ratio (0-1) into a scalar material parameter each tick. Material needs a matching ScalarParameter. Default false.
TensionMaterialParameterNameNameName of the scalar parameter receiving the tension ratio. Default "Tension". Only used when DriveMaterialTension is true.
TensionRemapMinfloatTension ratio that maps to 0 in the material. Set to resting tension (e.g. 0.65 for a droopy cable). Default 0, range 0-1. Only used when DriveMaterialTension is true.
TensionRemapMaxfloatTension ratio that maps to 1 in the material. Default 1.0, range 0.01-2.0. Only used when DriveMaterialTension is true.
TensionCurvefloatResponse curve exponent applied after remap. <1 = kicks in sooner (more sensitive), >1 = ramps up later (more gradual). Default 1.0, range 0.1-5.0. Only used when DriveMaterialTension is true.
Appearance | Distance Scale
DistanceScaleFactorfloatScale cable thickness based on camera distance to prevent sub-pixel disappearance. 0 = disabled. Default 0, range 0-5.
MinDistanceScalefloatMinimum thickness multiplier (floor for distance scaling). Default 1.0, range 1-20. Only used when DistanceScaleFactor > 0.
MaxDistanceScalefloatMaximum thickness multiplier (ceiling for distance scaling). Default 5.0, range 1-20. Only used when DistanceScaleFactor > 0.
DistanceScaleReferencefloatReference distance at which CableMeshScale is used unmodified. 0 = auto (2% of cable length, min 500). Default 0. Only used when DistanceScaleFactor > 0. Advanced
End Caps
EndCapMeshStatic MeshMesh at cable endpoints.
EndCapMaterialMaterialMaterial for end caps.
EndCapScaleVectorEnd cap scale. Default (1,1,1).
EndCapRotationOffsetRotatorRotation offset for end cap meshes.
SealCapMeshStatic MeshMesh to seal hollow cable ends at free or cut endpoints. Default SM_RAC_HollowCylinder_CAPPED (included with plugin). Set to None to disable.
SealCapMaterialMaterialMaterial for seal cap meshes. Default MI_RAC_CableType06.
SealCapInsetfloatHow far seal caps push into the cable (along cable direction). Makes them inline seals rather than flush end caps. Default 5.
Pin Visuals
PinMeshStatic MeshMesh placed at pin positions. Auto-created/destroyed.
PinMaterialMaterialMaterial for pin meshes.
PinMeshScaleVectorPin mesh scale. Default (1,1,1).
PinMeshCollisionboolEnable collision on pin meshes so they block traces and overlap. Default true.
PinMeshCollisionProfileFCollisionProfileNameCollision profile for pin meshes. Only used when PinMeshCollision is true.
Rideable
Tip
For a pre-configured zipline that ticks Rideable=true and ships with rope visuals, place a
Zipline Cable instead. Both classes share the props below; defaults differ.
RideableboolWhether this cable is rideable. Default false on Cable Actor (true on Zipline Cable).
RideSpeedfloatBase travel speed along the cable (cm/s). Default 800.
RideHangDistancefloatHow far below the cable the rider hangs (cm). In pendulum mode this is the rope length. Default 350.
RideStiffnessfloatSpring stiffness pulling the rider toward the hang point. Default 15. Ignored when PendulumRide is true.
RideGravityScalefloatGravity scale during the ride. Default 0.3, range 0-1. In pendulum mode, full gravity (1.0) is used instead.
PendulumRideboolRider swings freely like a pendulum below the ride point instead of being held by a spring. Default false on Cable Actor (true on Zipline Cable).
PendulumRideAirDragfloatAir drag during pendulum ride. Default 0.02, range 0-2. Only used when PendulumRide is true.
RideAutoDirectionboolAutomatically detect ride direction: player rides toward whichever cable end is farther away. Default true.
RideGravityInfluenceboolScale speed by slope: downhill = faster, uphill = slower. Default true.
RideSlowAtEndsboolDecelerate near the destination end for a smooth stop. Default true.
ShowRideTetherboolShow a visible tether rope from the rider to the cable while riding. Requires the riding character to have a Tether Component. To adjust the rope origin, camera clipping, or nozzle, configure PlayerAttachOffset, PlayerNozzleParticles, and PlayerBodyRadius on the rider's Tether Component (Tether and Tether|Nozzle categories). Default true.
RideSlideSpeedfloatSpeed for manual slide input while riding (cm/s at full input). Lets the player speed up, slow down, or reverse while riding. Default 500.
Performance
MaxVisualSegmentsIntegerMaximum spline mesh segments at Full LOD. 0 = use all simulation particles. Default 64.
VisualUpdateIntervalfloatVisual and overlap capsule update interval. 0 = every frame. 0.033 = ~30fps. Default 0. Advanced
LODMediumVisualSegmentsIntegerVisual segments at Medium. 0 = auto (half). Default 0. Advanced
LODLowVisualSegmentsIntegerVisual segments at Low. 0 = auto (quarter of Full, min 4). Default 0. Advanced
Performance (Forwarded to VerletCable)
SleepDistancefloatCamera distance at which the cable pauses simulation. 0 = never sleep. Default 0.
EnableLODTiersboolEnable graduated LOD. Default false.
LODMediumDistancefloatMedium tier distance. Default 0.
LODLowDistancefloatLow tier distance. Default 0.
HideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Default true.
HideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Default true.
DisableShadowsAtLowLODboolDisable shadow casting at Low/Sleeping LOD to save shadow map draw calls. Shadows restore at Medium/Full. Default true.
SleepAttachedBodiesboolPut attached physics bodies to sleep when the cable sleeps, wake them when it wakes. Off by default - enabling can break gameplay objects (e.g. towed vehicles) that need to keep simulating. Default false. Advanced
SleepSolverIterationsIntegerSolver iterations when sleeping. 0 = fully frozen (cheapest). Default 0. Advanced
SettleTimefloatSeconds before sleep is allowed (lets cable settle into drape shape). Default 0. Advanced
UseSimulatedEditorPreviewboolWhen true, the editor viewport preview runs a mini Verlet simulation each tick (gravity, per-particle sphere sweeps, distance constraints) so the preview shape matches PIE - including drape over obstacles and gravity-correct catenary depth. Costs noticeably more in scenes with many cables. When false (default), the preview is a fast static catenary that ignores obstacles - the runtime cable still simulates correctly, only the preview shape is approximate. Toggle on per-cable for hero ropes that need an honest preview. Default false. Advanced
Functions
Forwards to VerletCable component.
Convenience wrapper for VerletCable's closest point query.
Attach the cable START to an actor, optionally at a socket with an offset.
Set the cable START to a fixed world position.
Release the cable START to simulate freely.
Attach the cable END to an actor, optionally at a socket with an offset.
Set the cable END to a fixed world position.
Release the cable END to simulate freely.
Note
Access the full solver API through the
VerletCable property (BlueprintReadOnly).
Extend / Retract Functions
Begin extending the cable at ExtendRate. Forwards to VerletCable.
Stop extending. Forwards to VerletCable.
Begin retracting the cable at RetractRate. Forwards to VerletCable.
Stop retracting. Forwards to VerletCable.
One-shot length change. Positive = extend, negative = retract. Forwards to VerletCable.
Whether the cable is currently extending. Pure.
Whether the cable is currently retracting. Pure.
Active State Functions
Set active state. Only broadcasts events when state actually changes.
Query current active state.
Active State Events
Fires when cable becomes active.
Fires when cable becomes inactive.
Rideable Functions
These live on Cable Actor itself - Rideable=true on a plain Cable Actor gets you everything Zipline Cable does. See the Zipline section for the same UI on the pre-configured subclass.
Start riding this cable. Returns false if not rideable or character is invalid.
Reverse the ride direction mid-ride. Does nothing if not currently riding.
Apply manual slide input while riding. Positive = speed up / forward, negative = slow down / reverse. Clamped to [-1, 1]. Call each tick from input.
Get the character currently riding this cable (null if nobody).
Static. Check if a character is currently riding any cable in the world.
Static. Find the cable a character is currently riding (null if not riding).
Static. Check if the local player is currently riding any cable.
Static. Stop the local player's cable ride. Does nothing if not riding.
Static. Reverse the local player's ride direction. Does nothing if not riding.
Static. Apply slide input to the local player's current ride. Convenience for demo/prototype input handling.
Fires when a character starts riding this cable.
Fires when riding ends on this cable.
Cutting
Cutting
AllowCuttingboolWhether this cable can be cut at runtime via CutCableAtParticle / CutCableAtWorldPosition. Default false.
CutImpulseStrengthfloatRandom velocity applied at the cut point for a natural snap effect. Default 10. Advanced
MinCutParticlesIntegerMinimum particles each piece must have after a cut. Prevents tiny scraps. Default 3. Advanced
CutOffMaterialMaterialMaterial applied to the cut-off tail cable (slot 0). Default MI_RAC_CableType02. Set to None to keep the same CableMaterial. Advanced
CutOffAdditionalMaterialsMaterial ArrayAdditional materials for the cut-off tail cable (slot 1, 2, ...). Empty = keep existing AdditionalCableMaterials. Advanced
PostCutMaterialMaterialMaterial the remaining head cable switches to after being cut (slot 0). Default MI_RAC_CableType02. Set to None to keep existing CableMaterial. Advanced
PostCutAdditionalMaterialsMaterial ArrayAdditional materials the remaining head cable switches to after being cut (slot 1, 2, ...). Empty = keep existing AdditionalCableMaterials. Advanced
AutoDestroyCutPiecesboolAutomatically destroy cut-off cable pieces after a delay. Prevents rope clutter. Default false.
AutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
OnlyDestroyUnattachedboolOnly auto-destroy cut pieces where neither end is attached to another actor. Default true.
Cutting | Regrow
RegrowAfterCutboolRegrow the cable back to its original length after being cut. The free end extends outward over time. Default false.
RegrowSpeedfloatHow fast the cable regrows (units/sec). Default 200.
RegrowDelayfloatSeconds to wait before regrowing starts. Default 1.0.
RegrowToInitialLengthboolAlways regrow to the cable's initial length (at BeginPlay), even if cut multiple times. Default true.
RegrowTowardAttachmentboolWhen regrowing, drive the free end toward the original attachment point and reattach on arrival. Looks like a tendril reaching back to reconnect. Only applies when the cable had an end attachment before the cut. Default false.
PersistRegrowAttachmentboolKeep the stored attachment target when re-cut during regrow. The cable remembers where it was heading and keeps seeking. When false, re-cutting while reconnecting forgets the target. Default false. Advanced
RestoreMaterialOnRegrowboolRestore the original cable material when regrow completes. Only relevant when PostCutMaterial is set. Default true.
Split the cable. Original keeps particles [0..Index], a new cable actor is spawned for the tail. Returns the new cable.
Convenience wrapper. Finds the nearest particle to the world position and calls CutCableAtParticle.
Fires when this cable is cut. OriginalCable = head piece, NewCable = spawned tail piece.
Whether the cable is currently regrowing after being cut.
Fires when the cable finishes regrowing to its original length after a cut.
Wrapping Cable RAC Wrapping Cable
A standalone cable actor that dynamically wraps around world geometry under tension.
Uses section-based simulation: wrap anchors pin the cable to surfaces, with independent
verlet chains between them for natural sag. Tight sections stay straight, slack sections
drape with gravity.
Not a component
Wrapping Cable is a standalone actor, not a component.
It does
not use the Verlet Cable Component internally - it has its own
section-based solver. Place it in the level like any other actor.
Shared Features
Both cable types support cutting, tethering, sliding, zipline riding, extend/retract, Niagara integration, drift, wind, tension materials, and climbing. Wrapping Cables additionally wrap around geometry. Cable Actors additionally support beam effects, runtime pinning, Cable Points, Pulley, and Cable Web. See the
feature support table for details.
BP spawn-time pins (v1.0.3): every actor-level authoring property is ExposeOnSpawn. Spawn Actor From Class → RAC Wrapping Cable exposes pins for visuals, wrapping settings, attachments, pull back, cutting, ride, Niagara, and more in one go.
Properties
Simulation
NumSegmentsIntegerMinimum number of simulation segments (particles = segments + 1). Higher = smoother sag. Default 20, range 2-100. Acts as a minimum when TargetSegmentLength is set; particle count auto-grows past this for long cables.
CableLengthfloatTotal rope length in world units. Default 200.
TargetSegmentLengthfloatTarget spacing between particles (units). When > 0, particle count auto-grows with CableLength to maintain this spacing, capped by MaxParticlesPerCable. Lower = denser cable, more CPU. Default 0 = disabled (NumSegments is the exact particle count, matching v1.0.1 behavior). Set to ~50 on long auto-extending cables that need to stay responsive as they grow.
MaxParticlesPerCableIntegerHard cap on particles per cable. Very long cables (1000m+) hit this cap and segments grow longer than TargetSegmentLength rather than spawning unbounded particles. Default 2000. Advanced
DampingfloatVelocity damping. 0 = none, 1 = full stop each frame. Default 0.02.
GravityScalefloatGravity multiplier. 0 = no gravity. Default 1.0.
SolverIterationsIntegerConstraint solver iterations per substep. Higher = stiffer cable. Default 4.
SubstepCountIntegerPhysics substeps per tick. Higher = more stable at speed. Default 2.
PreventStretchingboolInextensible (Rigid Length) - Segments can go slack but cannot stretch beyond rest length. Like a chain: folds but never elongates. Does NOT push attached actors. Default false.
Drift
DriftStrengthfloatPerlin noise displacement amplitude. 0 = no drift. Gives cables organic sway. Default 0.
DriftFrequencyfloatTemporal frequency of the drift noise. Higher = faster sway. Default 1.0.
DriftSmoothnessfloatSpatial smoothness. Higher = adjacent particles drift together. Default 5.0.
LockDriftXboolDisable drift on the X axis. Default false.
LockDriftYboolDisable drift on the Y axis. Default false.
LockDriftZboolDisable drift on the Z axis. Default false.
Wind
UseWorldWindboolSample WindDirectionalSource actors and apply their force to the cable. Default false.
WorldWindScalefloatScale factor applied to sampled wind force. Default 1.0.
WindTurbulencefloatRandom noise modulation on top of wind. 0 = steady wind. Default 0.3.
WindTurbulenceFrequencyfloatFrequency of wind turbulence noise. Default 1.0.
Attract Point
AttractPointVectorWorld-space point to pull all particles toward. Default (0,0,0).
AttractStrengthfloatForce strength pulling particles toward AttractPoint. 0 = off. Default 0.
Rigid Endpoints
StartRigidParticlesIntegerNumber of particles at cable START held stiff in a line. Creates a rigid nozzle section emerging from the start attachment. Only affects the outer section before the first wrap anchor. Default 0, range 0-6.
EndRigidParticlesIntegerNumber of particles at cable END held stiff in a line. Creates a rigid nozzle section emerging from the end attachment. Only affects the outer section after the last wrap anchor. Default 0, range 0-6.
RigidStiffnessfloatHow strongly rigid particles are pulled toward the target line. 0 = no effect, 1 = fully rigid. Soft constraint with automatic falloff. Default 0.8, range 0-1.
RigidFollowsAttachmentboolWhen true, rigid direction follows the attached actor/component/socket rotation. When false, uses the manual direction vectors below. Default true.
StartRigidDirectionVectorManual world-space direction for the start rigid section. Zero = auto from cable tangent. Only used when RigidFollowsAttachment is false.
EndRigidDirectionVectorManual world-space direction for the end rigid section. Zero = auto from cable tangent. Only used when RigidFollowsAttachment is false.
Wrapping
EnableWrappingboolEnable automatic wrap/unwrap detection. When off, cable sags freely. Default true.
WrapCollisionRadiusfloatCollision radius for wrap detection traces. Also offsets wrap anchors from surfaces. Default 5.0.
WrapCollisionChannelCollision ChannelCollision channel for wrap detection traces. Default Visibility.
MaxWrapAnchorsIntegerMaximum number of wrap anchors. Prevents runaway wrapping on complex geometry. Default 16, range 1-100.
MinWrapAnchorSpacingfloatMinimum distance between a new wrap anchor and existing endpoints/anchors. Lower = more precise wrapping around tight corners. Default 15.0.
MinWrapSectionLengthfloatMinimum section length to consider for wrap detection. Sections shorter than this are skipped. Default 20.0. Advanced
FreezeAtMaxAnchorsboolHard Freeze at Max Anchors - Hard-lock grab point and endpoints when MaxWrapAnchors reached. Extending blocked. Mutually exclusive with Soft Limit at Max Anchors. Default true.
PullBackAtMaxAnchorsboolSoft Limit at Max Anchors - Apply spring forces instead of freezing when MaxWrapAnchors reached. Softer, allows movement within limits. Mutually exclusive with Hard Freeze at Max Anchors. Default false.
WrapOnTopSurfacesboolAllow the cable to create wrap anchors on upward-facing (floor-like) surfaces. When false, surfaces with normals pointing mostly upward (> ~45 deg) are skipped and the cable drapes over them via particle collision instead. Enable this to wrap on top of meshes like tables, ledges, and props. Default true.
WrapStickinessfloatHow reluctant wrap anchors are to release when the cable straightens. 0 = loose (release early), 0.5 = default (release on clear line-of-sight), 1 = sticky (hold until nearly straight). Lower for free-flowing ropes, higher for vines or cables that cling. Default 0.5, range 0-1. Advanced
SlidingWrapAnchorsboolWrap anchors track the natural contact point as the cable slides across a curved surface (cylinder, sphere, smooth contour). Without this, an anchor is pinned at the position where it was first detected and only updates via unwrap-then-rewrap, which pops visibly when an attached endpoint is dragged around the wrapped object. Also requires 8 consecutive frames of clear line-of-sight before unwrapping when on, so a one-frame slack at a direction reversal doesn't trigger an unwrap-then-rewrap cycle. Recommended when Pull Back at Max Length is enabled. Default false.
WrapAnchorSlideRatefloatMaximum distance (units/sec) a sliding wrap anchor can travel toward its new contact point. Caps how fast a slide can react so the anchor can't teleport across the wrapped surface if the line-trace hit point jumps (e.g. on non-convex shapes). Raise for fast-moving endpoints, lower for steadier anchors. Only used when Sliding Wrap Anchors is on. Default 500.
IgnoreOtherCablesboolAutomatically ignore all other Wrapping Cable actors (and their attachment targets) in wrap detection traces. Prevents cables from wrapping around each other's endpoint actors. Default true.
WrapIgnoreActorsActor ArrayAdditional actors to ignore during wrap detection and particle collision traces.
InitialWrapAnchorsInitial Wrap Anchor ArrayPre-placed wrap anchor points from the editor route tool. Cable initializes already routed through these points. Cleared after initialization. Each entry has Position (FVector), SurfaceNormal (FVector), and WrappedActor (Actor). Advanced
Collision
EnableCollisionboolEnable per-particle sphere traces so the cable drapes over world geometry. Default true.
CollisionRadiusfloatRadius of each particle's collision sphere. Default 5.0.
CollisionChannelCollision ChannelTrace channel for particle world collision. Default WorldStatic.
MaxCollisionTracesPerFrameIntegerMax Collision Traces / Frame - 0 (default) = trace every particle every substep, matches v1.0.1 quality. Set 8-16 to spread traces across frames (round-robin with adaptive priority) for performance on very long cables - tradeoff is that idle particles share the budget and adjacent contact normals can drift slightly between substeps, which can show as micro-twitch on dense cables. Auto-bypassed while grabbed and during the first ~10 substeps after a section rebuild. Pure visual / perf knob - leave at 0 unless you have ungrabbed long cables. Advanced
AdaptiveTracePriorityboolAdaptive Trace Priority - When MaxCollisionTracesPerFrame > 0, spend the trace budget on particles that need it most: in-contact, fast-moving, or starved (untraced for many substeps). Quality-preserving for long cables - without it, contact regions get stale normals while the budget round-robins past idle particles. Small overhead for priority sorting. Default true. Advanced
CollisionFrictionfloatSurface friction when sliding on geometry. 0 = frictionless, 1 = full stop. Default 0.3. Advanced
SegmentCollisionboolLine-trace each segment between adjacent particles to catch geometry crossings that per-particle sphere sweeps miss. Off by default - it can over-react when a cable is dragged across surfaces (each contact triggers a hard repel that compounds across substeps). Enable for use cases where the cable moves through open space and thin-wall tunneling is the primary concern. Known limitation: combining SegmentCollision with auto-extend can degrade wrap detection - leave off on auto-extending cables. Default false.
Attachments
AttachStartToActor ReferenceActor to attach cable start to. Null = this actor's location.
AttachStartOffsetVectorOffset from the start actor's origin. With a socket, the offset is local to that socket transform. Without a socket, the offset is added in world-space to the attached actor's location. With no AttachStartTo, falls back to this Wrapping Cable's transform-rotated local offset. Default (0,0,0).
AttachEndToActor ReferenceActor to attach cable end to. Null = this actor's location + AttachEndOffset.
AttachEndOffsetVectorOffset from the end actor's origin. With a socket, the offset is local to that socket transform. Without a socket, the offset is added in world-space to the attached actor's location. With no AttachEndTo, falls back to this Wrapping Cable's transform-rotated local offset. Default (200, 0, 0).
AttachStartSocketNameSocket or bone name on the start actor's mesh. None = use actor origin + offset.
AttachEndSocketNameSocket or bone name on the end actor's mesh. None = use actor origin + offset.
FreeStartboolWhen true, the cable start simulates freely instead of being pinned to AttachStartTo. Used by the cutting system for cut endpoints. Default false.
FreeEndboolWhen true, the cable end simulates freely instead of being pinned to AttachEndTo. Used by the cutting system for cut endpoints. Default false.
Performance | Overlap
OverlapCapsuleRadiusfloatRadius of overlap capsules placed along the cable for overlap detection. Used only when NumOverlapCapsules is non-zero. Default 500.
NumOverlapCapsulesIntegerNumber of capsule components placed along the cable for overlap detection. Only needed for the Cable Interaction Component's Proximity detection mode and Auto Tether On Detect. Decorative cables (tendrils, ceiling wires, background ambience), cables interacted with via Aim detection, and cables tethered only through explicit Tether To Cable calls should set 0 to skip the per-frame broadphase cost entirely. Default 4, range 0-20. Note: Enable Trace Collision shares this capsule pool - 0 also disables trace hits regardless of the trace flag. Advanced
Enable Trace CollisionboolNewWhen on, the wrapping cable's overlap capsules respond to UE trace queries directly (line traces, sphere / box / capsule sweeps, multi-traces, and object-type queries). Hit results return the capsule component; use Get Closest Point On Cable with Hit.ImpactPoint to recover a segment index. Default off keeps prior behavior (overlap events only). Requires NumOverlapCapsules > 0 - this flag rides on the overlap capsule pool.
Trace Collision ResponsesCollision Response ContainerNewPer-channel response when Enable Trace Collision is on. Defaults block Visibility and Camera, ignore everything else so toggling the flag never silently blocks pawn movement or weapon physics.
Trace Capsule RadiusfloatNewCapsule radius used only when Enable Trace Collision is on. OverlapCapsuleRadius (default 500) is sized for proximity-overlap detection and is far too large for trace fidelity. Default 8.
Trace Segments Per CapsuleIntegerNewAuto-grows capsule count so each capsule covers at most this many particle segments when trace is on - critical on wrap curves where chord-through-curve is most visible. Default 3, range 0-16; 1 = pixel-tight, 0 = disable auto-fit (falls back to NumOverlapCapsules with the overlap default of 8 segments per capsule). Hard-capped at 64 capsules per cable. Advanced
Appearance
CableMeshStatic MeshMesh for cable spline segments. Must be set for cable to render.
CableMaterialMaterialMaterial for cable segments (slot 0). Null = mesh default.
AdditionalCableMaterialsMaterial ArrayMaterials for additional mesh slots (slot 1, 2, ...) when CableMesh has multiple material sections. Empty = no extra slots.
CableMeshScaleVector 2DCross-section scale (cable thickness). Default (0.2, 0.2).
FlowTilingfloatHow many times the flow texture tiles along the cable. 1 = one full pass. Default 1.0.
CastShadowboolWhether cable segments cast shadows. Default false.
ReceiveDecalsboolWhether cable segments receive decals. Default true.
DriveMaterialTensionboolAutomatically feed the cable's tension ratio (0-1) into a scalar material parameter each tick. Default false.
TensionMaterialParameterNameNameName of the scalar parameter on the cable material that receives the tension ratio. Default "Tension".
TensionRemapMinfloatTension ratio that maps to 0 in the material. Default 0.0, range 0.0-1.0.
TensionRemapMaxfloatTension ratio that maps to 1 in the material. Default 1.0, range 0.0-2.0.
TensionCurvefloatResponse curve exponent applied after remap. <1 = kicks in sooner (more sensitive to slack), >1 = ramps up later (more gradual). Default 1.0, range 0.1-5.0.
DistanceScaleFactorfloatScale cable thickness based on camera distance to prevent sub-pixel disappearance. 0 = disabled. Default 0.0.
MinDistanceScalefloatMinimum thickness multiplier (floor for distance scaling). Default 1.0.
MaxDistanceScalefloatMaximum thickness multiplier (ceiling for distance scaling). Default 5.0.
DistanceScaleReferencefloatReference distance at which CableMeshScale is used unmodified. 0 = auto. Default 0.0. Advanced
End Caps
EndCapMeshStatic MeshMesh for cable endpoints (connector/plug). Null = no end caps.
EndCapMaterialMaterialMaterial for end cap meshes.
EndCapScaleVectorScale of the end cap meshes. Default (1, 1, 1).
EndCapRotationOffsetRotatorRotation offset on top of auto-orientation. Default (0, 0, 0).
SealCapMeshStatic MeshMesh to seal hollow cable ends at free/cut endpoints. Only appears when FreeStart/FreeEnd is true and no EndCapMesh is set.
SealCapMaterialMaterialMaterial for seal caps.
SealCapInsetfloatHow far seal caps are pushed into the cable along its direction. Default 5.0.
Anchor Visuals
AnchorMeshStatic MeshMesh placed at each wrap anchor point. Null = no anchor visuals.
AnchorMaterialMaterialMaterial for anchor meshes. Null = mesh default.
AnchorMeshScaleVectorScale of anchor meshes. Default (1, 1, 1).
Active State
CableActiveboolWhether this cable is "active" (powered, energized, etc). Purely a gameplay flag. Category "Simulation". Default true.
Extend/Retract
ExtendRatefloatExtension speed in units/sec. Used by both auto-extend and manual StartExtending(). Default 0.
RetractRatefloatRetraction speed in units/sec. Used by both auto-retract and manual StartRetracting(). Default 0.
MaxCableLengthfloatMaximum cable length. 0 = unlimited. Default 0.
MinCableLengthfloatMinimum cable length. 0 = unlimited. Default 0.
PullBackAtMaxLengthboolPull Back at Max Length - When CableLength reaches MaxCableLength, apply the same pull-back forces as Soft Limit at Max Anchors - constrains the grabbing character and attached endpoint actors so they can't drag the chain past the hard cap. Without this, MaxCableLength only stops the internal length number from growing; the player keeps walking and the chain over-stretches. Off by default for back-compat. Default false.
SmoothExtendRestLengthboolRamp the per-segment rest length across solver substeps while the cable is extending or retracting, instead of applying the change in a single step at the start of each tick. Without this, parts of the cable resting on a surface (floor, beam, anything draped) can briefly pop while the cable changes length. Costs nothing when the cable isn't changing length. Default false.
Extend/Retract | Auto Length
AutoLengthboolAuto-set CableLength to match the taut path through wrap anchors each tick. Cable stays taut through wraps and grab. Overrides Auto Extend / Auto Retract. Default false.
AutoLengthMultiplierfloatMultiplier on the taut path. 1.0 = perfectly taut, 1.1 = 10% slack. Default 1.0, range 1.0-3.0.
Extend/Retract | Auto Extend
AutoExtendboolAutomatically grow CableLength when the path through wrap/grab anchors approaches CableLength. Default false.
TensionThresholdfloatRaw tension ratio (taut path / CableLength) that triggers extension. Default 0.9.
Extend/Retract | Auto Retract
AutoRetractboolAutomatically shrink CableLength when the cable has slack. Floor is the current taut path through wrap/grab anchors plus a slack margin, so retract never yanks through wraps. Default false.
RetractTensionThresholdfloatRaw tension ratio (taut path / CableLength) below which retraction triggers. Default 0.85.
RetractKeepSlackfloatHow much extra slack to keep above the taut path after retracting. 0.2 = 20% margin. Default 0.2, range 0.05-0.5.
Pull Back
PullBackWhenTautboolApply spring forces to the player and/or endpoint actors when the cable is pulled taut. Prevents stretching beyond cable length. Default false.
PullBackStiffnessfloatSpring stiffness when the player exceeds cable reach. ~5 = soft, ~15 = firm, ~30+ = hard wall. Mass-compensated. Default 15.0.
PullBackDampingfloatDamping along the pull direction. 0 = bouncy, ~5 = smooth. Mass-compensated. Default 8.0.
PullBackOnGrabboolApply pull-back to the player when they grab the cable body (via interaction component). Disable to let the player drag the cable freely while still constraining endpoints. Default true.
PullBackEndpointsboolApply pull-back to actors attached at the cable endpoints (AttachStartTo / AttachEndTo). Disable to let endpoints stretch freely while still constraining grabbed interaction. Default true.
PullBackTolerancefloatFraction of section rope length the cable must stretch beyond taut before pull-back engages. 0.05 = 5% stretch needed. Range 0-0.25. Default 0.05.
Note: combining AutoExtend with PullBackAtMaxLength can oscillate. AutoExtend grows the rest length under tension while pull-back yanks endpoints back to MaxCableLength, so both fight at the cap. Use one or the other, or set MaxCableLength well above the AutoExtend ceiling.
Cutting
AllowCuttingboolAllow this cable to be cut at runtime. Default false.
CutImpulseStrengthfloatRandom velocity injected at the cut point for natural whip/flutter. Default 50.
MinCutParticlesIntegerMinimum particles in each piece after cutting. Prevents degenerate tiny cables. Default 3.
CutOffMaterialMaterialMaterial applied to the cut-off tail cable (slot 0). Null = keep existing.
CutOffAdditionalMaterialsMaterial ArrayAdditional materials for cut-off tail cable. Empty = keep existing.
PostCutMaterialMaterialMaterial the remaining head cable switches to after being cut. Null = keep existing.
PostCutAdditionalMaterialsMaterial ArrayAdditional materials for remaining head cable. Empty = keep existing.
AutoDestroyCutPiecesboolAutomatically destroy cut-off pieces after a delay. Default false.
AutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
OnlyDestroyUnattachedboolOnly auto-destroy pieces with both ends free. Pieces still attached to an actor survive. Default true.
Rideable
RideableboolAllow characters to ride this cable like a zipline. Default false.
RideSpeedfloatBase ride speed along the cable (cm/s). Default 600.
RideHangDistancefloatDistance the character hangs below the cable (cm). In pendulum mode this is the rope length. Default 100.
RideStiffnessfloatSpring stiffness pulling the character toward the hang point. Ignored when PendulumRide is true. Default 10.
RideGravityScalefloatGravity multiplier while riding. Ignored when PendulumRide is true (full gravity used instead). Default 1.0.
PendulumRideboolPendulum swing mode instead of spring-follow. When true, rider swings freely below the cable. Default true.
PendulumRideAirDragfloatAir drag coefficient in pendulum mode. Higher = more damping. Default 0.5.
RideAutoDirectionboolAutomatically detect ride direction from cable slope. Default true.
RideGravityInfluenceboolDownhill speeds up, uphill slows down. Default true.
RideSlowAtEndsboolSlow down when approaching cable endpoints. Default true.
RideSlideSpeedfloatManual slide input speed (cm/s). Default 300.
Niagara
FeedNiagaraboolFeed cable particle positions to a Niagara system via the RAC Cable NDI. Default false.
NiagaraSystemNiagara SystemNiagara system asset to auto-spawn and feed.
NiagaraComponentTagNameTag to find an existing NiagaraComponent instead of auto-creating.
NiagaraPositionArrayNameNameName of the RAC Cable DI user parameter. Default "CablePositions".
NiagaraNumPointsNameNameName of the Integer user parameter for point count. Default "NumCablePoints".
Interaction
AllowTetheringboolWhether Tether Component can tether to this cable. Manual TetherToWrappingCable() still works when false. Default false.
ClimbableboolWhether this cable can be climbed via Climb Component. Default false.
GrabbableboolWhether this cable can be grabbed. Default true.
ClampGrabToLengthboolClamp Grab to Cable Length - Clamp the grab anchor position so the cable path never exceeds CableLength. Only affects the grab point on the cable, NOT the player. For player push-back, use Pull Back When Taut. Default true.
IsGrabbedboolWhether the cable is currently grabbed. Read-Only
Performance
SleepDistancefloatCamera distance at which the cable pauses simulation. 0 = never sleep. Default 0.
SettleTimefloatSeconds before sleep is allowed (lets cable settle into drape shape first). Default 0. Advanced
VisualUpdateIntervalfloatVisual update interval. 0 = every frame. 0.033 = ~30fps. Default 0. Advanced
EnableLODTiersboolEnable multi-tier LOD based on camera distance. Default false.
LODMediumDistancefloatCamera distance threshold for Medium LOD tier. 0 = auto (33% of SleepDistance). Default 0.
LODLowDistancefloatCamera distance threshold for Low LOD tier. 0 = auto (66% of SleepDistance). Default 0.
SleepSolverIterationsIntegerSolver iterations override when sleeping. 0 = skip simulation entirely. Default 0. Advanced
LODMediumVisualSegmentsIntegerVisual segments for Medium LOD tier. 0 = auto (half of full). Default 0. Advanced
LODLowVisualSegmentsIntegerVisual segments for Low LOD tier. 0 = auto (quarter of full). Default 0. Advanced
HideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Default false.
HideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Default true.
DisableShadowsAtLowLODboolDisable shadow casting at Low/Sleeping LOD to save shadow map draw calls. Shadows restore at Medium/Full. Default true.
SmoothWrapAnchorsboolInsert Catmull-Rom tessellation around wrap anchors and tighten the visual update threshold so the cable stays visually synced with sim even on tiny gravity sway. Higher visual fidelity, more spline mesh segments per anchor, UpdateVisuals runs more often. Off (default) matches v1.0.1 perf and shows a visible "open tube" joint at each wrap anchor and the cable visually freezes once motion drops below ~0.5 units (sim still runs). Recommend ON for hero close-up cables; leave OFF for long auto-extended cables, distant cables, or any scene where FPS matters more than the anchor smoothing. Default false.
Functions
Resolved world-space position of the cable start anchor. Honours AttachStartTo + socket + offset; falls back to this actor's transform when no target. Same resolver the runtime simulation uses. Pure.
Resolved world-space position of the cable end anchor. Honours AttachEndTo + socket + offset; falls back to this actor's transform when no target. Pure.
Number of active wrap anchors. Pure.
World positions of all wrap anchors, start-to-end order. Pure.
Remove all wrap anchors, collapse to a single free-hanging section.
All particle positions across all sections (flat array, start-to-end). Pure.
Total flattened particle count across all sections. Pure.
World-space position of the particle at a flat index (across all sections). Clamped to valid range. Pure.
Reinitialize cable: straight line from start to end, all wraps cleared.
Tension ratio: taut path length / cable length. 0 = fully slack, 1 = fully taut. Pure.
Grab the cable at a world position. Creates a temporary anchor that follows the grab target. Optionally pass the grabbing actor for pull-back support (must be a Character). Returns true if grab succeeded.
Move the grab point to a new target position. Call each frame while grabbed.
Release the grab, removing the temporary anchor.
Find the closest point on the cable to a world position. Returns true if found. Use for detection/targeting before grabbing. Pure.
Start extending the cable (continuous).
Stop extending the cable.
Start retracting the cable (continuous).
Stop retracting the cable.
One-shot cable length change. Positive = longer, negative = shorter.
Whether the cable is currently extending. Pure.
Whether the cable is currently retracting. Pure.
Cut this cable at a flat particle index (across all sections). Spawns a new wrapping cable from the tail. Returns the new tail cable, or null on failure.
Cut at the nearest particle to a world position. Returns the new tail cable, or null.
Start a character riding this cable. Returns true on success. Requires Rideable = true.
Add manual slide input (-1 to 1) for rider speed control.
Set the cable active state. Fires OnCableActivated/OnCableDeactivated when the state changes.
Flip the cable active state.
Whether the cable is currently active. Pure.
Events
Fired when a new wrap anchor is created.
Fired when a wrap anchor is removed.
Fired when the cable is grabbed.
Fired when the cable is released.
Fires when the cable becomes active.
Fires when the cable becomes inactive.
Fires once when the cable reaches MaxWrapAnchors. Does not fire again until anchors drop below the limit.
Fires each tick the cable is extending. Provides the new cable length.
Fires each tick the cable is retracting. Provides the new cable length.
Fires once when the cable reaches MaxCableLength.
Fires once when the cable reaches MinCableLength.
Fires when the cable is cut. Provides the cut index and references to both the original (head) and new (tail) cables.
Fires when a character starts riding this cable.
Fires when a character stops riding this cable.
Rideable Cable / Zipline RAC Zipline Cable
Both cable types - Cable Actors and Wrapping Cables both support zipline riding.
Ride along cables using Zipline Cable - a Cable Actor subclass with ride physics built in. Place it in your level, call StartRiding(Character), and the player rides along the cable polyline. Auto-direction, gravity-influenced speed, deceleration at ends, pendulum swing mode. Tick disabled until ride starts.
Tip
Place a
Zipline Cable in your level for a drop-in zipline. All ride settings are on the Rideable category in the Details panel.
First-Person Camera Clipping
If the ride tether rope clips into your camera, configure these on the rider's
Tether Component (not the cable):
PlayerAttachSocket - attach the rope to a hand bone instead of the actor origin.
PlayerAttachOffset - offset the rope origin away from the camera (e.g. down and forward).
PlayerNozzleParticles (Tether | Nozzle, Advanced) - add 2-4 rigid segments at the player end to keep the rope stiff and predictable near the body.
PlayerBodyRadius (Tether | Nozzle, Advanced) - invisible sphere that pushes rope particles away from the player.
Rideable (Cable Actor)
RideableboolWhether this cable is rideable. Default true on Zipline Cable (the only thing the Zipline subclass overrides); default false on plain Cable Actor.
RideSpeedfloatBase travel speed along cable in cm/s. Default 800.
RideHangDistancefloatHow far below the cable the rider hangs (cm). In pendulum mode this is the rope length. Default 350.
RideStiffnessfloatSpring stiffness pulling rider toward hang point. Ignored when PendulumRide is true. Default 15.
RideGravityScalefloatRider's gravity during ride. 0 = weightless, 1 = full gravity. Ignored when PendulumRide is true (full gravity used instead). Default 0.3.
PendulumRideboolFree pendulum swing vs critically-damped spring. When true, rider swings freely below the cable. Default false.
PendulumRideAirDragfloatAir drag coefficient in pendulum mode. Higher = more damping. Default 0.02.
RideAutoDirectionboolRide toward whichever cable end is farther from player. Default true.
RideGravityInfluenceboolDownhill speeds up, uphill slows down. Default true.
RideSlowAtEndsboolDecelerate near cable endpoints. Default true.
ShowRideTetherboolShow a visible tether rope from the rider to the cable while riding. Requires the riding character to have a Tether Component. To adjust rope origin, camera clipping, or nozzle, configure PlayerAttachSocket, PlayerAttachOffset, PlayerNozzleParticles, and PlayerBodyRadius on the rider's Tether Component (Tether and Tether | Nozzle categories). Default true.
RideSlideSpeedfloatManual slide input speed while riding (cm/s). Used with AddRideSlideInput. Default 500.
Functions
Begin ride. Returns false if cable not rideable or already occupied.
End ride. Restores gravity.
Reverse ride direction mid-ride.
Manual speed control while riding. -1 to 1 per tick.
Get the character currently riding this cable. Returns null if not riding.
Check whether a character is currently riding any cable. Static utility.
Find the Cable Actor a character is currently riding. Returns null if not riding. Static utility.
Check whether the local player is currently riding any cable. Static utility.
Stop the local player's current ride. Static utility.
Reverse the local player's current ride direction. Static utility.
Add slide input to the local player's current ride. Static utility.
Events
Tip
Critically damped spring force toward the hang point (no oscillation). All forces go through Character Movement Component (AddForce). Internal Zipline Component handles the physics (hidden from Blueprint).
Tether Point RAC Tether Point
Standalone - Placeable anchor point for tether connections.
A placeable tether anchor point. Place in your level to create attachment locations for the Tether Component. Connect via TetherToActor(TetherPoint). Optional mesh visual and detection sphere for overlap-based discovery.
Tether Point
SceneRootScene ComponentRoot scene component. Read-Only
PointMeshStatic Mesh ComponentOptional visual mesh for the anchor point. Set a mesh to make the point visible in-game.
DetectionSphereSphere ComponentOverlap sphere for detecting nearby characters. Read-Only
DetectionRadiusfloatRadius of the detection sphere. Default 300.
TetherSocketNameSocket name on the mesh for precise tether attachment. Leave empty for actor origin.
TetherOffsetVectorOffset from origin (or socket) for tether attachment point. Default (0,0,0).
Tether Component RAC Tether
Standalone - Works with any target: Cable Actors, other Actors, or world points.
Visible rope to any target. Add to your character and call TetherToCable, TetherToWrappingCable, TetherToActor, or TetherToPoint to connect. Creates a visual link cable between the player and the attachment point. Supports pull-back mode, leash physics, connect/disconnect animations.
Tether
PullBackModeboolStay connected when the player moves beyond TetherLeashLength. Fires OnTetherPullBack event each tick instead of allowing free movement. Does NOT apply force on its own - use ApplyTensionToMovement for physics-based pull, or use the event for custom gameplay logic. Default false.
LockTetherboolPrevent all automatic disconnection. Only Detach() can break the connection while locked. Default false.
ApplyTensionToMovementboolApply a spring force pulling the character toward the attach point. No force within TetherLeashLength, pull increases beyond it. Requires owner to be a Character. Default false.
TetherLeashLengthfloatSlack distance from attach point before pull begins. Player moves freely within this radius. Default 100.
TensionForceMultiplierfloatPull acceleration per unit of stretch beyond leash. ~2 = gentle, ~10 = strong, ~20+ = hard yank. Default 5.0.
TensionDampingfloatVelocity damping along pull direction. Prevents spring oscillation. 0 = no damping, ~8 = smooth. Default 0.
PlayerAttachSocketNameBone/socket on owner mesh for link cable attachment. None = actor origin. Default None.
PlayerAttachOffsetVectorOffset from socket or actor origin. Default (0,0,0).
AttachOffsetInViewSpaceboolRotate offset into camera local space. Default false. Advanced
ReconnectCooldownfloatCooldown (seconds) after disconnect before the tether can reconnect. Gives the player time to move away. 0 = no cooldown. Default 0.
TetherSlideSpeedfloatSpeed for sliding the attach point along a cable (cm/s at full input). Use with SlideTetherAlongCable. Default 500.
TetherSlideGravityScalefloatHow strongly gravity pulls the slide point along the cable's slope when no input is held. 0 = no gravity slide, 1 = full gravity projection. Default 1.0.
TetherSlideFrictionfloatFriction opposing gravity-driven slide. Higher = more resistance. 0 = frictionless. Default 0.15.
TetherSlideMaxSpeedfloatMaximum gravity-driven slide speed (cm/s). 0 = no cap. Default 600.
CableTrackSpeedfloatHow fast the attach point tracks along the cable when tethered. Higher = snappier following. Default 15.
IsTetheredboolTrue while connected. Read-Only
TetherTargetTypeERACTetherTargetTypeCurrent target type: None, Cable, WrappingCable, Actor, or Point. Read-Only
TetherTargetActor ReferenceActor currently tethered to (Cable or Actor target). Null for Point targets. Read-Only
CurrentAttachPointVectorCurrent attach point on the target. Read-Only
Tether | Rope
LinkCableMeshStatic MeshMesh for link cable segments. Null = engine cylinder.
LinkCableMeshScaleVector 2DCross-section scale. Default (0.3, 0.3).
LinkCableSegmentsIntegerNumber of segments. Default 6.
LinkCableSolverIterationsIntegerSolver iterations. Default 4. Advanced
LinkCableGravityScalefloatGravity for link cable. Default 1.0.
LinkCableDampingfloatVelocity damping. Default 0.05. Advanced
RopeEndpointSmoothingfloatHow fast the rope endpoint tracks the player. 0 = instant (snappy but can jitter), 15-25 = smooth chase. Default 0.
LinkCableDriftStrengthfloatDrift strength. Default 3.0. Advanced
ForceStraightLinkCableboolForce the link cable into a perfectly straight line each frame. Useful for zipline tethers where slack looks wrong. Default false. Advanced
MaxLinkCableLengthfloatMax link cable length. When exceeded, the tether auto-disconnects (unless LockTether is true). 0 = unlimited. Default 0.
LinkCableCanBeCutboolWhether the link cable can be cut. Default false.
LinkCableMaterialMaterialMaterial for link cable.
LinkFlowTilingfloatUV flow tiling. Default 1.0.
LinkCastShadowboolCast shadow from link cable meshes. Default false. Advanced
LinkReceiveDecalsboolWhether link cable and endpoint meshes receive decals. Default true. Advanced
Tether | Nozzle
PlayerNozzleParticlesIntegerRigid particles at the player end, forming a stiff nozzle section. 0-6. Default 0. Advanced
PlayerNozzleDirectionVectorDirection of the rigid nozzle in character-local space. (0,0,-1) = straight down. Uses camera rotation when PlayerNozzleFollowCamera is true. Default (0,0,-1). Advanced
PlayerNozzleFollowCameraboolWhen true, the player nozzle direction rotates with the camera instead of the character. Default false. Advanced
AttachNozzleParticlesIntegerRigid particles at the attach end. 0-6. Default 0. Advanced
AttachNozzleDirectionVectorDirection of the attach nozzle in world space. Zero = auto-calculated from cable tangent. Default (0,0,0). Advanced
PlayerBodyRadiusfloatInvisible sphere around the player that pushes cable particles out (prevents body clipping). 0 = disabled. Default 0. Advanced
PlayerBodyOffsetVectorOffset of the body avoidance sphere from player origin. Default (0,0,0). Advanced
Tether | Endpoint Meshes
LinkAttachMeshStatic MeshMesh displayed at the attach point (where the link cable meets the target). Null = no indicator.
LinkAttachMeshMaterialMaterialMaterial override for the attach-point mesh (slot 0).
LinkAttachMeshScaleVectorScale of the attach-point mesh. Default (1,1,1).
OrientAttachMeshAlongCableboolOrient along the main cable's tangent when tethered to a cable. Default false. Advanced
LinkAttachOffsetVectorWorld-space offset applied to the link cable's attach endpoint. Default (0,0,0). Advanced
LinkCableConnectionOffsetVectorOffset where the link cable connects to the attach-point endpoint mesh. Shifts the cable endpoint relative to the mesh. Default (0,0,0).
LinkAttachMeshRotationOffsetRotatorRotation offset on top of auto-orientation. Default (0,0,0). Advanced
LinkPlayerMeshStatic MeshMesh displayed at the player end of the link cable. Null = no indicator.
LinkPlayerMeshMaterialMaterialMaterial override for the player-end mesh (slot 0).
LinkPlayerMeshScaleVectorScale of the player-end mesh. Default (1,1,1).
LinkPlayerMeshRotationOffsetRotatorRotation offset for the player-end mesh. Default (0,0,0). Advanced
Tether | Connect Animation
ExtendOnConnectboolVisual extend animation on connect. Default false.
ExtendOnConnectSpeedfloatExtension speed in units/sec. Default 500.
IsExtendingboolTrue while extend animation is playing. Read-Only
ExtendHideAttachMeshboolHide attach mesh during extend animation. Default true. Advanced
Tether | Disconnect Animation
RetractOnDisconnectboolVisual retract animation on disconnect. Default false.
RetractSpeedfloatRetraction speed in units/sec. Default 500.
IsRetractingboolTrue while retract animation is playing. Read-Only
RetractHideAttachMeshboolHide attach mesh during retract animation. Default true. Advanced
Debug
DrawDebugLinkLineboolDraw debug lines for the link cable. Default false.
DebugLinkLineColorFColorColor of link cable debug lines. Default Green. Advanced
DrawDebugPlayerBodyboolDraw debug sphere showing player body avoidance radius. Default false. Advanced
Functions
Connect to a Cable Actor. Finds nearest point on the cable.
Connect to a Wrapping Cable. Finds nearest point on the cable.
Connect to any actor. Optional socket and offset for precise attachment.
Connect to a fixed world position.
Disconnect from current target.
Lock/unlock the tether. While locked, only Detach() can break the connection.
Get the Cable Actor this tether is currently connected to. Returns null if not tethered to a cable (e.g. tethered to an actor or point, or not tethered at all).
Override attach point to a fixed world position. Tether skips nearest-point tracking while active.
Return to normal nearest-point tracking.
Slide the attach point along the connected cable. Direction: -1 to 1. Only works when tethered to a cable. Use with ApplyTensionToMovement to pull the player.
Stop sliding and return to normal cable tracking.
Whether the tether is currently in slide mode (driven by SlideTetherAlongCable input).
True while the reconnect cooldown is active after disconnect. Use with ReconnectCooldown property.
Reset the reconnect cooldown so the next connect attempt is not blocked. Used by internal systems (ride/zipline).
Events
Fires each tick player is beyond leash length while pull-back mode is on.
Spline Cable RAC Spline
Cable Actor variant - inherits all Cable Actor features (cutting, regrow, riding, drift, wind, attract, LOD, tension materials). Adds spline-driven authoring on top.
Place a Spline Cable in your level and shape its rest pose by dragging the spline control points with the standard UE spline gizmo. At Begin Play the cable seeds its verlet particles along the spline arc and then simulates like a Cable Actor. The endpoints lock to the first and last spline points; interior points can optionally be pinned to make powerlines, factory cabling, or any draped run that hangs between fixed anchors.
Cable | Spline (Spline Cable only)
Path SplineUSplineComponentThe spline whose control points define the cable's resting shape. Edit it in the level viewport with the standard UE spline gizmo (Alt+drag a handle to add a point, drag handles to reshape, right-click for tangent/curve options). Read-only in the details panel; edit the points in the viewport.
Pin All Spline PointsboolWhen on, every interior spline control point becomes a hard pin. Endpoints are always pinned to the first and last spline points regardless of this setting. Default false.
Pinned Spline Point IndicesTArray<int32>Indices of specific interior spline control points to pin (ignored when Pin All Spline Points is on). Use this when you want some points to anchor the rope and others to act as routing curves the rope can sag past. Endpoint indices (0 and last) are skipped automatically because they are always pinned. Default empty.
Sync Cable Length To SplineboolMatch the cable's resting length to the spline's arc length so the rope hugs the authored shape exactly. Disable to keep the Verlet Cable's Cable Length as the rest length, which lets you author slack independent of how long the spline is (e.g. draw a short spline but use a 2x-length rope that drapes deeper than the spline curve). Default true.
Limitations
The spline is an
authoring shape only. It defines the rest pose at Begin Play; runtime spline edits do not auto-resample particles. The
VerletCable Attach Start/End fields are managed automatically on Spline Cable instances; editing them has no effect (they are overwritten at Begin Play to track the spline's first and last points on this actor).
Cable Interaction Component RAC Cable Interaction
Both cable types - Detects, grabs, and cuts both. Pinning and extend/retract are
Cable Actor only.
Player component for cable interaction: grab, drag, pin, cut, extend/retract. Supports two detection modes: Proximity (overlap radius, best for top-down) or Aim (camera crosshair ray, best for first/third person). All actions work identically in both modes.
Detection Mode
DetectionModeERACDetectionModeHow to find cables: Proximity (overlap radius) or Aim (camera ray). Default Proximity.
DetectionIntervalfloatHow often to scan for cables (seconds). 0 = every frame. Default 0.05.
Auto Tether
AutoTetherOnDetectboolAuto-connect the owner's Tether Component when a cable is within AutoTetherRadius. Independent of DetectionMode. Requires Tether Component on same actor. Default false.
AutoTetherRadiusfloatProximity radius for auto-tether detection. Independent of InteractionRadius and DetectionMode. Only used when AutoTetherOnDetect is true. Default 300.
Proximity Settings
InteractionRadiusfloatDetection range for nearby cables. Only visible in Proximity mode. Default 500.
Aim Settings
AimDistancefloatMax trace distance (cm). Only visible in Aim mode. Default 5000.
AimRadiusfloatForgiveness radius around aim ray (cm). Higher = easier to target. Default 80.
TraceFromCameraboolTrace from player camera (crosshair). When false, traces from actor forward. Default true.
AimOcclusionCheckboolRun a line trace along the aim ray before accepting cable detection. If any blocking hit on AimOcclusionChannel (default Visibility) is closer than the cable, the cable is not detected. Prevents interacting through walls. Default false.
AimOcclusionChannelCollision ChannelCollision channel for occlusion traces. Default Visibility.
Grab Settings
PinOnGrabboolPin the cable at grab point. Default true.
DragWithPlayerboolProximity: follows player position. Aim: follows aim point. Default true.
AutoReleaseDistancefloatAuto-release when player/aim moves beyond this distance from grab point. 0 = never. Default 0.
MaxStretchDistancefloatMax distance the grabbed point can be dragged from the original grab location. 0 = fall back to the cable's own MaxStretchDistance. If both are 0, unlimited. Default 0.
MaxSlideSpeedfloatMax slide speed along cable while grabbed. 0 = unlimited. Proximity mode only. Default 0.
State
NearestCableCable ActorCable Actor Nearest/aimed cable (null if none). Read-Only
NearestPointVectorClosest point on nearest cable to player or aim ray. Read-Only
NearestParticleIndexIntegerCable Actor Particle index on nearest cable. Read-Only
NearestDistancefloatDistance to nearest cable (world distance or aim ray offset). Read-Only
IsGrabbingboolWhether currently grabbing a cable. Read-Only
NearestIsPinboolTrue when the detected point is at a pin mesh (player is aiming at or near a pin). Check this to decide between grab vs unpin. Read-Only
GrabbedCableCable ActorCable Actor Cable currently grabbed. Read-Only
GrabPointVectorWorld position of grab point. Read-Only
GrabbedParticleIndexIntegerCable Actor Index of grabbed particle. Read-Only
NearestWrappingCableWrapping CableWrapping Cable Nearest/aimed wrapping cable (null if none, or if a regular cable is closer). Read-Only
GrabbedWrappingCableWrapping CableWrapping Cable Wrapping cable currently being grabbed (null when not grabbing a wrapping cable). Read-Only
Functions
Both types Grab the nearest/aimed cable. No-op if no cable detected or already grabbing.
Cable Actor Grab a specific cable at the closest point to the player.
Both types Release the currently grabbed cable.
Cable Actor Begin continuous extension on grabbed cable.
Cable Actor Stop continuous extension on grabbed cable.
Cable Actor Begin continuous retraction on grabbed cable.
Cable Actor Stop continuous retraction on grabbed cable.
Cable Actor One-shot length change on grabbed cable.
Pinning Cable Actor
Pin the nearest/aimed cable at the detected point. Returns particle index, or -1.
Pin the grabbed cable at the current grab point.
Pin a specific cable at a world position.
Pin the nearest/aimed cable to an actor (follows it). Returns particle index, or -1.
Pin a specific cable particle to an actor.
Unpin a specific particle on a cable.
Unpin the nearest pinned particle to a position.
Remove the nearest pin on the nearest/aimed cable. Returns particle index, or -1.
Clear all pins on a cable.
Cutting
Cut the nearest/aimed cable at the detected point. Returns the new tail cable, or null. Releases grab if cutting the grabbed cable.
Cut a specific cable at a world position.
Queries
Whether a cable is within interaction range or being aimed at.
Get current aim ray (Aim mode only). Returns false if not in Aim mode.
Cable Actor Query the current detection state. Returns the detected cable, closest point, particle index, and distance. Returns false if no cable is detected.
Wrapping Cable Get the detected wrapping cable (if any). Returns true if a wrapping cable is detected. No particle index - wrapping cables use sections, not indexed particles.
Events
Cable Actor A cable entered detection range or became the aimed cable.
Cable Actor A cable left detection range or is no longer aimed at.
Cable Actor Player grabbed a cable.
Both types Player released a cable.
Both types Fires each tick while grabbing, with updated grab point position.
Cable Actor Fires when a cable is pinned via this component.
Cable Actor Fires when a cable is unpinned via this component.
Fires when a cable is cut via this component (manual or sweep). Works with both cable types.
Fires each time a cable is cut during sweep cutting. Also fires On Cable Cut. Works with both cable types.
Wrapping Cable Fires when a wrapping cable enters detection range.
Wrapping Cable Fires when a wrapping cable leaves detection range.
Sweep Cut
Move your aim (or player position) across cables to slice through them in one motion. Detects and cuts both Cable Actors and Wrapping Cables. Cables are cut when they enter the sweep radius, not while standing still. Works with both Aim and Proximity detection modes. See Cable Cutting for setup and general cutting info.
Sweep Cut Settings
SweepCutRadiusfloatRadius of the sweep blade. Cables within this distance of the aim ray or player are cut when swept across. Default 100.
SweepCutDistancefloatMax reach. Aim mode: how far the cut ray extends (0 = use AimDistance). Proximity mode: how far from the player (0 = use SweepCutRadius). Default 0.
MaxSweepCutsPerFrameIntegerMaximum cables to cut per frame during sweep cutting. Limits worst-case frame spikes when slicing through dense cable clusters. 0 = unlimited. Default 0.
IsSweepCuttingboolWhether sweep cutting is currently active. Read-Only
Begin sweep cutting. Move the aim/player across cables to slice them.
Toggle sweep cutting on or off.
Swing Component RAC Swing
Standalone - Does not require a Cable Actor. Spawns its own temporary grapple rope from an aim trace hit.
Grapple rope swing. Fires an aim trace from the character's camera to find a pivot point, spawns a temporary Verlet cable rope, and applies pendulum physics. Supports pump-swing (player input increases amplitude), rope reel-in/let-out, launch velocity boost on release, and configurable rope visuals. Tick disabled until swing starts.
Swing
AimTraceLengthfloatHow far the grapple aim trace reaches (cm). Default 5000.
AimTraceChannelCollision ChannelCollision channel for the aim trace. Default Visibility.
SwingGravityScalefloatGravity scale during swing. 1.0 = realistic pendulum. Default 1.0.
SwingAirControlfloatOverrides character AirControl during swing. 0 = pure pendulum (no WASD), 0.1 = slight steering, 1 = full air control, -1 = don't override. Default 0.1.
AirDragfloatAir resistance to prevent infinite speed. 0 = none. Default 0.02.
RigidRopeboolFixed rope length (always taut) vs slack rope (only constrains when taut). Default false.
FollowMovingPivotboolWhen true (default), the swing pivot tracks the hit component as it moves - grapple onto moving platforms, vehicles, or elevators and the rope sticks to the exact hit point on the target. Auto-releases cleanly if the tracked component is destroyed mid-swing. Disable to freeze the pivot at the world location where the trace hit (pre-v1.0.1 behavior).
InheritPivotVelocityOnReleaseboolWhen releasing from a moving-pivot swing, inherit the platform's velocity - grapple off a moving train and fly with the train's momentum. Only visible/applies when FollowMovingPivot is true. Default true. Disable for arcade-style swings where release speed should not depend on the platform's motion.
AttachToActorOriginboolWhen true, the pivot snaps to the grappled actor's root origin each tick (same tracking behavior as the Pull Component - the rope visibly attaches to the actor's center rather than the exact hit point). When false (default), the pivot stays at the exact world-space point you hit, transformed by the hit component's local offset - usually what players expect for a grapple. Only visible/applies when FollowMovingPivot is true.
MinRopeLengthfloatMinimum rope length. Default 100. Advanced
MaxRopeLengthfloatMaximum rope length. 0 = uses distance at swing start. Default 0. Advanced
LaunchVelocityMultiplierfloatMultiplier on release velocity. 1.0 = realistic, >1 = boosted. Default 1.0.
LaunchUpwardBoostfloatExtra upward velocity on release (cm/s). Default 0.
AutoPullInboolAutomatically shorten the rope each tick, pulling the character toward the pivot. Great for grapple-hook reel-in. Default false.
AutoPullSpeedfloatSpeed at which the rope shortens when AutoPullIn is enabled (cm/s). Default 300.
EnablePumpSwingboolPlayer input increases swing amplitude (like pumping a playground swing). Default true.
PumpForcefloatTangential force when pumping (mass-compensated). Default 800.
Swing|Rope
RopeAttachSocketNameSocket on the character's mesh to attach the rope endpoint. None = character root. Useful for attaching to a hand bone.
RopeSegmentsIntegerNumber of verlet segments for the spawned grapple rope. More = smoother, fewer = cheaper. Default 8.
RopeSubstepsIntegerPhysics sub-steps per frame. Higher = smoother rope at high speeds. Default 2.
RopeEndpointSmoothingfloatHow fast the rope endpoint tracks the character. 0 = instant (snappy but can jitter), 15-25 = smooth chase. Default 0.
RopeMeshStatic MeshMesh used for each rope spline segment. Null = engine cylinder.
RopeMaterialMaterialMaterial for the rope. Null = mesh default.
RopeMeshScaleVector 2DCross-section scale of the rope mesh. Default (0.15, 0.15).
RopeCollisionboolEnable world collision on the swing rope so it drapes over geometry. Default true.
RopeHighFidelityCollisionboolPer-particle sphere traces instead of simple line checks. More accurate on curved surfaces but more expensive. Only available when RopeCollision is true. Default false.
CameraAvoidanceboolPush rope particles away from the camera so the rope doesn't clip through the view during fast swings. Default false.
CameraAvoidanceRadiusfloatMinimum distance rope particles maintain from the camera (cm). Default 80.
ExtendRopeOnAttachboolRope visually extends from the character to the pivot when starting a swing, like firing a grapple hook. OnSwingStart is deferred until the rope reaches the pivot. Default false.
RopeExtendSpeedfloatSpeed at which the rope extends toward the pivot point (cm/s). Only used when ExtendRopeOnAttach is true. Default 3000.
RetractRopeOnDetachboolRope visually retracts back to the character when releasing the swing, instead of disappearing instantly. Default false.
RopeRetractSpeedfloatSpeed at which the rope retracts back to the character (cm/s). Only used when RetractRopeOnDetach is true. Default 3000.
State Read-Only
IsSwingingboolWhether a character is currently swinging. Read-Only
CurrentPivotPointVectorWorld position of the pivot particle. Read-Only
CurrentRopeLengthfloatCurrent rope length (may change with ShortenRope/LengthenRope). Read-Only
CurrentSwingSpeedfloatCurrent swing speed (cm/s). Read-Only
IsRopeExtendingboolTrue while the rope is extending toward the pivot. Read-Only
IsRopeRetractingboolTrue while the rope is retracting after release. Read-Only
Functions
Start swinging. Fires an aim trace from the character's camera and attaches a grapple rope to the hit point. Returns false if nothing hit or already swinging.
Start swinging at an explicit world position. Spawns a grapple rope from the character to the given pivot point.
Stop swinging. Character launches with current velocity (modified by LaunchVelocityMultiplier + LaunchUpwardBoost).
Pump-swing input [-1, 1]. Positive = pump in swing direction. Call each tick from input.
Reel in the rope by amount (cm). Clamped to MinRopeLength.
Let out rope by amount (cm). Clamped to MaxRopeLength (if > 0).
Current rider, null if nobody is swinging.
Static. Find the swing component a character is using (null if not swinging).
Static. Check if a character is swinging on any cable.
Static. Check if local player (player 0) is swinging.
Static. Find the swing component the local player (player 0) is using. No character input needed.
Static. Stop the local player's swing. Does nothing if not swinging.
Events
Fires when swing ends. LaunchVelocity = final velocity applied (after multiplier + boost).
Fires each tick during swing.
Tip
Velocity-projection pendulum constraint. Gravity-driven arc with optional pump-swing. Spawns a temporary VerletCable rope visual. Tick disabled when idle.
Pull Component RAC Pull
Standalone - Does not require a Cable Actor. Spawns its own temporary rope to pull physics objects.
Pull physics objects toward the owner. Fires an aim trace from the character's camera, attaches a rope to the hit physics object, and applies mass-compensated force to reel it in. Supports mass limits, arrival detection, and duration caps. Tick disabled when idle.
Pull
AimTraceLengthfloatHow far the pull aim trace reaches (cm). Default 5000.
AimTraceChannelCollision ChannelCollision channel for the aim trace. Default Visibility.
PullForcefloatForce applied each tick toward the owner (mass-compensated). Higher = faster pull. Default 100.
PullMaxMassfloatMaximum mass that can be pulled. 0 = no limit. Objects heavier than this fail with "TooHeavy". Default 0.
RopeRetractSpeedfloatSpeed at which the rope shortens during pull (cm/s). Default 500.
ArrivalDistancefloatDistance from owner at which the pull completes and the object is released (cm). Default 150.
MaxPullDurationfloatMaximum pull duration (seconds). 0 = no limit. Auto-releases after this time. Default 0. Advanced
AttachToHitPointboolWhen true, the rope attaches to the exact point you aimed at on the target (tracked in the hit component's local space) and force is applied via AddForceAtLocation, so pulling a crate by its corner applies torque and the crate tumbles as it approaches - more physically satisfying than origin-only pulls. When false (default), rope and force attach at the actor's root origin (pre-v1.0.1 behavior). Arrival detection still uses actor-to-owner distance, so it stays stable under rotation.
Pull|Rope
RopeSegmentsIntegerNumber of verlet segments for the pull rope. Default 6.
RopeSubstepsIntegerPhysics sub-steps per frame. Higher = smoother rope at high speeds. Default 2.
RopeEndpointSmoothingfloatHow fast the rope endpoint tracks the target. 0 = instant, 15-25 = smooth chase. Default 0.
RopeMeshStatic MeshMesh for each rope spline segment. Null = engine cylinder.
RopeMaterialMaterialMaterial for the rope. Null = mesh default.
RopeMeshScaleVector 2DCross-section scale of the rope mesh. Default (0.15, 0.15).
RopeCollisionboolEnable world collision on the pull rope. When enabled, segments are auto-increased to at least 16 so the rope has enough bend points to wrap around corners. Default false.
HighFidelityRopeCollisionboolUse segment-to-segment traces so the rope wraps around corners instead of clipping through geometry. More expensive but needed for pull-around-corner scenarios. Requires RopeCollision. Default false.
State Read-Only
IsPullingboolWhether a pull is currently active. Read-Only
PulledActorActor ReferenceThe actor currently being pulled. Null if not pulling. Read-Only
CurrentRopeLengthfloatCurrent rope length during pull. Read-Only
Functions
Aim trace from the character's camera. Pulls the hit physics object toward the owner. Returns false if nothing hit, target not simulating physics, or too heavy.
Pull a specific actor toward the owner. Returns false if the actor has no simulating physics body or is too heavy.
Check if an actor can be pulled (has a simulating physics body and is within mass limit). Pure.
Release the currently pulled object. Does nothing if not pulling.
Get the actor currently being pulled. Null if not pulling.
Events
Fires when a pull begins.
Fires when the pulled object arrives within ArrivalDistance.
Fires when pull is manually released via ReleasePull.
Fires when a pull attempt fails. Reason: "NoHit", "NotSimulating", "TooHeavy".
Tip
Mass-compensated force ensures consistent pull speed regardless of object weight. Use PullMaxMass to prevent pulling immovable-scale objects. OnPullFailed gives BP-friendly feedback for UI prompts.
Climb Component RAC Climb
Both cable types - Grab onto any Cable Actor or Wrapping Cable and climb with input-driven movement and gravity sliding.
Rope climbing component. Aim trace from the camera to find a cable, grab on, and climb up or down. Gravity-based sliding when idle, optional stamina system, launch velocity on release. Works with both ARACCable and ARACWrappingCable. Zero-cost when idle (tick disabled).
Climb
AimTraceLengthfloatHow far the grab aim trace reaches (cm). Default 3000.
AimTraceChannelCollision ChannelCollision channel for the aim trace. Default Visibility.
MaxGrabDistancefloatMaximum distance from the cable surface to grab (cm). If the nearest point is farther, grab fails. Default 500.
ClimbSpeedfloatSpeed at which the character climbs up/down when holding input (cm/s). Default 400.
MaxSlideSpeedfloatMaximum gravity-driven slide speed (cm/s). 0 = no cap. Default 600.
GravitySlideScalefloatHow strongly gravity pulls the character along the cable's slope. 0 = no slide, 1 = full gravity projection. Default 1.0.
ClimbFrictionfloatFriction that opposes slide velocity. Higher = cable feels rougher. 0 = frictionless. Default 0.15.
ClimbOffsetfloatDistance (cm) the character stands back from the cable while climbing. 0 = right on the cable. Default 75.
SlideWhenIdleboolWhen the player releases climb input, automatically slide down due to gravity. When false, the character holds position. Ignored if FreefallOnRelease is true. Default true.
FreefallOnReleaseboolWhen the player releases climb input, immediately let go of the cable and freefall. Overrides SlideWhenIdle. Default false.
LaunchOnReleaseboolApply launch velocity when releasing the cable. Default true.
LaunchVelocityMultiplierfloatMultiplier on current velocity when launching off the cable. Default 1.0.
LaunchUpwardBoostfloatAdditional upward velocity on release (cm/s). Gives a "jump off rope" feel. Default 300.
UseStaminaboolEnable stamina system. When stamina runs out, the character auto-releases. Default false.
MaxStaminafloatMaximum stamina (seconds of climbing). Default 5.0.
StaminaDrainRatefloatStamina consumed per second while actively climbing (holding input). Default 1.0.
StaminaDrainWhileSlidingfloatStamina consumed per second while sliding (typically less than climbing). Default 0.3.
State Read-Only
IsClimbingboolWhether the character is currently climbing. Read-Only
CurrentClimbPointVectorCurrent position on the cable where the character is attached. Read-Only
ClimbProgressfloatProgress along cable: 0.0 = start, 1.0 = end. Read-Only
CurrentSlideSpeedfloatCurrent slide velocity along the cable (cm/s). Read-Only
CurrentStaminafloatCurrent stamina remaining (0 to MaxStamina). Only meaningful when UseStamina is true. Read-Only
IsSlidingboolWhether the character is currently sliding (gravity-driven, no input). Read-Only
CableTangentAtClimbPointVectorCable direction at the current climb point. Points from cable start toward end. Use for character orientation, IK hand placement, body alignment. Read-Only
NormalizedClimbSpeedfloatNormalized climb speed for animation blend spaces. -1 = max speed downward, 0 = idle, +1 = max speed upward. Read-Only
ClimbRotationRotatorSuggested world rotation for the climbing character. Faces the cable surface with world-up orientation. Computed from ClimbOffset direction at grab time. Read-Only
HasClimbInputboolWhether the player is actively providing climb input this frame. Distinguishes "actively pulling" from "hanging idle" and "sliding". Read-Only
Functions
Aim trace from the camera, find the nearest cable, and grab onto it. Returns false if nothing hit, no cable nearby, already climbing, or too far.
Start climbing a specific ARACCable at the nearest point to the character.
Start climbing a specific ARACWrappingCable at the nearest point to the character.
Release the cable. Character drops off with optional launch velocity.
Apply climb input. Positive = move toward cable end, negative = toward start. Clamped to [-1, 1]. Call each tick from player input.
Get the character currently climbing. Null if nobody.
Get the Cable Actor currently being climbed. Null if not climbing or climbing a Wrapping Cable.
Get the Wrapping Cable currently being climbed. Null if not climbing or climbing a regular Cable Actor.
Find the Climb Component that is currently climbing with a given character. Returns null if the character is not climbing. Static helper.
Check if a character is currently climbing any cable. Static helper.
Find the local player's active Climb Component. Returns null if not climbing. Static helper.
Check if the local player is currently climbing. Static helper.
Stop the local player's climb. One-node convenience. Does nothing if not climbing. Static helper.
Feed climb input to the local player's active climb. Convenience for demo/prototype input. Static helper.
Events
Fires when climbing begins.
Fires when climbing ends. LaunchVelocity is the velocity applied to the character on release.
Fires each tick during climbing with current progress and position.
Fires when the climber reaches the cable's end.
Fires when the climber reaches the cable's start.
Fires when the climber starts sliding (transitions from input-driven to gravity-driven).
Fires when a climb attempt fails. Reason: "NoHit", "NoCable", "AlreadyClimbing", "TooFar".
Tip
Works with both Cable Actors and Wrapping Cables. Use Climbable on cables to gate which cables can be climbed. The stamina system provides natural gameplay limits - drain rate is lower while sliding than actively climbing.
Tow Component RAC Tow
Component - Physics-based vehicle towing via temporary cable.
Spawns a cable with physics coupling between the owning actor and a target. Spring forces couple both ends (bidirectional by default - flip Bidirectional off for tow-only). Supports break force, stretch limits, and tension events. Tick disabled when idle.
The target does NOT need a Tow Target Component
Attach Tow accepts
any Actor reference - vehicles, props, level-placed static meshes, foliage actors converted to AStaticMeshActor, characters, anything. The
Tow Target Component below is an
optional convenience marker used only by the auto-discovery path (
Attach Tow to Nearest) to advertise "this actor is towable" and pre-configure its attach socket. If you already have a target reference (line trace hit, overlap result, BP variable, etc.), call
Attach Tow(Target, SocketOverride) directly - no marker required, no setup on the target side at all.
Tow
AutoConnectboolAutomatically connect to the nearest tow target on BeginPlay. Default false.
AutoConnectSearchRadiusfloatSearch radius for auto-connect (cm). Only used when AutoConnect is true. Default 2000.
TowAttachSocketNameSocket on the owning actor for the tow hitch point.
TowAttachOffsetVectorOffset from the owner's origin or socket for the tow hitch point. Default (0,0,0).
TargetAttachSocketNameSocket on the target actor for the tow attachment point.
TargetAttachOffsetVectorOffset on the target actor for the tow attachment point. Default (0,0,0).
IsTowingboolWhether actively towing a target. Read-Only
TowTargetActor ReferenceThe actor currently being towed. Read-Only
TowCableCable ActorThe spawned tow cable actor. Read-Only
CurrentTensionfloatCurrent tension ratio: 0 = slack, 1 = fully taut. Read-Only
CurrentForcefloatCurrent force magnitude being applied by the tow cable. Read-Only
Tow | Physics
TowStiffnessfloatSpring stiffness for the tow force. Higher = rigid tow bar, lower = elastic bungee. Default 8000.
TowDampingfloatVelocity damping to prevent oscillation. Reduces bouncing when the cable goes taut. Default 800.
BidirectionalboolApply forces to both ends. When false, only the towed target receives force (owner acts as immovable anchor). Default true.
MaxTowForcefloatHard cap on the applied tow force. 0 = use default cap (stiffness * cable length). Default 0. Advanced
BreakForcefloatForce threshold that snaps the tow cable. 0 = unbreakable. Default 0.
BreakStretchfloatMaximum stretch distance (cm) before the cable snaps. 0 = no stretch limit. Default 0.
NoStretchboolPrevent the cable from stretching beyond its length. Enforces a hard distance constraint by clamping actor positions and removing separating velocity. Good for chains and rigid tow bars. Default false. Advanced
Tow | Cable
TowCableLengthfloatCable length in cm. 0 = auto-calculate from distance * TowSlackMultiplier. Default 0.
TowSlackMultiplierfloatAuto-length slack factor. 1.0 = taut, 1.15 = 15% slack for natural drape. Default 1.15.
NumSegmentsIntegerNumber of simulation segments. More = smoother cable. Default 12.
GravityScalefloatGravity scale for the tow cable. Default 1.0.
EnableCollisionboolEnable world collision on the tow cable. Default true.
HighFidelityCollisionboolPer-substep collision for accurate wrapping around geometry. More expensive but prevents tunneling. Default false.
Tow | Appearance
TowCableMeshStatic MeshMesh for cable spline segments. Null = default engine cylinder.
TowCableMaterialMaterialMaterial for the tow cable. Null = mesh default.
TowCableMeshScaleVector 2DCross-section scale of the cable mesh. Default (0.5, 0.5).
Tow | Performance
EnableLODTiersboolEnable distance-based LOD tiers on the tow cable. Off by default - actively-driven gameplay objects shouldn't auto-LOD. Turn on for ambient or rarely-near-camera tows where the perf saving outweighs the transition. Default false.
SleepDistancefloatCamera distance at which the tow cable pauses simulation and hides. 0 = never sleep. Default 0.
HideVisualsAtSleepboolHide cable visuals when the cable enters Sleep LOD. Default true.
SleepAttachedBodiesboolPut physics bodies of attached actors to sleep when the cable sleeps, wake them when it wakes. Off by default - freezing a driven vehicle by surprise is hostile. Turn on for ambient or decorative tows where the attached body should park while the cable is asleep. Default false.
Functions
Connect a tow cable to the target actor. Spawns a cable with physics coupling. Returns false if already towing, target is null, or spawn fails. Optional advanced pins
Target Socket Override /
Target Offset Override /
Start Socket Override /
Start Offset Override let you pass per-call attach points without mutating the component's properties first. Resolution order on the target side: override → component property → Tow Target Component on target → Tow Component
TowAttachSocket on target → root. On the owner side: override → component property → root.
Replication Beta ticks the spawned tow cable to replicate to clients - see the
Replication section.
Disconnect and destroy the tow cable.
Find the nearest Tow Target Component and attach a tow cable to it. Uses the target's AttachSocket and AttachOffset. Default search radius 2000. Returns false if no towable target found.
Whether currently towing a target. Pure.
Current tension ratio: 0 = slack, 1 = taut. Pure.
Current force magnitude applied by the tow cable. Pure.
Set the tow cable length at runtime.
Adjust the tow cable length by a delta. Positive = longer, negative = shorter.
Set TowAttachSocket (the owner's hitch socket) and propagate to the live cable's start endpoint if currently towing. Plain property writes don't update an active cable - use this if you change the hitch socket while a tow is already attached.
Set TargetAttachSocket (the towed actor's attach socket) and propagate to the live cable's end endpoint if currently towing.
Set TowAttachOffset (the owner's hitch offset) and propagate to the live cable's start endpoint if currently towing.
Set TargetAttachOffset (the towed actor's attach offset) and propagate to the live cable's end endpoint if currently towing.
Find the nearest actor in radius that has a mesh component with the given socket name, and attach a tow cable to that socket. No Tow Target Component required - use this to tow arbitrary world meshes (trees, props, rocks, level-placed static meshes) by socket name. Convenience wrapper over FindNearestActorWithSocket + AttachTow. Returns false if no actor with that socket is found.
Static. Scan all mesh components in the world and return the nearest owning actor that has the given socket. Returns null if none found in radius. Useful for "find the nearest tree/prop/rock with a tow hook" without tagging each actor with a Tow Target Component.
Static, Pure. Returns true if the actor has any mesh component containing a socket with the given name. Cheap check - useful right after a line trace ("does this thing have my tow socket?").
Events
Fires when the tow cable connects to a target.
Fires when the tow cable disconnects from a target.
Fires when the tow cable snaps due to exceeding BreakForce or BreakStretch.
Fires each tick while the cable is under tension. TensionRatio 0-1, Force is the spring magnitude (uu/s^2 force, unscaled), Direction is the pull vector.
Tip
With
Bidirectional on (the default), force is applied to both ends of the cable - if either end is a static (non-physics) actor it acts as an immovable anchor and only the physics side is pulled. This is how you get the "car dangling from a tree socket" pattern: enable
Simulate Physics on the vehicle, leave the tree as a normal static mesh actor, and call
Attach Tow with the tree as target + the tree's socket name. With
Bidirectional off, force is applied to the target only - so a static target makes the tow do nothing and you'll see a warning in the log. Internally uses SpawnCableBetween + DriveStartPhysics/DriveEndPhysics. LOD settings forwarded to the spawned cable. Tick disabled when idle.
Tow Target RAC Tow Target
Component - Marker that makes an actor discoverable as a tow target.
Optional marker component. The Tow Component can attach to any Actor without one of these - Attach Tow(Target) works on vehicles, props, level-placed static meshes, anything with a root component. You only need a Tow Target Component when you want auto-discovery (Attach Tow to Nearest) to be able to find this actor by proximity, or when you want to advertise an attach socket / offset that the towing side will pick up automatically. Place it on actors you want to make discoverable as tow targets, set AttachSocket / AttachOffset for where the cable attaches, and toggle Towable to enable/disable.
Tow Target
AttachSocketNameSocket on this actor where the tow cable attaches.
AttachOffsetVectorOffset from origin/socket for the tow attach point. Default (0,0,0).
TowableboolWhether this target is currently available for towing. Toggle at runtime to enable/disable. Default true.
PriorityfloatWhen multiple targets are in range, higher priority gets picked first. Default 0.
Functions
Find the nearest towable target within radius. Returns null if none found. Static function.
Find all towable targets within radius, sorted by distance (then priority descending for ties). Static function.
Events
Fires when this target gets towed.
Fires when tow is released from this target.
Verlet Cable Component RAC Verlet Cable
The core physics solver. Simulates particles connected by distance constraints with Verlet integration. Used directly for beams/lasers, or wrapped by the Cable actor for full-featured cables.
Simulation
NumSegmentsIntegerMinimum number of particles. More = smoother, heavier. Default 20, range 2-500. Acts as a minimum when TargetSegmentLength is set; particle count auto-grows past this for long cables.
CableLengthfloatTarget cable length in world units. Default 1000.
TargetSegmentLengthfloatTarget spacing between particles (units). When > 0, particle count auto-grows with CableLength to maintain this spacing, capped by MaxParticlesPerCable. Lower = denser cable, more CPU. Default 0 = disabled (NumSegments is the exact particle count, matching v1.0.1 behavior). Set to ~50 on long auto-extending cables that need to stay responsive as they grow.
MaxParticlesPerCableIntegerHard cap on particles per cable. Very long cables (1000m+) hit this cap and segments grow longer than TargetSegmentLength rather than spawning unbounded particles. Default 2000. Advanced
SolverIterationsIntegerConstraint solver passes per substep. Higher = stiffer. Default 8, range 1-64.
DampingfloatVelocity damping. 0 = no damping, 1 = frozen. Default 0.02.
GravityScalefloatMultiplier on world gravity. 0 = floating. Default 1.0.
InitialSpreadfloatRandom offset at spawn for organic shapes. Default 0.
SubstepCountIntegerPhysics substeps per frame. Higher = more stable at cost. Default 2, range 1-8. Advanced
MaxAutoSubstepsIntegerCaps auto-substeps at low FPS. Default 4, range 1-8. Advanced
PreventStretchingboolInextensible (Rigid Length) - Prevents cable segments from stretching beyond their rest length. Use for rigid materials like metal chains, wire rope, or anything that should not elongate. Segments still compress/fold naturally. Solver-level constraint - does NOT apply forces to attached actors (see Cable Pulls Start/End Actor for that). Default false. Advanced
MaxStretchDistancefloatMax distance any grabbed particle can be dragged from its original position. Per-cable limit (CableInteractionComponent's own MaxStretchDistance takes priority when non-zero). 0 = unlimited. Default 0. Advanced
Simulation | Drift
DriftStrengthfloatGentle ambient movement strength. Default 0.0.
DriftFrequencyfloatHow fast drift direction changes (Hz). Default 0.3.
DriftSmoothnessfloatSmoothness of drift motion. Higher = smoother. Default 8.0, range 1-50. Advanced
LockDriftXboolDisable drift on the X axis. Default false.
LockDriftYboolDisable drift on the Y axis. Default false.
LockDriftZboolDisable drift on the Z axis. Default false.
Simulation | Wind
UseWorldWindboolSample world wind (Wind Directional Source actor) and apply to cable particles. Default false.
WorldWindScalefloatMultiplier on world wind force applied to the cable. Default 1.0.
WindTurbulencefloatPer-particle Perlin noise modulation on wind force. 0 = uniform wind, 1 = fully noisy. Default 0.5, range 0-1.
WindTurbulenceFrequencyfloatFrequency of wind turbulence noise variation. Higher = faster fluctuations. Default 1.5.
Simulation | Attract Point
AttractPointVectorWorld-space point that particles pull toward. Default (0,0,0).
AttractStrengthfloatPull acceleration toward AttractPoint. 0 = off. Default 0.
AttractWanderboolPer-cable Perlin noise offset on attract point. Default false.
AttractWanderRadiusfloatWander radius in world units. Default 50.
AttractWanderSpeedfloatWander frequency in Hz. Default 0.5.
Simulation | Rigid Endpoints
StartRigidParticlesIntegerNumber of particles at cable START held stiff in a line. Creates a rigid nozzle section. Default 0, range 0-6.
EndRigidParticlesIntegerNumber of particles at cable END held stiff in a line. Creates a rigid nozzle section. Default 0, range 0-6.
RigidStiffnessfloatHow strongly rigid particles are pulled toward the target line. 0 = no effect, 1 = fully rigid. Soft constraint with automatic falloff. Default 0.8, range 0-1.
RigidFollowsAttachmentboolWhen true, rigid direction follows the attached actor/component/socket rotation. When false, uses manual direction vectors. Default true.
StartRigidDirectionVectorManual world-space direction for start rigid section. Zero = auto from cable tangent. Only used when RigidFollowsAttachment is false.
EndRigidDirectionVectorManual world-space direction for end rigid section. Zero = auto from cable tangent. Only used when RigidFollowsAttachment is false.
Extend/Retract | Auto Length
AutoLengthboolAuto-set CableLength to match endpoint distance each tick. Cable stays taut. Ideal for beams, lasers, tractor beams. Default false.
AutoLengthMultiplierfloatMultiplier on endpoint distance. 1.0 = perfectly taut, 1.1 = 10% slack. Default 1.0, range 1.0-3.0.
Extend/Retract
ExtendRatefloatExtension speed in units/sec. Used by both auto-extend and manual StartExtending(). Default 0.
MaxCableLengthfloatMaximum cable length. 0 = unlimited. Default 0.
PullBackAtMaxLengthboolPull Back at Max Length - When CableLength reaches MaxCableLength, hard-clamp attached endpoint actors so they can't drag the chain past its cap (impulse for physics bodies, position clamp for characters). Reuses the Inextensible enforcement logic but only at the cap. Without this, MaxCableLength stops the internal length number from growing but the player can keep dragging the endpoint and the cable visibly stretches. Off by default for back-compat. Default false.
RetractRatefloatRetraction speed in units/sec. Used by both auto-retract and manual StartRetracting(). Default 0.
MinCableLengthfloatMinimum cable length. 0 = unlimited. Default 0.
AutoExtendboolAutomatically grow cable when pulled taut. Default false.
TensionThresholdfloatTension ratio that triggers extension. Default 0.9.
AutoRetractboolAutomatically shrink cable when slack. Default false.
RetractTensionThresholdfloatTension ratio below which retraction triggers. Default 0.85.
RetractKeepSlackfloatHow much slack to keep. Default 0.2, range 0.05-0.5.
Performance
SleepDistancefloatCamera distance to enter Sleeping tier. 0 = never sleep. Default 0.
SleepSolverIterationsIntegerSolver iterations while sleeping. 0 = fully frozen. Default 0.
SettleTimefloatSeconds to simulate before sleep is allowed (lets the cable settle into drape shape first). Default 0, range 0-30. Cable Point sets a separate CableSettleTime default for cables it spawns.
EnableLODTiersboolEnable graduated LOD (Full/Medium/Low/Sleeping). Default false.
LODMediumDistancefloatDistance for Medium tier. 0 = auto (33% of SleepDistance). Default 0.
LODLowDistancefloatDistance for Low tier. 0 = auto (66% of SleepDistance). Default 0.
HideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Cable reappears at Medium/Full. Default true.
HideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Cable reappears when it wakes. Default true.
DisableShadowsAtLowLODboolDisable shadow casting at Low/Sleeping LOD to save shadow map draw calls. Shadows restore at Medium/Full. Default true.
CurrentLODTierERACCableLODCurrent LOD tier. Read-Only
MaxVisualSegmentsIntegerCap visual segments. 0 = use NumSegments. Default 0. Advanced
LODMediumVisualSegmentsIntegerVisual segments at Medium LOD. 0 = auto (half). Default 0. Advanced
LODLowVisualSegmentsIntegerVisual segments at Low LOD. 0 = auto (quarter). Default 0. Advanced
SleepAttachedBodiesboolPut attached physics bodies to sleep when the cable sleeps, wake them when it wakes. Off by default - enabling can break gameplay objects (e.g. towed vehicles) that need to keep simulating. Default false. Advanced
Collision
EnableCollisionboolEnable world collision traces. Default false.
CollisionRadiusfloatTrace radius per particle. Default 5.0.
HighFidelityCollisionboolTrace Every Substep (Expensive) - Runs collision traces every physics substep (2-4x per frame) instead of once. Only needed for fast-moving cables (grapple ropes, swinging) that clip through walls between substeps. Disables parallel solving for this cable. Default false. Advanced
SegmentCollisionboolTrace cable segments (particle-to-particle) to catch pass-through on thin geometry. Prevents tunneling through walls that per-particle sweeps miss. Default false.
MaxTracesPerFrameIntegerMax Collision Traces / Frame - Default 8 spreads traces across frames. Long cables auto-bypass this budget so the cache stays fresh and they don't thrash against geometry on contact; short cables stay budgeted. 0 = unlimited (all particles every frame, best draping). Set 0 only if even short cables clip through surfaces.
MaxTracesPerSubstepIntegerMax Traces / Substep (Long-Cable Cap) - Per-substep cap on the long-cable auto-bypass. When a cable outgrows MaxTracesPerFrame and is in contact, collision auto-promotes to per-substep tracing on the active region (in-contact + neighbours + fast-movers). This caps how many of those active particles get traced per substep. 0 = unlimited. Override globally with cvar rac.MaxTracesPerSubstep. Default 50. Advanced
AdaptiveTracePriorityboolAdaptive Trace Priority - Prioritizes fast-moving and in-contact particles for traces. Particles at rest skip their turn so falling/swinging particles get traced every frame. Dramatically improves collision with the same trace budget. Default true.
CollisionFrictionfloatSurface friction. 0 = frictionless, 1 = sticky. Default 0.15. Advanced
SurfaceCrawlboolProjects drift/attract forces onto surface tangent. Makes cables crawl along surfaces. Default false. Advanced
SurfaceAdhesionfloatForce pressing particles into surfaces. 0 = off. Default 0, range 0-500. Advanced
CollisionChannelCollision ChannelWhich channel to trace for collision. Default WorldStatic.
CollideWithStartActorboolAllow the cable to collide with the actor attached at its start. When false (default), the start actor is ignored by collision traces. Advanced
CollideWithEndActorboolAllow the cable to collide with the actor attached at its end. When false (default), the end actor is ignored by collision traces. Advanced
CollisionLeashboolConstrain at Wrap Points - When the cable wraps around geometry, constrain endpoints within the remaining rope length from the wrap point. Different from Inextensible: this is a local constraint at each wrap point, not a global length limit. Requires collision enabled. Default false.
Attachments
AttachStartToActor ReferenceActor to attach cable start to.
AttachEndToActor ReferenceActor to attach cable end to.
AttachStartComponentTagNameFind sibling component by tag on owning actor for start. Takes priority over AttachStartTo.
AttachEndComponentTagNameFind sibling component by tag on owning actor for end.
AttachStartOffsetVectorOffset from the start actor's transform, applied in the actor's local space - rotation and scale are honored. Use SetCableStartLocation(WorldPos) for fixed world-space anchors.
AttachEndOffsetVectorOffset from the end actor's transform, applied in the actor's local space - rotation and scale are honored. Use SetCableEndLocation(WorldPos) for fixed world-space anchors.
AttachStartSocketNameSocket name on start actor.
AttachEndSocketNameSocket name on end actor.
FreeStartboolSTART endpoint not pinned, simulates freely. Default false.
FreeEndboolEND endpoint not pinned, simulates freely. Default false.
StartLagSpeedfloatHow fast the START endpoint chases its target. 0 = instant, 10 = snappy, 2 = sluggish. Creates inertia for beams. Default 0. Advanced
EndLagSpeedfloatHow fast the END endpoint chases its target. Same scale. Default 0. Advanced
DriveStartPhysicsboolCable Pulls Start Actor - The cable applies spring forces to the start actor when stretched. Without this, the cable is cosmetic (follows but never pulls). Requires a simulating physics body. Default false.
DriveEndPhysicsboolCable Pulls End Actor - The cable applies spring forces to the end actor when stretched. Without this, the cable is cosmetic (follows but never pulls). Requires a simulating physics body. Default false.
EndpointPhysicsStiffnessfloatPull Force Stiffness - Spring strength of the pull force. Higher = rigid rope, lower = elastic bungee. Default 5000. Advanced
EndpointPhysicsDampingfloatPull Force Damping - Reduces bouncing/oscillation at the rope limit. Default 0. Advanced
Visuals
EnableVisualsboolEnable built-in spline mesh rendering on this component. Default false.
VisualMeshStatic MeshMesh per segment. Defaults to engine cylinder.
VisualMaterialMaterialMaterial for segments (slot 0). Supports UVOffset/UVScale.
AdditionalVisualMaterialsMaterial ArrayMaterials for additional mesh slots (slot 1, 2, ...) when VisualMesh has multiple material sections. Empty = no extra slots.
VisualMeshScaleVector 2DCross-section scale. Default (0.5, 0.5). Used when taper scales are zero.
VisualFlowTilingfloatUV tiling along cable. Default 1.0.
VisualDistanceScaleFactorfloatDistance-based thickness. 0 = disabled. Default 0. Advanced
CastShadowboolCast shadow from visual meshes. Default false.
ReceiveDecalsboolWhether visual spline meshes receive decals. Default true.
DriveMaterialTensionboolAuto-feed the cable's tension ratio (0-1) into a scalar material parameter each tick. Default false.
TensionMaterialParameterNameNameName of the scalar parameter receiving the tension ratio. Default "Tension".
TensionRemapMinfloatTension ratio that maps to 0 in the material. Default 0.
TensionRemapMaxfloatTension ratio that maps to 1 in the material. Default 1.0, range 0.01-2.0.
TensionCurvefloatResponse curve exponent applied after remap. <1 = kicks in sooner (more sensitive), >1 = ramps up later (more gradual). Default 1.0, range 0.1-5.0.
MinVisualDistanceScalefloatFloor multiplier for distance scaling. Default 1.0. Advanced
MaxVisualDistanceScalefloatCeiling multiplier for distance scaling. Default 5.0. Advanced
Visuals | Shape
VisualStartScaleVector 2DScale at cable start. (0,0) = use VisualMeshScale. Default (0,0).
VisualEndScaleVector 2DScale at cable end. (0,0) = use VisualMeshScale. Default (0,0).
VisualEndFlarefloatMultiplier on last segment(s) for impact bloom. 1 = none. Default 1.0.
VisualEndFlareSegmentsIntegerHow many end segments ramp to flare. Default 1. Advanced
BeamNoiseAmplitudefloatPerpendicular wobble displacement. Visual only. 0 = off. Default 0.
BeamNoiseSpeedfloatNoise change frequency in Hz. Default 5.0. Advanced
BeamNoiseScalefloatSpatial frequency along cable. Higher = more wiggles. Default 1.0. Advanced
Interaction
AllowPinningboolPermission gate for pinning particles. Default false.
AllowUnpinningboolPermission gate for unpinning. Default true.
PinLockDelayfloatSeconds after BeginPlay before AllowPinning automatically turns off. 0 = never auto-lock. Lets editor-placed systems pin on init, then lock out new pins. Default 0.
AllowGrabbingboolPermission gate for grabbing. Default true.
Cutting
AllowCuttingboolPermission gate for cutting. When false, CutAtParticle is a no-op. Default false.
CutImpulseStrengthfloatRandom velocity applied at the cut point for a natural snap effect. Default 10.
Functions
Returns world positions of all simulation particles.
Single particle world position.
Verlet velocity delta (Position - OldPosition). Useful for VFX direction/magnitude.
Number of simulation particles.
Override a particle's position. Not pinned, may be overwritten next tick.
0 = slack, 1 = fully taut.
Inverse of tension ratio.
Sag-normalized tension: 0 = resting drape, 1 = perfectly straight. Automatically calibrates to each cable's natural sag. Used internally by DriveMaterialTension.
Sum of real segment distances (not target CableLength).
Find the closest point on the cable to a world position. Segment-based (snaps to nearest line segment between particles).
Find the closest particle to a world position.
Get the interpolated world position on the visual spline at a given segment and alpha (0-1). Useful for placing effects or objects along the smoothed cable curve rather than at raw particle positions.
Get the smoothed rope exit direction at an endpoint by sampling multiple particles. From Start = true returns direction from start into the rope. Sample Depth controls how many particles deep to sample (higher = smoother but less local, default 3). Useful for orienting attach meshes or VFX along the cable's actual curvature.
Resolved world-space cable start.
Resolved world-space cable end.
Attach the cable START to an actor, optionally at a socket with an offset. Clears any world-location override.
Set the cable START to a fixed world position. The start stays at this position even if the cable component moves.
Release the cable START to simulate freely (no longer pinned to any target).
Attach the cable END to an actor, optionally at a socket with an offset. Clears any world-location override.
Set the cable END to a fixed world position. The end stays at this position even if the cable component moves.
Release the cable END to simulate freely (no longer pinned to any target).
Re-initialize all particles to a straight line between endpoints.
Begin continuous extension at ExtendRate.
Stop continuous extension.
Begin continuous retraction at RetractRate.
Stop continuous retraction.
Query manual extend state.
Query manual retract state.
Push interior particles with decaying strength (start to end). For origin movement reactions.
Random per-particle push. For startle/transition reactions.
Show/hide all spline meshes without destroying them. Cheapest toggle for beams.
Current LOD tier (Full, Medium, Low, Sleeping).
Whether the cable is in Sleeping tier.
Force this cable to a specific LOD tier, bypassing distance and budget calculations. Useful for debug or cinematic override.
Clear the forced LOD override, returning to normal distance/budget-based LOD.
Static. Returns all active VerletCable components across all worlds. Filter by GetWorld() if needed. Useful for debug tools and global cable queries.
Cutting
Cut the cable at the given particle. Truncates particles to [0..Index], sets FreeEnd=true, remaps pins, broadcasts OnCableCut. Requires AllowCutting.
Insert a new particle at the closest point on the cable to the given world position. Returns the index of the new particle.
Pinning
Pin a specific particle at a world position.
Pin a particle to an actor (follows movement).
Release a pinned particle.
Pin the nearest particle to a world position. Returns the particle index.
Unpin the nearest pinned particle to a world position.
Check if a particle is pinned.
Get all pinned particle indices.
Get pin location for a particle. Returns false if not pinned.
Number of active pins on this cable.
Static (Global)
Set global cable LOD budget. Default 8 Full, 16 Medium. 0 = unlimited.
Query current cable budget.
Toggle parallel cable solving across CPU cores. Default true.
Query parallel solve state.
Niagara Integration
RAC exposes cable particle positions to Niagara via a custom Data Interface (RAC Cable Niagara DI). A sample Niagara system (NS_CableParticle) is included - duplicate it and customize, or build your own from scratch.
Cable-Side Setup
On the cable's VerletCable component:
- Check FeedNiagara
- Set NiagaraSystem to your Niagara system asset
- The cable auto-creates a NiagaraComponent at BeginPlay, discovers itself via attachment, and the DI caches positions every tick
Niagara
FeedNiagaraboolEnable automatic Niagara feeding. Default false.
NiagaraSystemNiagara SystemNiagara system asset to auto-spawn. A NiagaraComponent is created at BeginPlay and attached to this component.
NiagaraComponentTagNameTag to find an existing NiagaraComponent on the owning actor instead of auto-creating. Only used when NiagaraSystem is not set. Advanced
NiagaraTargetNiagara ComponentThe resolved Niagara component. Auto-set at BeginPlay. Can also be set directly from Blueprints/C++. Transient
NiagaraPositionArrayNameNameName of the RAC Cable DI user parameter on the Niagara system. Default "CableSource".
NiagaraNumPointsNameNameName of the Integer user parameter for spawn count. Empty = don't set. Default "NumPoints".
NiagaraFeedMinLODERACCableLODMinimum LOD tier that still feeds Niagara. Default Medium (feeds at Full and Medium, skips at Low and Sleeping).
Niagara System Setup (Step-by-Step)
You need to create a Niagara system that reads from the RAC Cable Data Interface. This requires familiarity with the Niagara editor.
- Create a Niagara System (empty system, add an empty emitter)
- Add User Parameters at the system level:
- Type "RAC Cable Particles" (under Data Interface), name it
CableSource
- Type int32, name it
NumPoints, default 21
- Emitter Properties: Sim Target = CPU, enable Requires Persistent IDs
- Emitter Update: Add Spawn Burst Instantaneous, link Count to
NumPoints
- Particle Spawn:
- Add Initialize Particle (set Lifetime = 99999)
- Add Set Particles.RibbonLinkOrder = Execution Index (if using Ribbon Renderer)
- Particle Update: Add a Scratch Pad Module:
- Add input: type RAC Cable Particles (DI), name
CableSource
- In the graph: drag CableSource into Map Get, pull wire to GetParticlePosition node
- Wire Execution Index to the Index input
- Wire Position output to Map Set → Particles.Position
- Outside the Scratch Pad: link CableSource input to User.CableSource
- Render: Add a Ribbon Renderer (set CurveTension = 1.0 for sharp tracking) or Sprite Renderer
- Save the system
RAC Cable Niagara Data Interface
Custom Niagara Data Interface that exposes cable particle data. Auto-discovers the cable from the NiagaraComponent's attachment hierarchy. Add as a User Parameter on a Niagara System (type: "RAC Cable Particles").
DI Properties
IncludeBeamNoiseboolApply the cable's BeamNoiseAmplitude Perlin displacement to positions, matching visual wiggles. Default true. Turn off for raw physics positions only.
SourceCableTWeakObjectPtrCable reference. Set automatically via attachment discovery or manually from C++.
SourceWrappingCableTWeakObjectPtrWrapping cable reference. Set automatically when attached to a wrapping cable.
DI Functions (Available in Niagara Modules)
Total number of cable particles. Use for Niagara spawn count.
World-space position of cable particle at index (clamped to valid range). Includes beam noise displacement when IncludeBeamNoise is true.
Actual measured cable length (sum of segment distances).
Events
Fires each tick the cable is under tension.
Fires each tick the cable is extending (auto or manual). Provides the new cable length.
Fires each tick the cable is retracting (auto or manual). Provides the new cable length.
Fires once when cable hits MaxCableLength.
Fires once when cable hits MinCableLength.
Fires when a particle is pinned.
Fires when a particle is unpinned.
Fires when the cable is cut at a particle.
Fires each tick after physics solve with all particle world positions. Feed to Niagara, custom meshes, or any external system.
Cable Point Component RAC Cable Point
Cable Actor only - Spawns regular Cable Actors. Does not work with Wrapping Cables.
Place on actors to mark cable endpoints. Supports auto-connect networks, manual connections, Cable Parent system for shared defaults, and editor preview with color-coded debug lines.
Cable Point
AutoConnectNearbyboolAuto-connect to nearby points at BeginPlay. Default true.
CableChannelIntegerPoints only auto-connect within the same channel. Default 0.
AutoConnectRadiusfloatMax auto-connect distance. Default 5000.
MaxAutoConnectionsIntegerMax connections per point. Default 3, range 1-100.
MinAutoConnectAnglefloatMinimum angle between connections. Default 30 degrees.
OnlyConnectToParentsboolOnly auto-connect to Cable Parent points. Creates hub/star topologies. Default false.
ManualConnectionActorsActor ArrayPick actors for manual connections. Resolved at BeginPlay.
ConnectionsComponent ArrayActive connections to other cable points. Populated by manual + auto-connect at BeginPlay, or via CreateCableTo in Blueprint.
SpawnedCablesCable Actor ArrayAll cables spawned by/for this point. Read-Only
ShowDebugLinesboolShow editor preview lines. Default true.
DebugLineThicknessfloatLine thickness. Default 2.0, range 0.5-50.
Drive Endpoint PhysicsboolWhen this point hosts a cable endpoint, the spawned cable's Cable Pulls Start Actor / Cable Pulls End Actor flag is enabled so the cable applies tension force back to the host actor's physics body. Each connecting point's flag controls its own end - one rigid anchor + one physics-driven end is fine. Useful for chandeliers, signs, swinging objects, or any decorative cable network where the supports should feel the cable's tension. Requires the host actor to have a simulating physics body. Default false.
Cable Parent
IsCableParentboolMark as Cable Parent. Settings flow to all cables in connected network. Default false.
OverrideCableDefaultsboolOverride parent's Cable Defaults for cables near this point. Default false.
Cable Defaults
CableLengthfloat0 = auto from distance * CableSlackRatio. Default 0.
CableSlackRatiofloatSlack multiplier. 1.0 = taut, 1.2 = natural drape. Default 1.2.
NumSegmentsInteger0 = auto-calculate from distance. Default 0.
MaxSegmentsIntegerMaximum visual spline mesh segments at Full LOD. 0 = no cap. Default 32.
CableGravityScalefloatGravity multiplier for spawned cables. 0 = zero-G (floats), 1 = normal gravity (hangs and drapes). Default 1.0.
CableMeshStatic MeshMesh for cables in this network.
CableMaterialMaterialMaterial for cables in this network.
CableMeshScaleVector 2DCross-section scale for cable mesh. Default (0.5, 0.5).
OverlapCapsuleRadiusfloatOverlap capsule radius for overlap detection on spawned cables. Default 500.
CableInitialSpreadfloatInitial random spread perpendicular to cable axis - creates organic slack shape at spawn. 0 = straight line. Default 0.
CableDriftStrengthfloatAmbient drift force strength (pushes cable into organic curves). 0 = no drift. Default 0.
CableDriftFrequencyfloatHow fast the drift direction changes (Hz). Lower = slower, smoother undulation. Default 0.1.
CableSleepSolverIterationsIntegerSolver iterations when sleeping (0 = fully frozen). Default 0.
CableSettleTimefloatSeconds to simulate before sleep is allowed (cable settles into drape shape). Default 2.0.
CableMaxTracesPerFrameIntegerMax collision traces per frame per cable. 0 = trace all particles every frame. Default 8.
CableMaxAutoSubstepsIntegerCap on auto-calculated substeps at low FPS. Prevents death spiral. Default 2.
CableDistanceScaleFactorfloatDistance-based thickness scaling for far visibility. 0 = disabled. Default 1.0.
CableEnableCollisionboolEnable collision on spawned cables. Default true.
CableCollisionRadiusfloatCollision trace radius. Default 5.0.
CableHighFidelityCollisionboolPer-particle sphere traces every substep instead of once per frame. More accurate but more expensive. Default false. Advanced
CableSegmentCollisionboolTrace cable segments (particle-to-particle) to catch pass-through on thin geometry. Prevents tunneling through walls. Default false.
CableSolverIterationsIntegerSolver iterations per substep (higher = stiffer cable, less sag). Default 6.
CableDampingfloatVelocity damping (0 = no damping, 1 = full damping). Lower values let cables swing more. Default 0.1.
CableSubstepCountIntegerSubsteps per tick. Higher = more stable with fast endpoints. Default 1.
CablePreventStretchingbool"Inextensible (Rigid Length)" - segments can fold and go slack but cannot stretch beyond rest length, like a chain or wire rope. Combine with Drive Endpoint Physics for declarative chain chandeliers and rigid-link cable networks. Default false (preserves pre-v1.0.2 elastic behavior).
CableSleepDistancefloatDistance from camera before cable sleeps (0 = auto-calculate from cable length). Default 0.
CableEnableLODTiersboolGraduated LOD. Default true.
CableCastShadowboolShadow casting. Default false.
CableReceiveDecalsboolWhether spawned cables receive decals. Default true. Advanced
CableCollisionChannelCollision ChannelCollision trace channel for world collision queries. Default WorldStatic. Advanced
CableCollisionFrictionfloatSurface friction when cable slides on geometry (0-1). Default 0.3. Advanced
CableDriftSmoothnessfloatHow smooth the drift waves are along the cable. Higher = smoother. Default 8.0. Advanced
Cable Defaults | Wind
CableUseWorldWindboolCable particles are affected by Wind Directional Source actors in the scene. Default false.
CableWorldWindScalefloatMultiplier on the wind force from scene wind sources. Default 1.0.
CableWindTurbulencefloatPer-particle wind variation for organic look. Default 0.5. Advanced
CableWindTurbulenceFrequencyfloatHow fast the wind turbulence pattern changes. Default 1.5. Advanced
Cable Defaults | Pull Physics
CablePullStiffnessfloatSpring stiffness of the pull force when an endpoint's Drive Endpoint Physics is enabled. Maps to the spawned cable's EndpointPhysicsStiffness. Higher = rigid rope, lower = elastic bungee. Default 5000. Advanced
CablePullDampingfloatDamping on the pull force, reduces bouncing/oscillation at the rope limit. Maps to the spawned cable's EndpointPhysicsDamping. Default 0. Advanced
Cable Defaults | Appearance
AdditionalCableMaterialsMaterial[]Additional material slots for multi-material cable meshes (slot 1, 2, ...).
CableFlowTilingfloatHow many times the UV tiles along the cable length. Controls texture repetition. Default 1.0.
Cable Defaults | Tension Material
CableDriveMaterialTensionboolDrive a scalar material parameter based on cable tension ratio. Default false.
CableTensionParameterNameNameName of the scalar parameter on the cable material to drive with tension. Default "Tension". Advanced
CableTensionRemapMinfloatTension below this value maps to 0 in the material. Default 0.0. Advanced
CableTensionRemapMaxfloatTension at this value maps to 1 in the material. Default 1.0. Advanced
CableTensionCurvefloatResponse curve exponent after tension remap. >1 = sharper onset, <1 = gradual. Default 1.0. Advanced
Cable Defaults | Distance Scale
CableMinDistanceScalefloatMinimum thickness multiplier floor for distance scaling. Default 1.0. Advanced
CableMaxDistanceScalefloatMaximum thickness multiplier ceiling for distance scaling. Default 5.0. Advanced
CableDistanceScaleReferencefloatReference distance at which CableMeshScale is used unmodified (0 = auto). Default 0. Advanced
Cable Defaults | Interaction
CableActiveboolWhether spawned cables start active (gameplay flag for powered/energized state). Default true.
CableClimbableboolWhether spawned cables can be climbed via Climb Component. Default false.
CableAllowTetheringboolAllow spawned cables to be auto-tethered by Cable Interaction Component. Default false.
CableAllowGrabbingboolWhether players can grab spawned cables via Cable Interaction Component. Default true.
CableAllowPinningboolWhether spawned cables can be pinned at runtime. Default false.
CableAllowUnpinningboolWhether pins can be removed from spawned cables at runtime. Default true.
Cable Defaults | End Caps
CableEndCapMeshStatic MeshMesh for cable endpoints (connector/plug).
CableEndCapMaterialMaterialMaterial for end cap meshes.
CableEndCapScaleVectorScale of end cap meshes. Default (1,1,1).
CableEndCapRotationOffsetRotatorRotation offset on top of auto-orientation for end caps. Default (0,0,0). Advanced
CableSealCapMeshStatic MeshMesh to seal hollow cable ends at free/cut endpoints. Advanced
CableSealCapMaterialMaterialMaterial for seal cap meshes. Advanced
CableSealCapInsetfloatHow far seal caps are pushed into the cable end (world units). Default 5.0. Advanced
Cable Defaults | Cutting
CableAllowCuttingboolWhether spawned cables can be cut at runtime. Default false.
CableCutImpulseStrengthfloatRandom velocity injected into particles when cable is cut. Default 10.0.
CableMinCutParticlesIntegerMinimum particles per piece after cutting. Default 3. Advanced
CableCutOffMaterialMaterialMaterial applied to the cut-off tail cable.
CablePostCutMaterialMaterialMaterial the remaining (head) cable switches to after being cut.
CableAutoDestroyCutPiecesboolAutomatically destroy cut-off cable pieces after a delay. Default false.
CableAutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
CableOnlyDestroyUnattachedboolOnly auto-destroy cut pieces where neither end is attached. Default true. Advanced
Cable Defaults | Regrow
CableRegrowAfterCutboolRegrow the cable back to its original length after being cut. Default false.
CableRegrowSpeedfloatHow fast the cable regrows (world units/sec). Default 200.
CableRegrowDelayfloatSeconds to wait before regrowing starts after a cut. Default 1.0.
Cable Defaults | Rideable
CableRideableboolWhether spawned cables are rideable (zipline). Default false.
CableRideSpeedfloatBase travel speed along the cable (cm/s). Default 800.
CableRideHangDistancefloatHow far below the cable the rider hangs (cm). Default 350.
Cable Defaults | LOD Details
CableNumOverlapCapsulesIntegerNumber of overlap capsules placed along each cable for spatial queries. Default 4. Advanced
CableLODMediumDistancefloatDistance for Medium LOD tier (0 = auto from sleep distance). Default 0. Advanced
CableLODLowDistancefloatDistance for Low LOD tier (0 = auto from sleep distance). Default 0. Advanced
CableLODMediumVisualSegmentsIntegerVisual segments at Medium LOD (0 = auto). Default 0. Advanced
CableLODLowVisualSegmentsIntegerVisual segments at Low LOD (0 = auto). Default 0. Advanced
CableHideVisualsAtLowboolHide cable visuals entirely at Low LOD tier. Default true. Advanced
CableDisableShadowsAtLowLODboolDisable shadow casting at Low and Sleeping LOD tiers. Default true. Advanced
Functions
Create a cable to another point. Returns null if already connected.
Destroy all cables, clear SpawnedCables.
DestroyAllCables + remove from other ends' Connections + empty own Connections.
Check if connected to another point.
First cable (convenience for single-connection use).
Pulley Component RAC Pulley
Cable Actor only - Uses particle pinning. Does not work with Wrapping Cables.
Place on any actor to create a pulley or guide point. Auto-detects cables within range at BeginPlay and pins the nearest particle on each cable.
Pulley
DetectionRadiusfloatRange to detect cables at BeginPlay. Default 500.
ManualCablesCable Actor ArraySpecific cables to pin (optional). When empty, auto-detects all cables within DetectionRadius. When set, only these cables are pinned (still must be within DetectionRadius).
FollowParentboolPin follows parent actor movement. Default true.
PinnedCableCountIntegerNumber of cables currently pinned. Read-Only
Functions
Re-scan for cables spawned after BeginPlay.
Release all pinned cables.
Get all cable components (Verlet Cable Component) currently pinned by this pulley.
Cable Debug Component RAC Cable Debug
Runtime debug visualization for the cable system. Add it to any actor in your level (PlayerController, GameState, etc.), or just use the RAC.Debug.* console commands and one will be created automatically. All features off by default. Toggle what you need in the Details panel or via console.
Performance Visualization
LOD Heatmap
DrawLODHeatmapboolColor ALL cables by LOD tier: Green = Full, Yellow = Medium, Orange = Low, Red = Sleeping. Default false.
HeatmapLineThicknessfloatThickness of heatmap debug lines. Default 3.
Tension Heatmap
DrawTensionHeatmapboolColor ALL cables by tension: Blue = slack, White = neutral, Red = taut. Takes priority over LOD heatmap when both are on. Default false.
Pin Markers
DrawPinMarkersboolDraw spheres at all runtime pin locations on every cable. Default false.
PinMarkerSizefloatRadius of pin marker spheres. Default 8.
Distance Rings
DrawDistanceRingsboolDraw circles around each cable's midpoint at its LOD distance thresholds. Shows where tier transitions happen in world space. Default false.
RingSegmentsIntegerLine segments per distance ring (higher = smoother). Default 48.
Stats HUD
DrawStatsHUDboolShow a Slate overlay panel (top-right corner) with cable counts per LOD tier, budget usage, parallel solver status, particle/iteration totals, tension, and cuttable/grabbable counts. Default false.
Per-Cable Labels
DrawPerCableLabelsboolShow floating text above each cable with distance, LOD tier, solver iterations, tension, and length. Default false.
LabelTextScalefloatText size for per-cable labels. Default 1.
DebugLabelMaxDistancefloatMax camera distance for per-cable labels to be drawn. 0 = unlimited. Default 2000.
MaxLabelCountIntegerCap on per-cable labels drawn each frame (closest cables prioritized). Bounds DrawDebugString cost in dense scenes. Default 12, range 1-256.
Wind Debug
DrawWindDebugboolDraw wind direction arrows at each cable's midpoint when UseWorldWind is enabled. Arrow length indicates force strength. Also adds wind info to per-cable labels and stats HUD. Default false.
Force LOD Override
ForceLODOverrideboolForce ALL cables to the specified LOD tier (bypasses distance and budget). Default false.
ForcedLODTierERACCableLODThe LOD tier to force when ForceLODOverride is true.
Interaction Visualization
Interaction Debug
DrawInteractionZonesboolShow detection zones for all CableInteractionComponents. Proximity: sphere wireframe. Aim: ray line with radius cone. Default false.
DrawGrabStateboolShow active grab: grab point marker, drag line from player, grabbed particle highlight. Default false.
DrawCableFlagsboolShow per-cable permission flags (AllowCutting, AllowGrabbing, AllowPinning) near each cable's start. Default false.
DrawOverlapCapsulesboolMake the interaction overlap capsules visible on all Cable actors. Default false.
DrawCutPreviewboolShow where a cut would happen on the nearest/aimed cable (requires a CableInteractionComponent). Default false.
General
DebugUpdateIntervalfloatHow often debug shapes are redrawn (seconds). 0 = every frame. Default 0.25, range 0-2.
DebugDrawMaxDistancefloatMax distance from camera for ANY debug drawing (heatmaps, pins, rings, labels, etc.). Cables beyond this are skipped entirely. 0 = unlimited. Default 3000.
FrustumCullDebugboolSkip debug drawing for cables behind the camera. Big perf win in scenes with many cables. Default true.
Functions
Force all cables to a specific LOD tier. Useful for testing worst-case or best-case performance.
Release the forced LOD override, returning all cables to normal distance/budget-based LOD.
Get the number of cables currently at a specific LOD tier.
Total number of active particles across all cables. Useful for performance monitoring.
Console Commands
All debug features can also be toggled from the console. Type any command below - a debug component is auto-created if none exists in the level.
Toggle Commands
RAC.Debug.HUDconsoleToggle the stats HUD panel.
RAC.Debug.LODHeatmapconsoleToggle LOD tier heatmap on cables.
RAC.Debug.TensionHeatmapconsoleToggle tension heatmap on cables.
RAC.Debug.PinMarkersconsoleToggle pin location markers.
RAC.Debug.DistanceRingsconsoleToggle LOD distance rings.
RAC.Debug.LabelsconsoleToggle per-cable floating labels.
RAC.Debug.InteractionZonesconsoleToggle interaction zone visualization.
RAC.Debug.GrabStateconsoleToggle grab state visualization.
RAC.Debug.CableFlagsconsoleToggle per-cable capability flags.
RAC.Debug.CapsulesconsoleToggle overlap capsule visualization.
RAC.Debug.CutPreviewconsoleToggle cut preview visualization.
RAC.Debug.WindconsoleToggle wind direction debug arrows.
Force LOD
RAC.Debug.ForceLOD FullconsoleForce all cables to Full LOD tier.
RAC.Debug.ForceLOD MediumconsoleForce all cables to Medium LOD tier.
RAC.Debug.ForceLOD LowconsoleForce all cables to Low LOD tier.
RAC.Debug.ForceLOD SleepingconsoleForce all cables to Sleeping LOD tier.
RAC.Debug.ForceLOD OffconsoleRelease forced LOD override.
Performance Profiling
Type stat RAC in the console to see per-frame cycle timing for the cable system. This uses Unreal's built-in stat profiler, same as stat Physics or stat Particles.
Tracked Stats
VerletCable TickcycleTotal tick time across all cables (includes all phases below).
PrepareSolvecycleLOD evaluation, budget assignment, pin enforcement, substep calculation.
RunSolvecycleThe Verlet constraint solver - the most expensive phase. Runs in parallel when enabled.
PostSolvecycleEvents, physics endpoint coupling, rigid endpoints, visual updates.
DetectCollisionscycleWorld collision traces (sphere traces per particle).
UpdateVisualscycleSpline mesh position/tangent updates.
Tendrils RAC Tether Utils
Cable Actor only - Spawns Verlet Cables internally.
Surface-crawling VFX cables that spread around objects using attract forces, collision, and drift. Three modes based on target size: wrap (small objects), terrain contour (large surfaces), flat contour (no target). Functions live in the Tether Utils Blueprint function library.
Spawn tendrils at a hit point. TendrilWiggle 0-1 controls calm drift to energetic writhing. High Quality Visuals = one spline mesh per sim segment (smooth but heavy), false = capped at 4 segments (fast, good for rapid spawning). Most params have sensible defaults (0 = auto).
Update tendril origin each tick while firing. Recomputes endpoints with smooth lerping.
Hide visuals and destroy all tendril components. Empties the array.
Destroy ALL tendrils in the world.
Tip
Typical usage: On hit → SpawnTendrils (once). Each tick while firing → UpdateTendrilsOrigin. On release → DestroyTendrils.
Tether Utils RAC Tether Utils
Cable Actor only - All functions operate on Verlet Cables / Cable Actors.
Blueprint function library for spatial queries and cable spawning.
Spatial Queries
Returns true if the actor is a Cable Actor or Wrapping Cable. Useful for checking line trace hits against cable actors.
Find the nearest Cable to a world position.
Find closest point on a polyline defined by points.
Find first Cable Point component on an actor.
Spawn a cable between two actors at runtime. CableLength 0 = auto from distance with 20% slack. NumSegments 0 = auto-calculate. If EndActor is null, EndOffset is treated as an absolute world position. Returns the spawned Cable Actor.
Replication Beta ticks the spawned cable to replicate to clients - see the
Replication section.
One-shot convenience: spawn a cable with physics coupling pre-configured between two actors. Stiffness 8000, Damping 50 defaults. CableLength 0 = auto from distance * SlackMultiplier. SleepDistance forced to 0. For lifecycle management (break detection, events), use the Tow Component instead. Replication Beta ticks the spawned tow cable to replicate to clients. Owning Component registers the cable with a specific Tow Component when the tower actor has more than one (otherwise the helper auto-finds one). Pairs with Destroy Tow Cable below.
Symmetric counterpart to Spawn Tow Cable for the standalone-cable workflow. Destroys the cable; the Tow Component's existing tick detects external destroys and clears its state, so manual destroy and Detach Tow play nice together. Safe to call with null.
Niagara
Manual per-tick cable-to-Niagara feed for full control. Sets SourceCable on the NDI and NumPoints on the Niagara component. Use when you need custom timing or multiple cables feeding one system. For automatic feeding, use FeedNiagara on the cable instead.
Cable Web Utils RAC Cable Web Utils
Cable Actor only - Works with Cable Points, which spawn Cable Actors.
Blueprint function library for editor-time cable web generation.
Max Connections Per Actor
Min Angle Between Connections
Auto-wire actors by proximity and angle constraints. Only writes to Connections arrays (cables spawn at BeginPlay). Returns number of connections made.
Clear all Connections arrays on the given actors. Returns number cleared.
Note
Both functions call Modify() for undo support in the editor.
Structs & Enums
Cable Pin
Pin data for a pinned particle.
Fields
PinLocationVectorWorld-space pin location.
PinToActorActor ReferenceOptional actor attachment (pin follows it).
PinSocketNameOptional socket on the actor.
PinOffsetVectorOffset from actor/socket.
Cable LOD
| Value | Solver | Visuals | Collision |
| Full | Full iterations + substeps | Every frame | Active |
| Medium | Half iterations, 1 substep | ~30 fps | Active |
| Low | 2 iterations, 1 substep | ~10 fps | Disabled |
| Sleeping | Frozen (or SleepSolverIterations) | Hidden | Disabled |
Detection Mode
How the Cable Interaction Component finds cables. Set via DetectionMode on the component.
| Value | How it works | Best for | Key settings |
| Proximity | Finds the nearest cable whose overlap capsule overlaps the player | Top-down, isometric, VR | InteractionRadius, MaxSlideSpeed |
| Aim | Traces a ray from the camera crosshair to find the aimed cable | First-person, third-person | AimDistance, AimRadius, TraceFromCamera |
Tether Target Type
What the Tether Component is currently connected to. Read from TetherTargetType (BlueprintReadOnly).
| Value | Description | Connected via |
| None | Not connected to anything | Initial state, or after Detach() |
| Cable | Connected to a Cable Actor - attach point tracks nearest point on cable | TetherToCable(Cable) |
| WrappingCable | Connected to a Wrapping Cable - attach point tracks nearest point on wrapping cable | TetherToWrappingCable(Cable) |
| Actor | Connected to an actor - attach point follows actor/socket/offset | TetherToActor(Actor, Socket, Offset) |
| Point | Connected to a fixed world position | TetherToPoint(WorldPos) |
Replication
RAC does not officially support multiplayer. Property replication is provided as a convenience for the simple cases.
Replicate the cable actor
Every EditAnywhere, BlueprintReadWrite UPROPERTY on the Cable Actor and its Verlet Cable Component is tagged Replicated. Tick Replicates on a server-spawned cable and the client receives the same property values, so it lays out and behaves the same.
Cleanest opt-in: Spawn Cable Between, Spawn Tow Cable, and Attach Tow all take an optional Replication Beta boolean. Tick it and the spawn node sets up replication before BeginPlay runs. Defaults to off so existing graphs are unchanged.
Alternative: spawn locally on every machine
To skip per-cable network traffic, don't replicate the cable. Broadcast the gameplay event that should produce a cable via a NetMulticast RPC, and have every machine - server and clients - locally call SpawnCableBetween with its own references to the two endpoint actors. As long as the endpoint actors are replicated, each machine's locally-simulated cable visually tracks the same way.
What replicates
Cable Actor propertiesEvery EditAnywhere UPROPERTY on the Cable Actor and its Verlet Cable Component.
Cut tail piecesWhen a replicated cable is cut at runtime, the spawned tail piece replicates too.
What does not replicate
EventsCuts, pin add/remove, OnCable* delegates. Use a Multicast RPC if you need them on clients.
Extend / RetractCableLength itself replicates, but the per-frame ramp runs locally. Use the bAuto* flags so each machine ramps itself.
Component stateTether, Climb, Swing, Pull, Tow, Pulley state stays local. Tow Component's TowCable ref does replicate (it's an actor pointer); bIsTowing, CurrentForce, etc. don't.
Wrapping CableDifferent architecture (wrap anchors, sections). Not replicated.
Simulation stateParticles, RuntimePins, HiddenPinParticles. Each machine simulates these locally.
FAQ
Which class do I need?
Start with what you want to build. Click a name to jump to its docs.
Level Design
Simple rope or cable between two points - Cable Actor
Cable shaped by a spline you draw in the level (powerlines, hand-routed runs) - Spline Cable
Cable that wraps around corners and geometry - Wrapping Cable
Zipline - Zipline Cable
Procedural web of cables - Cable Web Utils
Auto-connect cables between actors - Cable Point
Player Abilities
Grapple hook / swing - Swing Component
Pull objects toward you - Pull Component
Climb up/down a rope - Climb Component
Visible rope to a target (leash, lasso) - Tether Component
Grab, pin, or cut cables at runtime - Cable Interaction
Vehicles
Tow another actor with a cable - Tow Component + Tow Target
World Building
Anchor point for tethers (hook, ring) - Tether Point
Pulley or guide that redirects cables - Pulley Component
VFX / Advanced
Feed cable data to Niagara - Cable Niagara DI
Spawn cables from code at runtime - Tether Utils
What's the difference between Cable Actor and Wrapping Cable?
They are separate systems with a large shared feature set. Both support cutting, tethering + sliding, zipline riding, climbing, extend/retract, drift/wind, attract point, Niagara integration, collision, tension materials, overlap capsules, end caps, seal caps, LOD, and active state. The Cable Actor uses a Verlet particle solver and additionally supports beam effects, runtime pinning, Cable Points, Pulley, Cable Web, and auto extend/retract (tension-based). The Wrapping Cable uses a section-based solver that dynamically wraps around world geometry with wrap anchors. See the feature support table for the full breakdown.
How do I filter the Details panel to only show RAC properties?
When you select any RAC actor or component, the Details panel shows an RAC filter button in the top toolbar (alongside General, Actor, Physics, etc.). Click it to show only RAC-specific categories and hide the standard engine properties.
How many cables can I have?
Hundreds, depending on LOD settings and hardware. The LOD system, parallel solving, collision round-robin, and global cable budget keep performance in check. Sleeping cables skip simulation entirely.
Does it work with multiplayer?
Not officially - see the Replication section for what's possible and what isn't.
Do I need C++?
No. Everything is exposed to Blueprints. All functions, properties, and events are accessible from the BP editor.
Can cables collide with the world?
Yes. Enable EnableCollision on the Verlet component. Use MaxTracesPerFrame to control performance. Use MaxTracesPerFrame = 0 for precise draping on key cables (traces every particle every frame).
How do pins work?
Pins act as pulleys. The rope slides through them so tension equalizes across sections. The solver distributes cable length proportionally to each section's span distance between pin boundaries.
How do I use the active/inactive state on cables?
The Cable Actor has CableActive + OnCableActivated/OnCableDeactivated events built in. It's a pure gameplay flag; the cable keeps simulating regardless. Your BP decides what happens (swap materials, trigger effects, etc.).
What's the difference between Tether Component and Cable Interaction?
The Tether Component creates a visual rope to any target (cable, wrapping cable, actor, or point). Call TetherToCable/TetherToWrappingCable/TetherToActor/TetherToPoint to connect explicitly. The Cable Interaction Component is for player-driven cable manipulation: grab, pin, cut, and drag cables. Set DetectionMode to Proximity (overlap) or Aim (crosshair). They complement each other.
How does the zipline work?
Use Zipline Cable (a Cable Actor with ride physics pre-enabled). Call StartRiding(Character) on it and the player rides along the cable polyline with gravity, deceleration, and spring-based tracking. Tick disabled when idle.
How do I make powerlines / hand-shape a cable?
Use Spline Cable. Place one in your level, edit the Path Spline with the standard UE spline gizmo (Alt+drag a handle to add a control point, drag handles to reshape), and the cable starts simulating in that shape at runtime. For a multi-pole powerline, add a control point on each pole top and tick Pin All Spline Points. For a routing curve, leave that off and list the specific points in Pinned Spline Point Indices.
How do I make a beam or laser?
Use Verlet Cable Component directly (no Cable Actor needed). Enable AutoLength so the cable stays taut between endpoints, enable EnableVisuals for built-in spline mesh rendering, and use BeamNoiseAmplitude/BeamNoiseSpeed for wobble. Add VisualEndFlare for an impact bloom. The cable automatically tracks endpoint distance every tick.
How do I set up a cable web?
Place actors with Cable Point Components. Enable AutoConnectNearby and set the CableChannel so only same-channel points connect. For editor-time batch setup, use GenerateCableWeb from the Cable Web Utils library. Mark one point as Cable Parent and configure Cable Defaults there. The BFS flood-fill pushes settings to the entire connected network.
How do I cut a cable at runtime?
On the Verlet Cable Component, set AllowCutting = true, then call CutAtParticle(Index). On a Cable Actor, use CutCableAtWorldPosition(Location) for convenience. It finds the nearest particle, splits the cable, and spawns a new Cable Actor for the tail piece. The Cable Interaction Component also has CutNearestCable() for player-driven cutting. Enable AutoDestroyCutPieces to clean up cut-off pieces automatically, or RegrowAfterCut to grow the cable back to full length over time.
How do I make cables pull or push physics objects?
Enable DriveStartPhysics or DriveEndPhysics on the Verlet Cable Component. Tune EndpointPhysicsStiffness (default 5000) and EndpointPhysicsDamping. The cable applies spring forces to attached physics bodies when taut. Only pulls, never pushes, and force is clamped to prevent instability.
What's the difference between the Verlet Cable Component and the Cable Actor?
The Verlet Cable Component is the physics solver: particles, constraints, and optional built-in beam visuals. The Cable Actor wraps it with spline mesh visuals (parallel transport), overlap capsules, end caps, pin indicator meshes, distance-based thickness, cutting with spawn, and gameplay active state. Use the component directly for beams/lasers/tendrils. Use the actor for full-featured cables.
How do I make cables drape over terrain?
Enable EnableCollision and set a reasonable CollisionRadius. For precise draping, set MaxTracesPerFrame = 0 to trace all particles every frame (expensive, use sparingly). The attract system also works: set AttractPoint to a ground position with AttractStrength to pull the cable downward, and enable SurfaceCrawl so drift/attract forces project onto surfaces.
How do tendrils work?
Call SpawnTendrils from the Tether Utils library. It spawns multiple Verlet cables that fan out from an origin, each with attract/drift/surface crawl for organic spreading. Three modes emerge from the parameters: small/medium wrapping around a target actor, large terrain-following contours, or flat spreading with no target. Update their origin each tick with UpdateTendrilsOrigin. Clean up with DestroyTendrils.
How does the LOD system work?
Enable EnableLODTiers and set SleepDistance. Cables automatically transition through four tiers based on camera distance: Full (all iterations + substeps), Medium (half iterations, ~30fps visuals), Low (2 iterations, ~10fps visuals, no collision), Sleeping (frozen or minimal iterations, hidden). Use the global budget (SetCableBudget) to cap how many cables run at Full/Medium simultaneously.
Can I slide along cables?
Yes, two ways. The Cable Actor ride system (see Rideable and Zipline Cable) provides full zipline-style sliding. The Cable Interaction Component also supports sliding in Proximity mode when DragWithPlayer is enabled; the grab point follows the player along the cable. The Tether Component also supports sliding along cables via SlideTetherAlongCable.
How do I make the player pull back like a bungee cord?
On the Tether Component, enable ApplyTensionToMovement. Set TetherLeashLength for how far the player can walk before the pull kicks in. TensionForceMultiplier controls strength (~2 gentle, ~10 strong, ~20+ hard yank), and TensionDamping prevents spring oscillation. The force goes through the character's CharacterMovementComponent, so it respects movement mode and friction.
Can I use my own mesh and material?
Yes. On Cable Actor, set CableMesh and CableMaterial. For flow effects, your material needs two scalar parameters: UVOffset (scrolls automatically) and UVScale (set per segment for continuous UVs). The plugin creates Dynamic Material Instances per segment so each one gets correct UV values. End caps and pin meshes also support custom meshes and materials.
How do I change the cable's polygon count / face count?
RAC uses Spline Mesh Components with a user-supplied static mesh, so the cross-section shape is determined entirely by the mesh asset you assign to CableMesh (on Cable Actor) or VisualMesh (on Verlet Cable Component). Swap in a low-poly cylinder for a faceted look, a high-poly cylinder for smooth rounds, or any custom cross-section shape you like (hexagonal, flat ribbon, braided, etc.). There is no NumSides parameter because you already have full control through the mesh itself.
What are Cable Points good for?
Cable Points are connection endpoints. Place them on actors, and they auto-connect to nearby Cable Points at BeginPlay to spawn cables between them. The Cable Parent system lets you mark one point as the parent. Its Cable Defaults (mesh, material, physics, LOD) flow to every cable in the connected graph via BFS. Override individual points with OverrideCableDefaults.
How does the Pulley Component work?
Add a Pulley Component to any actor. It auto-detects cables within DetectionRadius and pins them at the pulley location. Cables slide through the pin like a real pulley. Enable FollowParent so the pin point moves with the actor. Use ManualCables to pin specific cables instead of auto-detecting.
How do I detect which cable the player is looking at?
Add a Cable Interaction Component to your character and set DetectionMode = Aim. Each tick it traces from the camera and updates NearestCable, NearestPoint, NearestParticleIndex, and NearestDistance. Call GetDetectedCable() for a clean query, or bind OnCableInRange / OnCableOutOfRange events to show/hide a crosshair highlight. AimRadius controls forgiveness (how far off-center still counts as aimed).
How do I make cables react to explosions or impacts?
Use InjectVelocity(Vector) on the Verlet Cable Component to push all particles in a direction (good for blast waves), or InjectRandomBurst(float Strength) for a chaotic startle effect (each particle gets a random push). Both only affect interior particles - endpoints stay attached. The cable's damping brings it back to rest.
Can I change cable properties at runtime?
Yes. Every property on every RAC class is BlueprintReadWrite. Change CableLength, GravityScale, CableMaterial, EnableCollision, or anything else from Blueprint at any time. Changes take effect on the next tick. Some properties (like NumSegments) require ResetSimulation() to re-initialize the particle chain.
How do I set up a wrapping cable?
Place an Wrapping Cable actor and set AttachStartTo / AttachEndTo to your anchor actors. The cable automatically wraps around geometry between them. Tune MaxWrapAnchors for wrap complexity, WrapStickiness for how aggressively anchors hold, and WrapCollisionChannel to match your geometry. For player interaction, the Cable Interaction Component can detect and grab wrapping cables. For pull-back on taut cables, enable PullBackWhenTaut.
Can I package a Blueprint-only project with RAC?
Yes. UE requires at least one C++ class in the project for monolithic builds with C++ plugins. Tools > New C++ Class > None (Empty Class) > Create. See the Troubleshooting section for the full walkthrough. Engine-wide limitation, not specific to RAC.
Troubleshooting
Packaging fails in a Blueprint-only project
BP-only projects have no Source folder, so UBT cannot compile C++ plugins into the executable. This affects every C++ plugin, not just RAC.
Fix:
- Tools > New C++ Class
- Select None (Empty Class)
- Name it anything (e.g.
MyGameModule)
- Click Create Class, let the editor compile
- Package again
This adds a Source folder to your project so UBT can compile and link RAC into the build.
Cable visuals don't appear at runtime
- Cable Actor: Visuals are automatic. Check
CableMesh is set (null = engine cylinder, custom mesh must be valid).
- Standalone Verlet Cable Component: Enable
EnableVisuals and set VisualMesh. Off by default on the raw component.
- Check if
SetVisualsVisible(false) was called in your Blueprint logic.
Cable falls through the floor
- Enable
EnableCollision (off by default).
- Set
CollisionChannel to match your floor (default WorldStatic).
- For fast-moving cables, enable
SegmentCollision or HighFidelityCollision.
- Increase
CollisionRadius for very thin meshes.
Cutting doesn't work
AllowCutting must be true (off by default).
- For Cable Actor cutting, use
CutCableAtParticle/CutCableAtWorldPosition on the Cable Actor, not CutAtParticle on the Verlet component.
MinCutParticles (default 3) silently rejects cuts that would leave either piece too small.
- Via Cable Interaction Component: use
CutNearestCable or CutCableAtPosition.
Tether doesn't connect to target
- The Tether Component does not auto-connect. You must call
TetherToCable(), TetherToWrappingCable(), TetherToActor(), or TetherToPoint() explicitly.
- When tethering to a Cable Actor, the cable's
OverlapCapsuleRadius must be large enough for detection (default 500).
- Check that the target actor/cable is valid and not pending destroy.
Wrapping Cable doesn't wrap around geometry
EnableWrapping must be true (default).
- Geometry must respond to
WrapCollisionChannel (default Visibility).
- If wrapping stops, check
MaxWrapAnchors (default 16) - complex geometry exhausts the budget.
- Floor surfaces only wrap when
WrapOnTopSurfaces is true (default).
Wrapping Cable stretches past max anchors
- By default,
FreezeAtMaxAnchors locks the grab point and endpoints in place when the budget is hit. If the cable still appears to stretch, the player may be dragging before the anchor limit triggers.
- Switch to
PullBackAtMaxAnchors instead - it applies a spring force pulling the player back. Tune PullBackStiffness (15 = firm) and PullBackDamping (8 = smooth).
- Increase
MaxWrapAnchors if the geometry legitimately needs more anchors.
Wrapping Cable grab not working
Grabbable must be true (default) on the wrapping cable.
- The Cable Interaction Component must detect the wrapping cable first - check
OverlapCapsuleRadius on the wrapping cable (default 500) and the interaction component's detection range.
- Call
GetDetectedWrappingCable() to verify detection before grabbing.
- If the grab succeeds but the cable snaps back instantly, check
ClampGrabToLength - when true, the grab point cannot exceed the cable's rope length.
Known Limitations
Multiplayer
Multiplayer is not officially supportedRAC is built and tested as a single-player / local-physics system. Latent property replication is included as a convenience for the simple cases. See the Replication section for the full guidance, the two patterns, the bReplicationBeta opt-in, and the properties-vs-events boundary.
Packaging
Blueprint-only projectsRequire adding one empty C++ class before packaging. Standard UE requirement for all C++ plugins. See Troubleshooting.
Platform Support
Windows (Win64)Primary development and testing platform. Fully supported.
macOS / LinuxUntested. No platform-specific code, but not verified on Mac or Linux builds.
ConsolesUntested. No platform-specific code, but not verified on console builds.
Changelog
v1.0.3
Latest
- New:Native trace collision on all cable types via
Enable Trace Collision. Traces, sweeps, multi-traces, and object queries hit the cable directly. Off by default.
- New:
Trace Capsule Radius (default 8) - tight collision radius for trace hits, decoupled from OverlapCapsuleRadius (500) which stays sized for proximity overlap.
- New:
Trace Segments Per Capsule (default 3) auto-grows capsules to track the visible curve; 0 disables auto-fit.
- Fixed:overlap capsules now cover the full cable length.
- New:
Num Overlap Capsules can be set to 0 to skip the per-frame overlap broadphase. Use on decorative cables, Aim-mode interaction, and explicit Tether To Cable setups.
- New:every actor-level cable property is now Expose On Spawn.
Spawn Actor From Class on any cable type exposes pins for visuals, interaction, cutting, regrow, LOD, ride, and wrapping in one go.
- Fixed:Tow cable no longer freezes the vehicle and hides at ~30m. Tow cables default to no auto-LOD;
Sleep Attached Bodies is now respected; destroying a sleeping cable restores its attached body.
- New:
Hide Visuals At Sleep and Sleep Attached Bodies on the Tow Component.
- Fixed:
Sleep Attached Bodies restores physics on the originally-frozen actor when the cable is re-targeted mid-sleep.
- Fixed:
Sleep Attached Bodies fires when sleep is forced via Set Forced LOD Tier or the debug LOD override.
- Fixed:cable draped on the floor and attached to a moving actor (e.g. patrolling AI) no longer pops through the floor on wake from sleep - the drape shape now follows the moved endpoint instead of being reset to a parabolic sag.
- Fixed:Tow Component cables no longer sleep when
Enable LOD Tiers is off - any leftover Sleep Distance is now ignored on the spawned cable, matching the "actively-driven gameplay objects shouldn't auto-LOD" promise.
- Fixed:
Spawn Tow Cable and Detach Tow now pair correctly - the spawn auto-registers with the tower's Tow Component (optional Owning Component pin). New Destroy Tow Cable node for symmetric tear-down.
- Fixed:the endpoint handle on Cable / Spline / Zipline Cable follows the resolved anchor when the attached actor rotates, scales, or uses a socket.
- Fixed:Wrapping Cable endpoint handles now follow
Attach Start To / Attach End To targets; free-end handles are draggable. Plus BP Get Start/End Attach Location getters.
- Fixed:the inline Verlet Cable panel on a Cable Actor no longer duplicates the actor-level Cutting and Interaction toggles.
- Fixed:Spline Cables and heavily-pinned cables no longer have un-grabbable regions where the rendered mesh drifted from the live particles.
- New:French translation added to the language switcher (joins English and Japanese).
- Demo:Updated level and improved cable example configurations.
v1.0.2
May 7, 2026
- New:Spline Cable - level-placeable cable shaped by a spline gizmo, with optional per-control-point pinning.
- New:Wrapping Cable gets Auto Length, Auto Extend, Auto Retract (Cable Actor parity); retract floor is the wrapped path so cables don't yank through wrap geometry.
- New:Cable Point's Drive Endpoint Physics pulls the host actor's physics body when a cable spawns from it (chandeliers, signs, lanterns).
- New:Cable Point's Inextensible (Rigid Length) toggle makes spawned cables behave like chains or wire rope - slack OK, no stretching.
- New:Use Simulated Editor Preview on Cable Actor (Performance > Advanced, off by default) - viewport runs a mini Verlet sim each tick so preview matches PIE (drape, gravity, true catenary). Flip on per-cable for hero ropes.
- Fixed:cables no longer flop into shape on PIE start - initial particle sag is gravity-projected (all cables, no toggle).
- Fixed:Cable Point's Show Debug Lines toggle now hides the lines too (not just the sphere).
- Fixed:physics actors on inextensible cables with an offset attach point (Cable Point or socket) now clamp at the attach point, not the actor origin.
- Fixed:cable endpoints follow the attached actor's rotation. Upgrader note:
AttachStartOffset / AttachEndOffset are now actor-local; use SetCableEndLocation(WorldPos) for fixed world anchors.
- Fixed:multiple Inextensible cables on one physics body now share load (4-chain chandeliers, multi-rope signs, redundant tow restraints).
- Fixed:redundant Visuals and Performance categories hidden on Cable Actor (settings already live under the actor's own Appearance / Performance).
- Fixed:Constrain at Wrap Points ignores floor surfaces - only real wrap points (corners, posts, ledges) count toward the leash.
- Fixed:Cable Placement mode no longer hijacks RMB - RMB+WASD flies the camera; Enter finishes a wrap/chain, Esc cancels.
- Fixed:Cable Placement's Place tool now spawns at the clicked point on rotated/non-uniformly-scaled actors (Wrap mode was fine).
- Fixed:cables with Segment Collision now catch on player capsules and convex obstacles. Previously the segment trace misread graze-throughs as tunneling and yanked the cable back every frame.
- Fixed:Wrapping Cables placed via the Wrap tool no longer clip through obstacle interiors at spawn;
CableLength auto-bumps if too short.
- New:Smooth Wrap Anchors on Wrapping Cable (Performance, off by default) - tessellates sharp wrap points so the cable reads as one continuous rope through bends.
- New:Sliding Wrap Anchors on Wrapping Cable (Wrapping, off by default) - anchors track the contact point as the cable slides across curved surfaces; tune
WrapAnchorSlideRate for fast endpoints.
- New:Smooth Extend Rest Length on Wrapping Cable (Extend/Retract, off by default) - cable parts resting on a surface no longer pop while extending or retracting.
- Fixed:Cable Actors no longer disable world collision at Low LOD.
- Fixed:distant-cable scenes (tendril fields, ambient dressing) regained v1.0.1 frame rate - the per-frame collision sweep now skips sleeping cables. Low-LOD cables still get sweeps so the draped-cable fix holds.
- Fixed:extending or retracting a held Cable Actor now only changes length on the held side; mid-grab resampling no longer drifts the grab point.
- Fixed:dragging a long held Cable Actor no longer pops/jitters against geometry. Behavior change: gravity is now applied correctly regardless of
Substeps (default Substeps=2 cables were ~25% too light); lower Gravity Scale slightly to match prior drape.
- Fixed:long Cable Actors no longer thrash against geometry when ungrabbed - per-substep full-coverage collision auto-engages once the cable outgrows its trace budget.
- Fixed:changing the Tow Component's attach sockets/offsets at runtime no longer needs a detach+re-attach. New Set Tow / Target Attach Socket / Offset nodes write and propagate in one step.
AttachTow also falls back to URACTowTargetComponent on the target.
- New:
Attach Tow accepts optional Target / Start Socket / Offset Override advanced pins for per-call attach points without mutating the component.
- New:Find Nearest Actor with Socket, Actor Has Socket, and Attach Tow to Nearest Actor with Socket nodes - hook any world mesh (trees, rocks, props) by socket name; no Tow Target Component required.
- New:Cable Actor property replication (beta, multiplayer not officially supported).
Spawn Cable Between / Spawn Tow Cable / Attach Tow get an optional Replication Beta boolean. Properties replicate, events don't - cuts, pins, delegates, runtime Extend/Retract, and component state need your own Multicast RPCs.
- Fixed:Cable Debug HUD (
RAC.Debug.HUD) no longer drops frame rate with many cables - Frustum Cull Debug skips off-camera cables (default on), Max Label Count caps per-cable labels, draw/label distance lowered to 3000/2000.
- New:Wrapping Cable gets Rigid Endpoints (Cable Actor parity) - hold the first/last N particles in a stiff line out of the attachment. Off by default.
- New:Translated docs - pick your language from the sidebar dropdown. Class/property names stay untranslated for searchability. More languages coming.
v1.0.1
Apr 19, 2026
- New:Swing Component now follows moving targets by default. Grapple onto moving platforms, vehicles, elevators, or physics objects and the rope sticks to the exact point you hit as the target moves.
- New:On release from a moving-pivot swing, the character inherits the platform's velocity - grapple off a moving train and you fly off with the train's momentum.
- New:Three new toggles on the Swing Component give full control of the behavior -
FollowMovingPivot (master switch, default on), InheritPivotVelocityOnRelease (platform momentum on release, default on), and AttachToActorOrigin (snap to actor's center instead of the exact hit point - matches Pull Component's tracking, default off).
- Swing auto-releases cleanly if the grappled target is destroyed or unstreamed mid-swing.
- New:Pull Component has an optional
AttachToHitPoint toggle (default off). When enabled, the rope attaches to the exact aimed-at point on the target and force is applied there via AddForceAtLocation - pulling a crate by its corner now applies torque and the object tumbles naturally as it approaches.
- Fixed:Selecting a RAC cable actor no longer shows a redundant category.
- Demo Projects: Fixed a mismatch in the intro tutorial prompt.
- Demo Projects: Rebalanced cables in the Cable Web station, updated meshes.
- Polished:Reorganized appearance config category.
v1.0.0
Apr 7, 2026
- Initial release on Fab
- 15 classes: 7 components, 4 actors, 2 BP function libraries, 1 Niagara Data Interface, 1 data struct
- Verlet physics solver with drift, wind, attract point, surface crawl, and adhesion
- Wrapping Cable: geometry-aware cable that dynamically wraps around world geometry under tension
- 4-tier LOD system (Full, Medium, Low, Sleeping) with global cable budget
- Multithreaded cable solving across CPU cores
- World collision with round-robin trace budgeting per frame
- Runtime pinning, cutting, extend/retract, and physics coupling
- Tether Component with connect/disconnect animations, leash physics, and slide-along-cable
- Swing, Pull, Climb, and Tow gameplay components
- Zipline ride system with gravity influence
- Cable Interaction Component with proximity and aim detection modes
- Cable Point system for auto-connect networks and cable webs
- Beam/laser mode with taper, flare, and noise
- Tendrils VFX spawning
- Flow materials with per-segment Dynamic Material Instances
- Tension-driven material parameter with remap curve
- Distance-based thickness scaling
- Niagara integration via custom Data Interface
- Editor cable placement toolset (5 interactive tools)
- UE 5.4, 5.5, 5.6, and 5.7 support
Example Projects
Download a pre-built demo project with example levels showcasing all RAC features.
These projects do not include the plugin - you must install the RAC plugin from Fab first, then open the project.
Example Project
One folder, all engine versions inside (5.4, 5.5, 5.6, 5.7). Pick the one matching your engine.
Built Demo (Playable, no UE required)
Standalone Windows build. Run to explore all demo stations without installing Unreal Engine.