Contract Reference

Every GS_Core contract by capability folder and producing gem — the 9 TypeBase Strategy bases, the 13 Emit observation buses, and the Exchange query buses — with shipped-versus-pending status and a per-gem feature index.

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

Compiled, editor-pickable. Subclass + reflect → the subtype appears in the type-picker. All nine are shipped and build-verified.

ContractCapability folderProducing gem
PulseTypePulseGS_Interaction
ReactorTypePulseGS_Interaction
WorldTriggerTypeTriggerGS_Interaction
TriggerSensorTypeTriggerGS_Interaction
DialogueConditionDialogueGS_Cinematics
DialoguePerformanceDialogueGS_Cinematics
DialogueEffectDialogueGS_Cinematics
UiMotionTrackMotionGS_UI
FeedbackMotionTrackMotionGS_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.

ContractEventsCapabilityProducerStatus
CamCoreEmissionsUpdateCameraPosition, OnCamCoreRegistered, OnCamCoreUnregisteredCameraGS_PhantomCam✅ Built
TimeEmissionsWorldTick, DayNightChangedTimeGS_Environment✅ Built
PulseReactorEmissionsOnPulseReceivedPulseGS_Interaction✅ Built
TriggerSensorEmissionsOnTriggered, OnResetTriggerGS_Interaction✅ Built
TargetingEmissionsOnUpdateInteractTarget, OnEnterStandby, OnExitStandby, OnInteractTargetingGS_Interaction✅ Built
FeedbackMotionEmissionsOnFeedbackMotionComplete, OnFeedbackMotionLoopedMotionGS_Juice✅ Built
UIInteractableEmissionsOnClickedUIGS_UI✅ Built
UiMotionEmissionsOnUiMotionComplete(entity, name), OnUiMotionLooped(entity, name)MotionGS_UI✅ Built
UIPageEmissionsOnPageShown(page, name), OnPageHidden(page, name)UIGS_UI✅ Built
PossessionEmissionsOnPossessedUnit✦, OnReleasedUnit✦, OnPossessedByController, OnReleasedByControllerPossessionGS_Unit✅ Built
TypewriterEmissionsOnTypeFired, OnTypewriterCompleteDialogueGS_Cinematics⚠️ Pending build
CinematicEmissionsEnterCinematic, ExitCinematicCinematicsGS_Cinematics⚠️ Pending build
DialogueSequenceEmissionsOnDialogueSequenceStarted✦, OnDialogueTextBegin, OnDialogueSequenceCompleteDialogueGS_Cinematics⚠️ Pending build

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.


Exchange — Mediator Buses

Two-way query buses. Only CamCoreExchange ships today; the rest are planned.

ContractMethodsCapabilityProducerStatus
CamCoreExchangeGetCamCoreCameraGS_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)EnvironmentGS_Environment⏳ Planned
CamManager queriesCameraGS_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.

GemContribution
GS_CoreThe 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_PhantomCamCamCore (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_EnvironmentTimeManager day/night and world-tick emits; time control stays in-gem.
GS_InteractionPulse-reactor, trigger-sensor, and targeting emits; a new OnInteract✦ emit; a dead handler base removed.
GS_JuiceFeedback-motion complete/loop emits, wired through the emitter.
GS_UIButton “clicked”, UI-motion complete/loop (with a motion name), page shown/hidden.
GS_UnitPossession (controller & unit vantages, possess & release); in-gem consumers repointed.
GS_CinematicsTypewriter, cinematic enter/exit, dialogue-sequence lifecycle (+ a new sequence-started event). Code-complete, pending a build.
GS_CompleteBridge 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_PerformerReceived 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


Get GS_Core

GS_Core — Explore this gem on the product page and add it to your project.