#include <ComposableCameraShotZoneOverlay.h>
Cinemachine-style framing-zone overlay for the LS / PIE / Game viewport.
Draws translucent dead/soft zone rectangles + the resolved anchor disc for every active [UComposableCameraCompositionFramingNode](../nodes/UComposableCameraCompositionFramingNode.md#ucomposablecameracompositionframingnode) whose Aim.AimZones (or Placement.PlacementZones under AnchorAtScreen) has bEnabled == true. Mirrors the Shot Editor's preview overlay (§D.4.1 of EditorDesignDoc) so designers see identical framing zones in PIE / packaged play / Sequencer scrub as they did while authoring.
Gating:
-
Master CVar:
CCS.Debug.Viewport.ShotZones 0|1— when 0, nothing draws and the registered delegates skip in O(1). -
Independent of the 3D-gizmo
CCS.Debug.Viewportmaster and any per-node CVars. The two viewport-debug groups address different diagnostic needs (3D world-space gizmos vs. 2D screen-space framing-zone overlay) and shouldn't entangle.
Rendering pathway: UDebugDrawService::Register("Game" / "Editor", ...) — same dual-channel + per-(frame, FCanvas*) dedup pattern [FComposableCameraDebugPanel](FComposableCameraDebugPanel.md#fcomposablecameradebugpanel) uses, so the overlay survives the F8 eject viewport swap and doesn't double-draw when one viewport transiently has both ShowFlags set. Iterating [UComposableCameraCompositionFramingNode::GetActiveInstances()](../nodes/UComposableCameraCompositionFramingNode.md#getactiveinstances) is the source of truth for "which Shots are currently driving a
camera"; both the gameplay PCM path and the LS Component path register identically because both end up running the same node.
All cost is guarded #if !UE_BUILD_SHIPPING — overlays are an authoring / debugging affordance, not a runtime feature.
Lifecycle: module-owned. [FComposableCameraSystemModule::StartupModule](FComposableCameraSystemModule.md#startupmodule) calls Initialize; ShutdownModule calls Shutdown.
Public Static Methods¶
| Return | Name | Description |
|---|---|---|
void |
Initialize static |
Register the dual-channel debug-draw delegates. Idempotent. |
void |
Shutdown static |
Unregister the delegates. Idempotent. |
Initialize¶
static
static void Initialize()
Register the dual-channel debug-draw delegates. Idempotent.
Shutdown¶
static
static void Shutdown()
Unregister the delegates. Idempotent.