# 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
