CrimsonCamera

A mode-stacked, data-driven camera system. Instead of writing camera logic in tick functions, you push and pop modular UCrimsonCameraMode classes onto a blend stack; the stack blends them by weight so transitions between third-person, top-down, aim, lock-on, or any custom view are smooth and code-light. On top of the stack it adds shoulder framing, zoom, lag, recenter, shake, occlusion fade, and a full lock-on system.

Two ways to read this
Use the Blueprint / C++ / Both switch at the top of the window. Blueprint readers get editor screenshots; C++ readers get code; Both shows them side by side. Where something exists in only one world, the other tab says so.

What's included

SystemKey TypesPurpose
Mode stackUCrimsonCameraComponent, UCrimsonCameraModePush / pop blendable modes; the stack blends their output by weight every frame
Built-in modesUCrimsonCameraMode_ThirdPerson, UCrimsonCameraMode_TopDownReady-made third-person (offset curves, penetration avoidance) and top-down modes
Mode overridesPushCameraMode / PopCameraModeGameplay-driven, tag-keyed override that wins over the per-tick selection until popped
Shoulder & zoomSetShoulder / ToggleShoulder, AddZoomDistance (on UCrimsonCameraComponent)Camera-wide over-the-shoulder framing and a clamped dolly zoom, shared by every third-person-derived mode
Lag, recenter & shakebEnableCameraLag, RecenterCamera, PlayCameraShakeOptional view lag, idle / on-demand recenter, and a camera-shake passthrough
User settingsSetFieldOfViewOverride, SetCameraShakeScale, occlusion + lag/recenter settersRuntime setters for a player options menu (FOV, shake intensity, occlusion, lag, recenter) - CrimsonCore wires them to CrimsonSettings on the full stack
Occlusion fadeUCrimsonCameraOcclusionComponentFades tagged geometry between the camera and the pawn by swapping it to a plugin-owned dither fade material, then restoring it (no per-object material authoring)
Lock-onUCrimsonLockOnComponent, UCrimsonLockOnTargetComponent, UCrimsonCameraMode_LockOnData-driven, multi-lock-point target lock-on built on the Gameplay Targeting System
Lock-on indicatorsUCrimsonLockOnIndicatorWidget, UCrimsonCameraSettingsOn-screen markers over lockable targets - soft when available, hard when locked, one per lock point
Soft lock-onGetCurrentLockOnTarget, FCrimsonLockOnTargetInfo, UCrimsonCameraMode_SoftLockOnAction-combat continuous targeting (no camera takeover by default) that exposes the current target + bone for attacks; optional gentle camera assist
UI cameraUCrimsonUICameraManagerComponentLets UI seize exclusive camera control (C++ API)
Assist hooksICrimsonCameraAssistInterfacePer-actor ignore lists for penetration traces + a too-close callback

Plugin dependencies

TypeName
CrimsonCrimsonCommon (logging + shared types)
Engine pluginsTargetingSystem (Unreal's Gameplay Targeting System - the lock-on pipeline)
Engine modulesCore, CoreUObject, Engine, GameplayTags, TargetingSystem, UMG, DeveloperSettings
Lock-on uses an Experimental engine plugin
The lock-on feature is built on Unreal's first-party Gameplay Targeting System (the TargetingSystem plugin), which is marked Experimental (it ships in Lyra). Enabling CrimsonCamera enables it for you. Everything except lock-on works without it.

Where to go next

  • New here? Start with Quick Start - a third-person camera following your pawn end to end.
  • Need a specific task? See the How-To pages (switch modes, shoulder & zoom, lag & recenter, shake, expose camera options as user settings, occlusion fade, prevent camera clipping, top-down camera, lock-on, lock-on indicators, soft lock-on, UI camera, camera dev tools).
  • Want the mental model? Read the Concept pages (mode stack, mode selection & overrides, shared shoulder & zoom state, lock-on pipeline, multiplayer).
  • Looking up a signature? Jump to API Reference.