🎁 Using the Pickups System¶
The Pickups system is a modular, decorator-driven, netcode-agnostic pipeline for collectible items and interactables.
It scales from simple world pickups (VFX, teleport, animation triggers) to more structured interactables with decorators, authority binders, and feedback — without hard dependencies on other systems.
🎯 Purpose¶
Pickups provide a data-driven execution pipeline for triggering gameplay effects from world interactions.
They are designed to:
- support standalone usage or integration with other systems
- separate authoring (definitions) from execution (effects)
- allow behaviour composition via decorators
- optionally gate execution via authority rules
📦 Folder Overview¶
Pickups are composed from these layers:
- Effects → what actually happens
- Decorators → wrappers that add behaviour
- Definitions → authoring assets
- UnityIntegration → scene components (triggers, interactables)
- Authority → optional mutation gating
- Feedback → optional UX responses
🧩 What Lives Here¶
Core components involved in the pipeline:
PickupEffect→ base effect contractPickupEffectDecorator→ behaviour wrappersIPickupDecoratorCreator→ decorator constructionPickupEffectRunner→ execution entry pointIPickupAuthority→ optional gatingIPickupFeedback→ optional UX handling
🧠 Usage Guidance¶
Create a Definition¶
Assets → Create → RevFramework → Pickups → Definitions → ...
Definitions are data-only assets describing:
- effect configuration
- decorator entries and priority
- optional VFX/SFX or conditions
Add Decorators¶
Decorators wrap effects in a defined order:
- lower priority → inner
- higher priority → outer
Decorators may:
- cancel execution
- add VFX/SFX
- gate execution (tags, RNG, conditions)
- provide debug or logging hooks
Create a World Pickup¶
Common entry components:
TriggerPickup→ automatic trigger-based pickupInteractablePickupBase→ input-driven interaction
Requires:
TriggerRelay2DorTriggerRelay3D
Apply an Effect (code)¶
PickupEffectRunner.Apply(effect, damageable, actor);
This handles:
- decorator routing
- cooldown enforcement
- null-damageable rules
🧪 Diagnostics¶
Execution flow:
Trigger / Interaction
↓
Authority (optional)
↓
PickupEffectRunner
↓
PickupEffect.ApplyTo (standard path)
↓
Decorators (inner → outer)
↓
OnApply (effect logic)
↓
Feedback (optional)
Notes:
- Authority is checked before execution
- Decorators may cancel execution
- Effects run only after pipeline checks pass
⚠️ Important Notes¶
- Null-damageable requires
IEffectAllowsNullDamageable - Context-aware effects bypass base gating
- Cooldowns bind to owner (damageable → context fallback)
- Decorators may cancel execution early
- Definitions do not enforce behaviour
- Feedback does not affect execution logic
🚫 Not for Production Use¶
This module does not provide:
- networking or replication
- inventory integration
- UI systems
- prefab-driven gameplay setups
Networking (sync, RPCs, rollback) must be implemented externally.
🔗 Related Documentation¶
- Core
- Definitions
- Decorators
- Effects
- UnityIntegration
- Authority
- Feedback