# 146 — Planar Capture Profile Data Asset (`DA_PlanarCaptureProfile`) ## Purpose Designer-configurable capture profile for individual surfaces. Defines default mode, quality profile overrides, actor lists, and surface material. Referenced by `BP_PlanarCaptureActor` at BeginPlay. ## Dependencies - **Requires:** `PlanarCaptureCommon.h` (C++ enums/structs) - **Required By:** All capture surface actors (139-143) - **Engine/Plugin Requirements:** None ## Class Info | Property | Value | |----------|-------| | **Parent Class** | `PrimaryDataAsset` (C++ may extend) | | **Class Type** | Data Asset | | **Asset Path** | `Content/Framework/Capture/DA_PlanarCaptureProfile.uasset` | | **C++ Status** | N/A (Data Asset) | | **Asset to Create** | Data Asset in UE5 editor | ## 1. Variables | Variable | Type | Default | Description | |----------|------|---------|-------------| | `DefaultMode` | EPlanarCaptureMode | Mirror | Default capture mode | | `QualityProfileOverrides` | TArray〈FPlanarCaptureQualityProfile〉 | — | Override specific quality tier settings (0=Low, 1=Medium, 2=High, 3=Hero) | | `DefaultShowOnlyActors` | TArray〈FPlanarCaptureActorListEntry〉 | — | Pre-configured ShowOnly actors | | `DefaultHiddenActors` | TArray〈FPlanarCaptureActorListEntry〉 | — | Pre-configured Hidden actors | | `bStartEnabled` | bool | true | Surface starts active | | `bDestructible` | bool | false | Can be destroyed | | `SurfaceMaterialOverride` | TSoftObjectPtr〈UMaterialInterface〉 | — | Override surface material | | `SurfaceMPCOverride` | TSoftObjectPtr〈UMaterialParameterCollection〉 | — | Override MPC reference | | `DefaultFOV` | float | 90.0 | Override capture FOV | | `MaxViewDistance` | float | 5000.0 | Override max view distance | ## 2. Usage Pattern ### At BeginPlay (BP_PlanarCaptureActor) ``` Event BeginPlay ├─ If DA_PlanarCaptureProfile is assigned: │ ├─ CaptureComponent.CaptureMode = Profile.DefaultMode │ ├─ CaptureComponent.CaptureFOV = Profile.DefaultFOV │ ├─ CaptureComponent.ShowOnlyActors = Profile.DefaultShowOnlyActors │ ├─ CaptureComponent.HiddenActors = Profile.DefaultHiddenActors │ ├─ bStartEnabled = Profile.bStartEnabled │ ├─ bDestructible = Profile.bDestructible │ ├─ [If SurfaceMaterialOverride] SetSurfaceMaterial(Override) │ └─ [If SurfaceMPCOverride] SurfaceMPC = Override └─ Continue with normal BeginPlay ``` This allows placing 20 BP_Mirror instances in a level, each referencing a different DA_PlanarCaptureProfile — no per-instance variable tweaking needed. ## 3. Profile Examples ### Profile: HeroMirror | Variable | Value | |----------|-------| | DefaultMode | Mirror | | QualityProfileOverrides[3] | Hero: RT 2048, 60fps, Full Lumen, Post | | bStartEnabled | true | | bDestructible | false | ### Profile: SecurityMonitor | Variable | Value | |----------|-------| | DefaultMode | Monitor | | DefaultFOV | 70.0 | | QualityProfileOverrides[0] | Low: RT 256, 5fps | | MaxViewDistance | 3000.0 | ### Profile: HorrorMirror_ScareReady | Variable | Value | |----------|-------| | DefaultMode | HorrorMirror | | QualityProfileOverrides[3] | Hero: RT 2048, 12fps, DelayedFrame=5 | | bDestructible | true | | SurfaceMaterialOverride | MI_Mirror_Horror | ## 4. Manual Implementation Guide 1. Create Data Asset: Parent = `PrimaryDataAsset`, Name = `DA_PlanarCaptureProfile` 2. Add variables as listed in Section 1 (create struct for QualityProfileOverrides if needed) 3. Create multiple profile instances per surface type 4. In each BP_* child, add variable: `CaptureProfile: DA_PlanarCaptureProfile` (Instance Editable, Expose on Spawn) 5. In BeginPlay override, read profile and apply all settings before EnableSurface() ## 5. Build Checklist - [ ] Create DA_PlanarCaptureProfile Data Asset (or C++ struct) - [ ] Add all 10 variables - [ ] Create profile instances: DA_HeroMirror, DA_SecurityMonitor, DA_HorrorMirror - [ ] Add CaptureProfile variable to BP_PlanarCaptureActor - [ ] Wire BeginPlay to apply profile - [ ] Test: place mirror with different profiles, verify settings apply