137 — Planar Capture Actor (BP_PlanarCaptureActor)
Purpose
Placeable actor wrapping a BPC_PlanarCapture component. Owns the surface mesh, material dynamic instances, proximity trigger for quality scoring, and the capture component. Blueprint children (139-143) extend this for specific modes.
Dependencies
- Requires:
BPC_PlanarCapture (136), SS_PlanarCaptureManager (138)
- Required By:
BP_Mirror (139), BP_Portal (140), BP_Monitor (141), BP_HorrorMirror (142), BP_FakeWindow (143)
- Engine/Plugin Requirements: Renderer module
Class Info
| Property |
Value |
| Parent Class |
Actor (C++ ABP_PlanarCaptureActor) |
| Class Type |
Blueprint Actor |
| Asset Path |
Content/Framework/Capture/ |
| C++ Header |
Source/PG_Framework/Public/Capture/BP_PlanarCaptureActor.h |
| C++ Status |
✅ Full Implementation |
| BP Asset |
BP children: BP_Mirror, BP_Portal, BP_Monitor, BP_HorrorMirror, BP_FakeWindow |
1. Components
| Component |
Type |
Description |
Root |
SceneComponent |
Root transform |
SurfaceMesh |
StaticMeshComponent |
Surface plane/quad mesh, collision enabled |
ProximityTrigger |
BoxComponent |
Overlap volume for player proximity scoring (500x500x500 default) |
CaptureComponent |
UBPC_PlanarCapture |
Core capture logic |
2. Variables
Configuration
| Variable |
Type |
Default |
Category |
Description |
SurfaceDisplayName |
FString |
"" |
Capture|Config |
Debug/display name |
bStartEnabled |
bool |
true |
Capture|Config |
Start active on BeginPlay |
bDestructible |
bool |
false |
Capture|Config |
Can be destroyed (shattered mirror) |
SurfaceMPC |
UMaterialParameterCollection* |
— |
Capture|Material |
Global MPC reference |
Runtime
| Variable |
Type |
Description |
bIsActive |
bool |
Current active state |
SurfaceMaterialInstance |
UMaterialInstanceDynamic* |
Created dynamic material instance |
Replicated
| Variable |
Type |
Condition |
Description |
bRepIsActive |
bool |
ReplicatedUsing OnRep_IsActive |
Server-authoritative active state |
3. Functions
EnableSurface()
- Description: Activates the surface, initializes capture component
- Flow: Set bIsActive=true → CaptureComponent.InitializeCapture()
DisableSurface()
- Description: Deactivates the surface, shuts down capture
- Flow: Set bIsActive=false → CaptureComponent.ShutdownCapture()
SetCaptureMode(NewMode: EPlanarCaptureMode)
- Description: Change capture mode at runtime
- Flow: Shutdown → Change CaptureComponent.CaptureMode → Re-initialize → Broadcast OnModeChanged
SetSurfaceMaterial(NewMaterial: UMaterialInterface*)
- Description: Swap surface material at runtime (clean ↔ dirty mirror, etc.)
- Flow: SurfaceMesh.CreateDynamicMaterialInstance(NewMaterial) → Store as SurfaceMaterialInstance
SetSurfaceMPCParameter(ParameterName: FName, Value: float)
- Description: Set a single MPC scalar parameter on the surface's MID
DestroySurface()
- Description: Destroy the surface (shatter mirror, break monitor). Respects bDestructible flag.
- Flow: DisableSurface → Broadcast OnSurfaceDestroyed → (BP child handles visual FX)
4. Event Dispatchers
| Dispatcher |
Parameters |
Description |
OnModeChanged |
NewMode: EPlanarCaptureMode |
Mode changed at runtime |
OnSurfaceDestroyed |
Surface: ABP_PlanarCaptureActor* |
Surface destroyed |
5. Overlap Events
| Event |
Logic |
OnProximityBeginOverlap |
If OtherActor has Tag "Player" → CaptureComponent.SetScriptedPriority(0.3) |
OnProximityEndOverlap |
If OtherActor has Tag "Player" → CaptureComponent.SetScriptedPriority(0.0) |
6. Communication Matrix
| Target System |
Method |
What |
SS_PlanarCaptureManager |
Direct (RegisterSurface) |
Registers on BeginPlay |
BPC_PlanarCapture |
Direct (owns) |
Full component access |
BPC_ScareEventSystem (101) |
Dispatcher / Interface |
Horror mirror scare triggers |
SS_AudioManager (132) |
Direct |
Surface audio (shatter, portal whoosh) |
7. Manual Implementation Guide
7.1 Blueprint Child Setup
- Create Blueprint Class: Parent =
BP_PlanarCaptureActor, Name = BP_Mirror (or BP_Portal, etc.)
- Assign a plane/quad StaticMesh to
SurfaceMesh in Components panel
- Set
CaptureComponent.CaptureMode in Class Defaults
- Assign
SurfaceMPC to MPC_CaptureSurface
- Assign material to SurfaceMesh slot 0
7.2 Proximity Trigger Adjustments
- Resize
ProximityTrigger.BoxExtent per surface (larger mirrors = larger trigger)
- The trigger boosts priority when player is near — adjust size for desired quality bump radius
7.3 Destruction Handling
8. Build Checklist