Orrery Terrain · OrreryTerrainCore module · struct
Native::
FJoinHead
ExperimentalWhat the join stream's first frame says: the position S, the checkpoint there, and where the save's parts lie.
Declaration
struct FJoinHead- Header
#include "Native/Net/NetJoin.h"- Module
PublicDependencyModuleNames.Add("OrreryTerrainCore");in your module’s Build.cs.- Stability
- Experimental: supported, may change in a minor version, with a changelog line.
Description
The joiner checks StateHash and SyncHash right after its load, so a wrong snapshot is found before any record applies.
Properties
| Name | Type | Default | Meaning |
|---|---|---|---|
Seq | FNet | 0 | S: the newest record the snapshot includes; the joiner's replica expects S + 1 next. |
Sync | uint64_ | 0 | FTerrainWorld::SyncHash at S. |
Sculpt | uint64_ | 0 | The authority's |
Next | FFeature | 0 | At S, burnt ids included. |
State | uint64_ | 0 | FTerrainSerialization::StateHash at S. |
File | uint64_ | 0 | Bytes of the save. |
File | uint64_ | 0 | The save's trailer (FTerrainSaveInfo::FileHash). |
Code | uint64_ | 0 | Where the sculpt codes start in the save; the rest is the load set. |
Code | uint64_ | 0 | — |
Page | uint8_ | 0 | The joiner page edge the codes were ordered by ( |
Strokes | std:: | — | Every stroke open at S, several authors' at once, ascending (Author, Stroke): the order is canonical, so two writers at the same S send the same head. Empty when none is open. |
Masks | std:: | — | The brush masks the stream's mask frames carry, ascending hash, at most kJoinMaxMaskBytes in all: the masks the session announced at or before S that the joiner does not hold, as |
Limits | FSculpt | — | The authority's sculpt limits at S. The joiner's replica checks and replays every record under these, never under its own settings: a record the authority accepted applies the same everywhere, KeepOutMargin_mm included, so a client configured with other limits cannot desync (StartJoinReplica). |
Cache | EJoin | EJoin | How this stream uses the save the joiner holds. |