Concert.IgnoreTransactionFilters

Concert.IgnoreTransactionFilters

#Overview

name: Concert.IgnoreTransactionFilters

This variable is created as a Console Variable (cvar).

It is referenced in 3 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of Concert.IgnoreTransactionFilters is to control whether transaction object allow list filtering should be ignored in the Concert system, which is part of Unreal Engine’s multi-user editing and collaboration framework.

This setting variable is primarily used in the ConcertSyncClient module, which is part of the Concert plugin for Unreal Engine. The Concert system is responsible for synchronizing changes between multiple users working on the same project simultaneously.

The value of this variable is set as a console variable (CVar) in the ConcertClientTransactionBridge.cpp file. It is initialized with a default value of 0, meaning that transaction filters are not ignored by default.

The associated variable CVarIgnoreTransactionIncludeFilter directly interacts with Concert.IgnoreTransactionFilters. They share the same value and purpose.

Developers must be aware that when this variable is set to a value greater than 0, it will cause the system to ignore the transaction object allow list filtering. This can have significant implications for how changes are synchronized between users in a multi-user editing scenario.

Best practices when using this variable include:

  1. Only enable it (set to a value > 0) when you specifically need to bypass the transaction filtering system.
  2. Be cautious when enabling it, as it may lead to unexpected behavior in multi-user editing sessions.
  3. Use it for debugging or specific scenarios where you need to ensure all transactions are being processed, regardless of the configured filters.
  4. Always communicate with your team when changing this setting, as it can affect the behavior of the multi-user editing system for all users.

Regarding the associated variable CVarIgnoreTransactionIncludeFilter:

This variable is used to actually implement the behavior controlled by Concert.IgnoreTransactionFilters. It’s checked in the ApplyTransactionFilters function to determine whether to bypass the include object class filters.

The purpose and usage considerations for CVarIgnoreTransactionIncludeFilter are essentially the same as for Concert.IgnoreTransactionFilters. Developers should treat them as a single setting, as they are directly linked and share the same value.

When working with this variable, developers should be aware that it’s part of the transaction filtering system in the Concert framework, which is crucial for managing which object changes are synchronized between users in a multi-user editing environment.

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Plugins/Developer/Concert/ConcertSync/ConcertSyncClient/Source/ConcertSyncClient/Private/ConcertClientTransactionBridge.cpp:37

Scope (from outer to inner):

file
namespace    ConcertClientTransactionBridgeUtil

Source code excerpt:

{

static TAutoConsoleVariable<int32> CVarIgnoreTransactionIncludeFilter(TEXT("Concert.IgnoreTransactionFilters"), 0, TEXT("Ignore Transaction Object Allow List Filtering"));
static TAutoConsoleVariable<int32> CVarAlwaysSuspendBroadcastUndoRedo(TEXT("Concert.AlwaysSuspendBroadcastUndoRedo"), 0,
																	  TEXT("Always suspend the undo/redo broadcast message. Can help with transactions that steal user focus."));

bool RunTransactionFilters(const TArray<FTransactionClassFilter>& InFilters, UObject* InObject)
{
	bool bMatchFilter = false;

#Associated Variable and Callsites

This variable is associated with another variable named CVarIgnoreTransactionIncludeFilter. They share the same value. See the following C++ source code.

#Loc: <Workspace>/Engine/Plugins/Developer/Concert/ConcertSync/ConcertSyncClient/Source/ConcertSyncClient/Private/ConcertClientTransactionBridge.cpp:37

Scope (from outer to inner):

file
namespace    ConcertClientTransactionBridgeUtil

Source code excerpt:

{

static TAutoConsoleVariable<int32> CVarIgnoreTransactionIncludeFilter(TEXT("Concert.IgnoreTransactionFilters"), 0, TEXT("Ignore Transaction Object Allow List Filtering"));
static TAutoConsoleVariable<int32> CVarAlwaysSuspendBroadcastUndoRedo(TEXT("Concert.AlwaysSuspendBroadcastUndoRedo"), 0,
																	  TEXT("Always suspend the undo/redo broadcast message. Can help with transactions that steal user focus."));

bool RunTransactionFilters(const TArray<FTransactionClassFilter>& InFilters, UObject* InObject)
{
	bool bMatchFilter = false;

#Loc: <Workspace>/Engine/Plugins/Developer/Concert/ConcertSync/ConcertSyncClient/Source/ConcertSyncClient/Private/ConcertClientTransactionBridge.cpp:181

Scope (from outer to inner):

file
namespace    ConcertClientTransactionBridgeUtil
function     ETransactionFilterResult ApplyTransactionFilters

Source code excerpt:

	// otherwise a filter needs to be matched.
	if (SyncConfig->IncludeObjectClassFilters.Num() == 0 
		|| (CVarIgnoreTransactionIncludeFilter.GetValueOnAnyThread() > 0)
		|| RunTransactionFilters(SyncConfig->IncludeObjectClassFilters, InObject))
	{
		return ETransactionFilterResult::IncludeObject;
	}

	// Otherwise the object is excluded from the transaction