BSPSelectionHighlightIntensity

BSPSelectionHighlightIntensity

#Overview

name: BSPSelectionHighlightIntensity

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

It is referenced in 6 C++ source files.

#Summary

#Usage in the C++ source code

The purpose of BSPSelectionHighlightIntensity is to control the intensity of the highlight overlay displayed when a BSP (Binary Space Partitioning) surface is selected in the Unreal Engine editor.

This setting variable is primarily used by the Unreal Engine’s rendering system, specifically for editor visualization. It is utilized in the following subsystems and modules:

  1. UnrealEd: The main editor module
  2. Engine: The core engine module
  3. Renderer: The rendering module

The value of this variable is set in multiple places:

  1. It is defined as a configurable property in the ULevelEditorViewportSettings class.
  2. It is initialized to 0.0f in the UEngine constructor.
  3. It can be modified through the editor settings UI, which triggers the PostEditChangeProperty function in ULevelEditorViewportSettings.

This variable interacts with other selection highlight-related variables, such as SelectionHighlightIntensity and SelectionHighlightIntensityBillboards. These variables work together to provide a consistent selection highlight experience across different types of objects in the editor.

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

  1. The value is clamped between 0 and 1, as indicated by the meta tags in the property definition.
  2. Changes to this value are immediately reflected in the editor viewport without requiring a restart.
  3. This variable specifically affects BSP surfaces, which are less commonly used in modern Unreal Engine projects but may still be present in older projects or for specific use cases.

Best practices when using this variable include:

  1. Adjusting it in conjunction with other selection highlight intensities to maintain a consistent visual style in the editor.
  2. Using moderate values to ensure selected BSP surfaces are visible without being overly distracting.
  3. Consider the overall lighting and visual style of your project when setting this value to ensure good visibility in various environments.
  4. If not working with BSP surfaces, this setting can be left at its default value without impacting other selection highlights.

#Setting Variables

#References In INI files

Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:450, section: [/Script/UnrealEd.LevelEditorViewportSettings]

#References in C++ code

#Callsites

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

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Classes/Settings/LevelEditorViewportSettings.h:529

Scope (from outer to inner):

file
class        class ULevelEditorViewportSettings : public UObject

Source code excerpt:

	/** Sets the intensity of the overlay displayed when an object is selected */
	UPROPERTY(EditAnywhere, config, Category=LookAndFeel, AdvancedDisplay, meta=(DisplayName = "BSP Surface Highlight Intensity" ,ClampMin = "0", UIMin = "0", UIMax = "1"))
	float BSPSelectionHighlightIntensity;

	/** Enables the editor perspective camera to be dropped at the last PlayInViewport cam position */
	UPROPERTY(EditAnywhere, config, Category=LookAndFeel, meta=(DisplayName = "Use Camera Location from Play-In-Viewport"))
	uint32 bEnableViewportCameraToUpdateFromPIV:1;

	/** When enabled, selecting a camera actor will display a live 'picture in picture' preview from the camera's perspective within the current editor view port.  This can be used to easily tweak camera positioning, post-processing and other settings without having to possess the camera itself.  This feature may reduce application performance when enabled. */

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/EditorEngine.cpp:863

Scope (from outer to inner):

file
function     void UEditorEngine::InitEditor

Source code excerpt:

	GEngine->SetSubduedSelectionOutlineColor(StyleSettings->GetSubduedSelectionColor());
	GEngine->SelectionHighlightIntensity = ViewportSettings->SelectionHighlightIntensity;
	GEngine->BSPSelectionHighlightIntensity = ViewportSettings->BSPSelectionHighlightIntensity;

	// Set navigation system property indicating whether navigation is supposed to rebuild automatically 
	FWorldContext &EditorContext = GetEditorWorldContext();
	FNavigationSystem::SetNavigationAutoUpdateEnabled(GetDefault<ULevelEditorMiscSettings>()->bNavigationAutoUpdate, EditorContext.World()->GetNavigationSystem());

	// Allocate temporary model.

#Loc: <Workspace>/Engine/Source/Editor/UnrealEd/Private/Settings/SettingsClasses.cpp:993

Scope (from outer to inner):

file
function     void ULevelEditorViewportSettings::PostEditChangeProperty

Source code excerpt:

		GEngine->SelectionHighlightIntensity = SelectionHighlightIntensity;
	}
	else if (Name == GET_MEMBER_NAME_CHECKED(ULevelEditorViewportSettings, BSPSelectionHighlightIntensity))
	{
		GEngine->BSPSelectionHighlightIntensity = BSPSelectionHighlightIntensity;
	}
	else if ((Name == FName(TEXT("UserDefinedPosGridSizes"))) || (Name == FName(TEXT("UserDefinedRotGridSizes"))) || (Name == FName(TEXT("ScalingGridSizes"))) || (Name == FName(TEXT("GridIntervals")))) //@TODO: This should use GET_MEMBER_NAME_CHECKED
	{
		const float MinGridSize = (Name == FName(TEXT("GridIntervals"))) ? 4.0f : 0.0001f; //@TODO: This should use GET_MEMBER_NAME_CHECKED
		TArray<float>* ArrayRef = nullptr;
		int32* IndexRef = nullptr;

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Classes/Engine/Engine.h:1748

Scope (from outer to inner):

file
class        class UEngine : public UObject , public FExec

Source code excerpt:

	/** Used to alter the intensity level of the selection highlight on selected BSP surfaces */
	UPROPERTY(transient)
	float BSPSelectionHighlightIntensity;

	/** Used to alter the intensity level of the selection highlight on selected billboard objects */
	UPROPERTY(transient)
	float SelectionHighlightIntensityBillboards;

	/** Delegate handling when streaming pause begins. Set initially in FStreamingPauseRenderingModule::StartupModule() but can then be overridden by games. */

#Loc: <Workspace>/Engine/Source/Runtime/Engine/Private/GameEngine.cpp:779

Scope (from outer to inner):

file
function     UEngine::UEngine

Source code excerpt:


	SelectionHighlightIntensity = 0.0f;
	BSPSelectionHighlightIntensity = 0.0f;

	SelectionHighlightIntensityBillboards = 0.25f;

	bIsInitialized = false;

	BeginStreamingPauseDelegate = NULL;

#Loc: <Workspace>/Engine/Source/Runtime/Renderer/Private/PostProcess/PostProcessSelectionOutline.cpp:267

Scope: file

Source code excerpt:

		PassParameters->OutlineColorIndexBits = 3;
		PassParameters->SelectionHighlightIntensity = GEngine->SelectionHighlightIntensity;
		PassParameters->BSPSelectionIntensity = GEngine->BSPSelectionHighlightIntensity;
		PassParameters->SecondaryViewportOffset = SecondaryViewOffset;

		EDisplayOutputFormat DisplayOutputFormat = View.Family->RenderTarget->GetDisplayOutputFormat();
		bool bIsHDR = false;
		bool bIsSCRGB = false;
		if (FSelectionOutlinePS::SupportHDR(GetFeatureLevelShaderPlatform(GMaxRHIFeatureLevel)))