Every contract collected under GS_Core/Interfaces/<Capability>/, the gem that produces it, and its status. For what each kind is and how to author against it, see Classifications.
✦ marks an event or contract created during the interfacing effort (a gap-fill, not a pre-existing notification).
Contents
- TypeBase — Strategy Bases
- Emit — Observance Buses
- Exchange — Mediator Buses
- Per-Gem Feature Index
- Deferred / Not Yet in This Layer
- See Also
TypeBase — Strategy Bases
Compiled, editor-pickable. Subclass + reflect → the subtype appears in the type-picker. All nine are shipped and build-verified.
| Contract | Capability folder | Producing gem |
|---|---|---|
PulseType | Pulse | GS_Interaction |
ReactorType | Pulse | GS_Interaction |
WorldTriggerType | Trigger | GS_Interaction |
TriggerSensorType | Trigger | GS_Interaction |
DialogueCondition | Dialogue | GS_Cinematics |
DialoguePerformance | Dialogue | GS_Cinematics |
DialogueEffect | Dialogue | GS_Cinematics |
UiMotionTrack | Motion | GS_UI |
FeedbackMotionTrack | Motion | GS_Juice |
DialogueEffect is passive — its reversal logic lives in the dialogue node’s teardown rather than a bus handler. An authoring detail, not a contract change.
Emit — Observance Buses
Header-only. Handle the *EmissionBus and override the events you care about.
| Contract | Events | Capability | Producer | Status |
|---|---|---|---|---|
CamCoreEmissions | UpdateCameraPosition, OnCamCoreRegistered, OnCamCoreUnregistered | Camera | GS_PhantomCam | ✅ Built |
TimeEmissions | WorldTick, DayNightChanged | Time | GS_Environment | ✅ Built |
PulseReactorEmissions | OnPulseReceived | Pulse | GS_Interaction | ✅ Built |
TriggerSensorEmissions | OnTriggered, OnReset | Trigger | GS_Interaction | ✅ Built |
TargetingEmissions | OnUpdateInteractTarget, OnEnterStandby, OnExitStandby, OnInteract✦ | Targeting | GS_Interaction | ✅ Built |
FeedbackMotionEmissions | OnFeedbackMotionComplete, OnFeedbackMotionLooped | Motion | GS_Juice | ✅ Built |
UIInteractableEmissions | OnClicked | UI | GS_UI | ✅ Built |
UiMotionEmissions | OnUiMotionComplete(entity, name), OnUiMotionLooped(entity, name) | Motion | GS_UI | ✅ Built |
UIPageEmissions | OnPageShown(page, name), OnPageHidden(page, name) | UI | GS_UI | ✅ Built |
PossessionEmissions | OnPossessedUnit✦, OnReleasedUnit✦, OnPossessedByController, OnReleasedByController✦ | Possession | GS_Unit | ✅ Built |
TypewriterEmissions | OnTypeFired, OnTypewriterComplete | Dialogue | GS_Cinematics | ⚠️ Pending build |
CinematicEmissions | EnterCinematic, ExitCinematic | Cinematics | GS_Cinematics | ⚠️ Pending build |
DialogueSequenceEmissions | OnDialogueSequenceStarted✦, OnDialogueTextBegin, OnDialogueSequenceComplete | Dialogue | GS_Cinematics | ⚠️ Pending build |
Cinematics emits are not yet built
TypewriterEmissions, CinematicEmissions, and DialogueSequenceEmissions are code-complete but unbuilt as of this writing. Treat their event lists as provisional and confirm against source before authoring against them.Addressing. CamCoreEmissions (data event) is global. The Interaction / UI-interactable / motion / possession buses are addressed by EntityId — listen to a specific entity. TimeEmissions, CinematicEmissions, DialogueSequenceEmissions, and UIPageEmissions are global broadcasts — listen for any occurrence. The possession bus fires controller-vantage events on the controller entity and unit-vantage events on the unit entity.
Possession replaced two older buses
PossessionEmissions is a deliberate redesign, not a transparent hoist. It replaces the old UnitControllerNotificationBus (PossessedTargetUnit) and UnitNotificationBus::UnitPossessed. The single “possessed” event that fired on both possess and depossess was split into explicit possess/release across controller and unit vantages. Graphs, ScriptCanvas translation assets, and examples using the old names are stale and need rewriting. The unit standby events stayed in-gem on UnitNotificationBus.Exchange — Mediator Buses
Two-way query buses. Only CamCoreExchange ships today; the rest are planned.
| Contract | Methods | Capability | Producer | Status |
|---|---|---|---|---|
CamCoreExchange | GetCamCore | Camera | GS_PhantomCam | ✅ Built |
| Play/Stop — Sequence · UIMotion · FeedbackEmit · soundtrack · audio event | — | (multi) | Cinematics / UI / Juice / Audio | ⏳ Planned |
| Get/Set Graph Parameter | — | (graphcanvas graphs) | multi | ⏳ Planned |
| Terrain surface-info query (footstep sounds) | — | Environment | GS_Environment | ⏳ Planned |
| CamManager queries | — | Camera | GS_PhantomCam | ⏳ Planned |
Each planned Play/Stop Exchange pairs with a completion Emit — command via Exchange, observe via Emit. GS_Audio’s emits are greenfield and will land with its Play/Stop Exchange, not before.
Per-Gem Feature Index
What each gem contributed to the layer.
| Gem | Contribution |
|---|---|
| GS_Core | The Interfaces/ tree, the ReflectAllInterfaces aggregator, and a generic motion-loop hook (OnMotionLoop) added to the shared motion runtime to back the UI & Juice motion-loop emits. |
| GS_PhantomCam | CamCore (Exchange + Emit); CamManager rig-lifetime emits; an always-face-camera helper repointed. The internal “set this camera” command stayed an in-gem bus — it is a manager→core pipe, not a cross-gem contract. |
| GS_Environment | TimeManager day/night and world-tick emits; time control stays in-gem. |
| GS_Interaction | Pulse-reactor, trigger-sensor, and targeting emits; a new OnInteract✦ emit; a dead handler base removed. |
| GS_Juice | Feedback-motion complete/loop emits, wired through the emitter. |
| GS_UI | Button “clicked”, UI-motion complete/loop (with a motion name), page shown/hidden. |
| GS_Unit | Possession (controller & unit vantages, possess & release); in-gem consumers repointed. |
| GS_Cinematics | Typewriter, cinematic enter/exit, dialogue-sequence lifecycle (+ a new sequence-started event). Code-complete, pending a build. |
| GS_Complete | Bridge components collapsed: a paper-facing handler moved to GS_Performer; a dialogue-select button, a possession→cam-target utility, and a cinematic controller all repointed to Core contracts and dropped their producing-gem includes. |
| GS_Performer | Received the paper-facing handler from GS_Complete. |
Deferred / Not Yet in This Layer
- GS_Audio emits — greenfield; ship with the planned Play/Stop audio Exchange.
- CamState hoist — unblocks when the neutral EntityId-addressed Camera Exchange replaces its owner-pointer coupling.
- Possession ScriptCanvas translation assets — regeneration pending.
- A legacy UI hub bus header — stale; cleanup pending (GS_Page is the live page system).
See Also
- Classifications — the three kinds in depth, with an authoring how-to for each.
- Interfaces overview — the contract concept and the glance test.
- Framework API: GS_Core — the gem that houses this layer.
Get GS_Core
GS_Core — Explore this gem on the product page and add it to your project.