Skip to content
Brass Orrery

Orrery Terrain · OrreryTerrainCore module · struct

Native::

FGroundSampleColumns

Where the answers go: one array per column, each Count long (Normal and SmoothNormal 3·Count, SurfaceState 4·Count).

Declaration

struct FGroundSampleColumns
Header
#include "Native/GroundSampling.h"
Module
PublicDependencyModuleNames.Add("OrreryTerrainCore"); in your module’s Build.cs.
Stability
Stable: changes within a major version only add.
Thread
The batch ground sampler: height, face and smoothed normals, slope, paint weights, ground class and the answer's precision for many positions in one call, on any thread, with no allocation once its scratch is warm. (the header’s rule)

Description

A null column is not computed. Results come back in input order. A position without an answer (NoData or Pending) gets Z 0, normal (0,0,1), slope 0, no paint, class 0 and state 0, and its Precision column says why.

Properties

NameTypeDefaultMeaning
Z_mdouble*nullptr

Height, metres.

Normalfloat*nullptr

Face normal of the Chaos-split triangle, the one collision uses (x y z per position).

SmoothNormalfloat*nullptr

Bilinear blend of the four surrounding post normals, for aligning foliage and decals; never feeds slope or collision.

Slope_degfloat*nullptr

acos(face normal Z), degrees, 0..90.

PaintFPaintWeights*nullptr

Paint at the nearest post (Channel semantics): the painted weights, else the natural ground's.

GroundClassuint8_t*nullptr

Channels::GroundClass at the nearest post; kHoleClass = hole.

SurfaceStatefloat*nullptr

Snow cover, snow depth, wetness, puddle level (experimental): an extension fills these, 0 without one.

PrecisionEPrecision*nullptr

Per position.