AlphaBrushPanV
AlphaBrushPanV
#Overview
name: AlphaBrushPanV
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 7
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of AlphaBrushPanV is to vertically offset the brush mask texture in the Unreal Engine 5 Landscape Editor. This setting variable is part of the brush customization system for landscape editing tools.
AlphaBrushPanV is primarily used in the Landscape Editor module of Unreal Engine 5. It is specifically utilized in the LandscapeEditor subsystem, which is responsible for terrain editing and manipulation.
The value of this variable is set in several ways:
- It is initialized with a default value of 0.5f in the ULandscapeEditorObject constructor.
- It can be loaded from the project’s configuration file (GEditorPerProjectIni) using the GConfig system.
- It can be modified through the Editor UI, as evidenced by the UPROPERTY macro in the header file.
AlphaBrushPanV interacts with other variables related to brush customization, such as:
- AlphaBrushPanU (horizontal offset)
- AlphaBrushRotation (rotation of the brush)
- AlphaBrushScale (scale of the brush)
Developers should be aware that:
- This variable affects the vertical positioning of the alpha brush texture on the landscape.
- It is clamped between 0 and 1, as indicated by the ClampMin and ClampMax meta tags in the UPROPERTY declaration.
- It is only relevant for pattern brushes, as shown by the ShowForBrushes meta tag.
Best practices when using this variable include:
- Use it in conjunction with AlphaBrushPanU for precise control over brush positioning.
- Consider the interaction between panning, rotation, and scale when adjusting brush settings.
- Remember that changes to this variable are saved to the project configuration, so they persist between editor sessions.
- When creating custom landscape editing tools, respect the clamping range (0 to 1) to maintain consistency with the built-in tools.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:733, section: [LandscapeEdit]
- INI Section:
LandscapeEdit
- Raw value:
0.500000
- Is Array:
False
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEdModeBrushes.cpp:1214
Scope (from outer to inner):
file
class class FLandscapeBrushAlphaPattern : public FLandscapeBrushAlphaBase
function virtual FLandscapeBrushData ApplyBrush
Source code excerpt:
Scale.Y = 1.0f / EdMode->UISettings->AlphaBrushScale;
Bias.X = SizeX * EdMode->UISettings->AlphaBrushPanU;
Bias.Y = SizeY * EdMode->UISettings->AlphaBrushPanV;
Angle = EdMode->UISettings->AlphaBrushRotation;
}
// Find alphamap sample location
FVector2D SamplePos = FVector2D(X, Y) * Scale + Bias;
SamplePos = SamplePos.GetRotated(Angle);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEdModeBrushes.cpp:1307
Scope (from outer to inner):
file
class class FLandscapeBrushAlphaPattern : public FLandscapeBrushAlphaBase
function virtual void Tick
Source code excerpt:
static_cast<float>(FMath::IsNearlyZero(Scale.Y) ? 1.0 : 1.0 / (Scale.Y)),
EdMode->UISettings->AlphaBrushPanU,
EdMode->UISettings->AlphaBrushPanV);
Angle = EdMode->UISettings->AlphaBrushRotation;
}
Angle = FMath::DegreesToRadians(Angle);
FVector LandscapeLocation = Proxy->LandscapeActorToWorld().GetTranslation();
FVector4 LandscapeLocationParam(LandscapeLocation.X, LandscapeLocation.Y, LandscapeLocation.Z, Angle);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorDetailCustomization_AlphaBrush.cpp:255
Scope (from outer to inner):
file
function BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION void FLandscapeEditorDetailCustomization_AlphaBrush::CustomizeDetails
Source code excerpt:
TSharedRef<IPropertyHandle> PropertyHandle_AlphaBrushRotation = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(ULandscapeEditorObject, AlphaBrushRotation));
TSharedRef<IPropertyHandle> PropertyHandle_AlphaBrushPanU = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(ULandscapeEditorObject, AlphaBrushPanU));
TSharedRef<IPropertyHandle> PropertyHandle_AlphaBrushPanV = DetailBuilder.GetProperty(GET_MEMBER_NAME_CHECKED(ULandscapeEditorObject, AlphaBrushPanV));
auto NonWorld_Visibility = TAttribute<EVisibility>::Create(TAttribute<EVisibility>::FGetter::CreateLambda([=]() { return GetPropertyValue<bool>(PropertyHandle_bUseWorldSpacePatternBrush) ? EVisibility::Collapsed : EVisibility::Visible; } ));
auto World_Visibility = TAttribute<EVisibility>::Create(TAttribute<EVisibility>::FGetter::CreateLambda([=]() { return GetPropertyValue<bool>(PropertyHandle_bUseWorldSpacePatternBrush) ? EVisibility::Visible : EVisibility::Collapsed; } ));
BrushSettingsCategory.AddProperty(PropertyHandle_bUseWorldSpacePatternBrush);
BrushSettingsCategory.AddProperty(PropertyHandle_AlphaBrushScale)
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:111
Scope (from outer to inner):
file
function ULandscapeEditorObject::ULandscapeEditorObject
Source code excerpt:
, AlphaBrushRotation(0.0f)
, AlphaBrushPanU(0.5f)
, AlphaBrushPanV(0.5f)
, bUseWorldSpacePatternBrush(false)
, WorldSpacePatternBrushSettings(FVector2D::ZeroVector, 0.0f, false, 3200)
, AlphaTexture(nullptr)
, AlphaTextureChannel(ELandscapeTextureColorChannel::Red)
, AlphaTextureSizeX(1)
, AlphaTextureSizeY(1)
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:227
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Load
Source code excerpt:
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushRotation"), AlphaBrushRotation, GEditorPerProjectIni);
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushPanU"), AlphaBrushPanU, GEditorPerProjectIni);
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushPanV"), AlphaBrushPanV, GEditorPerProjectIni);
GConfig->GetBool(TEXT("LandscapeEdit"), TEXT("bUseWorldSpacePatternBrush"), bUseWorldSpacePatternBrush, GEditorPerProjectIni);
GConfig->GetVector2D(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.Origin"), WorldSpacePatternBrushSettings.Origin, GEditorPerProjectIni);
GConfig->GetBool(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.bCenterTextureOnOrigin"), WorldSpacePatternBrushSettings.bCenterTextureOnOrigin, GEditorPerProjectIni);
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.RepeatSize"), WorldSpacePatternBrushSettings.RepeatSize, GEditorPerProjectIni);
FString AlphaTextureName = (AlphaTexture != nullptr) ? AlphaTexture->GetPathName() : FString();
int32 InAlphaTextureChannel = static_cast<int32>(AlphaTextureChannel);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:400
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Save
Source code excerpt:
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushRotation"), AlphaBrushRotation, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushPanU"), AlphaBrushPanU, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("AlphaBrushPanV"), AlphaBrushPanV, GEditorPerProjectIni);
GConfig->SetVector2D(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.Origin"), WorldSpacePatternBrushSettings.Origin, GEditorPerProjectIni);
GConfig->SetBool(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.bCenterTextureOnOrigin"), WorldSpacePatternBrushSettings.bCenterTextureOnOrigin, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("WorldSpacePatternBrushSettings.RepeatSize"), WorldSpacePatternBrushSettings.RepeatSize, GEditorPerProjectIni);
const FString AlphaTextureName = (AlphaTexture != nullptr) ? AlphaTexture->GetPathName() : FString();
GConfig->SetString(TEXT("LandscapeEdit"), TEXT("AlphaTextureName"), *AlphaTextureName, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("AlphaTextureChannel"), (int32)AlphaTextureChannel, GEditorPerProjectIni);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Public/LandscapeEditorObject.h:658
Scope (from outer to inner):
file
class class ULandscapeEditorObject : public UObject
Source code excerpt:
// Vertically offsets the brush mask texture
UPROPERTY(Category="Brush Settings", EditAnywhere, NonTransactional, meta=(DisplayName="Texture Pan V", ShowForBrushes="BrushSet_Pattern", ClampMin="0", ClampMax="1"))
float AlphaBrushPanV;
// Tile the pattern in world space (this only takes scale and position into account, not rotation)
UPROPERTY(Category = "Brush Settings", EditAnywhere, NonTransactional, meta = (DisplayName = "Use World-Space", ShowForBrushes = "BrushSet_Pattern"))
bool bUseWorldSpacePatternBrush;
UPROPERTY(Category = "Brush Settings", EditAnywhere, NonTransactional, meta = (DisplayName = "World-Space Settings", ShowForBrushes = "BrushSet_Pattern", EditCondition = "bUseWorldSpacePatternBrush"))