#include <ComposableCameraSplineTransition.h>

Inherits: UComposableCameraTransitionBase

Spline transition.

Public Attributes

Return Name Description
EComposableCameraSplineTransitionType SplineType
EComposableCameraSplineTransitionEvaluationCurveType EvaluationCurveType
FVector StartTangent
FVector EndTangent
FVector StartControlPoint
FVector EndControlPoint
TArray< FVector > ControlPoints
float ArcAngle
float ArcRoll

SplineType

EComposableCameraSplineTransitionType SplineType {  }

EvaluationCurveType

EComposableCameraSplineTransitionEvaluationCurveType EvaluationCurveType {  }

StartTangent

FVector StartTangent { 0.f, 100.f, 0.f }

EndTangent

FVector EndTangent { 0.f, 100.f, 0.f }

StartControlPoint

FVector StartControlPoint { 0.f, 100.f, 0.f }

EndControlPoint

FVector EndControlPoint { 0.f, 100.f, 0.f }

ControlPoints

TArray< FVector > ControlPoints

ArcAngle

float ArcAngle { 180.f }

ArcRoll

float ArcRoll { 0.f }

Public Methods

Return Name Description
void OnBeginPlay_Implementation virtual
FComposableCameraPose OnEvaluate_Implementation virtual
float GetBlendWeightAt virtual const Evaluate the transition's timing curve at a given normalized progress in [0, 1]. Returns the blend weight this transition would apply at that progress — i.e. the shape of its Percentage-over-duration curve.
void DrawTransitionDebug virtual const Per-transition world-space debug hook.

OnBeginPlay_Implementation

virtual

virtual void OnBeginPlay_Implementation(float DeltaTime, const FComposableCameraPose & CurrentSourcePose, const FComposableCameraPose & CurrentTargetPose)

OnEvaluate_Implementation

virtual

virtual FComposableCameraPose OnEvaluate_Implementation(float DeltaTime, const FComposableCameraPose & CurrentSourcePose, const FComposableCameraPose & CurrentTargetPose)

GetBlendWeightAt

virtual const

virtual float GetBlendWeightAt(float NormalizedTime) const

Evaluate the transition's timing curve at a given normalized progress in [0, 1]. Returns the blend weight this transition would apply at that progress — i.e. the shape of its Percentage-over-duration curve.

Used exclusively by the debug panel to render a sparkline preview of the blend curve on top of the transition's progress bar. The call site is a one-per-frame-per-active-transition sample loop, so the implementation must stay cheap (no allocations, no state reads that mutate). NOT used on the runtime evaluation hot path — real blend weight is still derived from Percentage in OnEvaluate so that per-transition state (polynomials, curves, etc.) keeps driving it.

Default implementation returns the input unchanged, giving a linear diagonal — the right fallback for transitions whose concept of "blend weight" isn't a simple scalar of normalized time (Inertialized position path, for example, is a polynomial trajectory, not a scalar lerp; showing a diagonal there still reads as "progress = time" which is accurate for its rotational / overall progression).

Concrete overrides should be pure math — no reads of RemainingTime, TransitionTime, or any internal state. Use only the NormalizedTime argument plus the transition's authored UPROPERTYs (Exp, bSmootherStep, EvaluationCurveType, etc.).


DrawTransitionDebug

virtual const

virtual void DrawTransitionDebug(UWorld * World, bool bViewerIsOutsideCamera) const

Per-transition world-space debug hook.

Invoked from [UComposableCameraEvaluationTree::DrawTransitionsDebug](../core/UComposableCameraEvaluationTree.md#drawtransitionsdebug) while CCS.Debug.Viewport is on, once per frame for every transition that currently sits in an Inner node of the active director's tree (and, recursively, of any referenced director's tree — inter-context blends see both sides).

Default implementation is empty. Concrete transitions override, check their own CCS.Debug.Viewport.Transitions.<Name> CVar, and usually call DrawStandardTransitionDebug plus any type-specific extras (spline curve sample, feeler rays, etc.).

Parameters

  • World World to draw into. Routes through the world's LineBatcher, so the draw is visible in every viewport that renders this world (game + F8-ejected editor).

  • bViewerIsOutsideCamera True when the player is NOT viewing through the camera (F8 eject / SIE). Overrides use this to skip gizmos that would occlude the near plane — mostly the source/target frustum pyramids.

Compiled out in shipping builds.

Private Methods

Return Name Description
FVector EvaluatePositionOnCurve const Evaluate the current spline configuration at parameter t ∈ [0, 1]. Used by both OnEvaluate (with t = BlendWeight) and DrawTransitionDebug (to sample the whole curve). The two call sites must agree exactly or the debug draw would lie about where the camera will go, so they share one helper.

EvaluatePositionOnCurve

const

FVector EvaluatePositionOnCurve(float t, const FVector & StartPos, const FVector & EndPos) const

Evaluate the current spline configuration at parameter t ∈ [0, 1]. Used by both OnEvaluate (with t = BlendWeight) and DrawTransitionDebug (to sample the whole curve). The two call sites must agree exactly or the debug draw would lie about where the camera will go, so they share one helper.

Parameters

  • t Normalized curve parameter.

  • StartPos Spline start (source pose position for the active blend).

  • EndPos Spline end (target pose position for the active blend).