This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Descriptor & Topology

GraphSystemDescriptor fields, topology selection, and GraphContext data type registration.

The GraphSystemDescriptor tells gs_graphcanvas what kind of editor to build. It is a plain struct that you fill out and pass to the MainWindow constructor.

 

GraphSystemDescriptor Fields

Identity

FieldTypeDescription
systemIdconst char*Unique ID string (e.g., "dialogue", "audiograph", "unitaction"). Used for node filtering.
systemNameconst char*Display name shown in the editor title bar.
fileExtensionconst char*File extension for graph files (e.g., ".dialogue", ".audiograph").
mimeTypeconst char*MIME type for drag-drop from the node palette.
saveIdentifierconst char*QSettings key for persisting window layout state.
editorIdGraphCanvas::EditorIdUnique editor ID for the GraphCanvas system.

Topology

FieldTypeDefaultDescription
topologyGraphTopologyFlowGraphDetermines connection style, slot types, and execution model.

Topology options:

  • FlowGraph — Directional flow slots (FlowIn/FlowOut), sequential step/wait/resume execution. Best for: dialogue trees, scripting, sequential processes.
  • DataFlowGraph — No flow slots, data-only connections with dirty-propagation evaluation. Best for: audio, shaders, procedural generation, signal processing.
  • StateMachineGraph — Multidirectional perimeter connections with tick-based state transitions. Best for: HFSM, behavior trees, character controllers.

See Execution Engines for detailed Topology Flow reference and internal API for runtime execution.

 

Feature Flags

FieldTypeDefaultDescription
variablesEnabledboolfalseEnables the variable panel, Get/Set variable nodes, and reference bindings.
allowConnectionLoopbackboolfalseWhether cycles are allowed in the graph.

 

State Machine Features

These fields are only relevant when topology == StateMachineGraph:

FieldTypeDefaultDescription
hierarchicalStatesboolfalseEnable compound/nested states.
parallelLayersboolfalseEnable parallel layer evaluation.
transitionConditionsboolfalseEnable polymorphic transition conditions on connections.

 

UI

FieldTypeDescription
autoSpawnNodeTypesAZStd::vector<AZ::TypeId>Node types automatically created in every new graph (e.g., entry nodes).
stylesheetPathconst char*Optional path to a custom QSS stylesheet for node styling.
windowTitleconst char*Window title text.
menuCategoryconst char*Menu path in the O3DE editor (e.g., "GS Tools").

GraphContext

Each graph system needs a GraphContext subclass that registers the data types available in that system. The framework provides a set of built-in CommonDataTypes available to all systems:

TypeEnumC++ Type
BoolGS_Boolbool
IntGS_Intint
FloatGS_Floatfloat
StringGS_TextAZStd::string
Vector2GS_Vec2AZ::Vector2
Vector3GS_Vec3AZ::Vector3
ColorGS_ColorAZ::Color
EntityIdGS_EntityIdAZ::EntityId

If your tool only uses these built-in types, your GraphContext subclass may be trivial. Domain-specific types (e.g., AudioRoute for audio graphs) are registered by calling context->RegisterDataType(...) in your subclass.


Topology Decision Matrix

ConsiderationFlowGraphDataFlowGraphStateMachineGraph
Flow slots (FlowIn/FlowOut)YesNoNo
Connection directionLeft-to-rightLeft-to-rightMultidirectional (perimeter)
Execution modelStep/wait/resumeTopological dirty-propagationTick-based state transitions
Node interfaceIExecutableNodeIDataFlowNodeIStateMachineNode
EvaluatorFlowGraphEvaluatorDataFlowGraphEvaluatorStateMachineEvaluator
Cycles allowedOptionalNo (DAG required)Yes (inherent)
Transition conditionsN/AN/ATransitionCondition base class
Example downstreamDialogue EditorAudio Event GraphUnit Action Graph