Pulsors
Categories:
The Pulsor system is a physics-driven event broadcast layer. A PulsorComponent lives on any entity with a trigger collider and emits a typed pulse event when another entity enters or exits that volume. PulseReactorComponent instances on the receiving entity listen for those events and respond. Because pulse types are polymorphic and registered at runtime, you can define project-specific pulse types without modifying the Pulsor or Reactor components themselves.
For architecture details, component properties, and extending the system in C++, see the Framework API reference.

Contents
- How Pulses Work
- Pulse Types
- Reactor Types
- Extending with Custom Pulse Types
- Components
- ScriptCanvas Usage
- Quick Reference
- Glossary
- See Also
How Pulses Work

Breakdown

When a physics trigger fires, the PulsorComponent iterates all PulseReactorComponent instances on the entering entity and calls ReceivePulses() on each one that returns true from IsReactor() for the emitted pulse type. Each reactor independently decides whether it handles a given pulse, so multiple reactors on one entity can each respond to a different subset of pulse types without interfering with each other.
| Step | What Happens |
|---|---|
| 1 — Collider overlap | Physics system detects entity entering the Pulsor’s trigger volume. |
| 2 — Pulse emit | PulsorComponent reads its configured PulseType and prepares the event. |
| 3 — Reactor query | Each PulseReactorComponent on the entering entity is called with IsReactor() for that type. |
| 4 — Reaction | Reactors that return true have ReceivePulses() called and execute their response. |
E Indicates extensible classes and methods.
Patterns - Complete list of system patterns used in GS_Play.
Pulse Types
A pulse type is a class derived from the abstract PulseType base. It carries no payload — the type itself is the signal. Reactors match on type identity, so adding a new type automatically makes it distinct from all existing ones.
Built-In Pulse Types
| Type | Purpose |
|---|---|
Debug_Pulse | Test and development use. Logs or prints when received. |
Destruct_Pulse | Signals that the receiving entity should be destroyed or deactivated. |
Reactor Types
A reactor type is a class derived from the abstract ReactorType base. It defines what the receiving entity does when a matching pulse arrives. One entity can carry multiple reactors — one for each pulse type it needs to handle.
Built-In Reactor Types
| Type | Paired With | Behavior |
|---|---|---|
Debug_Reactor | Debug_Pulse | Outputs a debug message when it receives a matching pulse. |
Destructable_Reactor | Destruct_Pulse | Handles entity destruction or deactivation on pulse receipt. |
Extending with Custom Pulse Types
Custom pulse and reactor types are discovered automatically through O3DE serialization at startup. Any team or plugin can add new interaction semantics — damage types, pickup types, status effects — by extending the base class and reflecting it, without modifying GS_Interaction itself. Custom types appear automatically as options in the editor’s component property dropdowns and are available to all Pulsors and Reactors in the project.
For the full extension guide and C++ interface, see Framework API: Pulsors and Framework API: Pulses.
Components
| Component | Role | Key Bus |
|---|---|---|
PulsorComponent | Emits a typed pulse when its trigger volume fires. | — |
PulseReactorComponent | Receives pulses and executes a reaction if the type matches. | PulseReactorRequestBus (ById) |
ScriptCanvas Usage
PulseReactorNotificationBus exposes the reactor’s state for script-driven queries. A common pattern is to wait for a Reactor to receive a pulse, then process its incoming data for your own pulse processing.

Quick Reference
| Need | Bus | Method |
|---|---|---|
| Check if entity handles a pulse type | PulseReactorRequestBus (ById) | IsReactor() |
| Manually trigger pulse processing | PulseReactorRequestBus (ById) | ReceivePulses() |
Glossary
| Term | Meaning |
|---|---|
| Pulsor | A component that emits a typed pulse event when its trigger volume fires |
| Pulse Reactor | A component that receives pulses and executes a response if the type matches |
| Pulse Type | A polymorphic class that identifies the kind of pulse being emitted |
For full definitions, see the Glossary.
See Also
For the full API, component properties, and C++ extension guide:
- Framework API: Pulsors
- Framework API: Pulses
- Framework API: Reactors
- Framework API: Third-Party Implementation
For related systems:
Get GS_Interaction
GS_Interaction — Explore this gem on the product page and add it to your project.