RainDistMode
RainDistMode
#Overview
name: RainDistMode
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 5
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of RainDistMode is to control how rain is distributed over the brush area for hydro erosion in the Unreal Engine’s landscape editing system. This setting variable is used to determine the initial rain distribution pattern when applying hydro erosion effects to a landscape.
RainDistMode is primarily used in the Landscape Editor module of Unreal Engine 5. It is specifically utilized in the hydro erosion tool, which is part of the landscape editing system.
The value of this variable is set in several places:
- It is initialized in the ULandscapeEditorObject constructor.
- It can be loaded from and saved to the project’s configuration file (GEditorPerProjectIni) using the Load() and Save() functions of ULandscapeEditorObject.
- It can be modified through the Unreal Editor interface, as indicated by the UPROPERTY macro with EditAnywhere attribute.
RainDistMode interacts with other variables related to hydro erosion, such as RainDistScale, which determines the size of the noise filter for applying initial rain to the surface.
Developers should be aware that:
- RainDistMode is an enumeration of type ELandscapeToolHydroErosionMode, so it can only take predefined values.
- Changes to this variable will affect how the hydro erosion tool behaves, potentially leading to different landscape erosion results.
- This setting is specific to the “HydraErosion” tool, as indicated by the meta tag in the UPROPERTY declaration.
Best practices when using this variable include:
- Experiment with different RainDistMode settings to achieve the desired erosion effect for your landscape.
- Consider the interaction between RainDistMode and RainDistScale to fine-tune the rain distribution.
- Remember to save your preferred settings using the Save() function if you want them to persist between editor sessions.
- When scripting landscape modifications, ensure you’re setting this variable appropriately for consistent results.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Config/BaseEditorPerProjectUserSettings.ini:748, section: [LandscapeEdit]
- INI Section:
LandscapeEdit
- Raw value:
0
- 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/LandscapeEdModeErosionTools.cpp:389
Scope (from outer to inner):
file
class class FLandscapeToolStrokeHydraErosion : public FLandscapeToolStrokeErosionBase
function void Apply
Source code excerpt:
if (BrushValue >= 1.0f)
{
float PaintAmount = NoiseModeConversion((ELandscapeToolNoiseMode)UISettings->RainDistMode, NoiseParam.NoiseAmount, NoiseParam.Sample(X, Y));
if (PaintAmount > 0) // Raining only for positive region...
WaterDataScanline[X] += static_cast<uint16>(PaintAmount);
}
}
}
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:65
Scope (from outer to inner):
file
function ULandscapeEditorObject::ULandscapeEditorObject
Source code excerpt:
, SedimentCapacity(0.3f)
, HErodeIterationNum(75)
, RainDistMode(ELandscapeToolHydroErosionMode::Both)
, RainDistScale(60.0f)
, bHErosionDetailSmooth(true)
, HErosionDetailScale(0.01f)
, NoiseMode(ELandscapeToolNoiseMode::Both)
, NoiseScale(128.0f)
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:281
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Load
Source code excerpt:
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("SedimentCapacity"), SedimentCapacity, GEditorPerProjectIni);
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("HErodeIterationNum"), HErodeIterationNum, GEditorPerProjectIni);
int32 InRainDistMode = (int32)RainDistMode;
GConfig->GetInt(TEXT("LandscapeEdit"), TEXT("RainDistNoiseMode"), InRainDistMode, GEditorPerProjectIni);
RainDistMode = (ELandscapeToolHydroErosionMode)InRainDistMode;
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("RainDistScale"), RainDistScale, GEditorPerProjectIni);
GConfig->GetFloat(TEXT("LandscapeEdit"), TEXT("HErosionDetailScale"), HErosionDetailScale, GEditorPerProjectIni);
bool InbHErosionDetailSmooth = bHErosionDetailSmooth;
GConfig->GetBool(TEXT("LandscapeEdit"), TEXT("bHErosionDetailSmooth"), InbHErosionDetailSmooth, GEditorPerProjectIni);
bHErosionDetailSmooth = InbHErosionDetailSmooth;
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Private/LandscapeEditorObject.cpp:432
Scope (from outer to inner):
file
function void ULandscapeEditorObject::Save
Source code excerpt:
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("SedimentCapacity"), SedimentCapacity, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("HErodeIterationNum"), ErodeIterationNum, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("RainDistMode"), (int32)RainDistMode, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("RainDistScale"), RainDistScale, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("HErosionDetailScale"), HErosionDetailScale, GEditorPerProjectIni);
GConfig->SetBool(TEXT("LandscapeEdit"), TEXT("bHErosionDetailSmooth"), bHErosionDetailSmooth, GEditorPerProjectIni);
GConfig->SetInt(TEXT("LandscapeEdit"), TEXT("NoiseMode"), (int32)NoiseMode, GEditorPerProjectIni);
GConfig->SetFloat(TEXT("LandscapeEdit"), TEXT("NoiseScale"), NoiseScale, GEditorPerProjectIni);
#Loc: <Workspace>/Engine/Source/Editor/LandscapeEditor/Public/LandscapeEditorObject.h:413
Scope (from outer to inner):
file
class class ULandscapeEditorObject : public UObject
Source code excerpt:
// Selects how rain is distributed over the brush area for hydro erosion
UPROPERTY(Category="Tool Settings", EditAnywhere, NonTransactional, meta=(DisplayName="Initial Rain Distribution", ShowForTools="HydraErosion"))
ELandscapeToolHydroErosionMode RainDistMode;
// The size of the noise filter for applying initial rain to the surface
UPROPERTY(Category="Tool Settings", EditAnywhere, NonTransactional, meta=(ShowForTools="HydraErosion", ClampMin="1", ClampMax="512", UIMin="1.1", UIMax="256"))
float RainDistScale;
// If checked, performs a detail-preserving smooth to the erosion effect using the specified detail smoothing value