|
tess 1.0.0
Performance-first tile and path simulation substrate
|
#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) |
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.