Skip to content

VOID Engine 2.1.0

Choose a tag to compare

@Shmellyorc Shmellyorc released this 14 Sep 18:50

VOID Engine 2.1.0

This release improves camera behavior, frame timing, coroutines, and the Beacon event system while keeping VOID's existing renderer and game-loop architecture intact.

Camera

  • Cameras attached to batchers now update automatically during rendering.
  • Added BaseCamera.OnUpdate(FrameTime) for custom camera behavior.
  • Shared cameras update at most once per rendered frame.
  • Manual camera updates are no longer required for attached cameras.

Frame Timing

  • Reworked FrameTime to manage VOID's game-loop timing state.
  • Fixed timestep updates now receive the configured fixed update interval.
  • Rendering receives actual frame elapsed time even when fixed timestep mode is enabled.
  • Variable timestep mode continues to use actual elapsed time.
  • DeltaTime remains time-scale aware.
  • ElapsedTime, UnscaledDeltaTime, TotalTime, interpolation alpha, FPS, and slow-frame tracking remain available through FrameTime.

Coroutines

  • Replaced the previous coroutine implementation with a VOID-native IEnumerator runner.
  • Added nested coroutine chaining through yield return IEnumerator.
  • Parent routines resume after child routines complete.
  • Nested coroutine chains can run to arbitrary practical depth.
  • Root handles remain valid while child routines are active.
  • Stopping a root coroutine safely stops and cleans up the entire child chain.
  • Coroutine cleanup now safely handles stopping during an active coroutine update.
  • CoroutineManager now uses FrameTime.
  • Numeric float, double, and int yields continue to represent scaled-time delays.
  • CoroutineHandle remains an immutable readonly struct.

Beacons

  • BeaconHandle payload data is now exposed as a read-only view.
  • Default-initialized handles are safe.
  • Added payload Count.
  • Improved Get and TryGet handling.
  • Subscription mutation is synchronized while publishing keeps the existing fast multicast Action<BeaconHandle> path.
  • Publishing remains synchronous.

Beacon Extensions

  • Added BeaconManager.PublishDelay for delayed string and enum topic publishing.
  • Delayed publishing uses VOID's coroutine system and scaled game time.
  • PublishDelay returns a CoroutineHandle and can be cancelled.
  • Added typed payload helpers for one through five values.
  • Added Get, GetOr, TryGet, Has, IsTopic, HasData, and IsEmpty.

Game Loop

  • Separated fixed-update timing from rendered-frame timing.
  • Added render-frame tracking for automatic camera updates.
  • Preserved graceful shutdown checks so update and rendering stop immediately after the window closes.

Fixes

  • Fixed coroutine state mutation when a coroutine stops itself or is stopped during MoveNext().
  • Deferred coroutine cleanup until it is safe to dispose the active chain.
  • Preserved deepest-first nested coroutine disposal.

NuGet: Void.Engine 2.1.0