TrackSettings

TrackSettings

#Overview

name: TrackSettings

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

It is referenced in 4 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of TrackSettings is to define default track configurations for different actor classes in Unreal Engine’s Level Sequence Editor. It is used to automatically create appropriate movie scene tracks for actors when they are added to a level sequence.

This setting variable is primarily used by the Level Sequence Editor module, which is part of the MovieScene plugin in Unreal Engine 5. It helps streamline the process of setting up sequences by automatically adding relevant tracks based on the actor type.

The value of this variable is set in the ULevelSequenceEditorSettings class, which is likely configurable through the project settings or editor preferences. It is an array of FLevelSequenceTrackSettings structures, each defining track settings for a specific actor class.

TrackSettings interacts with other variables and classes within the Level Sequence Editor system, such as:

Developers should be aware of the following when using this variable:

  1. It affects the automatic track creation process when adding actors to a level sequence.
  2. The settings are class-based, so they apply to all instances of a particular actor class.
  3. It includes both default tracks and property-based tracks.
  4. There’s a mechanism to exclude certain tracks or properties for specific actor classes.

Best practices when using this variable include:

  1. Carefully configure the TrackSettings to match your project’s needs and common use cases.
  2. Regularly review and update the settings as your project evolves to ensure optimal workflow.
  3. Consider the performance impact of automatically adding many tracks and adjust accordingly.
  4. Use the exclusion mechanism to fine-tune track creation for specific actor classes when needed.
  5. Document any custom TrackSettings configurations for your team to ensure consistent usage across the project.

#Setting Variables

#References In INI files

<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:912, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:913, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:914, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:915, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:916, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:917, section: [/Script/LevelSequenceEditor.LevelSequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:920, section: [/Script/LevelSequenceEditor.TakeRecorderEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:921, section: [/Script/LevelSequenceEditor.TakeRecorderEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:922, section: [/Script/LevelSequenceEditor.TakeRecorderEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:923, section: [/Script/LevelSequenceEditor.TakeRecorderEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:924, section: [/Script/LevelSequenceEditor.TakeRecorderEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:927, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:928, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:929, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:930, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:931, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]
<Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:932, section: [/Script/DaySequenceEditor.DaySequenceEditorSettings]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/MovieScene/LevelSequenceEditor/Source/LevelSequenceEditor/Private/LevelSequenceEditorToolkit.cpp:434

Scope (from outer to inner):

file
function     void FLevelSequenceEditorToolkit::AddDefaultTracksForActor

Source code excerpt:

	
	// add default tracks
	for (const FLevelSequenceTrackSettings& TrackSettings : GetDefault<ULevelSequenceEditorSettings>()->TrackSettings)
	{
		UClass* MatchingActorClass = TrackSettings.MatchingActorClass.ResolveClass();

		if ((MatchingActorClass == nullptr) || !Actor.IsA(MatchingActorClass))
		{
			continue;
		}

		// add tracks by type
		for (const FSoftClassPath& DefaultTrack : TrackSettings.DefaultTracks)
		{
			UClass* TrackClass = DefaultTrack.ResolveClass();

			// exclude any tracks explicitly marked for exclusion
			for (const FLevelSequenceTrackSettings& ExcludeTrackSettings : GetDefault<ULevelSequenceEditorSettings>()->TrackSettings)
			{
				UClass* ExcludeMatchingActorClass = ExcludeTrackSettings.MatchingActorClass.ResolveClass();

				if ((ExcludeMatchingActorClass == nullptr) || !Actor.IsA(ExcludeMatchingActorClass))
				{
					continue;

#Loc: <Workspace>/Engine/Plugins/MovieScene/LevelSequenceEditor/Source/LevelSequenceEditor/Private/LevelSequenceEditorToolkit.cpp:481

Scope (from outer to inner):

file
function     void FLevelSequenceEditorToolkit::AddDefaultTracksForActor

Source code excerpt:

		// construct a map of the properties that should be excluded per component
		TMap<UObject*, TArray<FString> > ExcludePropertyTracksMap;
		for (const FLevelSequenceTrackSettings& ExcludeTrackSettings : GetDefault<ULevelSequenceEditorSettings>()->TrackSettings)
		{
			UClass* ExcludeMatchingActorClass = ExcludeTrackSettings.MatchingActorClass.ResolveClass();

			if ((ExcludeMatchingActorClass == nullptr) || !Actor.IsA(ExcludeMatchingActorClass))
			{
				continue;

#Loc: <Workspace>/Engine/Plugins/MovieScene/LevelSequenceEditor/Source/LevelSequenceEditor/Private/LevelSequenceEditorToolkit.cpp:518

Scope (from outer to inner):

file
function     void FLevelSequenceEditorToolkit::AddDefaultTracksForActor

Source code excerpt:


		// add tracks by property
		for (const FLevelSequencePropertyTrackSettings& PropertyTrackSettings : TrackSettings.DefaultPropertyTracks)
		{
			TSharedRef<FPropertyPath> PropertyPath = FPropertyPath::CreateEmpty();
			UObject* PropertyOwner = &Actor;

			// determine object hierarchy
			TArray<FString> ComponentNames;

#Loc: <Workspace>/Engine/Plugins/MovieScene/LevelSequenceEditor/Source/LevelSequenceEditor/Public/Misc/LevelSequenceEditorSettings.h:61

Scope (from outer to inner):

file
class        class ULevelSequenceEditorSettings : public UObject

Source code excerpt:

	/** Specifies class properties for which movie scene tracks will be created automatically. */
	UPROPERTY(config, EditAnywhere, Category=Tracks)
	TArray<FLevelSequenceTrackSettings> TrackSettings;

	/** Specifies whether to automatically bind an active sequencer UI to PIE worlds. */
	UPROPERTY(config, EditAnywhere, Category=Playback)
	bool bAutoBindToPIE;

	/** Specifies whether to automatically bind an active sequencer UI to simulate worlds. */