Player Input Reader
Categories:
GS_PlayerControllerInputReaderComponent is the bridge between the O3DE input system and the GS_Unit input pipeline. It sits on the controller entity alongside GS_PlayerControllerComponent and is responsible for reading raw hardware events and routing them to whichever unit is currently possessed.
For usage guides and setup examples, see The Basics: GS_Unit.

Contents
How It Works
Inheritance Chain
GS_PlayerControllerInputReaderComponent extends GS_Core::GS_InputReaderComponent, which listens to AzFramework::InputChannelNotificationBus. When a hardware input fires, the base class matches the event against the configured GS_InputProfile and calls HandleFireInput(eventName, value).
Routing Input
HandleFireInput(eventName, value) checks whether a unit is currently possessed. If so, it routes the event to the unit:
GS_Unit::InputDataRequestBus::Event(
possessedUnit,
&GS_Unit::InputDataRequestBus::Events::UpdateEventState,
eventName, value
);
If no unit is possessed, the input is silently dropped.
Tracking the Possessed Unit
The component listens to UnitControllerNotificationBus::PossessedTargetUnit on its own controller entity. When the controller possesses a new unit, this callback fires and the component updates its local possessedUnit reference. All future input calls then route to the new unit automatically.
Script Canvas - Enabling and Disabling Input Groups

Setup
Add GS_PlayerControllerInputReaderComponent to the controller entity alongside:
GS_PlayerControllerComponent— the controller that manages possession- A
GS_InputProfileasset assigned to the input reader’s inspector slot — defines which input events to listen for and their names
The input reader does not need to be configured per-unit. Changing possession automatically redirects all future input.
API Reference
GS_PlayerControllerInputReaderComponent does not expose a public request bus. It consumes two buses and produces one:
Consumed
| Bus | Event | Description |
|---|---|---|
AzFramework::InputChannelNotificationBus | OnInputChannelEvent | Receives raw hardware input from O3DE. Matched against the GS_InputProfile. |
UnitControllerNotificationBus | PossessedTargetUnit(unitId) | Updates the local possessedUnit reference when the controller possesses a new unit. |
Produced
| Bus | Method | Description |
|---|---|---|
InputDataRequestBus | UpdateEventState(eventName, value) | Routes matched input events to the possessed unit’s GS_InputDataComponent. |
Virtual Methods
| Method | Parameters | Description |
|---|---|---|
HandleFireInput | AZStd::string eventName, float value | Called by the base class when a matched input event fires. Routes to the possessed unit if valid. |
See Also
- Input Data — Full input pipeline overview
- Input Reactor — Unit-side components that react to stored input state
- Unit Controllers — The controller component that manages possession
Get GS_Unit
GS_Unit — Explore this gem on the product page and add it to your project.