API Reference
Types are in CrimsonCamera unless noted. BP = Blueprint-callable; C++ only = no Blueprint node.
Core
| Type | Kind | Description |
|---|---|---|
UCrimsonCameraComponent | UCameraComponent subclass | Owns 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 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). |
UCrimsonCameraMode | Abstract UObject (Blueprintable) | Base mode. Update View / Update Blending / Get Pivot Location / Get Pivot Rotation / On Activation / On Deactivation are BlueprintNativeEvents. |
FCrimsonCameraModeView | Struct | A mode's per-frame output: Location, Rotation, ControlRotation, FieldOfView. |
ECrimsonCameraModeBlendFunction | Enum (BlueprintType) | Linear, EaseIn, EaseOut, EaseInOut. |
ECrimsonCameraShoulder | Enum (BlueprintType) | Center, Right, Left - the shared shoulder side on UCrimsonCameraComponent. |
FCrimsonCameraModeDelegate | C++ delegate (RetVal) | Return-value selection delegate. C++ only - Blueprint uses the Determine Camera Mode event instead. |
Built-in modes
| Type | Adds | Key members (all BP) |
|---|---|---|
UCrimsonCameraMode_ThirdPerson | Offset curves, penetration avoidance, lag, recenter; applies the component's shared shoulder/zoom | RecenterCamera; runtime setters Set Camera Lag Enabled/Speed, Set Camera Rotation Lag Enabled/Speed, Set Auto Recenter Enabled/Delay/Interp Speed (for options menus); properties bUseShoulderOffset, bUseZoom, bEnableCameraLag, bEnableRecenter. (Shoulder & zoom API + range live on UCrimsonCameraComponent.) |
UCrimsonCameraMode_TopDown | Fixed-offset isometric follow | FollowSpeed, PivotOffset, offset curves; no control-rotation sync |
Penetration, occlusion & UI
| Type | Kind | Description |
|---|---|---|
FCrimsonPenetrationAvoidanceFeeler | Struct (BlueprintType) | One feeler ray for third-person collision avoidance (direction, world/pawn weights, extent, throttle). |
ICrimsonCameraAssistInterface | UInterface | Implement 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. |
UCrimsonCameraOcclusionComponent | UActorComponent | Swaps 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). |
UCrimsonUICameraManagerComponent | UActorComponent | UI seizes camera control via SetViewTarget. C++ only - no Blueprint nodes. |
ACrimsonPlayerCameraManager | APlayerCameraManager subclass | Hosts the UI camera; set as your PlayerController's Player Camera Manager Class. |
Lock-on
| Type | Kind | Description |
|---|---|---|
UCrimsonLockOnComponent | UActorComponent | Player 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. |
UCrimsonLockOnTargetComponent | UActorComponent | Makes 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. |
FCrimsonLockOnTargetInfo | Struct (BlueprintType) | The resolved current target from GetCurrentLockOnTarget: TargetActor, TargetComponent (mesh the socket lives on), SocketName, WorldLocation, LockPointIndex, bIsHardLock. |
UCrimsonCameraMode_LockOn | ThirdPerson subclass | Hard-locks onto the active lock point. Tunables: ScreenBiasPitchDeg, LockInterpSpeed, TeleportSnapDistance, DistanceFovBonus. Override Compute Desired Lock Rotation. |
UCrimsonCameraMode_SoftLockOn | ThirdPerson subclass | Optional 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. |
ECrimsonSoftLockCameraBehavior | Enum (BlueprintType) | NoCameraTakeover (default) / GentleCameraAssist - how soft lock treats the camera. |
UCrimsonLockOnConfig | UPrimaryDataAsset | Targeting 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. |
UCrimsonLockOnFragment | Abstract UObject (Instanced, Blueprintable) | Behavior on lock acquire / point-changed / release / tick. Add instances to a config. |
FCrimsonLockOnPoint | Struct (BlueprintType) | One lock point: SocketName, DisplayName, Priority. |
UCrimsonLockOnIndicatorWidget | Abstract 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. |
UCrimsonCameraSettings | UDeveloperSettings | Project 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 tasks | UTargetingTask subclasses | UCrimsonTargetingFilterTask_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_Affiliation | CrimsonCore | Health-gated lockable (auto-added to players + NPCs) and the team-affiliation filter task. |
UCrimsonCoreGameplayAbility | CrimsonCore (ability base) | Per-ability lock-on consumption. BP: Get Current Lock On Target (forwards to the avatar's locker), Face Current Lock On Target (yaw-snap the avatar, authority + owner only); tunables bFaceLockOnTargetOnActivate, bFaceSoftTargets. |
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.
| Toolset | Tool | Kind | Description |
|---|---|---|---|
CrimsonCameraToolset | GetCameraState | read | Active 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. |
CrimsonCameraToolset | PushCameraModeOverride | act | Push an override camera mode (by class name / Blueprint name / class path) keyed by a registered owner tag. |
CrimsonCameraToolset | PopCameraModeOverride | act | Pop the override for an owner tag. |
CrimsonCameraToolset | SetShoulder | act | Set the shoulder side (Center / Right / Left). |
CrimsonCameraToolset | SetZoomDistance | act | Set the shared zoom distance (clamped to the component's range). |
CrimsonCameraToolset | SetFieldOfViewOverride | act | Set/clear the persistent FOV override (<= 0 clears). |
CrimsonLockOnToolset | GetLockOnState | read | Hard target + lock point, soft target, config asset, and the soft-lock / indicators flags. |
CrimsonLockOnToolset | ListLockableTargets | read | Every actor with a UCrimsonLockOnTargetComponent (lockable flag, point count, indicator state). |
CrimsonLockOnToolset | ToggleLockOn | act | Lock onto the best candidate, or release. |
CrimsonLockOnToolset | SetLockOnTarget | act | Lock onto a specific actor (by label) + point index. |
CrimsonLockOnToolset | ClearLockOn | act | Release the current lock. |
CrimsonLockOnToolset | CycleTarget | act | Step to the next/previous candidate. |
CrimsonLockOnToolset | CycleLockPoint | act | Step to the next/previous lock point on the current target. |
CrimsonLockOnToolset | SetSoftLockEnabled | act | Enable/disable soft tracking at runtime. |