Skip to content
Brass Orrery

Orrery Terrain · OrreryTerrainCore module · enum

Native::

EGroundChangeWhat

What a journal entry may have changed (FGroundChange::What), as bits: a may-have-changed set, so a reader that caches one kind of data skips the entries without its bit.

Declaration

enum class EGroundChangeWhat : uint16_t
Header
#include "Native/GroundJournal.h"
Module
PublicDependencyModuleNames.Add("OrreryTerrainCore"); in your module’s Build.cs.
Stability
Stable: changes within a major version only add.
Thread
Every reader pulls the same entries with its own cursor: any thread through FGroundQuery::ChangesSince, the far field through FTerrainWorld::FarChanges. (the header’s rule)

Description

The publish that makes an entry sets the bits by its cause: Commit and Undo set Heights, Holes and GroundClass; HostImport sets Heights, Paint and GroundClass; Extension sets Heights, Paint, GroundClass and Cover; Stream sets Residency. A sculpt publish (a brush run, a stroke's end, a stroke's undo or redo, a patch or a repair) sets only what its changes moved: Heights when a post moved; Paint for a paint or paint-layer channel; GroundClass for the ground-class channel, with Holes when a hole cell was painted or cleared; and Holes and GroundClass when its re-bake changed a feature's hole cells (a tunnel face over sculpted ground). A publish that changed the feature stack adds an entry of its own with Features alone, and a far entry (FGroundChange::Levels != 0) sets Heights (FGroundChange).

Append-only: a later version may add bits above Residency, and a reader ignores the bits it does not know.

Values

ValueMeaning
None = 0—
Heights = 1u << 0

Heights of the ground (Modified, and Natural for a sculpt).

Paint = 1u << 1

Paint: the paint slot planes (Channels::PaintSlotLayerFirst.., PaintSlots.h).

GroundClass = 1u << 2

Ground class, and so the physical material.

Holes = 1u << 3

Hole cells: a tunnel's opening.

Features = 1u << 4

The feature stack: features added, replaced or removed, and what derives from them (walls), over their tiles.

Cover = 1u << 5

An extension's cover layer (ESurface::Top).

Water = 1u << 6

The water surface (ESurface::Water). Reserved: nothing sets it yet.

Residency = 1u << 7

Tiles became resident or left: the answers of residency-dependent reads changed, not the truth.