🎁 Pickups — Teaching Panels¶
The Teaching folder contains a set of lightweight IMGUI panels used for learning, debugging, and hands-on testing of the Pickups System directly inside your scenes.
These panels demonstrate world pickups, interactables, effect resolution, decorators, cooldowns, and authority handling using the real runtime systems.
Each panel is intentionally minimal and code-first — ideal for understanding behaviour, copying patterns, and wiring your own production UI later.
Status: Sample / Teaching UI — intended for development/testing scenes only. Not for shipping.
Define Guard:
REV_PICKUPS_PRESENT⚠️ If a Teaching panel is present on a GameObject in a shipped scene, it will be visible and interactive at runtime.
Shipping with Teaching panels attached is a developer error, not a framework bug.
🧩 Panel Overview¶
| Panel | Focus | Notes |
|---|---|---|
| PickupsQuickstartPanel | Minimal happy-path | Actor + Effect binding, direct apply, null-damageable handling |
| PickupsWorldAndInteractablesPanel | World & interact modes | Triggers, layers/tags, facing, respawn |
| PickupsDecoratorsAndCooldownsPanel | Extensibility & gating | Decorator chains and cooldown maps |
| PickupsKitchenSinkPanel | Everything combined | All features in a single sandbox |
Each panel is self-contained and demonstrates one clear concept.
All panels inherit from TeachablePanelBase, use pure IMGUI, anchor top-left, and toggle with the Backquote (`) key.
🎯 Learning Goals¶
Across all panels you’ll learn to:
- Bind actors and targets for pickup application
- Apply effects to damageables or via null-allowed policies
- Configure world pickups and interactables
- Use decorator chains (VFX, sound, conditions, persistence)
- Apply and clear static cooldowns
- Understand authority boundaries and binders
- Bridge pickups into inventory and currency systems
- Interpret pickup results and failure feedback
💡 Example: Applying a Pickup Effect¶
Teaching panels demonstrate the same call patterns your production code will use:
var result = effect.TryApply(actor, target);
if (!result.Success)
{
Debug.Log(result.ToUserMessage("Pickup"));
}
No mock logic.
No demo-only shortcuts.
These panels call the real pickup APIs used at runtime.
🧰 Integration Tips¶
- Teaching panels are IMGUI-based and intended for Editor use only.
- They are excluded from player builds unless explicitly enabled and left in a scene.
- Safe to keep in dev scenes — they won’t affect runtime systems.
- Copy effect application, decorator setup, and authority checks into your own code.
- Ignore IMGUI/layout code — it’s scaffolding only.
Important notes:
- World pickups rely on prefab-supplied trigger relays
- Decorator chains resolve in order and may short-circuit
- Cooldowns are enforced globally per effect ID
- Authority checks are honoured when present
Panels will surface clear guidance when dependencies are missing.
🧱 Teaching Folder Layout¶
Pickups/
├─ Teaching/
│ ├─ PickupsQuickstartPanel.cs
│ ├─ PickupsWorldAndInteractablesPanel.cs
│ ├─ PickupsDecoratorsAndCooldownsPanel.cs
│ └─ PickupsKitchenSinkPanel.cs
└─ Samples/
└─ Matching demo scenes
🧠 Quick Review¶
| Attribute | Summary |
|---|---|
| Audience | Developers integrating or exploring the Pickups system |
| Goal | Teach pickup flows, decorators, cooldowns, and authority |
| Style | Code-first, readable, and dependency-light |
| Location | Assets/RevFramework/Runtime/Systems/Pickups/Teaching/ |
| Safety | Editor-focused; must not be shipped with scenes |
| Theme | IMGUI — consistent with all RevFramework teaching panels |
TL;DR¶
The Teaching folder is your in-engine classroom for the Pickups system.
Use it to explore world pickups, interactables, effects, and decorators — then copy the patterns into your own UI.