v0.9.1
This version brings lots of important bug fixes, and some new and important features.
Among the most prominent ones are:
- support for sorting for queries
- SafeEntity and WeakEntity added to aid with managing entity lifespan
- component hooks
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