Skip to content
Brass Orrery

Orrery Terrain · OrreryTerrainCore module · struct

Native::

FBrush

One brush application, in fixed point because strokes replicate as commands and must produce the same tiles on every machine.

Declaration

struct FBrush
Header
#include "Native/TerrainEdit.h"
Module
PublicDependencyModuleNames.Add("OrreryTerrainCore"); in your module’s Build.cs.
Stability
Stable: changes within a major version only add.

Description

The mask fields (record version 5) carry every dab's final mask, angle, aspect and flags, so a replay never derives them. With MaskHash 0 they stay at their defaults, and the brush applies exactly as before them.

Properties

NameTypeDefaultMeaning
KindEBrushKindEBrushKind::Raise—
FalloffEFalloffEFalloff::Smooth—
CentreX_mmint64_t0

Relative to the terrain origin.

CentreY_mmint64_t0—
Radius_mmuint32_t10000

The disc's radius; with a mask, half the mask's longer side. A Stamp's is bounded by FSculptLimits::MaxStampRadius_mm, any other brush's by MaxRadius_mm.

Strength_mmint32_t100

Height change at the centre per application (Raise, Lower, Smooth); Flatten's cap on every post's move per application; a Stamp's peak height over FlattenTo_mm (negative digs).

FlattenTo_mmFHeightMm0

Flatten's plane, mm; a Stamp's base height.

ChannelFChannelId0

PaintChannel only.

ChannelValueuint8_t0

PaintChannel only.

FalloffStart_q16uint16_t0

The inner radius of full strength, in 1/65536 of the radius (kFalloffStartOne); 0 = the falloff starts at the centre.

FlattenDirectionEFlattenDirectionEFlattenDirection::Both

Flatten only.

PaintLayeruint8_t0

Paint only: the material layer id, 0..255.

PaintOpacityuint8_t255

Paint only: the weight the layer moves toward, 0..255 (255 = the layer alone).

MaskHashuint64_t0

The brush mask, by its content hash (64 bits over the mask's canonical bytes); 0 = no mask.

A mask scales every kind's falloff weight per post; a Stamp's mask is its shape. Every machine samples the same bytes, and a hash the terrain does not hold is refused (ESculptRefusal::UnknownMask), never applied differently.

MaskAngleuint16_t0

The mask's rotation in 1/65536 of a turn (kBrushAngleTurn), counter-clockwise from +X seen from above; the mask's columns follow the rotated +X, its rows the rotated +Y. 0 without a mask.

MaskFlagsuint8_t0

kBrushMaskMirror, kBrushMaskSquare and kBrushMaskBicubic; any other bit is refused. 0 without a mask.

StampBlendEStampBlendEStampBlend::Add

Stamp only: how its target meets the ground. Add on every other kind.

MaskAspect_q8uint16_tkBrushAspectSquare

The mask's width over its height (its local X side over its local Y side), in 1/256: kBrushAspectSquare is square, 512 twice as wide as tall, 128 twice as tall as wide; 0 is refused.

The longer side spans 2 × Radius_mm and the shorter is scaled by the ratio, rounded up (BrushMaskHalfSides). kBrushAspectSquare without a mask.