tess 1.0.0
Performance-first tile and path simulation substrate
Loading...
Searching...
No Matches
tess::DeltaCollector Class Reference

#include <tess/sim/delta_frame.h>

Public Member Functions

 DeltaCollector (DeltaCollectorOptions options)
 DeltaCollector (const DeltaCollector &)=delete
auto operator= (const DeltaCollector &) -> DeltaCollector &=delete
 DeltaCollector (DeltaCollector &&)=default
auto operator= (DeltaCollector &&) -> DeltaCollector &=default
void reserve (std::size_t chunk_capacity, std::size_t tile_capacity, std::size_t entity_capacity, std::size_t overlay_capacity=0, std::size_t overlay_node_capacity=0)
void begin_tick (std::uint64_t tick) noexcept
void record_move (EntityHandle entity, Coord3 from, Coord3 to)
void record_teleport (EntityHandle entity, Coord3 from, Coord3 to)
void record_spawn (EntityHandle entity, Coord3 at)
void record_despawn (EntityHandle entity, Coord3 at)
void record_park (EntityHandle entity, Coord3 at)
void record_place (EntityHandle entity, Coord3 at)
auto append_chunk_record (TileChunkDelta record) -> std::size_t
auto append_tile_record (TileDelta record) -> std::size_t
auto pending_tile_count () const noexcept -> std::size_t
void note_collected_mask (DirtyMask dirty_mask) noexcept
void drop_pending_tile_state () noexcept
void mark_baseline_pending () noexcept
void stage_path_overlay (EntityHandle entity, PathTicket ticket, PathView remaining)
auto publish () -> DeltaFrame
void clear () noexcept
auto version () const noexcept -> RenderVersion
auto options () const noexcept -> const DeltaCollectorOptions &
auto stats () const noexcept -> const DeltaCollectorStats &

Static Public Attributes

static constexpr std::size_t kDropped = static_cast<std::size_t>(-1)

Detailed Description

Accumulates invalidations into bounded caller-sized frame storage.

The collector owns every returned frame view. A view's spans stay valid until the next publish() or reserve(), and until the collector is move-assigned to or moved from – NOT until "its next mutation", which this comment said until 2026-08-09 and which is both too broad and too narrow; see the note on DeltaFrame. After reserve, steady-state recording does not allocate; overflow truncates the frame and requires a baseline resynchronization.

Not copyable; movable. A moved-from collector behaves as if clear() had been called on it: its next publish is forced truncated, so a consumer on its chain resyncs from a baseline rather than accepting an empty frame as an applicable no-op. Reuse it by assigning a fresh collector to it, or by clear() followed by a baseline collection – reserve() looks like a reset and is not one.


The documentation for this class was generated from the following file: