# BPC_UsableWorldObjectSystem — Usable World Object System **Parent Class:** `ActorComponent` **Category:** Interaction **Target UE Version:** 5.5–5.7 **Build Phase:** 2 — Interaction ## 1. Overview `BPC_UsableWorldObjectSystem` powers generic usable objects in the world — switches, buttons, valves, terminals, readable notes, audio logs. Provides a unified interaction interface for any object the player can "use" via the InteractionDetector. ## 2. Enums ### `E_UsableObjectType` | Value | Description | |-------|-------------| | `Switch` | Toggleable switch | | `Button` | Pressable button | | `Valve` | Rotatable valve | | `Terminal` | Interactive screen | | `Readable` | Note/book | | `AudioLog` | Audio playback device | | `Generic` | Custom interaction | ## 3. Variables | Variable | Type | Description | |----------|------|-------------| | `ObjectType` | `E_UsableObjectType` | Type of usable object | | `InteractionData` | `DA_InteractionData*` | Interaction definition | | `bIsActive` | `bool` | Object enabled | | `bSingleUse` | `bool` | Can only be used once | | `bHasBeenUsed` | `bool` | Tracked if single-use | | `CooldownSeconds` | `float` | Reuse cooldown | ## 4. Functions | Function | Description | |----------|-------------| | `OnUse` | Executes interaction logic | | `SetEnabled` | Enable/disable object | | `ResetObject` | Return to initial state | ## 5. Event Dispatchers | Dispatcher | Payload | Description | |------------|---------|-------------| | `OnObjectUsed` | `AActor* User` | Object successfully used | | `OnObjectStateChanged` | `bool bIsActive` | State toggled | ## 6. Dependencies | System | Relationship | |--------|--------------| | `BPC_InteractionDetector` | Focus and interaction routing | | `DA_InteractionData` | Data-driven interaction config | ## 7. Reuse Notes - Generic base for all "press E to use" world objects - Can be subclassed for specialized behavior