Structures
This section describes all data structures used throughout the PloxTools: Third Person Camera plugin.
These structures are used to configure camera systems, describe runtime camera state, and pass data through events and API calls. They are used consistently across both Blueprint and C++ workflows.
Each structure is documented with its fields, data types, and references to related enumerations or other structures where applicable.
Focus
FThirdPersonCameraFocusTarget
Represents a focus target used by the camera system.
This structure describes what the camera should focus on. Depending on the target type, it can reference an Actor, Scene Component, socket, or world-space location.
| Field | Type | Description |
|---|---|---|
| Type | EFocusTargetType |
Defines which kind of focus target is used. |
| Actor | AActor* |
Target Actor when the focus type is Actor or Socket. Null for other target types. |
| Component | USceneComponent* |
Target Scene Component when the focus type is Component. Null for other target types. |
| SocketName | FName |
Socket name used when the focus type is Socket. Ignored for other target types. |
| Location | FVector |
World-space location used when the focus type is Location. Ignored for other target types. |
FThirdPersonCameraFocusEvent
Represents the current state of a focus session.
This structure is used by focus-related events and contains the resolved focus target, its distance to the camera pivot, and validity state.
| Field | Type | Description |
|---|---|---|
| Target | FThirdPersonCameraFocusTarget |
Full description of the focus target. |
| DistanceToPivot | float |
Distance from the camera pivot to the focus target location. |
| bIsValid | bool |
Indicates whether the focus target is valid and usable by the camera system. |
FThirdPersonCameraFocusSettings
Defines how the camera behaves while focus is active.
This structure controls focus mode, rotation behavior, auto-clear rules, and soft/hard lock limits.
| Field | Type | Description |
|---|---|---|
| FocusMode | EFocusMode |
Defines whether focus uses Hard Lock or Soft Lock behavior. |
| bEnableAutoClearByDistance | bool |
If enabled, focus is automatically cleared when the target exceeds the allowed distance. |
| AutoClearDistance | float |
Maximum allowed distance from pivot to target before focus is cleared. |
| bEnableAutoClearByVisibility | bool |
If enabled, focus is automatically cleared when the target is not visible for too long. |
| AutoClearVisibilityDelay | float |
Time in seconds the target must remain invisible before focus is cleared. |
| HardLockRotationSpeed | float |
Controls how quickly the camera rotates toward the focus target in Hard Lock mode |
| SoftYawLimit | float |
Maximum yaw deviation allowed from the focus target in Soft Lock mode before return begins. |
| SoftPitchLimit | float |
Maximum pitch deviation allowed from the focus target in Soft Lock mode before return begins. |
| SoftReturnSpeed | float |
Speed at which the camera returns toward the target when Soft Lock limits are exceeded. |
| bEnableHardYawLimit | bool |
If enabled, prevents the camera from rotating beyond the hard yaw limit relative to the focus target. |
| bEnableHardPitchLimit | bool |
If enabled, prevents the camera from rotating beyond the hard pitch limit relative to the focus target. |
| HardYawLimit | float |
Maximum allowed yaw deviation from the focus target when hard yaw clamping is enabled. |
| HardPitchLimit | float |
Maximum allowed pitch deviation from the focus target when hard pitch clamping is enabled. |
Framing
FThirdPersonCameraFramingSettings
Defines the base framing of the third-person camera.
This structure controls default camera distance, pivot height, and static framing offsets.
| Field | Type | Description |
|---|---|---|
| CameraDistance | float |
Default distance between the pivot and the camera when unobstructed. |
| PivotHeight | float |
Base vertical height of the camera pivot above the actor origin. |
| AdditionalCameraOffset | FVector |
Static local camera offset used for framing, such as shoulder positioning. |
| AdditionalPivotOffset | FVector |
Additional offset applied to the pivot after pivot height is calculated. |
Rotation
FThirdPersonCameraRotationLagSettings
Defines smoothing behavior for camera rotation.
This structure controls whether rotation lag is enabled and how quickly the camera follows input.
| Field | Type | Description |
|---|---|---|
| bEnableRotationLag | bool |
Enables smooth interpolation between current and target rotation. |
| RotationLagSpeed | float |
Controls how quickly camera rotation follows input. |
FThirdPersonCameraPitchFollowSettings
Defines automatic pitch follow behavior.
This structure controls resting pitch alignment, follow timing, vertical support, and ceiling anticipation.
| Field | Type | Description |
|---|---|---|
| bEnablePitchMovementFollow | bool |
Enables automatic pitch alignment when the player is not rotating the camera manually. |
| RestingCameraPitch | float |
Target pitch angle the camera returns to when pitch follow is active. |
| PitchFollowSpeed | float |
Speed at which the camera pitch follows the target pitch. |
| PitchFollowRampDuration | float |
Time in seconds for pitch follow to ramp in smoothly after activation. |
| PitchFollowTimeThreshold | float |
Minimum time without manual pitch input before pitch follow starts. |
| PitchFollowAngleThreshold | float |
Minimum pitch difference required to trigger pitch follow. |
| PitchFollowMinSpeedThreshold | float |
Minimum horizontal speed required for pitch follow to activate. |
| bEnableVerticalPitchSupport | bool |
Enables additional pitch support based on vertical character movement. |
| MaxVerticalPitchUpOffset | float |
Maximum upward pitch offset applied when moving down or falling. |
| MaxVerticalPitchDownOffset | float |
Maximum downward pitch offset applied when moving up. |
| MaxFallingPitchOffset | float |
Maximum pitch offset applied while falling. |
| bEnableCeilingAnticipation | bool |
Enables downward pitch adjustment when a ceiling is detected above the character. |
| CeilingCheckDistance | float |
Maximum distance used to detect a ceiling above the pivot. |
| MaxCeilingPitchOffset | float |
Maximum pitch offset applied when a ceiling is directly above. |
FThirdPersonCameraYawFollowSettings
Defines automatic yaw follow behavior.
This structure controls how the camera aligns toward movement direction when the player is not rotating the camera manually.
| Field | Type | Description |
|---|---|---|
| bEnableYawMovementFollow | bool |
Enables automatic yaw alignment toward movement direction. |
| YawFollowSpeed | float |
Speed at which the camera yaw follows movement direction. |
| YawFollowDiagonalStrength | float |
Minimum yaw follow strength when moving diagonally. |
| YawFollowRampDuration | float |
Time in seconds for yaw follow to ramp in smoothly after activation. |
| YawFollowTimeThreshold | float |
Minimum time without manual yaw input before yaw follow starts. |
| YawFollowAngleThreshold | float |
Minimum yaw difference required to trigger yaw follow. |
| YawFollowMinSpeedThreshold | float |
Minimum horizontal speed required for yaw follow to activate. |
| bResetYawFollowTimerOnForwardBackward | bool |
If enabled, strictly forward or backward movement resets the yaw follow timer. |
FThirdPersonCameraPitchConstraintSettings
Defines local pitch constraint behavior.
This structure controls pitch limits, soft slowdown near boundaries, and blending when the allowed pitch range changes.
| Field | Type | Description |
|---|---|---|
| bEnablePitchConstraints | bool |
Enables pitch limits with slowdown near the active boundaries. |
| MinPitch | float |
Minimum allowed vertical look angle. |
| MaxPitch | float |
Maximum allowed vertical look angle. |
| PitchConstraintTolerance | float |
Angular distance from the pitch limits where slowdown begins. |
| PitchConstraintsBlendTime | float |
Time used to blend into a new pitch constraint window when needed. |
FThirdPersonCameraYawConstraintSettings
Defines yaw constraint behavior.
This structure controls yaw limits, soft slowdown near boundaries, and blending when the allowed yaw range changes.
| Field | Type | Description |
|---|---|---|
| bEnableYawConstraints | bool |
Enables yaw limits with slowdown near the active boundaries. |
| MinYaw | float |
Minimum allowed yaw angle. Supports wrapped intervals. |
| MaxYaw | float |
Maximum allowed yaw angle. Supports wrapped intervals. |
| YawConstraintTolerance | float |
Angular distance from the yaw limits where slowdown begins. |
| YawConstraintsBlendTime | float |
Time used to blend into a new yaw constraint window when needed. |
Movement Anticipation
FThirdPersonCameraMovementAnticipationSettings
Defines movement-based camera anticipation behavior.
This structure controls how the camera offsets itself in response to character movement direction and speed.
| Field | Type | Description |
|---|---|---|
| bEnableMovementAnticipation | bool |
Enables movement-based camera anticipation. |
| AnticipationStrength | float |
Maximum offset applied in movement direction. |
| AnticipationInterpSpeed | float |
Interpolation speed of the anticipation offset. |
| bAnticipationLateralOnly | bool |
If enabled, anticipation only applies left/right offset relative to the camera. |
| AnticipationLookInputDelay | float |
Delay after last look input before anticipation becomes active again. |
| AnticipationFullSpeed | float |
Character speed at which anticipation reaches full strength. |
| AnticipationActivationInterpSpeed | float |
Speed at which anticipation activates and deactivates. |
Pitch Effects
FThirdPersonCameraPitchEffectsSettings
Defines camera modifiers driven by pitch.
This structure controls camera distance and FOV changes based on the current camera pitch.
| Field | Type | Description |
|---|---|---|
| bEnablePitchCameraDistanceModifier | bool |
Enables pitch-based modification of camera distance. |
| PitchDistanceDownPercent | float |
Distance change percentage when looking downward. |
| PitchDistanceUpPercent | float |
Distance change percentage when looking upward. |
| bEnablePitchFOVModifier | bool |
Enables pitch-based modification of camera FOV. |
| PitchFOVDownPercent | float |
FOV change percentage when looking downward. |
| PitchFOVUpPercent | float |
FOV change percentage when looking upward. |
Speed Effects
FThirdPersonCameraSpeedEffectsSettings
Defines camera modifiers driven by character speed.
This structure controls camera distance and FOV changes based on character movement speed, including optional response curves.
| Field | Type | Description |
|---|---|---|
| SpeedModifierMinSpeed | float |
Character speed at which speed-based modifiers start affecting the camera. |
| SpeedModifierMaxSpeed | float |
Character speed at which speed-based modifiers reach maximum effect. |
| bSpeedModifyCameraDistance | bool |
Enables speed-based modification of camera distance. |
| SpeedMinCameraDistance | float |
Camera distance offset when speed is at minimum. |
| SpeedMaxCameraDistance | float |
Camera distance offset when speed is at maximum. |
| SpeedCameraDistanceInterpSpeed | float |
Interpolation speed of the camera distance modifier. |
| SpeedCameraDistanceCurve | UCurveFloat* |
Optional curve that remaps normalized speed to camera distance offset. |
| bSpeedModifyFOV | bool |
Enables speed-based modification of FOV. |
| SpeedMinFOV | float |
FOV offset when speed is at minimum. |
| SpeedMaxFOV | float |
FOV offset when speed is at maximum. |
| SpeedFOVInterpSpeed | float |
Interpolation speed of the FOV modifier. |
| SpeedFOVCurve | UCurveFloat* |
Optional curve that remaps normalized speed to FOV offset. |
Camera Shake
FThirdPersonCameraShakeSettings
Defines persistent camera shake behavior.
This structure controls idle shake and movement-driven shake, including scales, speed thresholds, and optional curves.
| Field | Type | Description |
|---|---|---|
| bEnableIdleCameraShake | bool |
Enables subtle idle camera shake while the character is not moving. |
| IdleCameraShakeClass | TSubclassOf<UCameraShakeBase> |
Camera shake class used for idle shake. |
| IdleShakeScale | float |
Scale multiplier applied to the idle shake intensity. |
| bEnableMovementCameraShake | bool |
Enables movement-driven camera shake. |
| MovementCameraShakeClass | TSubclassOf<UCameraShakeBase> |
Camera shake class used for movement shake. |
| MovementShakeMinSpeed | float |
Character speed at which movement shake begins. |
| MovementShakeMaxSpeed | float |
Character speed at which movement shake reaches maximum intensity. |
| MovementShakeMinScale | float |
Shake scale applied when character speed equals the minimum shake speed. |
| MovementShakeMaxScale | float |
Shake scale applied when character speed reaches the maximum shake speed. |
| MovementShakeInterpSpeed | float |
Interpolation speed used to smooth movement shake intensity. |
| MovementShakeCurve | UCurveFloat* |
Optional curve that remaps normalized movement speed to shake intensity. |
Collision
FThirdPersonCameraCollisionSettings
Defines camera collision behavior.
This structure controls obstacle detection, compression and recovery behavior, ignored targets, and predictive avoidance settings.
| Field | Type | Description |
|---|---|---|
| bEnableCameraCollision | bool |
Enables camera collision handling. |
| CameraCollisionRadius | float |
Radius of the collision sphere used between the pivot and the camera. |
| MinDistanceFromPivot | float |
Minimum distance the camera is allowed to move toward the pivot. |
| CollisionRecoverySpeed | float |
Speed at which the camera returns to its normal distance after collision clears. |
| bIgnoreCharacters | bool |
If enabled, camera collision sweeps ignore Character actors. |
| IgnoreCollisionTags | TArray<FName> |
Actor tags that should be ignored by camera collision. |
| CollisionCompressionSpeed | float |
Speed at which the camera compresses toward the safe distance after a collision is detected. |
| CollisionDistanceSmoothingSpeed | float |
Smoothing speed applied to the computed safe distance over time. |
| bEnablePredictiveAvoidance | bool |
Enables predictive avoidance using additional feeler probes. |
| FeelerYawOffset | float |
Angular offset in degrees for side feeler probes. |
| FeelerPairs | int32 |
Number of feeler probe pairs cast around the main camera direction. |
| FeelerProbeRadius | float |
Radius of each predictive avoidance probe. |
Dithering
FThirdPersonCameraDitheringSettings
Defines camera dithering behavior for view obstruction handling.
This structure controls whether blocking objects fade, how transparent they become, and how detection is performed.
| Field | Type | Description |
|---|---|---|
| bEnableDithering | bool |
Enables camera dithering for obstructing objects. |
| bDitherOwner | bool |
If enabled, the owner character can also fade when the camera is very close or inside the mesh. |
| DitherTags | TArray<FName> |
Actor tags that should be considered for dithering when blocking the view. |
| DitherMinOpacity | float |
Minimum opacity applied during dithering. |
| DitherSpeed | float |
Speed at which objects fade in and out. |
| DitherSweepRadius | float |
Sweep radius used to detect objects between the camera and the character. |
| DitherOverlapRadius | float |
Radius around the camera used to detect nearby objects for dithering. |
Debug
FThirdPersonCameraDebugSettings
Defines debug visualization options for the camera system.
This structure controls which runtime camera elements are drawn for debugging.
| Field | Type | Description |
|---|---|---|
| bDebugPivot | bool |
Draws the camera pivot point. |
| bDebugIdealCamera | bool |
Draws the ideal camera position before collision is applied. |
| bDebugFinalCamera | bool |
Draws the final camera position after collision and arm interpolation. |
| bDebugCollisionSweep | bool |
Draws the main collision sweep from the pivot to the ideal camera position. |
| bDebugCollisionHit | bool |
Draws collision hit points detected during camera collision sweeps. |
| bDebugCollisionFeelers | bool |
Draws predictive avoidance feeler sweeps used to probe collision around the main camera direction. |
| bDebugFocus | bool |
Draws the focus target location and a line from the pivot to the target. |
Spline
FThirdPersonCameraSplineSettings
Defines how the camera behaves while a spline camera is active.
This structure controls spline playback mode, focus behavior, ease transitions, timed playback, and tethered camera rules.
| Field | Type | Description |
|---|---|---|
| Mode | EThirdPersonCameraSplineMode |
Determines whether the spline uses time-based playback or tethered movement. |
| bFocusPlayerCharacter | bool |
If enabled, the spline camera rotates to follow the player character. Ignored when FocusTarget is set. |
| FocusTarget | AActor* |
Specific Actor for the spline camera to focus on. Overrides bFocusPlayerCharacter when set. |
| FocusOffset | FVector |
World-space offset added to the focus point when using a focus target or player character focus. |
| EaseInDuration | float |
Time in seconds used to blend from gameplay camera into spline camera. |
| EaseOutDuration | float |
Time in seconds used to blend from spline camera back to gameplay camera. |
| PlayRate | float |
Playback speed multiplier used in Timed mode. |
| bLoop | bool |
If enabled, the spline loops continuously in Timed mode. |
| TetherType | EThirdPersonCameraSplineTetherType |
Determines how the camera maintains distance relative to the player in Tethered mode. |
| MinDistanceFromOwner | float |
Minimum distance the camera should maintain from the player for distance-constrained tether types. |
| bEnableTetheredRotationSoftLock | bool |
Enables limited player-controlled rotation offsets while in Tethered mode. |
| TetheredRotationYawLimit | float |
Maximum yaw offset allowed on top of spline camera rotation while tethered soft lock is enabled. |
| TetheredRotationPitchLimit | float |
Maximum pitch offset allowed on top of spline camera rotation while tethered soft lock is enabled. |
| TetheredRotationReturnSpeed | float |
Speed at which manual tethered rotation returns back to zero after input stops. |
| TetheredRotationFollowSpeed | float |
Speed at which visible camera rotation follows the internally tracked manual tethered rotation offset. |