Templates
Categories:
All GS_Cinematics extension types are generated through the ClassWizard CLI. The wizard handles UUID generation and cmake file-list registration automatically.
For usage guides and setup examples, see The Basics: GS_Cinematics.
python ClassWizard.py \
--template <TemplateName> \
--gem <GemPath> \
--name <SymbolName> \
[--input-var key=value ...]
Contents
Dialogue Condition
Template: DialogueCondition
Creates a condition object that gates a dialogue node connection at runtime. Assigned to a node’s conditions list in the DialogueDatabase asset. EvaluateCondition() is called before the connected node is offered to the player — return true to allow it, false to hide it.
Two types available via --input-var:
| Option | Description |
|---|---|
| Basic Condition (default) | Free-form stub — implement EvaluateCondition() however the design requires |
| Boolean Condition | Pre-wired to read a save record key and compare it with GS_Core::BooleanConditions |
Generated files (Basic):
Source/${Name}_DialogueCondition.h/.cpp
Generated files (Boolean):
Source/${Name}_BooleanDialogueCondition.h/.cpp
CLI:
# Basic Condition:
python ClassWizard.py --template DialogueCondition --gem <GemPath> --name <Name> \
--input-var condition_type="Basic Condition"
# Boolean Condition:
python ClassWizard.py --template DialogueCondition --gem <GemPath> --name <Name> \
--input-var condition_type="Boolean Condition"
Post-generation — manual registration required:
In DialogueSequencerComponent.cpp, add:
#include <path/to/${Name}_DialogueCondition.h>
// inside Reflect(context):
${Name}_DialogueCondition::Reflect(context);
Extensibility: Fully polymorphic. The conditions list on each DialogueNodeData holds DialogueCondition* raw pointers — O3DE’s property editor type picker discovers all registered subtypes via EnumerateDerived. Add as many condition types as needed; they appear in the picker automatically once reflected.
See also: Dialogue Data Structure — full extension walkthrough with header and implementation examples.
Dialogue Effect
Template: DialogueEffect
Creates an effect object that fires world events when the sequencer reaches an Effects node. If the node’s temporary flag is set, ReverseEffect() is called at sequence end to undo the change. Used for enabling/disabling lights, playing sounds, showing UI, or changing world state during dialogue.
Generated files:
Source/${Name}_DialogueEffect.h/.cpp
CLI:
python ClassWizard.py --template DialogueEffect --gem <GemPath> --name <Name>
Post-generation — manual registration required:
In DialogueSequencerComponent.cpp, add:
#include <path/to/${Name}_DialogueEffect.h>
// inside Reflect(context):
${Name}_DialogueEffect::Reflect(context);
Key overrides:
| Method | When called |
|---|---|
DoEffect() | When the Effects node is reached in the sequence |
ReverseEffect() | At sequence end, only if the node’s temporary flag is true |
Extensibility: Same polymorphic pattern as DialogueCondition. The effects list holds DialogueEffect* pointers. All reflected subtypes appear in the editor type picker automatically.
See also: Dialogue Data Structure — full extension walkthrough.
Dialogue Performance
Template: DialoguePerformance
Creates a performance object that drives world-space NPC actions from a Performance node in the dialogue sequence. The sequencer waits at the node until all performances signal completion (unless waitToContinue is false). Used for NPC movement, animation, repositioning, or any async world action that must complete before the dialogue continues.
Generated files:
Source/${Name}_DialoguePerformance.h/.cpp
CLI:
python ClassWizard.py --template DialoguePerformance --gem <GemPath> --name <Name>
Post-generation — manual registration required:
In DialogueSequencerComponent.cpp, add:
#include <path/to/${Name}_DialoguePerformance.h>
// inside Reflect(context):
${Name}_DialoguePerformance::Reflect(context);
Lifecycle:
| Method | Role |
|---|---|
ExecutePerformance() | Entry point — start the world action here |
FinishPerformance() | Call when the action is done (may be async); clean up state, then call base |
PerformanceComplete() | Called by base after FinishPerformance() — signals the sequencer to advance |
Inherited fields: delayStartTime (seconds before ExecutePerformance is called), delayEndTime (seconds before PerformanceComplete fires after finish).
For instant actions, call FinishPerformance() at the end of ExecutePerformance(). For async actions, store a callback or subscribe to a bus and call FinishPerformance() from the completion handler.
Extensibility: Same polymorphic pattern as the other dialogue types. The performances list on a Performance node holds DialoguePerformance* pointers. All reflected subtypes appear in the editor picker automatically.
See also: Dialogue Data Structure — full extension walkthrough.
See Also
For the full API, component properties, and C++ extension guide:
For all ClassWizard templates across GS_Play gems:
Get GS_Cinematics
GS_Cinematics — Explore this gem on the product page and add it to your project.