EditorCommands

EditorCommands

#Overview

name: EditorCommands

The value of this variable can be defined or overridden in .ini config files. 9 .ini config files referencing this setting variable.

It is referenced in 17 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of EditorCommands is to store and manage a collection of editor-specific commands in Unreal Engine. This variable is primarily used in the context of the Unreal Editor and various plugin editors to define, register, and execute custom commands that can be bound to key combinations or invoked through other means within the editor interface.

EditorCommands is utilized across several Unreal Engine subsystems and plugins, including:

  1. Avalanche Editor
  2. Chaos Caching Editor
  3. Chaos Flesh Editor
  4. Chaos Solver Editor
  5. Chaos Vehicles Editor
  6. Field System Editor
  7. Geometry Collection Editor
  8. Niagara Editor
  9. Niagara Sim Caching Editor
  10. Blueprint Editor
  11. Unreal Editor core

The value of this variable is typically set within the respective editor or plugin modules during their initialization or startup phase. For example, in the GeometryCollectionEditor, commands are added to the EditorCommands array in the StartupModule function.

EditorCommands often interacts with other variables and systems such as:

Developers should be aware of the following when using EditorCommands:

  1. Commands should be registered during the module’s startup and unregistered during shutdown.
  2. Each command should have a unique name to avoid conflicts.
  3. Commands may need to be bound to specific UI elements or key combinations to be accessible to users.

Best practices for using EditorCommands include:

  1. Organize commands logically by functionality or category.
  2. Provide clear, descriptive names and tooltips for each command.
  3. Ensure proper cleanup of registered commands when the module or plugin is unloaded.
  4. Use appropriate scoping and access control to prevent unintended modifications to the command list.
  5. Consider performance implications when adding a large number of commands.

By following these guidelines, developers can effectively extend the Unreal Editor’s functionality with custom commands tailored to their specific needs.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEditor.ini:229, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:230, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:231, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:232, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:233, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:234, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:235, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:236, section: [/Script/UnrealEd.UnrealEdOptions]

Location: <Workspace>/Engine/Config/BaseEditor.ini:237, section: [/Script/UnrealEd.UnrealEdOptions]

#References in C++ code

#Callsites

This variable is referenced in the following C++ source code:

#Loc: <Workspace>/Engine/Plugins/Experimental/Avalanche/Source/AvalancheEditor/Private/InteractiveTools/AvaInteractiveToolsExtension.cpp:79

Scope (from outer to inner):

file
function     void FAvaInteractiveToolsExtension::RegisterCategories

Source code excerpt:

	using namespace UE::AvaEditor::Private;

	const FAvaEditorCommands& EditorCommands = FAvaEditorCommands::Get();

	InModule->RegisterCategory(StaticMeshCategory, EditorCommands.StaticMeshToolsCategory);
	InModule->RegisterCategory(CamerasCategory, EditorCommands.CameraToolsCategory);
	InModule->RegisterCategory(LightsCategory, EditorCommands.LightsToolsCategory);
}

void FAvaInteractiveToolsExtension::RegisterTools(IAvalancheInteractiveToolsModule* InModule)
{
	using namespace UE::AvaEditor::Private;

	const FAvaEditorCommands& EditorCommands = FAvaEditorCommands::Get();

	InModule->RegisterTool(IAvalancheInteractiveToolsModule::CategoryNameActor, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<AMediaPlate>(
		IAvalancheInteractiveToolsModule::CategoryNameActor, EditorCommands.MediaPlateTool, FString(TEXT("Media Plate Tool")),
		7000));

	int32 Priority = 0;

	InModule->RegisterTool(StaticMeshCategory, UAvaInteractiveToolsStaticMeshActorToolBuilder::CreateToolParameters(StaticMeshCategory,
		EditorCommands.CubeTool, FString(TEXT("Static Mesh Cube Tool")), Priority += 1000,
		TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Cube.Cube'")));

	InModule->RegisterTool(StaticMeshCategory, UAvaInteractiveToolsStaticMeshActorToolBuilder::CreateToolParameters(StaticMeshCategory,
		EditorCommands.SphereTool, FString(TEXT("Static Mesh Sphere Tool")), Priority += 1000,
		TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Sphere.Sphere'")));

	InModule->RegisterTool(StaticMeshCategory, UAvaInteractiveToolsStaticMeshActorToolBuilder::CreateToolParameters(StaticMeshCategory,
		EditorCommands.CylinderTool, FString(TEXT("Static Mesh Cylinder Tool")), Priority += 1000,
		TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Cylinder.Cylinder'")));

	InModule->RegisterTool(StaticMeshCategory, UAvaInteractiveToolsStaticMeshActorToolBuilder::CreateToolParameters(StaticMeshCategory,
		EditorCommands.ConeTool, FString(TEXT("Static Mesh Cone Tool")), Priority += 1000,
		TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Cone.Cone'")));

	InModule->RegisterTool(StaticMeshCategory, UAvaInteractiveToolsStaticMeshActorToolBuilder::CreateToolParameters(StaticMeshCategory,
		EditorCommands.PlaneTool, FString(TEXT("Static Mesh Plane Tool")), Priority += 1000,
		TEXT("/Script/Engine.StaticMesh'/Engine/BasicShapes/Plane.Plane'")));

	Priority = 0;

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ACameraActor>( 
		CamerasCategory, EditorCommands.CameraTool, FString(TEXT("Standard Camera Tool")), 
		Priority += 1000,
		UAvaCameraActorTool::StaticClass()));

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ACineCameraActor>( 
		CamerasCategory, EditorCommands.CineCameraTool, FString(TEXT("Cine Camera Tool")), 
		Priority += 1000,
		UAvaCameraActorTool::StaticClass()));

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ACameraRig_Crane>(
		CamerasCategory, EditorCommands.CameraRigCraneTool, FString(TEXT("Camera Rig Crane Tool")), 
		Priority += 1000));

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ACameraRig_Rail>(
		CamerasCategory, EditorCommands.CameraRigRailTool, FString(TEXT("Camera Rig Rail Tool")), 
		Priority += 1000));

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ACameraShakeSourceActor>( 
		CamerasCategory, EditorCommands.CameraShakeSourceTool, FString(TEXT("Camera Shake Source Tool")), 
		Priority += 1000));

	InModule->RegisterTool(CamerasCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<AAvaPostProcessVolume>(
		CamerasCategory, EditorCommands.AvaPostProcessVolumeTool, FString(TEXT("Motion Design Post Process Volume Tool")), 
		Priority += 1000));

	Priority = 0;

	InModule->RegisterTool(LightsCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<APointLight>(
		LightsCategory, EditorCommands.PointLightTool, FString(TEXT("Point Light Tool")), 
		Priority += 1000));

	InModule->RegisterTool(LightsCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ADirectionalLight>(
		LightsCategory, EditorCommands.DirectionalLightTool, FString(TEXT("Directional Light Tool")), 
		Priority += 1000));

	InModule->RegisterTool(LightsCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ASpotLight>(
		LightsCategory, EditorCommands.SpotLightTool, FString(TEXT("Spot Light Tool")), 
		Priority += 1000));

	InModule->RegisterTool(LightsCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ARectLight>(
		LightsCategory, EditorCommands.RectLightTool, FString(TEXT("Rect Light Tool")),
		Priority += 1000));

	InModule->RegisterTool(LightsCategory, UAvaInteractiveToolsActorToolBuilder::CreateToolParameters<ASkyLight>(
		LightsCategory, EditorCommands.SkyLightTool, FString(TEXT("Sky Light Tool")), 
		Priority += 1000));
}

#Loc: <Workspace>/Engine/Plugins/Experimental/Avalanche/Source/AvalancheEditor/Private/OperatorStack/AvaOperatorStackExtension.cpp:89

Scope (from outer to inner):

file
function     void FAvaOperatorStackExtension::BindCommands

Source code excerpt:

	InCommandList->Append(AnimatorCommands);

	const FAvaEditorCommands& EditorCommands = FAvaEditorCommands::Get();

	AnimatorCommands->MapAction(EditorCommands.DisableAnimators
		, FExecuteAction::CreateSP(this, &FAvaOperatorStackExtension::EnableAnimators, false));

	AnimatorCommands->MapAction(EditorCommands.EnableAnimators
		, FExecuteAction::CreateSP(this, &FAvaOperatorStackExtension::EnableAnimators, true));
}

void FAvaOperatorStackExtension::OnSelectionChanged(UObject* InSelection)
{
	const USelection* Selection = Cast<USelection>(InSelection);

#Loc: <Workspace>/Engine/Plugins/Experimental/ChaosCaching/Source/ChaosCachingEditor/Public/Chaos/ChaosCachingEditorPlugin.h:21

Scope (from outer to inner):

file
class        class IChaosCachingEditorPlugin : public IModuleInterface

Source code excerpt:

class IChaosCachingEditorPlugin : public IModuleInterface
{
	TArray<IConsoleObject*> EditorCommands;

public:
	virtual void StartupModule();
	virtual void ShutdownModule();

	/**

#Loc: <Workspace>/Engine/Plugins/Experimental/ChaosFlesh/Source/ChaosFleshEditor/Private/ChaosFlesh/ChaosFleshEditorPlugin.cpp:25

Scope (from outer to inner):

file
function     void IChaosFleshEditorPlugin::StartupModule

Source code excerpt:

	if (GIsEditor && !IsRunningCommandlet())
	{
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("ChaosDeformable.ImportFile"),
			TEXT("Creates a FleshAsset from the input file"),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FChaosFleshCommands::ImportFile),
			ECVF_Default
		));

		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("ChaosDeformable.FindQualifyingTetrahedra"),
			TEXT("From the selected actor's flesh components, prints indices of tetrahedra matching our search criteria. "
				"Use arg 'MinVol <value>' to specify a minimum tet volume; "
				"use arg 'MaxAR <value>' to specify a maximum aspect ratio; "
				"use 'XCoordGT <value>', 'YCoordGT <value>', 'ZCoordGT <value>' to select tets with all vertices greater than the specified value; "
				"use 'XCoordLT <value>', 'YCoordLT <value>', 'ZCoordLT <value>' to select tets with all vertices less than the specified value; "

#Loc: <Workspace>/Engine/Plugins/Experimental/ChaosFlesh/Source/ChaosFleshEditor/Public/ChaosFlesh/ChaosFleshEditorPlugin.h:53

Scope (from outer to inner):

file
class        class IChaosFleshEditorPlugin : public IModuleInterface

Source code excerpt:


private:
	TArray<IConsoleObject*> EditorCommands;

	// Asset actions for new asset types
	FAssetTypeActions_ChaosDeformableSolver* ChaosDeformableSolverAssetActions;

	// Styleset for flesh tool brushes/fonts etc.
	TSharedPtr<FSlateStyleSet> StyleSet;

#Loc: <Workspace>/Engine/Plugins/Experimental/ChaosSolverPlugin/Source/ChaosSolverEditor/Public/Chaos/ChaosSolverEditorPlugin.h:12

Scope (from outer to inner):

file
class        class IChaosSolverEditorPlugin : public IModuleInterface

Source code excerpt:

class IChaosSolverEditorPlugin : public IModuleInterface
{
	TArray<IConsoleObject*> EditorCommands;

public:
	virtual void StartupModule();
	virtual void ShutdownModule();

#Loc: <Workspace>/Engine/Plugins/Experimental/ChaosVehiclesPlugin/Source/ChaosVehiclesEditor/Public/ChaosVehiclesEditorPlugin.h:13

Scope (from outer to inner):

file
class        class IChaosVehiclesEditorPlugin : public IModuleInterface

Source code excerpt:

class IChaosVehiclesEditorPlugin : public IModuleInterface
{
	TArray<IConsoleObject*> EditorCommands;

public:
	virtual void StartupModule();
	virtual void ShutdownModule();

#Loc: <Workspace>/Engine/Plugins/Experimental/FieldSystemPlugin/Source/FieldSyStemEditor/Public/Field/FieldSystemEditorModule.h:12

Scope (from outer to inner):

file
class        class IFieldSystemEditorModule : public IModuleInterface

Source code excerpt:

class FIELDSYSTEMEDITOR_API IFieldSystemEditorModule : public IModuleInterface
{
	TArray<IConsoleObject*> EditorCommands;

public:
	virtual void StartupModule();
	virtual void ShutdownModule();

#Loc: <Workspace>/Engine/Plugins/Experimental/GeometryCollectionPlugin/Source/GeometryCollectionEditor/Private/GeometryCollection/GeometryCollectionEditorPlugin.cpp:53

Scope (from outer to inner):

file
function     void IGeometryCollectionEditorPlugin::StartupModule

Source code excerpt:

	if (GIsEditor && !IsRunningCommandlet())
	{
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.CreateFromSelectedActors"),
			TEXT("Creates a GeometryCollection from the selected Actors that contain Skeletal and Statict Mesh Components"),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionConversion::CreateFromSelectedActorsCommand),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.CreateFromSelectedAssets"),
			TEXT("Creates a GeometryCollection from the selected Skeletal Mesh and Static Mesh Assets"),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionConversion::CreateFromSelectedAssetsCommand),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.ToString"),
			TEXT("Dump the contents of the collection to the log file. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::ToString),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.ClusterAlongYZPlane"),
			TEXT("Debuigging command to split the unclustered geometry collection along the YZPlane."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::SplitAcrossYZPlane),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.DeleteGeometry"),
			TEXT("Delete geometry by transform name."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::DeleteGeometry),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SelectAllGeometry"),
			TEXT("Select all geometry in hierarchy."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::SelectAllGeometry),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SelectNone"),
			TEXT("Deselect all geometry in hierarchy."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::SelectNone),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SelectLessThenVolume"),
			TEXT("Select all geometry with a volume less than specified."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::SelectLessThenVolume),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SelectInverseGeometry"),
			TEXT("Deselect inverse of currently selected geometry in hierarchy."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::SelectInverseGeometry),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.WriteToHeaderFile"),
			TEXT("Dump the contents of the collection to a header file. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::WriteToHeaderFile),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.WriteToOBJFile"),
			TEXT("Dump the contents of the collection to an OBJ file. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::WriteToOBJFile),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.BuildProximityDatabase"),
			TEXT("Build the Proximity information in the GeometryGroup for the selected collection."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::BuildProximityDatabase),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.DeleteCoincidentVertices"),
			TEXT("Delete coincident vertices on a GeometryCollection. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::DeleteCoincidentVertices),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.DeleteZeroAreaFaces"),
			TEXT("Delete zero area faces on a GeometryCollection. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::DeleteZeroAreaFaces),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.DeleteHiddenFaces"),
			TEXT("Delete hidden faces on a GeometryCollection. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::DeleteHiddenFaces),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.DeleteStaleVertices"),
			TEXT("Delete stale vertices on a GeometryCollection. WARNING: The collection can be very large."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::DeleteStaleVertices),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.PrintStatistics"),
			TEXT("Prints statistics of the contents of the collection."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::PrintStatistics),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.PrintDetailedStatistics"),
			TEXT("Prints detailed statistics of the contents of the collection."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::PrintDetailedStatistics),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.PrintDetailedStatisticsSummary"),
			TEXT("Prints detailed statistics of the contents of the selected collection(s)."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::PrintDetailedStatisticsSummary),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SetupNestedBoneAsset"),
			TEXT("Converts the selected GeometryCollectionAsset into a test asset."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::SetupNestedBoneAsset),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SetupTwoClusteredCubesAsset"),
			TEXT("Addes two clustered cubes to the selected actor."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::SetupTwoClusteredCubesAsset),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.Heal"),
			TEXT("Tries to fill holes in go."),
			FConsoleCommandWithWorldDelegate::CreateStatic(&FGeometryCollectionCommands::HealGeometry),
			ECVF_Default
		));
		EditorCommands.Add(IConsoleManager::Get().RegisterConsoleCommand(
			TEXT("GeometryCollection.SetNamedAttributeValues"),
			TEXT("Command to set attributes within a named group."),
			FConsoleCommandWithWorldAndArgsDelegate::CreateStatic(&FGeometryCollectionCommands::SetNamedAttributeValues),
			ECVF_Default
		));
	}

#Loc: <Workspace>/Engine/Plugins/Experimental/GeometryCollectionPlugin/Source/GeometryCollectionEditor/Public/GeometryCollection/GeometryCollectionEditorPlugin.h:57

Scope (from outer to inner):

file
class        class IGeometryCollectionEditorPlugin : public IModuleInterface

Source code excerpt:


private:
	TArray<IConsoleObject*> EditorCommands;

	// Asset actions for new asset types
	FAssetTypeActions_GeometryCollectionCache* GeometryCollectionCacheAssetActions;
	FGeometryCollectionAssetBroker* AssetBroker;

	// Modular features

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Toolkits/NiagaraParameterCollectionToolkit.h:65

Scope (from outer to inner):

file
class        class FNiagaraParameterCollectionToolkit : public FAssetEditorToolkit, public FGCObject

Source code excerpt:


	/** The command list for this editor */
	TSharedPtr<FUICommandList> EditorCommands;

	/**	Main tab */
	static const FName MainTabID;
};

#Loc: <Workspace>/Engine/Plugins/FX/Niagara/Source/NiagaraEditor/Private/Toolkits/NiagaraSystemToolkit.h:246

Scope (from outer to inner):

file
class        class FNiagaraSystemToolkit : public FWorkflowCentricApplication, public FGCObject, public FEditorUndoClient

Source code excerpt:


	/** The command list for this editor */
	TSharedPtr<FUICommandList> EditorCommands;

	/** Display for script stats on selected platforms */
	TSharedPtr<FNiagaraScriptStatsViewModel> ScriptStats;

	/** Baker preview */
	TSharedPtr<FNiagaraBakerViewModel> BakerViewModel;

#Loc: <Workspace>/Engine/Plugins/FX/NiagaraSimCaching/Source/NiagaraSimCachingEditor/Public/Niagara/NiagaraSimCachingEditorPlugin.h:21

Scope (from outer to inner):

file
class        class INiagaraSimCachingEditorPlugin : public IModuleInterface

Source code excerpt:

class INiagaraSimCachingEditorPlugin : public IModuleInterface
{
	TArray<IConsoleObject*> EditorCommands;

public:
	virtual void StartupModule() override;
	virtual void ShutdownModule() override;

	/**

#Loc: <Workspace>/Engine/Source/Editor/Kismet/Private/SBlueprintEditorToolbar.cpp:324

Scope (from outer to inner):

file
function     static void BlueprintEditorToolbarImpl::MakeCompileDeveloperSubMenu

Source code excerpt:

{
	FToolMenuSection& Section = InMenu->AddSection("Section");
	const FBlueprintEditorCommands& EditorCommands = FBlueprintEditorCommands::Get();
	Section.AddMenuEntry(EditorCommands.SaveIntermediateBuildProducts);
	Section.AddMenuEntry(EditorCommands.ShowActionMenuItemSignatures);
}


//////////////////////////////////////////////////////////////////////////
// FBlueprintEditorToolbar

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Classes/Preferences/UnrealEdOptions.h:93

Scope (from outer to inner):

file
class        class UUnrealEdOptions : public UObject

Source code excerpt:

	/** Commands that can be bound to in the editor. */
	UPROPERTY(config)
	TArray<struct FEditorCommand> EditorCommands;

	/** Pointer to the key bindings object that actually stores key bindings for the editor. */
	UPROPERTY()
	TObjectPtr<class UUnrealEdKeyBindings> EditorKeyBindings;

	/** If true, the list of classes in the class picker dialog will be expanded */

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/UnrealEdEngine.cpp:1265

Scope (from outer to inner):

file
function     void UUnrealEdOptions::GenerateCommandMap

Source code excerpt:

{
	CommandMap.Empty();
	for(int32 CmdIdx=0; CmdIdx<EditorCommands.Num(); CmdIdx++)
	{
		FEditorCommand &Cmd = EditorCommands[CmdIdx];

		CommandMap.Add(Cmd.CommandName, CmdIdx);
	}
}

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/UnrealEdEngine.cpp:1284

Scope (from outer to inner):

file
function     FString UUnrealEdOptions::GetExecCommand

Source code excerpt:

		int32* CommandIdx = CommandMap.Find(Binding.CommandName);

		if(CommandIdx && EditorCommands.IsValidIndex(*CommandIdx))
		{
			FEditorCommand &Cmd = EditorCommands[*CommandIdx];

			if(Cmd.Parent == EditorSet)
			{
				// See if this key binding matches the key combination passed in.
				if(bAltDown == Binding.bAltDown && bCtrlDown == Binding.bCtrlDown && bShiftDown == Binding.bShiftDown && Key == Binding.Key)
				{
					int32* EditorCommandIdx = CommandMap.Find(Binding.CommandName);

					if(EditorCommandIdx && EditorCommands.IsValidIndex(*EditorCommandIdx))
					{
						FEditorCommand &EditorCommand = EditorCommands[*EditorCommandIdx];
						Result = EditorCommand.ExecCommand;
					}
					break;
				}
			}
		}