API Reference

Types are in CrimsonCamera unless noted. BP = Blueprint-callable; C++ only = no Blueprint node.

Core

TypeKindDescription
UCrimsonCameraComponentUCameraComponent subclassOwns the mode stack + override stack + shared shoulder/zoom. BP: Push/Pop/Has Camera Mode Override, Set/Toggle/Get Shoulder, Get Shoulder Sign, Set/Add/Get Zoom Distance, Get Current Zoom Distance, Play Camera Shake, Set/Get Field Of View Override, Set/Get Camera Shake Scale, Get Camera Mode Instance, Get Active Camera Mode, Get Active Camera Type Tag, On Camera Mode Changed (BlueprintAssignable), Get Blend Info, Find Camera Component, Determine Camera Mode (override). Properties: Shoulder, ShoulderInterpSpeed, Min/MaxZoomDistance, ZoomInterpSpeed. C++ only: DetermineCameraModeDelegate, AddFieldOfViewOffset (one-frame). SetFieldOfViewOverride is a persistent absolute FOV applied after the blend (0 = use the mode's authored FOV). Get Blend Info reports the top of the stack (the mode being blended to) and its current blend weight.
UCrimsonCameraModeAbstract UObject (Blueprintable)Base mode. Update View / Update Blending / Get Pivot Location / Get Pivot Rotation / On Activation / On Deactivation are BlueprintNativeEvents. Two declarations the camera component resolves from the active mode every frame: DeclaredPawnFacing (how the pawn should face - Unchanged on every shipped mode except UCrimsonCameraMode_FirstPerson) and bSyncControlRotation (whether the component writes this mode's ControlRotation back into the player controller - true for third-person / first-person / lock-on, false for top-down / side-scroller). Read them with Get Declared Pawn Facing / Should Sync Control Rotation.
FCrimsonCameraModeViewStructA mode's per-frame output: Location, Rotation, ControlRotation, FieldOfView.
ECrimsonCameraModeBlendFunctionEnum (BlueprintType)Linear, EaseIn, EaseOut, EaseInOut.
ECrimsonCameraShoulderEnum (BlueprintType)Center, Right, Left - the shared shoulder side on UCrimsonCameraComponent.
FCrimsonCameraModeDelegateC++ delegate (RetVal)Return-value selection delegate. C++ only - Blueprint uses the Determine Camera Mode event instead. Not to be confused with FCrimsonCameraModeChangedDelegate - the BlueprintAssignable observer event, which any Blueprint can bind.
FCrimsonCameraModeChangedDelegateDynamic multicast (BlueprintAssignable)OnCameraModeChanged on UCrimsonCameraComponent. Params: NewMode, NewCameraTypeTag, PreviousMode, PreviousCameraTypeTag (either mode may be null; key on the tag). Fires when the mode reaches the top of the stack, not when the blend completes. Local only - never drive authoritative state from it. See How-To: React to a Camera Mode Change.

Built-in modes

TypeAddsKey members (all BP)
UCrimsonCameraMode_ThirdPersonOffset curves, penetration avoidance, lag, recenter; applies the component's shared shoulder/zoomRecenterCamera; runtime setters Set Camera Lag Enabled/Speed, Set Camera Rotation Lag Enabled/Speed, Set Auto Recenter Enabled/Delay/Interp Speed, Set Auto Recenter Idle Speed Threshold, Set Recenter Neutral Pitch (for options menus); properties bUseShoulderOffset, bUseZoom, bEnableCameraLag, bEnableRecenter. (Shoulder & zoom API + range live on UCrimsonCameraComponent.)
UCrimsonCameraMode_TopDownFixed-offset isometric followFollowSpeed, PivotOffset, offset curves; declares bSyncControlRotation = false
UCrimsonCameraMode_FirstPersonEye at a mesh socket or the view pivot; optional owner-only mesh hideEyeSocketName, EyeOffset (view space: X fwd, Y right, Z up), bHideOwnerMeshWhileActive; Get Eye Location is an overridable BlueprintNativeEvent. FieldOfView defaults to 90. Leaves bSyncControlRotation at its default of true. The only shipped mode that declares a `DeclaredPawnFacing` (FaceControlRotation) instead of Unchanged, so the body turns with the view without any project setup; it wins over UCrimsonCameraSettings::DefaultPawnFacing.
UCrimsonCameraMode_SideScrollerFixed 2D view axis, deadzone framing, velocity look-ahead, per-axis followViewAxisYaw / bDeriveAxisFromMovementPlane / ViewPitch, Get Resolved View Axis Yaw; CameraDistance, bUseZoom, FramingOffset; DeadzoneHalfWidth/HalfHeight; FollowSpeedHorizontal/Vertical; LookAheadTime/MaxDistance/InterpSpeed; Snap To Target. Declares bSyncControlRotation = false; no penetration avoidance.

Penetration, occlusion & UI

TypeKindDescription
FCrimsonPenetrationAvoidanceFeelerStruct (BlueprintType)One feeler ray for third-person collision avoidance (direction, world/pawn weights, extent, throttle).
ICrimsonCameraAssistInterfaceUInterfaceImplement on a Character/Controller: Get Ignored Actors For Camera Penetration (ignore-list for traces), Get Camera Prevent Penetration Target (override the kept-in-frame actor), and On Camera Penetrating Target - all BlueprintNativeEvents. See How-To: Prevent Camera Clipping.
UCrimsonCameraOcclusionComponentUActorComponentSwaps tagged occluders to a dynamic instance of the project dither fade material while they block the camera, then restores them (local-only; a fast FadeOutInterpSpeed snaps the original back). Configure FadeableActorTag, FadedAmount, FadeInterpSpeed/FadeOutInterpSpeed, TraceChannel; override the material per-pawn with FadeMaterialOverride. BP runtime: Set Occlusion Enabled / Is Occlusion Enabled (off snaps faded geometry back), Set Occlusion Fade Strength (0..1).
UCrimsonUICameraManagerComponentUActorComponentUI seizes camera control via SetViewTarget. C++ only - no Blueprint nodes.
ACrimsonPlayerCameraManagerAPlayerCameraManager subclassHosts the UI camera; set as your PlayerController's Player Camera Manager Class. BP: Set/Get Camera Shake Scale. Installs the Crimson shake modifier that makes that scale global.
UCrimsonCameraModifier_CameraShakeCamera modifierReplaces the engine's UCameraModifier_CameraShake so one intensity multiplier applies to every shake the player receives, whatever started it. Scales the modifier's per-frame output, so changes affect in-flight shakes too, and a shake played at scale 0 still ticks and expires normally. BP: Set/Get Shake Scale.

Lock-on

TypeKindDescription
UCrimsonLockOnComponentUActorComponentPlayer locker. BP (hard): ToggleLockOn, SetLockOnTarget, ClearLockOn, SwitchTargetInScreenDirection, CycleTarget, CycleLockPoint, IsLockedOn, GetCurrentTarget, GetCurrentLockPoint..., SetIndicatorsEnabled, AreIndicatorsEnabled, OnLockOnChanged. BP (soft): GetCurrentLockOnTarget (hard if locked, else soft -> FCrimsonLockOnTargetInfo), GetCurrentSoftTarget, IsSoftTracking, SetSoftLockEnabled, IsSoftLockEnabled, OnSoftTargetChanged.
UCrimsonLockOnTargetComponentUActorComponentMakes an actor lockable; holds LockOnPoints and owns this target's indicator widgets. CanBeLockedOnBy is an overridable BlueprintNativeEvent; GetLockOnPointComponent returns the component + socket a point lives on (for tracking a moving bone); IndicatorWidgetClassOverride / bShowIndicator control its indicator.
FCrimsonLockOnTargetInfoStruct (BlueprintType)The resolved current target from GetCurrentLockOnTarget: TargetActor, TargetComponent (mesh the socket lives on), SocketName, WorldLocation, LockPointIndex, bIsHardLock.
UCrimsonCameraMode_LockOnThirdPerson subclassHard-locks onto the active lock point. Tunables: ScreenBiasPitchDeg, LockInterpSpeed, TeleportSnapDistance, DistanceFovBonus. Override Compute Desired Lock Rotation.
UCrimsonCameraMode_SoftLockOnThirdPerson subclassOptional gentle-assist mode for soft lock. Deadzoned, rate-capped yaw nudge that never slerps and never fights the stick; plain third-person with no soft target or during a hard lock. Tunables: DeadzoneAngleDeg, SoftBiasInterpSpeed, MaxBiasDegreesPerSec, bBiasPitch. Override Compute Soft Look Rotation.
ECrimsonSoftLockCameraBehaviorEnum (BlueprintType)NoCameraTakeover (default) / GentleCameraAssist - how soft lock treats the camera.
UCrimsonLockOnConfigUPrimaryDataAssetTargeting preset + tunables (MaxLockDistance, SwitchDeadzone, SwitchCooldown, LoS) + behavior fragments + camera-mode class + indicator flags (bShowAvailableIndicators, bOnlyShowAvailableWhileLocked, IndicatorRefreshInterval). TargetingPreset drives hard lock; the optional SoftTargetingPreset drives soft lock (falls back to TargetingPreset when unset) and should carry a Frontal Cone filter so soft never tracks behind the camera.
UCrimsonLockOnFragmentAbstract UObject (Instanced, Blueprintable)Behavior on lock acquire / point-changed / release / tick. Add instances to a config.
FCrimsonLockOnPointStruct (BlueprintType)One lock point: SocketName, DisplayName, Priority.
UCrimsonLockOnIndicatorWidgetAbstract UUserWidget (Blueprintable)On-screen indicator base. On Indicator State Changed (Available/Locked) drives visuals; Update Screen Position and Update Distance Scale are overridable BlueprintNativeEvents; DistanceScaleMode (ClampedLinear/Curve/None) keeps a steady apparent size; both modes clamp to MinScale/MaxScale.
UCrimsonCameraSettingsUDeveloperSettingsProject Settings -> Crimson -> Crimson Camera. DefaultLockOnIndicatorWidgetClass - the fallback indicator (shipped default via Config/DefaultCrimsonCamera.ini). Soft Lock-On section: bEnableSoftLock, SoftLockCameraBehavior, SoftStickinessScoreMargin, SoftMinDwellTime, SoftLockMaxDistance, SoftLockRefreshInterval, bShowSoftTargetIndicator, SoftLockCameraModeClass, SoftLockCameraOwnerTag.
Targeting tasksUTargetingTask subclassesUCrimsonTargetingFilterTask_RequireLockable, UCrimsonTargetingFilterTask_FrontalCone (forward-cone cull - mandatory for soft lock, Reference Direction = Camera View), UCrimsonTargetingFilterTask_LineOfSight, UCrimsonTargetingSortTask_ScreenCenter. Selection = built-in AOE; distance = built-in sort. A preset with no selection task returns zero candidates.
UCrimsonCoreLockOnTargetComponent / UCrimsonCoreTargetingFilterTask_AffiliationCrimsonCoreHealth-gated lockable (auto-added to players + NPCs) and the team-affiliation filter task.
UCrimsonCoreGameplayAbilityCrimsonCore (ability base)Per-ability lock-on consumption. BP: Get Current Lock On Target (forwards to the avatar's locker); tunables bFacePawnToCameraWhileActive, ActiveFacingMode, ActiveFacingPriority - these push a facing override for the ability's lifetime rather than snapping the yaw directly, so the server derives the same rotation from the replicated control rotation.

MCP tools (AI agents)

Two UToolsetDefinition toolsets (module CrimsonCameraEditor) let an AI agent read and drive the camera + lock-on systems in a running PIE session over MCP. They register only when Crimson MCP is enabled (Project Settings -> Crimson -> Crimson MCP; requires an editor restart - see CrimsonEditorUtilities -> Quick Start). All tools operate on the local player's PIE world and resolve actors by outliner label (empty = the local player pawn). Camera and lock-on hold no authoritative state, so the act tools are safe to call while playing. Errors surface to the agent as a script error.

ToolsetToolKindDescription
CrimsonCameraToolsetGetCameraStatereadActive mode (class/tag/blend), stack-top tag + weight, shoulder (+sign), zoom (target/current), shake scale, FOV override, and the camera manager's FOV/rotation/location.
CrimsonCameraToolsetPushCameraModeOverrideactPush an override camera mode (by class name / Blueprint name / class path) keyed by a registered owner tag.
CrimsonCameraToolsetPopCameraModeOverrideactPop the override for an owner tag.
CrimsonCameraToolsetSetShoulderactSet the shoulder side (Center / Right / Left).
CrimsonCameraToolsetSetZoomDistanceactSet the shared zoom distance (clamped to the component's range).
CrimsonCameraToolsetSetFieldOfViewOverrideactSet/clear the persistent FOV override (<= 0 clears).
CrimsonLockOnToolsetGetLockOnStatereadHard target + lock point, soft target, config asset, and the soft-lock / indicators flags.
CrimsonLockOnToolsetListLockableTargetsreadEvery actor with a UCrimsonLockOnTargetComponent (lockable flag, point count, indicator state).
CrimsonLockOnToolsetToggleLockOnactLock onto the best candidate, or release.
CrimsonLockOnToolsetSetLockOnTargetactLock onto a specific actor (by label) + point index.
CrimsonLockOnToolsetClearLockOnactRelease the current lock.
CrimsonLockOnToolsetCycleTargetactStep to the next/previous candidate.
CrimsonLockOnToolsetCycleLockPointactStep to the next/previous lock point on the current target.
CrimsonLockOnToolsetSetSoftLockEnabledactEnable/disable soft tracking at runtime.