Skip to content

Pattern — Terminal Command

Terminal commands are UObject classes parented to UOperatingSystemTerminalCommand. The bundled BP_CMD_Help is the canonical Blueprint graph to study and duplicate.

flowchart LR
  Event["Event: On Process Command"] --> Logic["Internal_DisplayHelp<br/><i>your logic here</i>"]
  Logic --> Finish["Finish Command"]
AssetMain CommandPath
BP_CMD_HelphelpShared/Blueprints/TerminalCommands/
BP_CMD_ClearclearShared/Blueprints/TerminalCommands/
BP_CMD_CdcdShared/Blueprints/TerminalCommands/
BP_CMD_PwdpwdShared/Blueprints/TerminalCommands/
BP_CMD_AptGetapt-getUnix/Blueprints/Programs/Terminal/Commands/ (Unix only)
Event On Process Command (Command: String)
→ [Your logic: Append Output, parse args, broadcast messenger]
→ Finish Command (Error If Any: empty)
NodePurpose
Get Command ParametersArguments after the command name
Append String to Parent Terminal OutputWrite to terminal screen
Finish CommandSignal completion
Broadcast Message (Global Messenger)Bridge to level actors
void UCMD_MyCommand::OnProcessCommand()
{
if (UOperatingSystemTerminal* Term = ParentTerminal.Get())
{
Term->AppendOutput(TEXT("Done."));
}
FinishCommand(FGenericError());
}