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 Module RAC Dependencies None (built-in engine modules only) Engine Version UE 5.4 - 5.7 BP Nodes 246 (200 functions, 46 events) C++ Required No

RAC ships 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.

Feature Support

Feature / ComponentCable ActorWrapping Cable
Cable CuttingYesYes
Runtime PinningYesNo (wrap anchors)
Extend / RetractYesYes
LOD TiersYes (4-tier)Yes (4-tier)
World CollisionYesYes
Cable Interaction (grab)YesYes
Cable Interaction (cut)YesYes
Cable Interaction (pin)YesNo
Tether ComponentYesYes
Cable PointYesNo
PulleyYesNo
ZiplineYesYes
ClimbingYesYes
SwingN/AN/A
Tether UtilsYesNo
Web UtilsYesNo
Geometry WrappingNoYes
Wrap AnchorsNoYes
Cable DebugYesYes

Components & Features


Installation

  1. Purchase/download RAC from Fab
  2. In UE, go to Edit > Plugins, search for RAC, enable it
  3. Restart the editor
  4. 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:

MethodHowBest For
Place ActorsOpen the Place Actors panel (or right-click the viewport) and search for Cable Actor, 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 ToolActivate RAC Cable Placement from the Modes dropdown. Click to route cables visually - click-click to chain.Hand-routing cable runs through a level
Cable PointsAdd Cable Point Components to actors. Nearby points auto-detect each other and spawn cables on Play. Set one as bIsCableParent to flow defaults to the whole group.Cable networks, webs, procedural setups
Runtime spawnCall 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.


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

  1. The Verlet solver truncates the original cable's particles to [0..CutIndex] and sets bFreeEnd = true so the cut end falls naturally
  2. A new Cable Actor is spawned with the remaining particles [CutIndex..End], inheriting all visual settings (mesh, material, scale, end caps, flow tiling)
  3. Existing pins are remapped. Pins on the head stay on the original, pins on the tail transfer to the new cable with corrected indices
  4. OnCableCut fires on both the Verlet component and the Cable actor with references to both halves

Setup

  1. On your Cable actor, select the VerletCable child component and set bAllowCutting = true
  2. Optionally set MinCutParticles on the Cable actor (default 3). Prevents tiny unusable scraps
  3. Optionally enable bAutoDestroyCutPieces to clean up cut-off pieces after AutoDestroyDelay seconds
  4. Optionally enable bRegrowAfterCut 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

SourceEventParameters
Cable ActorOnCableCutCutIndex, OriginalCable (head), NewCable (tail)
Verlet CableOnCableCutCutIndex
Cable InteractionOnCableCutOriginalCable, NewCable, CutPoint
Cable InteractionOnSweepCableCutOriginalCable, NewCable, CutPoint (fires each sweep cut, also fires OnCableCut)

Auto-Cleanup & Regrow

  • Auto-destroy: Enable bAutoDestroyCutPieces on the Cable Actor to automatically clean up cut-off pieces after AutoDestroyDelay seconds (default 5). Set bOnlyDestroyUnattached = true (default) to keep pieces that are still connected to something.
  • Regrow: Enable bRegrowAfterCut 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 bCableActive 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 bRegrowAfterCut for cables that grow back after being severed

Performance Tips

Quick reference for keeping cable counts high and frame times low. Each class section below has full details on these properties.

  • Use Cable Point defaults. They're already tuned for ambient cables (6 solver iterations, 1 substep, auto-sleep)
  • Enable LOD Tiers. Enabled by default on Cable Points. Distant cables drop to fewer iterations and lower visual updates
  • Global Cable Budget: SetCableBudget(MaxFull, MaxMedium) caps how many cables run at Full/Medium LOD (default 8 Full, 16 Medium)
  • Settle Time: Cables sleep after settling. Default 2s via Cable Point defaults (CableSettleTime), 0 on standalone VerletCable. Sleeping cables skip simulation entirely.
  • Collision Round-Robin: MaxTracesPerFrame (default 8) spreads collision traces over multiple frames
  • MaxVisualSegments: Cap spline mesh count for far cables. LOD tiers auto-reduce visual segments.
  • MaxAutoSubsteps: Caps auto-substep scaling at low FPS to prevent death spiral (default 2 on Cable Points)
  • LOD visual hiding: Cables at Low and Sleeping LOD tiers automatically hide their spline meshes, saving GPU draw calls. Toggle bHideVisualsAtLow and bHideVisualsAtSleep per cable. Enabled by default.
  • LOD shadow disable: Shadow casting is automatically disabled at Low and Sleeping LOD tiers to save shadow map draw calls. Shadows restore at Medium/Full. Toggle bDisableShadowsAtLowLOD per cable. Enabled by default.

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 (bFreeStart / bFreeEnd 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 bEnableCollision 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 bSnapToExisting 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
bEnableCollisionboolEnable 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.
bEnableLODTiersboolEnable multi-tier LOD (Full / Medium / Low / Sleeping). Default true.
Snapping
bSnapToExistingboolSnap 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
bEnableWrappingboolEnable 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 8.
Collision
bEnableCollisionboolEnable per-particle collision so cables drape over geometry. Default true.
CollisionRadiusfloatRadius of each particle's collision sphere. Default 5.
Features
bRideableboolMake the cable rideable as a zipline. Default false.
bAllowCuttingboolAllow 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:

  1. Add two ScalarParameter nodes named UVOffset (default 0) and UVScale (default 1)
  2. Apply them to your V coordinate: adjustedV = meshV * UVScale + UVOffset
  3. 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

Drop a Wind Directional Source actor into the level and enable bUseWorldWind 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
bUseWorldWindboolSample 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
bLockDriftXboolDisable drift on the X axis. Default false.
bLockDriftYboolDisable drift on the Y axis. Default false.
bLockDriftZboolDisable 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.

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
bCableActiveboolGameplay flag. Does not affect simulation or visuals. Your BP decides consequences. Default true.
bClimbableboolWhether this cable can be climbed via Climb Component. Default false.
bAllowTetheringboolAllow this cable to be tethered by the Cable Interaction Component's bAutoTetherOnDetect feature. When false, auto-tether detection skips this cable. Manual TetherToCable() still works. Default false.
bAllowGrabbingboolWhether players can grab this cable via CableInteractionComponent. Forwarded to VerletCable at BeginPlay. Default true.
bAllowPinningboolWhether this cable can be pinned at runtime. When false, all pin functions are no-ops. Forwarded to VerletCable at BeginPlay. Default false.
bAllowUnpinningboolWhether 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. Default 500.
NumOverlapCapsulesIntegerNumber of overlap capsules along the cable. Default 4, range 1-20. 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.
DistanceScaleFactorfloatDistance-based thickness. 0 = off. Default 0.
MinDistanceScalefloatMinimum thickness multiplier. Default 1.0.
MaxDistanceScalefloatMaximum thickness multiplier. Default 5.0.
DistanceScaleReferencefloatDistance at which scale = 1x. 0 = auto (2% of cable length, min 500). Default 0. Advanced
bCastShadowboolCast shadow from cable meshes. Default false.
bReceiveDecalsboolWhether cable segments, end caps, and pin meshes receive decals. Default true.
bDriveMaterialTensionboolAuto-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".
TensionRemapMinfloatTension ratio that maps to 0 in the material. Set to resting tension (e.g. 0.65 for a droopy cable). Default 0.
TensionRemapMaxfloatTension ratio that maps to 1 in the material. Default 1.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.
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).
bPinMeshCollisionboolEnable collision on pin meshes so they block traces and overlap. Default true.
PinMeshCollisionProfileFCollisionProfileNameCollision profile for pin meshes. Only used when bPinMeshCollision is true.
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.
bEnableLODTiersboolEnable graduated LOD. Default false.
LODMediumDistancefloatMedium tier distance. Default 0.
LODLowDistancefloatLow tier distance. Default 0.
bHideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Default true.
bHideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Default true.
bDisableShadowsAtLowLODboolDisable shadow casting at Low/Sleeping LOD to save shadow map draw calls. Shadows restore at Medium/Full. Default true.
bSleepAttachedBodiesboolPut 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

Functions

Get Particle Positions
Target
Return Value
Forwards to VerletCable component.
Get Closest Point On Cable
Target
Closest Point
World Pos
Segment Index
Distance
Convenience wrapper for VerletCable's closest point query.
Set Cable Start Attachment
Target
Actor
Socket
Offset
Attach the cable START to an actor, optionally at a socket with an offset.
Set Cable Start Location
Target
World Location
Set the cable START to a fixed world position.
Free Cable Start
Target
Release the cable START to simulate freely.
Set Cable End Attachment
Target
Actor
Socket
Offset
Attach the cable END to an actor, optionally at a socket with an offset.
Set Cable End Location
Target
World Location
Set the cable END to a fixed world position.
Free Cable End
Target
Release the cable END to simulate freely.
Note
Access the full solver API through the VerletCable property (BlueprintReadOnly).

Extend / Retract Functions

Start Extending
Target
Begin extending the cable at ExtendRate. Forwards to VerletCable.
Stop Extending
Target
Stop extending. Forwards to VerletCable.
Start Retracting
Target
Begin retracting the cable at RetractRate. Forwards to VerletCable.
Stop Retracting
Target
Stop retracting. Forwards to VerletCable.
Adjust Length
Target
Delta Length
One-shot length change. Positive = extend, negative = retract. Forwards to VerletCable.
Is Extending
Target
Return Value
Whether the cable is currently extending. Pure.
Is Retracting
Target
Return Value
Whether the cable is currently retracting. Pure.

Active State Functions

Set Cable Active
Target
Active
Set active state. Only broadcasts events when state actually changes.
Toggle Cable Active
Target
Toggle active state.
Is Cable Active
Target
Return Value
Query current active state.

Active State Events

On Cable Activated
Fires when cable becomes active.
On Cable Deactivated
Fires when cable becomes inactive.

Cutting

Cutting Settings
bAllowCuttingboolWhether 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
bAutoDestroyCutPiecesboolAutomatically destroy cut-off cable pieces after a delay. Prevents rope clutter. Default false.
AutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
bOnlyDestroyUnattachedboolOnly auto-destroy cut pieces where neither end is attached to another actor. Default true.
bRegrowAfterCutboolRegrow 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.
bRegrowToInitialLengthboolAlways regrow to the cable's initial length (at BeginPlay), even if cut multiple times. Default true.
bRegrowTowardAttachmentboolWhen 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.
bPersistRegrowAttachmentboolKeep 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
bRestoreMaterialOnRegrowboolRestore the original cable material when regrow completes. Only relevant when PostCutMaterial is set. Default true.
Cut Cable At Particle
Target
Return Value
Particle Index
Split the cable. Original keeps particles [0..Index], a new cable actor is spawned for the tail. Returns the new cable.
Cut Cable At World Position
Target
Return Value
World Position
Convenience wrapper. Finds the nearest particle to the world position and calls CutCableAtParticle.
On Cable Cut
Cut Index
Original Cable
New Cable
Fires when this cable is cut. OriginalCable = head piece, NewCable = spawned tail piece.
Is Regrowing
Target
Return Value
Whether the cable is currently regrowing after being cut.
On Cable Regrown
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.

Properties

Simulation
NumSegmentsIntegerNumber of simulation segments (particles = segments + 1). Higher = smoother sag. Default 20.
CableLengthfloatTotal rope length in world units. Default 200.
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.
bPreventStretchingboolInextensible (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.
bLockDriftXboolDisable drift on the X axis. Default false.
bLockDriftYboolDisable drift on the Y axis. Default false.
bLockDriftZboolDisable drift on the Z axis. Default false.
Wind
bUseWorldWindboolSample 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.
Wrapping
bEnableWrappingboolEnable 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 8.
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
bFreezeAtMaxAnchorsboolHard 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.
bPullBackAtMaxAnchorsboolSoft 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.
bWrapOnTopSurfacesboolAllow 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 (anchors release as soon as the cable opens past ~90 deg), 0.5 = default (anchors release when line-of-sight clears), 1 = sticky (anchors hold until cable is nearly straight ~150 deg). Lower for free-flowing ropes, higher for vines or cables that cling. Range 0-1.
bIgnoreOtherCablesboolAutomatically 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
bEnableCollisionboolEnable 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 per frame. 0 = trace all particles. Lower values spread traces across frames (round-robin). Resting particles reuse cached normals on skipped frames. Default 0. Advanced
CollisionFrictionfloatSurface friction when sliding on geometry. 0 = frictionless, 1 = full stop. Default 0.3. Advanced
Attachments
AttachStartToActor ReferenceActor to attach cable start to. Null = this actor's location.
AttachStartOffsetVectorOffset from start actor's origin (world-space addition). Default (0,0,0).
AttachEndToActor ReferenceActor to attach cable end to. Null = this actor's location + AttachEndOffset.
AttachEndOffsetVectorOffset from end actor's origin (world-space addition). 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.
bFreeStartboolWhen true, the cable start simulates freely instead of being pinned to AttachStartTo. Used by the cutting system for cut endpoints. Default false.
bFreeEndboolWhen 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. Default 500.
NumOverlapCapsulesIntegerNumber of capsule components placed along the cable for overlap detection. Default 4. 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.
bCastShadowboolWhether cable segments cast shadows. Default false.
bReceiveDecalsboolWhether cable segments receive decals. Default true.
bDriveMaterialTensionboolAutomatically 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.
TensionRemapMaxfloatTension ratio that maps to 1 in the material. Default 1.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 bFreeStart/bFreeEnd 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
bCableActiveboolWhether this cable is "active" (powered, energized, etc). Purely a gameplay flag. Category "Simulation". Default true.
Extend/Retract
ExtendRatefloatSpeed at which the cable extends (units/sec). Default 0.
RetractRatefloatSpeed at which the cable retracts (units/sec). Default 0.
MaxCableLengthfloatMaximum cable length. 0 = unlimited. Default 0.
MinCableLengthfloatMinimum cable length. 0 = unlimited. Default 0.
Pull Back
bPullBackWhenTautboolApply 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.
bPullBackOnGrabboolApply 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.
bPullBackEndpointsboolApply 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.
Cutting
bAllowCuttingboolAllow 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.
bAutoDestroyCutPiecesboolAutomatically destroy cut-off pieces after a delay. Default false.
AutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
bOnlyDestroyUnattachedboolOnly auto-destroy pieces with both ends free. Pieces still attached to an actor survive. Default true.
Rideable
bRideableboolAllow 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 bPendulumRide is true. Default 10.
RideGravityScalefloatGravity multiplier while riding. Ignored when bPendulumRide is true (full gravity used instead). Default 1.0.
bPendulumRideboolPendulum 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.
bRideAutoDirectionboolAutomatically detect ride direction from cable slope. Default true.
bRideGravityInfluenceboolDownhill speeds up, uphill slows down. Default true.
bRideSlowAtEndsboolSlow down when approaching cable endpoints. Default true.
RideSlideSpeedfloatManual slide input speed (cm/s). Default 300.
Niagara
bFeedNiagaraboolFeed 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
bAllowTetheringboolWhether Tether Component can tether to this cable. Manual TetherToWrappingCable() still works when false. Default false.
bClimbableboolWhether this cable can be climbed via Climb Component. Default false.
bGrabbableboolWhether this cable can be grabbed. Default true.
bClampGrabToLengthboolClamp 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.
bIsGrabbedboolWhether 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
bEnableLODTiersboolEnable 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
bHideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Default false.
bHideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Default true.
bDisableShadowsAtLowLODboolDisable shadow casting at Low/Sleeping LOD to save shadow map draw calls. Shadows restore at Medium/Full. Default true.

Functions

Get Wrap Anchor Count
Target
Return Value
Number of active wrap anchors. Pure.
Get Wrap Anchor Positions
Target
Return Value
World positions of all wrap anchors, start-to-end order. Pure.
Clear All Wrap Anchors
Target
Remove all wrap anchors, collapse to a single free-hanging section.
Get All Particle Positions
Target
Return Value
All particle positions across all sections (flat array, start-to-end). Pure.
Get Num Particles Flat
Target
Return Value
Total flattened particle count across all sections. Pure.
Get Particle Position Flat
Target
Return Value
Flat Index
World-space position of the particle at a flat index (across all sections). Clamped to valid range. Pure.
Reset Cable
Target
Reinitialize cable: straight line from start to end, all wraps cleared.
Get Tension Ratio
Target
Return Value
Tension ratio: taut path length / cable length. 0 = fully slack, 1 = fully taut. Pure.
Grab Cable At Point
Target
Return Value
World Position
Grabbing Actor
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.
Set Grab Target
Target
Target
Move the grab point to a new target position. Call each frame while grabbed.
Release Grab
Target
Release the grab, removing the temporary anchor.
Get Closest Point On Cable
Target
Return Value
World Position
Out Closest Point
Out Distance
Find the closest point on the cable to a world position. Returns true if found. Use for detection/targeting before grabbing. Pure.
Start Extending
Target
Start extending the cable (continuous).
Stop Extending
Target
Stop extending the cable.
Start Retracting
Target
Start retracting the cable (continuous).
Stop Retracting
Target
Stop retracting the cable.
Adjust Length
Target
Delta Length
One-shot cable length change. Positive = longer, negative = shorter.
Is Extending
Target
Return Value
Whether the cable is currently extending. Pure.
Is Retracting
Target
Return Value
Whether the cable is currently retracting. Pure.
Cut Cable At Particle
Target
Return Value
Flat Particle Index
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 Cable At World Position
Target
Return Value
World Position
Cut at the nearest particle to a world position. Returns the new tail cable, or null.
Start Riding
Target
Return Value
Character
Start a character riding this cable. Returns true on success. Requires bRideable = true.
Stop Riding
Target
Stop the current rider.
Add Ride Slide Input
Target
Value
Add manual slide input (-1 to 1) for rider speed control.
Set Cable Active
Target
b Active
Set the cable active state. Fires OnCableActivated/OnCableDeactivated when the state changes.
Toggle Cable Active
Target
Flip the cable active state.
Is Cable Active
Target
Return Value
Whether the cable is currently active. Pure.

Events

On Cable Wrapped
Wrap Location
Anchor Index
Fired when a new wrap anchor is created.
On Cable Unwrapped
Wrap Location
Anchor Index
Fired when a wrap anchor is removed.
On Cable Grabbed
Grab Point
Fired when the cable is grabbed.
On Cable Released
Fired when the cable is released.
On Cable Activated
Fires when the cable becomes active.
On Cable Deactivated
Fires when the cable becomes inactive.
On Max Anchors Reached
Anchor Count
Fires once when the cable reaches MaxWrapAnchors. Does not fire again until anchors drop below the limit.
On Cable Extended
New Length
Fires each tick the cable is extending. Provides the new cable length.
On Cable Retracted
New Length
Fires each tick the cable is retracting. Provides the new cable length.
On Cable Max Length
Fires once when the cable reaches MaxCableLength.
On Cable Min Length
Fires once when the cable reaches MinCableLength.
On Cable Cut
Cut Index
Original Cable
New Cable
Fires when the cable is cut. Provides the cut index and references to both the original (head) and new (tail) cables.
On Ride Start
Rider
Fires when a character starts riding this cable.
On Ride End
Rider
Fires when a character stops riding this cable.

Rideable Cable / Zipline RAC Zipline Cable

Works with both - 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)
bRideableboolWhether this cable is rideable. Set to true by default on Zipline Cable. Default false.
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 bPendulumRide is true. Default 15.
RideGravityScalefloatRider's gravity during ride. 0 = weightless, 1 = full gravity. Ignored when bPendulumRide is true (full gravity used instead). Default 0.3.
bPendulumRideboolFree 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.
bRideAutoDirectionboolRide toward whichever cable end is farther from player. Default true.
bRideGravityInfluenceboolDownhill speeds up, uphill slows down. Default true.
bRideSlowAtEndsboolDecelerate near cable endpoints. Default true.
bShowRideTetherboolShow 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

Start Riding
Target
Return Value
Character
Begin ride. Returns false if cable not rideable or already occupied.
Stop Riding
Target
End ride. Restores gravity.
Reverse Ride Direction
Target
Reverse ride direction mid-ride.
Add Ride Slide Input
Target
Value
Manual speed control while riding. -1 to 1 per tick.
Get Riding Character
Target
Return Value
Get the character currently riding this cable. Returns null if not riding.
Is Character Riding
Character
Return Value
Check whether a character is currently riding any cable. Static utility.
Find Characters Ride Cable
Character
Return Value
Find the Cable Actor a character is currently riding. Returns null if not riding. Static utility.
Is Local Player Riding
Return Value
Check whether the local player is currently riding any cable. Static utility.
Stop Local Players Ride
Stop the local player's current ride. Static utility.
Reverse Local Players Ride
Reverse the local player's current ride direction. Static utility.
Add Local Players Ride Slide Input
Value
Add slide input to the local player's current ride. Static utility.

Events

On Ride Start
Rider
Fires when ride begins.
On Ride End
Rider
Fires when ride ends.
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. Drop into 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
bPullBackModeboolStay 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 bApplyTensionToMovement for physics-based pull, or use the event for custom gameplay logic. Default false.
bLockTetherboolPrevent all automatic disconnection. Only Detach() can break the connection while locked. Default false.
bApplyTensionToMovementboolApply cable tension as movement force to owner's CharacterMovementComponent. Spring/bungee leash. 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).
bAttachOffsetInViewSpaceboolRotate 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.
bIsTetheredboolTrue 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
bForceStraightLinkCableboolForce 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 bLockTether is true). 0 = unlimited. Default 0.
bLinkCableCanBeCutboolWhether the link cable can be cut. Default false.
LinkCableMaterialMaterialMaterial for link cable.
LinkFlowTilingfloatUV flow tiling. Default 1.0.
bLinkCastShadowboolCast shadow from link cable meshes. Default false. Advanced
bLinkReceiveDecalsboolWhether 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 bPlayerNozzleFollowCamera is true. Default (0,0,-1). Advanced
bPlayerNozzleFollowCameraboolWhen 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).
bOrientAttachMeshAlongCableboolOrient 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
bExtendOnConnectboolVisual extend animation on connect. Default false.
ExtendOnConnectSpeedfloatExtension speed in units/sec. Default 500.
bIsExtendingboolTrue while extend animation is playing. Read-Only
bExtendHideAttachMeshboolHide attach mesh during extend animation. Default true. Advanced
Tether | Disconnect Animation
bRetractOnDisconnectboolVisual retract animation on disconnect. Default false.
RetractSpeedfloatRetraction speed in units/sec. Default 500.
bIsRetractingboolTrue while retract animation is playing. Read-Only
bRetractHideAttachMeshboolHide attach mesh during retract animation. Default true. Advanced
Debug
bDrawDebugLinkLineboolDraw debug lines for the link cable. Default false.
DebugLinkLineColorFColorColor of link cable debug lines. Default Green. Advanced
bDrawDebugPlayerBodyboolDraw debug sphere showing player body avoidance radius. Default false. Advanced

Functions

Tether To Cable
Target
Cable
Connect to a Cable Actor. Finds nearest point on the cable.
Tether To Wrapping Cable
Target
Wrap Cable
Connect to a Wrapping Cable. Finds nearest point on the cable.
Tether To Actor
Target
Actor
Socket
Offset
Connect to any actor. Optional socket and offset for precise attachment.
Tether To Point
Target
World Point
Connect to a fixed world position.
Detach
Target
Disconnect from current target.
Set Tether Locked
Target
Locked
Lock/unlock the tether. While locked, only Detach() can break the connection.
Is Tether Locked
Target
Return Value
Query tether lock state.
Get Tethered Cable
Target
Return Value
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).
Set Attach Point Override
Target
World Point
Override attach point to a fixed world position. Tether skips nearest-point tracking while active.
Clear Attach Point Override
Target
Return to normal nearest-point tracking.
Slide Tether Along Cable
Target
Direction
Slide the attach point along the connected cable. Direction: -1 to 1. Only works when tethered to a cable. Use with bApplyTensionToMovement to pull the player.
Stop Tether Slide
Target
Stop sliding and return to normal cable tracking.
Is Tether Sliding
Target
Return Value
Whether the tether is currently in slide mode (driven by SlideTetherAlongCable input).
Is On Reconnect Cooldown
Target
Return Value
True while the reconnect cooldown is active after disconnect. Use with ReconnectCooldown property.
Reset Reconnect Cooldown
Target
Reset the reconnect cooldown so the next connect attempt is not blocked. Used by internal systems (ride/zipline).

Events

On Tether Connected
Target
Attach Point
Fires on connect.
On Tether Disconnected
Target
Fires on disconnect.
On Tether Pull Back
Pull Direction
Excess Distance
Attach Point
Fires each tick player is beyond leash length while pull-back mode is on.

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
bAutoTetherOnDetectboolAuto-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 bAutoTetherOnDetect 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.
bTraceFromCameraboolTrace from player camera (crosshair). When false, traces from actor forward. Default true.
bAimOcclusionCheckboolBlock cable detection when a physics object is closer than the cable along the aim ray. Prevents interacting through walls. Default false.
AimOcclusionChannelCollision ChannelCollision channel for occlusion traces. Default Visibility.
Grab Settings
bPinOnGrabboolPin the cable at grab point. Default true.
bDragWithPlayerboolProximity: 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
bIsGrabbingboolWhether currently grabbing a cable. Read-Only
bNearestIsPinboolTrue 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

Grab Cable
Target
Both types Grab the nearest/aimed cable. No-op if no cable detected or already grabbing.
Grab Specific Cable
Target
Cable
Cable Actor Grab a specific cable at the closest point to the player.
Release Cable
Target
Both types Release the currently grabbed cable.
Start Extending
Target
Cable Actor Begin continuous extension on grabbed cable.
Stop Extending
Target
Cable Actor Stop continuous extension on grabbed cable.
Start Retracting
Target
Cable Actor Begin continuous retraction on grabbed cable.
Stop Retracting
Target
Cable Actor Stop continuous retraction on grabbed cable.
Adjust Grabbed Cable Length
Target
Delta
Cable Actor One-shot length change on grabbed cable.

Pinning Cable Actor

Pin Nearest Cable
Target
Return Value
Pin the nearest/aimed cable at the detected point. Returns particle index, or -1.
Pin Grabbed Cable
Target
Return Value
Pin the grabbed cable at the current grab point.
Pin Cable At Position
Target
Return Value
Cable
World Position
Pin a specific cable at a world position.
Pin Nearest Cable To Actor
Target
Return Value
Target Actor
Socket
Offset
Pin the nearest/aimed cable to an actor (follows it). Returns particle index, or -1.
Pin Cable To Actor
Target
Cable
Particle Index
Target Actor
Socket
Offset
Pin a specific cable particle to an actor.
Unpin Cable Particle
Target
Cable
Particle Index
Unpin a specific particle on a cable.
Unpin Nearest Pin
Target
Return Value
Cable
World Position
Unpin the nearest pinned particle to a position.
Unpin Nearest Cable
Target
Return Value
Remove the nearest pin on the nearest/aimed cable. Returns particle index, or -1.
Clear All Pins
Target
Cable
Clear all pins on a cable.

Cutting

Cut Nearest Cable
Target
Return Value
Cut the nearest/aimed cable at the detected point. Returns the new tail cable, or null. Releases grab if cutting the grabbed cable.
Cut Cable At Position
Target
Return Value
Cable
World Position
Cut a specific cable at a world position.

Queries

Is Cable In Range
Target
Return Value
Whether a cable is within interaction range or being aimed at.
Get Aim Ray
Target
Return Value
Origin
Direction
Get current aim ray (Aim mode only). Returns false if not in Aim mode.
Get Detected Cable
Target
Return Value
Cable
Point
Particle Index
Distance
Cable Actor Query the current detection state. Returns the detected cable, closest point, particle index, and distance. Returns false if no cable is detected.
Get Detected Wrapping Cable
Target
Return Value
Cable
Point
Distance
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

On Cable In Range
Cable
Distance
Cable Actor A cable entered detection range or became the aimed cable.
On Cable Out Of Range
Cable
Cable Actor A cable left detection range or is no longer aimed at.
On Cable Grabbed
Cable
Grab Point
Particle Index
Cable Actor Player grabbed a cable.
On Cable Released
Cable
Both types Player released a cable.
On Cable Slide
New Point
Distance Along Cable
Both types Fires each tick while grabbing, with updated grab point position.
On Cable Pinned
Cable
Pin Point
Particle Index
Cable Actor Fires when a cable is pinned via this component.
On Cable Unpinned
Cable
Particle Index
Cable Actor Fires when a cable is unpinned via this component.
On Cable Cut
Original Cable
New Cable
Cut Point
Fires when a cable is cut via this component (manual or sweep). Works with both cable types.
On Sweep Cable Cut
Original Cable
New Cable
Cut Point
Fires each time a cable is cut during sweep cutting. Also fires On Cable Cut. Works with both cable types.
On Wrapping Cable In Range
Cable
Distance
Wrapping Cable Fires when a wrapping cable enters detection range.
On Wrapping Cable Out Of Range
Cable
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.
bIsSweepCuttingboolWhether sweep cutting is currently active. Read-Only
Start Sweep Cut
Target
Begin sweep cutting. Move the aim/player across cables to slice them.
Stop Sweep Cut
Target
Stop sweep cutting.
Toggle Sweep Cut
Target
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.
bRigidRopeboolFixed rope length (always taut) vs slack rope (only constrains when taut). Default false.
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.
bAutoPullInboolAutomatically 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 bAutoPullIn is enabled (cm/s). Default 300.
bEnablePumpSwingboolPlayer 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).
bRopeCollisionboolEnable world collision on the swing rope so it drapes over geometry. Default true.
bRopeHighFidelityCollisionboolPer-particle sphere traces instead of simple line checks. More accurate on curved surfaces but more expensive. Only available when bRopeCollision is true. Default false.
bCameraAvoidanceboolPush 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.
bExtendRopeOnAttachboolRope 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 bExtendRopeOnAttach is true. Default 3000.
bRetractRopeOnDetachboolRope 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 bRetractRopeOnDetach is true. Default 3000.
State Read-Only
bIsSwingingboolWhether 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
bIsRopeExtendingboolTrue while the rope is extending toward the pivot. Read-Only
bIsRopeRetractingboolTrue while the rope is retracting after release. Read-Only

Functions

Start Swinging
Target
Return Value
Character
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 Point
Target
Return Value
Character
Pivot Point
Start swinging at an explicit world position. Spawns a grapple rope from the character to the given pivot point.
Stop Swinging
Target
Stop swinging. Character launches with current velocity (modified by LaunchVelocityMultiplier + LaunchUpwardBoost).
Add Pump Input
Target
Value
Pump-swing input [-1, 1]. Positive = pump in swing direction. Call each tick from input.
Shorten Rope
Target
Amount
Reel in the rope by amount (cm). Clamped to MinRopeLength.
Lengthen Rope
Target
Amount
Let out rope by amount (cm). Clamped to MaxRopeLength (if > 0).
Get Swinging Character
Target
Return Value
Current rider, null if nobody is swinging.
Find Characters Swing
Character
Return Value
Static. Find the swing component a character is using (null if not swinging).
Is Character Swinging
Character
Return Value
Static. Check if a character is swinging on any cable.
Is Local Player Swinging
Return Value
Static. Check if local player (player 0) is swinging.
Find Local Players Swing
Return Value
Static. Find the swing component the local player (player 0) is using. No character input needed.
Stop Local Players Swing
Static. Stop the local player's swing. Does nothing if not swinging.

Events

On Swing Start
Rider
Fires when swing begins.
On Swing End
Rider
Launch Velocity
Fires when swing ends. LaunchVelocity = final velocity applied (after multiplier + boost).
On Swing Progress
Pivot Point
Character Position
Swing Speed
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
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).
bRopeCollisionboolEnable 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.
bHighFidelityRopeCollisionboolUse 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 bRopeCollision. Default false.
State Read-Only
bIsPullingboolWhether 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

Pull Object
Target
Return Value
Character
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 Actor
Target
Return Value
Character
Target
Pull a specific actor toward the owner. Returns false if the actor has no simulating physics body or is too heavy.
Can Pull Actor
Target
Return Value
Target
Check if an actor can be pulled (has a simulating physics body and is within mass limit). Pure.
Release Pull
Target
Release the currently pulled object. Does nothing if not pulling.
Get Pulled Actor
Target
Return Value
Get the actor currently being pulled. Null if not pulling.

Events

On Pull Start
Pulled Actor
Attach Point
Fires when a pull begins.
On Pull Complete
Pulled Actor
Fires when the pulled object arrives within ArrivalDistance.
On Pull Released
Pulled Actor
Fires when pull is manually released via ReleasePull.
On Pull Failed
Reason
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

Standalone - 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.
bSlideWhenIdleboolWhen the player releases climb input, automatically slide down due to gravity. When false, the character holds position. Ignored if bFreefallOnRelease is true. Default true.
bFreefallOnReleaseboolWhen the player releases climb input, immediately let go of the cable and freefall. Overrides bSlideWhenIdle. Default false.
bLaunchOnReleaseboolApply 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.
bUseStaminaboolEnable 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
bIsClimbingboolWhether 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 bUseStamina is true. Read-Only
bIsSlidingboolWhether 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
bHasClimbInputboolWhether the player is actively providing climb input this frame. Distinguishes "actively pulling" from "hanging idle" and "sliding". Read-Only

Functions

Start Climbing
Target
Return Value
Character
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 Cable
Target
Return Value
Character
Cable
Start climbing a specific ARACCable at the nearest point to the character.
Start Climbing Wrapping Cable
Target
Return Value
Character
Cable
Start climbing a specific ARACWrappingCable at the nearest point to the character.
Stop Climbing
Target
Release the cable. Character drops off with optional launch velocity.
Add Climb Input
Target
Value
Apply climb input. Positive = move toward cable end, negative = toward start. Clamped to [-1, 1]. Call each tick from player input.
Get Climbing Character
Target
Return Value
Get the character currently climbing. Null if nobody.
Get Climbed Cable
Target
Return Value
Get the Cable Actor currently being climbed. Null if not climbing or climbing a Wrapping Cable.
Get Climbed Wrapping Cable
Target
Return Value
Get the Wrapping Cable currently being climbed. Null if not climbing or climbing a regular Cable Actor.
Find Characters Climb
Character
Return Value
Find the Climb Component that is currently climbing with a given character. Returns null if the character is not climbing. Static helper.
Is Character Climbing
Character
Return Value
Check if a character is currently climbing any cable. Static helper.
Find Local Players Climb
Return Value
Find the local player's active Climb Component. Returns null if not climbing. Static helper.
Is Local Player Climbing
Return Value
Check if the local player is currently climbing. Static helper.
Stop Local Players Climb
Stop the local player's climb. One-node convenience. Does nothing if not climbing. Static helper.
Add Local Players Climb Input
Value
Feed climb input to the local player's active climb. Convenience for demo/prototype input. Static helper.

Events

On Climb Start
Climber
Grab Point
Fires when climbing begins.
On Climb End
Climber
Launch Velocity
Fires when climbing ends. LaunchVelocity is the velocity applied to the character on release.
On Climb Progress
Progress
Climb Point
Fires each tick during climbing with current progress and position.
On Reached Top
Climber
Fires when the climber reaches the cable's end.
On Reached Bottom
Climber
Fires when the climber reaches the cable's start.
On Started Sliding
Climber
Fires when the climber starts sliding (transitions from input-driven to gravity-driven).
On Climb Failed
Reason
Fires when a climb attempt fails. Reason: "NoHit", "NoCable", "AlreadyClimbing", "TooFar".
Tip
Works with both Cable Actors and Wrapping Cables. Use bClimbable 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 pull the towed target along. Supports break force, stretch limits, and tension events. Tick disabled when idle.

Tow
bAutoConnectboolAutomatically connect to the nearest tow target on BeginPlay. Default false.
AutoConnectSearchRadiusfloatSearch radius for auto-connect (cm). Only used when bAutoConnect 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).
bIsTowingboolWhether 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.
bBidirectionalboolApply 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.
bNoStretchboolPrevent 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.
bEnableCollisionboolEnable world collision on the tow cable. Default true.
bHighFidelityCollisionboolTrace Every Substep (Expensive) - Per-substep collision for fast-moving cables. Prevents tunneling through geometry. 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
bEnableLODTiersboolEnable distance-based LOD tiers on the tow cable. Sleeping cables pause simulation and hide visuals. Default true.
SleepDistancefloatCamera distance at which the tow cable pauses simulation and hides. 0 = never sleep. Default 5000.

Functions

Attach Tow
Target
Return Value
Target
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.
Detach Tow
Target
Disconnect and destroy the tow cable.
Attach Tow to Nearest
Target
Return Value
Search Radius
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.
Is Towing
Target
Return Value
Whether currently towing a target. Pure.
Get Tow Tension Ratio
Target
Return Value
Current tension ratio: 0 = slack, 1 = taut. Pure.
Get Tow Force
Target
Return Value
Current force magnitude applied by the tow cable. Pure.
Set Tow Length
Target
New Length
Set the tow cable length at runtime.
Adjust Tow Length
Target
Delta
Adjust the tow cable length by a delta. Positive = longer, negative = shorter.

Events

On Tow Attached
Target
Fires when the tow cable connects to a target.
On Tow Detached
Target
Fires when the tow cable disconnects from a target.
On Tow Cable Snapped
Target
Snap Force
Fires when the tow cable snaps due to exceeding BreakForce or BreakStretch.
On Tow Tension
Tension Ratio
Force
Direction
Fires each tick while the cable is under tension. TensionRatio 0-1, Force in Newtons, Direction is the pull vector.
Tip
Target actor root must be a UPrimitiveComponent with IsSimulatingPhysics()=true for forces to apply. Logs warning otherwise (cable still works visually). Internally uses SpawnCableBetween + bDriveStartPhysics/bDriveEndPhysics. 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.

Place on any actor (vehicle, prop, crate) so that the Tow Component can find it via AttachTowToNearest or the static discovery functions. Configure AttachSocket and AttachOffset to control where the tow cable attaches.

Tow Target
AttachSocketNameSocket on this actor where the tow cable attaches.
AttachOffsetVectorOffset from origin/socket for the tow attach point. Default (0,0,0).
bTowableboolWhether 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 Nearest Tow Target
Origin
Return Value
Radius
Find the nearest towable target within radius. Returns null if none found. Static function.
Find All Tow Targets in Radius
Origin
Out Targets
Radius
Find all towable targets within radius, sorted by distance (then priority descending for ties). Static function.

Events

On Tow Attached
Fires when this target gets towed.
On Tow Detached
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
NumSegmentsIntegerNumber of particles. More = smoother, heavier. Default 20.
CableLengthfloatTarget cable length in world units. Default 1000.
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
bPreventStretchingboolPrevents 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. 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
bLockDriftXboolDisable drift on the X axis. Default false.
bLockDriftYboolDisable drift on the Y axis. Default false.
bLockDriftZboolDisable drift on the Z axis. Default false.
Simulation | Wind
bUseWorldWindboolSample 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.
bAttractWanderboolPer-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.
bRigidFollowsAttachmentboolWhen 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 bRigidFollowsAttachment is false.
EndRigidDirectionVectorManual world-space direction for end rigid section. Zero = auto from cable tangent. Only used when bRigidFollowsAttachment is false.
Extend/Retract | Auto Length
bAutoLengthboolAuto-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.
RetractRatefloatRetraction speed in units/sec. Used by both auto-retract and manual StartRetracting(). Default 0.
MinCableLengthfloatMinimum cable length. 0 = unlimited. Default 0.
bAutoExtendboolAutomatically grow cable when pulled taut. Default false.
TensionThresholdfloatTension ratio that triggers extension. Default 0.9.
bAutoRetractboolAutomatically 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 before sleep is allowed. Default 0 on VerletCable, default 2.0 via Cable Point defaults (CableSettleTime).
bEnableLODTiersboolEnable 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.
bHideVisualsAtLowboolHide cable visuals at Low LOD to save GPU draw calls. Cable reappears at Medium/Full. Default true.
bHideVisualsAtSleepboolHide cable visuals at Sleeping LOD to save GPU draw calls. Cable reappears when it wakes. Default true.
bDisableShadowsAtLowLODboolDisable 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
bSleepAttachedBodiesboolPut 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
bEnableCollisionboolEnable world collision traces. Default false.
CollisionRadiusfloatTrace radius per particle. Default 5.0.
bHighFidelityCollisionboolTrace 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
bSegmentCollisionboolTrace 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 - The single biggest knob for collision quality. Default 8 spreads traces across frames. 0 = unlimited (all particles every frame, best draping). Increase if the cable clips through surfaces.
bAdaptiveTracePriorityboolAdaptive 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
bSurfaceCrawlboolProjects 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.
bCollideWithStartActorboolAllow the cable to collide with the actor attached at its start. When false (default), the start actor is ignored by collision traces. Advanced
bCollideWithEndActorboolAllow the cable to collide with the actor attached at its end. When false (default), the end actor is ignored by collision traces. Advanced
bCollisionLeashboolConstrain 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.
AttachStartOffsetVectorLocal offset from start attachment.
AttachEndOffsetVectorLocal offset from end attachment.
AttachStartSocketNameSocket name on start actor.
AttachEndSocketNameSocket name on end actor.
bFreeStartboolSTART endpoint not pinned, simulates freely. Default false.
bFreeEndboolEND 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
bDriveStartPhysicsboolCable 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.
bDriveEndPhysicsboolCable 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.
EndpointPhysicsDampingfloatPull Force Damping - Reduces bouncing/oscillation at the rope limit. Default 0.
Visuals
bEnableVisualsboolEnable 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
bCastShadowboolCast shadow from visual meshes. Default false.
bReceiveDecalsboolWhether visual spline meshes receive decals. Default true.
bDriveMaterialTensionboolAuto-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.
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
bAllowPinningboolPermission gate for pinning particles. Default false.
bAllowUnpinningboolPermission gate for unpinning. Default true.
PinLockDelayfloatSeconds after BeginPlay before bAllowPinning automatically turns off. 0 = never auto-lock. Lets editor-placed systems pin on init, then lock out new pins. Default 0.
bAllowGrabbingboolPermission gate for grabbing. Default true.
Cutting
bAllowCuttingboolPermission 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

Get Particle Positions
Target
Return Value
Returns world positions of all simulation particles.
Get Particle Position
Target
Return Value
Index
Single particle world position.
Get Particle Velocity
Target
Return Value
Index
Verlet velocity delta (Position - OldPosition). Useful for VFX direction/magnitude.
Get Num Particles
Target
Return Value
Number of simulation particles.
Set Particle Position
Target
Index
New Position
Override a particle's position. Not pinned, may be overwritten next tick.
Get Tension Ratio
Target
Return Value
0 = slack, 1 = fully taut.
Get Slack Ratio
Target
Return Value
Inverse of tension ratio.
Get Physics Tension
Target
Return Value
Sag-normalized tension: 0 = resting drape, 1 = perfectly straight. Automatically calibrates to each cable's natural sag. Used internally by bDriveMaterialTension.
Get Actual Cable Length
Target
Return Value
Sum of real segment distances (not target CableLength).
Get Closest Point On Cable
Target
Closest Point
World Pos
Segment Index
Distance
Find the closest point on the cable to a world position. Segment-based (snaps to nearest line segment between particles).
Get Closest Particle Position
Target
Particle Pos
World Pos
Particle Index
Distance
Find the closest particle to a world position.
Evaluate Spline Point
Target
Return Value
Segment Index
Alpha
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 Rope Direction at End
Target
Return Value
From Start
Sample Depth
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.
Get Start Attach Location
Target
Return Value
Resolved world-space cable start.
Get End Attach Location
Target
Return Value
Resolved world-space cable end.
Set Cable Start Attachment
Target
Actor
Socket
Offset
Attach the cable START to an actor, optionally at a socket with an offset. Clears any world-location override.
Set Cable Start Location
Target
World Location
Set the cable START to a fixed world position. The start stays at this position even if the cable component moves.
Free Cable Start
Target
Release the cable START to simulate freely (no longer pinned to any target).
Set Cable End Attachment
Target
Actor
Socket
Offset
Attach the cable END to an actor, optionally at a socket with an offset. Clears any world-location override.
Set Cable End Location
Target
World Location
Set the cable END to a fixed world position. The end stays at this position even if the cable component moves.
Free Cable End
Target
Release the cable END to simulate freely (no longer pinned to any target).
Reset Simulation
Target
Re-initialize all particles to a straight line between endpoints.
Adjust Length
Target
Delta Length
One-shot length change.
Start Extending
Target
Begin continuous extension at ExtendRate.
Stop Extending
Target
Stop continuous extension.
Start Retracting
Target
Begin continuous retraction at RetractRate.
Stop Retracting
Target
Stop continuous retraction.
Is Extending
Target
Return Value
Query manual extend state.
Is Retracting
Target
Return Value
Query manual retract state.
Inject Velocity
Target
Velocity
Push interior particles with decaying strength (start to end). For origin movement reactions.
Inject Random Burst
Target
Strength
Random per-particle push. For startle/transition reactions.
Set Visuals Visible
Target
New Visible
Show/hide all spline meshes without destroying them. Cheapest toggle for beams.
Get Current LOD Tier
Target
Return Value
Current LOD tier (Full, Medium, Low, Sleeping).
Is Sleeping
Target
Return Value
Whether the cable is in Sleeping tier.
Set Forced LOD Tier
Target
Tier
Force this cable to a specific LOD tier, bypassing distance and budget calculations. Useful for debug or cinematic override.
Clear Forced LOD Tier
Target
Clear the forced LOD override, returning to normal distance/budget-based LOD.
Get All Active Cables
Return Value
Static. Returns all active VerletCable components across all worlds. Filter by GetWorld() if needed. Useful for debug tools and global cable queries.

Cutting

Cut At Particle
Target
Return Value
Index
Cut the cable at the given particle. Truncates particles to [0..Index], sets bFreeEnd=true, remaps pins, broadcasts OnCableCut. Requires bAllowCutting.
Insert Particle At Point
Target
Return Value
World Pos
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 Particle
Target
Index
Location
Pin a specific particle at a world position.
Pin Particle To Actor
Target
Index
Actor
Socket
Offset
Pin a particle to an actor (follows movement).
Unpin Particle
Target
Index
Release a pinned particle.
Pin At World Position
Target
Return Value
World Pos
Pin the nearest particle to a world position. Returns the particle index.
Unpin At World Position
Target
Return Value
World Pos
Unpin the nearest pinned particle to a world position.
Clear All Pins
Target
Remove all pins.
Is Particle Pinned
Target
Return Value
Index
Check if a particle is pinned.
Get Pinned Particle Indices
Target
Return Value
Get all pinned particle indices.
Get Pin Data
Target
Return Value
Index
Pin Location
Get pin location for a particle. Returns false if not pinned.
Get Pin Count
Target
Return Value
Number of active pins on this cable.

Static (Global)

Set Cable Budget
Max Full LOD
Max Medium LOD
Set global cable LOD budget. Default 8 Full, 16 Medium. 0 = unlimited.
Get Cable Budget
Max Full LOD
Max Medium LOD
Query current cable budget.
Set Parallel Solve Enabled
Enabled
Toggle parallel cable solving across CPU cores. Default true.
Is Parallel Solve Enabled
Return Value
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:

  1. Check bFeedNiagara
  2. Set NiagaraSystem to your Niagara system asset
  3. The cable auto-creates a NiagaraComponent at BeginPlay, discovers itself via attachment, and the DI caches positions every tick
Niagara
bFeedNiagaraboolEnable 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.

  1. Create a Niagara System (empty system, add an empty emitter)
  2. Add User Parameters at the system level:
    • Type "RAC Cable Particles" (under Data Interface), name it CableSource
    • Type int32, name it NumPoints, default 21
  3. Emitter Properties: Sim Target = CPU, enable Requires Persistent IDs
  4. Emitter Update: Add Spawn Burst Instantaneous, link Count to NumPoints
  5. Particle Spawn:
    • Add Initialize Particle (set Lifetime = 99999)
    • Add Set Particles.RibbonLinkOrder = Execution Index (if using Ribbon Renderer)
  6. 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
  7. Render: Add a Ribbon Renderer (set CurveTension = 1.0 for sharp tracking) or Sprite Renderer
  8. 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
bIncludeBeamNoiseboolApply 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)

Get Num Particles
Cable
Num Particles
Total number of cable particles. Use for Niagara spawn count.
Get Particle Position
Cable
Position
Index
World-space position of cable particle at index (clamped to valid range). Includes beam noise displacement when bIncludeBeamNoise is true.
Get Cable Length
Cable
Cable Length
Actual measured cable length (sum of segment distances).

Events

On Cable Tension
Tension Ratio
Current Length
Tension Direction
Fires each tick the cable is under tension.
On Cable Extended
New Length
Fires each tick the cable is extending (auto or manual). Provides the new cable length.
On Cable Retracted
New Length
Fires each tick the cable is retracting (auto or manual). Provides the new cable length.
On Cable Max Length
Fires once when cable hits MaxCableLength.
On Cable Min Length
Fires once when cable hits MinCableLength.
On Cable Pinned
Particle Index
Pin Location
Fires when a particle is pinned.
On Cable Unpinned
Particle Index
Fires when a particle is unpinned.
On Cable Cut
Cut Index
Fires when the cable is cut at a particle.
On Particles Updated
Positions
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
bAutoConnectNearbyboolAuto-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.
bOnlyConnectToParentsboolOnly 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
bShowDebugLinesboolShow editor preview lines. Default true.
DebugLineThicknessfloatLine thickness. Default 2.0, range 0.5-50.
Cable Parent
bIsCableParentboolMark as Cable Parent. Settings flow to all cables in connected network. Default false.
bOverrideCableDefaultsboolOverride 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.
bCableEnableCollisionboolEnable collision on spawned cables. Default true.
CableCollisionRadiusfloatCollision trace radius. Default 5.0.
bCableHighFidelityCollisionboolPer-particle sphere traces every substep instead of once per frame. More accurate but more expensive. Default false. Advanced
bCableSegmentCollisionboolTrace 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 but weakens effective gravity. Default 1.
CableSleepDistancefloatDistance from camera before cable sleeps (0 = auto-calculate from cable length). Default 0.
bCableEnableLODTiersboolGraduated LOD. Default true.
bCableCastShadowboolShadow casting. Default false.
bCableReceiveDecalsboolWhether 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
bCableUseWorldWindboolCable 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 | 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
bCableDriveMaterialTensionboolDrive 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
bCableActiveboolWhether spawned cables start active (gameplay flag for powered/energized state). Default true.
bCableClimbableboolWhether spawned cables can be climbed via Climb Component. Default false.
bCableAllowTetheringboolAllow spawned cables to be auto-tethered by Cable Interaction Component. Default false.
bCableAllowGrabbingboolWhether players can grab spawned cables via Cable Interaction Component. Default true.
bCableAllowPinningboolWhether spawned cables can be pinned at runtime. Default false.
bCableAllowUnpinningboolWhether 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
bCableAllowCuttingboolWhether 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.
bCableAutoDestroyCutPiecesboolAutomatically destroy cut-off cable pieces after a delay. Default false.
CableAutoDestroyDelayfloatSeconds before a cut-off piece is destroyed. Default 5.0.
bCableOnlyDestroyUnattachedboolOnly auto-destroy cut pieces where neither end is attached. Default true. Advanced
Cable Defaults | Regrow
bCableRegrowAfterCutboolRegrow 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
bCableRideableboolWhether 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
bCableHideVisualsAtLowboolHide cable visuals entirely at Low LOD tier. Default true. Advanced
bCableDisableShadowsAtLowLODboolDisable shadow casting at Low and Sleeping LOD tiers. Default true. Advanced

Functions

Create Cable To
Target
Return Value
Other Point
Create a cable to another point. Returns null if already connected.
Destroy All Cables
Target
Destroy all cables, clear SpawnedCables.
Clear Connections
Target
DestroyAllCables + remove from other ends' Connections + empty own Connections.
Is Connected To
Target
Return Value
Other Point
Check if connected to another point.
Get Connection Count
Target
Return Value
Number of connections.
Get Cable
Target
Return Value
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).
bFollowParentboolPin follows parent actor movement. Default true.
PinnedCableCountIntegerNumber of cables currently pinned. Read-Only

Functions

Detect And Pin
Target
Re-scan for cables spawned after BeginPlay.
Release All Pins
Target
Release all pinned cables.
Get Pinned Cables
Target
Return Value
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. Drop it on 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
bDrawLODHeatmapboolColor ALL cables by LOD tier: Green = Full, Yellow = Medium, Orange = Low, Red = Sleeping. Default false.
HeatmapLineThicknessfloatThickness of heatmap debug lines. Default 3.
Tension Heatmap
bDrawTensionHeatmapboolColor ALL cables by tension: Blue = slack, White = neutral, Red = taut. Takes priority over LOD heatmap when both are on. Default false.
Pin Markers
bDrawPinMarkersboolDraw spheres at all runtime pin locations on every cable. Default false.
PinMarkerSizefloatRadius of pin marker spheres. Default 8.
Distance Rings
bDrawDistanceRingsboolDraw 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
bDrawStatsHUDboolShow 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
bDrawPerCableLabelsboolShow 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 5000.
Wind Debug
bDrawWindDebugboolDraw wind direction arrows at each cable's midpoint when bUseWorldWind is enabled. Arrow length indicates force strength. Also adds wind info to per-cable labels and stats HUD. Default false.
Force LOD Override
bForceLODOverrideboolForce ALL cables to the specified LOD tier (bypasses distance and budget). Default false.
ForcedLODTierERACCableLODThe LOD tier to force when bForceLODOverride is true.

Interaction Visualization

Interaction Debug
bDrawInteractionZonesboolShow detection zones for all CableInteractionComponents. Proximity: sphere wireframe. Aim: ray line with radius cone. Default false.
bDrawGrabStateboolShow active grab: grab point marker, drag line from player, grabbed particle highlight. Default false.
bDrawCableFlagsboolShow per-cable permission flags (bAllowCutting, bAllowGrabbing, bAllowPinning) near each cable's start. Default false.
bDrawOverlapCapsulesboolMake the interaction overlap capsules visible on all Cable actors. Default false.
bDrawCutPreviewboolShow 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.

Functions

Apply Force LOD Override
Target
Tier
Force all cables to a specific LOD tier. Useful for testing worst-case or best-case performance.
Release Force LOD Override
Target
Release the forced LOD override, returning all cables to normal distance/budget-based LOD.
Get Cable Count By Tier
Target
Return Value
Tier
Get the number of cables currently at a specific LOD tier.
Get Total Particle Count
Target
Return Value
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
Owner
Return Value
Origin
Incoming Direction
Num Tendrils
Tendril Length
Spread Radius
Max Spread Radius
Tendril Width
Tendril Wiggle
Target Actor
Tendril Mesh
Tendril Material
Surface Normal
Enable LOD
Sleep Distance
Tendril Damping
Surface Crawl
Surface Adhesion
Attract Wander
Wander Radius
Wander Speed
High Quality Visuals
Trace Channel
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 Tendrils Origin
Tendrils
New Origin
Incoming Direction
Target Actor
Max Spread Radius
Surface Normal
Trace Channel
Update tendril origin each tick while firing. Recomputes endpoints with smooth lerping.
Destroy Tendrils
Tendrils
Hide visuals and destroy all tendril components. Empties the array.
Destroy All Tendrils
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

Is Cable Actor
Actor
Return Value
Returns true if the actor is a Cable Actor or Wrapping Cable. Useful for checking line trace hits against cable actors.
Find Nearest Cable
Location
Return Value
Search Radius
Attach Point
Find the nearest Cable to a world position.
Find Closest Point On Polyline
Point
Closest Point
Polyline
Segment Index
Distance
Find closest point on a polyline defined by points.
Find Cable Point On Actor
Actor
Return Value
Find first Cable Point component on an actor.
Spawn Cable Between
Start Actor
Return Value
End Actor
Start Offset
End Offset
Cable Length
Num Segments
Cable Mesh
Cable Material
Cable Mesh Scale
Enable Collision
Gravity Scale
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.
Spawn Tow Cable
Tower Actor
Return Value
Target Actor
Stiffness
Damping
Bidirectional
Tower Offset
Target Offset
Cable Length
Slack Multiplier
Num Segments
Cable Mesh
Cable Material
Cable Mesh Scale
Enable Collision
Gravity Scale
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.

Niagara

Feed Cable to Niagara
Cable
Niagara Component
Position Array Param
Num Points Param
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 bFeedNiagara 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.

Generate Cable Web
Actors
Return Value
Grouping Center
Max Connections Per Actor
Max Cable Distance
Min Angle Between Connections
Distance Group Tolerance
Auto-wire actors by proximity and angle constraints. Only writes to Connections arrays (cables spawn at BeginPlay). Returns number of connections made.
Clear Cable Web
Actors
Return Value
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

ValueSolverVisualsCollision
FullFull iterations + substepsEvery frameActive
MediumHalf iterations, 1 substep~30 fpsActive
Low2 iterations, 1 substep~10 fpsDisabled
SleepingFrozen (or SleepSolverIterations)HiddenDisabled

Detection Mode

How the Cable Interaction Component finds cables. Set via DetectionMode on the component.

ValueHow it worksBest forKey settings
ProximityFinds the nearest cable whose overlap capsule overlaps the playerTop-down, isometric, VRInteractionRadius, MaxSlideSpeed
AimTraces a ray from the camera crosshair to find the aimed cableFirst-person, third-personAimDistance, AimRadius, bTraceFromCamera

Tether Target Type

What the Tether Component is currently connected to. Read from TetherTargetType (BlueprintReadOnly).

ValueDescriptionConnected via
NoneNot connected to anythingInitial state, or after Detach()
CableConnected to a Cable Actor - attach point tracks nearest point on cableTetherToCable(Cable)
WrappingCableConnected to a Wrapping Cable - attach point tracks nearest point on wrapping cableTetherToWrappingCable(Cable)
ActorConnected to an actor - attach point follows actor/socket/offsetTetherToActor(Actor, Socket, Offset)
PointConnected to a fixed world positionTetherToPoint(WorldPos)

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 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?

Cables are client-side visual/physics. Replicate the endpoint positions and let each client simulate locally.

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 bEnableCollision 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 bCableActive + 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 a beam or laser?

Use Verlet Cable Component directly (no Cable Actor needed). Enable bAutoLength so the cable stays taut between endpoints, enable bEnableVisuals 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 bAutoConnectNearby 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 bAllowCutting = 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 bAutoDestroyCutPieces to clean up cut-off pieces automatically, or bRegrowAfterCut to grow the cable back to full length over time.

How do I make cables pull or push physics objects?

Enable bDriveStartPhysics or bDriveEndPhysics 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 bEnableCollision 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 bSurfaceCrawl 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 bEnableLODTiers 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 bRideable and Zipline Cable) provides full zipline-style sliding. The Cable Interaction Component also supports sliding in Proximity mode when bDragWithPlayer 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 bApplyTensionToMovement. 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 bOverrideCableDefaults.

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 bFollowParent 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, bEnableCollision, 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 bPullBackWhenTaut.

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:

  1. Tools > New C++ Class
  2. Select None (Empty Class)
  3. Name it anything (e.g. MyGameModule)
  4. Click Create Class, let the editor compile
  5. 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 bEnableVisuals 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 bEnableCollision (off by default).
  • Set CollisionChannel to match your floor (default WorldStatic).
  • For fast-moving cables, enable bSegmentCollision or bHighFidelityCollision.
  • Increase CollisionRadius for very thin meshes.

Cutting doesn't work

  • bAllowCutting 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

  • bEnableWrapping must be true (default).
  • Geometry must respond to WrapCollisionChannel (default Visibility).
  • If wrapping stops, check MaxWrapAnchors (default 8) - complex geometry exhausts the budget.
  • Floor surfaces only wrap when bWrapOnTopSurfaces is true (default).

Wrapping Cable stretches past max anchors

  • By default, bFreezeAtMaxAnchors 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 bPullBackAtMaxAnchors 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

  • bGrabbable 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 bClampGrabToLength - when true, the grab point cannot exceed the cable's rope length.

Known Limitations

Multiplayer
No built-in replicationCables are client-side physics and visuals, not replicated. To sync in multiplayer, replicate endpoint positions and pin/cut state via gameplay RPCs and let each client simulate locally.
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 Latest

  • Initial Fab release
  • 7 components: Verlet Cable, Cable Actor, Tether, Cable Point, Cable Interaction, Pulley, Swing
  • 4 actors: Cable Actor, Wrapping Cable, Zipline Cable, Tether Point
  • 2 Blueprint function libraries: Tether Utils, Cable Web Utils
  • Verlet physics solver with drift, attract, surface crawl, adhesion
  • 4-tier LOD system with global cable budget
  • Runtime pinning with pulley behavior
  • Auto extend/retract and manual extend/retract
  • Physics coupling (two-way cable-to-rigidbody forces)
  • Parallel cable solving across CPU cores
  • Collision round-robin with configurable traces-per-frame budget
  • Tendrils VFX system
  • Beam/laser mode with taper, flare, and noise
  • Cable webs with Cable Parent system
  • Flow materials with per-segment DMIs
  • Distance-based thickness scaling
  • Connect/disconnect visual animations on Tether Component
  • Zipline ride system with gravity influence and auto-tether
  • Movement force system on Tether Component (spring/bungee player pull)
  • Wrapping Cable actor: geometry-aware cable that dynamically wraps around world geometry under tension
  • Tension material parameter drive with remap (bDriveMaterialTension) on Cable Actor, Verlet Cable Component, and Wrapping Cable
  • Cable Interaction Component now detects and supports grabbing Wrapping Cables

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 Projects (by Engine Version)
RAC_ExampleProject_5.4676 MBDownload (UE 5.4)
RAC_ExampleProject_5.5676 MBDownload (UE 5.5)
RAC_ExampleProject_5.6676 MBDownload (UE 5.6)
RAC_ExampleProject_5.7676 MBDownload (UE 5.7)
Built Demo (Playable, no UE required)
RAC_BuiltDemo~600 MBDownload

Standalone Windows build. Run to explore all demo stations without installing Unreal Engine.