Skip to content

v0.9.1

Choose a tag to compare

@richardbiely richardbiely released this 17 Apr 20:52
· 1062 commits to main since this release
879429d

This version brings lots of important bug fixes, and some new and important features.

Among the most prominent ones are:

Breaking changes:
From now on, the old and undocumented SystemBase and SystemBaseManager were removed and all examples were transitionedto the new entity-based systems.

Release Notes:

Fixed:

  • unused variables error possible when compiling without asserts
  • broken sringbuffer copy-constructor
  • [[assume]] availability checking
  • Linux efficiency cores detection (for the Intel CPUs)
  • incorrectly set-up the number of performance & efficiency workers
  • EntityBuilder usages that would result in no archetype change
  • mismatch in Entity and EntityContainer bit layout
  • double-use of "unlikely" in GAIA_ASSERT because a compiler's assert already does the same
  • invalid memory accesses possible when creating queries
  • incorrectly cleared query data (group info not reset)
  • set_max_lifespan not working correctly
  • targets_if wouldn't take the functor's return value into account
  • NO operators matching on queries wouldn't work correctly in some cases

Added:

  • stringbuffer iterator
  • systems expose a JobHandle now
  • SystemBuilder "add" function that accepts a QueryInput
  • component "add", "del" and "set" hooks (can be disabled via GAIA_ENABLE_HOOKS 0)
  • each world now sports its own CommandBuffer (also accessible via the query iterator)
  • "modify" function added to "sset"/"sview", it can be used to trigger component updates
  • archetypes accessible in iterators
  • SafeEntity and WeakEntity added to aid with managing entity lifespan
  • "copy_n" now accepts "ecs::CopyIter&"
  • more CommandBuffer commands
  • system query API brought up-to-date with query API
  • sorting entities on per-query basis
  • DependsOn relationship to help sort entities
  • GAIA_USE_VARIADIC_API preprocessor macro to control whether or not variadic template arguments for various API is enabled (enabled by default, will be disabled by default in the future versions)

Changed:

  • components almost as large as a chunk will no longer be allowed
  • the default number or high/low priority workers set to match the number of perf/efficiency cores in the system
  • std::invoke replaced with custom invoke

Tweaked:

  • improved and faster world version handling

Removed:

  • undocumented BaseSystem and BaseSystemManager removed

New Contributors

Full Changelog: v0.9.0...v0.9.1