#include <ComposableCameraResetPitchAction.h>

Inherits: UComposableCameraActionBase

This action smoothly resets pitch to a target value. If the camera rotates to the target rotation or there is user input, the action will expire.

Public Attributes

Return Name Description
float Pitch
class UInputAction * RotateAction
UComposableCameraInterpolatorBase * Interpolator
float InterpSpeed

Pitch

float Pitch { 0.f }

RotateAction

class UInputAction * RotateAction { nullptr }

Interpolator

UComposableCameraInterpolatorBase * Interpolator { nullptr }

InterpSpeed

float InterpSpeed { 1.f }

Public Methods


UComposableCameraResetPitchAction

UComposableCameraResetPitchAction(const FObjectInitializer & ObjectInitializer)

CanExecute_Implementation

virtual

virtual bool CanExecute_Implementation(float DeltaTime, const FComposableCameraPose & CurrentCameraPose)

OnExecute_Implementation

virtual

virtual void OnExecute_Implementation(float DeltaTime, const FComposableCameraPose & CurrentCameraPose, FComposableCameraPose & OutCameraPose)

Private Attributes

Return Name Description
TWeakObjectPtr< class UEnhancedInputLocalPlayerSubsystem > CachedSubsystem Weak — UEnhancedInputLocalPlayerSubsystem is owned by the LocalPlayer, which is destroyed on PIE stop, controller swap, level-streaming-out, or kick.
TWeakObjectPtr< class ULocalPlayer > CachedLocalPlayer Identity of the LocalPlayer the cached subsystem belongs to. Used by ResolveInputSubsystem to detect controller-swap-without- destruction and invalidate the subsystem cache before reading from the wrong player's input source.
TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > Interp_T

CachedSubsystem

TWeakObjectPtr< class UEnhancedInputLocalPlayerSubsystem > CachedSubsystem

Weak — UEnhancedInputLocalPlayerSubsystem is owned by the LocalPlayer, which is destroyed on PIE stop, controller swap, level-streaming-out, or kick.


CachedLocalPlayer

TWeakObjectPtr< class ULocalPlayer > CachedLocalPlayer

Identity of the LocalPlayer the cached subsystem belongs to. Used by ResolveInputSubsystem to detect controller-swap-without- destruction and invalidate the subsystem cache before reading from the wrong player's input source.


Interp_T

TUniquePtr< TCameraInterpolator< TValueTypeWrapper< double > > > Interp_T

Private Methods

Return Name Description
class UEnhancedInputLocalPlayerSubsystem * ResolveInputSubsystem Walk PCM → OwningPC → LocalPlayer with per-link IsValid, then reuse the cached subsystem only if its owning LocalPlayer matches the chain's current LocalPlayer. Returns nullptr on any chain null OR mismatch (after invalidating the stale cache).

ResolveInputSubsystem

class UEnhancedInputLocalPlayerSubsystem * ResolveInputSubsystem()

Walk PCM → OwningPC → LocalPlayer with per-link IsValid, then reuse the cached subsystem only if its owning LocalPlayer matches the chain's current LocalPlayer. Returns nullptr on any chain null OR mismatch (after invalidating the stale cache).

Caching just the subsystem isn't enough: OwningPlayerController can be re-pointed (re-possess, AI takeover, splitscreen reshuffle) to a DIFFERENT LocalPlayer whose subsystem is a different live object. The previous LocalPlayer can stay alive (its subsystem still valid in isolation) — so a IsValid(CachedSubsystem) test alone passes against a stale-player cache and we'd keep reading the previous player's input source. The LocalPlayer comparison fixes that.