A fast entity component system (ECS) for C & C++
MIT License
Bot releases are visible (Hide)
Published by SanderMertens about 2 years ago
This version includes the following bugfixes:
each
was not automatically instancedterm::read
function that set the wrong inout kindemplace
with types that had no default ctoron_add
hook to be called for emplace
move_ctor
wasn't called when merging deferred emplace
ecs_app_run
NULL
This version includes the following improvements:
ecs_count_id
ecs_float_t
)set_override
where 1st element of pair is a tagecs_new_id
/ ecs_new_low_id
entity::get_mut_second
ecs_set
Known issues:
https://github.com/SanderMertens/flecs/issues/765
https://github.com/SanderMertens/flecs/issues/714
https://github.com/SanderMertens/flecs/issues/620
https://github.com/SanderMertens/flecs/issues/478
https://github.com/SanderMertens/flecs/issues/314
Published by SanderMertens about 2 years ago
This version includes the following bugfixes:
This version includes the following improvements:
This version includes the following new features:
Breaking changes:
Known issues:
https://github.com/SanderMertens/flecs/issues/765
https://github.com/SanderMertens/flecs/issues/716
https://github.com/SanderMertens/flecs/issues/714
https://github.com/SanderMertens/flecs/issues/620
https://github.com/SanderMertens/flecs/issues/478
https://github.com/SanderMertens/flecs/issues/314
Published by SanderMertens about 2 years ago
This version includes the following bugfixes:
ECS_STRUCT
OVERRIDE
or TOGGLE
This version includes the following improvements:
DontInherit
property is now respected when instantiating prefab childrenThis version includes the following new features:
Known issues:
https://github.com/SanderMertens/flecs/issues/765
https://github.com/SanderMertens/flecs/issues/716
https://github.com/SanderMertens/flecs/issues/714
https://github.com/SanderMertens/flecs/issues/620
https://github.com/SanderMertens/flecs/issues/478
https://github.com/SanderMertens/flecs/issues/314
Published by SanderMertens about 2 years ago
This version includes the following bugfixes:
set
with a new pair in a multithreaded app could assertThis version includes the following improvements:
Known issues:
https://github.com/SanderMertens/flecs/issues/765
https://github.com/SanderMertens/flecs/issues/716
https://github.com/SanderMertens/flecs/issues/714
https://github.com/SanderMertens/flecs/issues/620
https://github.com/SanderMertens/flecs/issues/478
https://github.com/SanderMertens/flecs/issues/314
Published by SanderMertens about 2 years ago
This is a major release with many new features, improvements, bugfixes and breaking changes. Enjoy!
See the release announcement:
https://ajmmertens.medium.com/flecs-3-0-is-out-5ca1ac92e8a4
If you are upgrading from v2.4.8, see this discussion for a list of breaking changes:
https://github.com/SanderMertens/flecs/discussions/466
If you are upgrading from a later version, look for the date of your last commit, and use that as starting point in the discussion.
https://github.com/SanderMertens/flecs/issues/776
https://github.com/SanderMertens/flecs/issues/765
https://github.com/SanderMertens/flecs/issues/716
https://github.com/SanderMertens/flecs/issues/714
https://github.com/SanderMertens/flecs/issues/620
https://github.com/SanderMertens/flecs/issues/478
https://github.com/SanderMertens/flecs/issues/314
Published by SanderMertens over 2 years ago
This release will be almost functionally equivalent to the initial Flecs v3 release, but is tagged before v3 renaming (see https://github.com/SanderMertens/flecs/discussions/728).
Use this release if you want to use v3 features, but want to hold off on fixing breaking changes as a result of renaming.
If you are upgrading from an older (v2) release, see this discussion for a list of breaking changes when upgrading: https://github.com/SanderMertens/flecs/discussions/466
Published by SanderMertens almost 3 years ago
This version includes the following bugfixes:
This version includes the following improvements:
flecs::ref
Known issues:
https://github.com/SanderMertens/flecs/issues/569
https://github.com/SanderMertens/flecs/issues/701
Published by SanderMertens about 3 years ago
This version includes the following bugfixes:
Known issues:
Note that this is a v2 release that is behind master! Only use this if you cannot migrate to v3 or need API stability
Published by SanderMertens about 3 years ago
This is the first v3.0 alpha release. This release gets rid of deprecated features, simplifies the API and code structure, and has a number of internal improvements. For a list of changes, see:
https://github.com/SanderMertens/flecs/discussions
This is the first of a number of v3.0 alpha releases that may have breaking API changes. If you need a stable API, use the last stable 2.4 release:
https://github.com/SanderMertens/flecs/releases/tag/v2.4.6
Known issues:
Published by SanderMertens about 3 years ago
This version includes the following bugfixes:
Published by SanderMertens about 3 years ago
This version includes the following improvements:
This version includes the following bugfixes:
Published by SanderMertens about 3 years ago
This version includes the following improvements:
This version includes the following bugfixes:
term()
after arg()
in filter builderecs_use
Published by SanderMertens about 3 years ago
This version includes the following improvements:
ecs_tracing_color_enable
) to disable colors in tracingThis version includes the following bugfixes:
entity::component<T>
)Published by SanderMertens about 3 years ago
This version includes the following improvements:
This version includes the following bugfixes:
Published by SanderMertens about 3 years ago
This version includes the following bugfixes:
Published by SanderMertens about 3 years ago
Finally! 🎉
The highlights of the release are:
ecs_get
, ecs_has
and get_object
are now constant timeecs_lookup
family of functionsBreaking changes:
This release introduces a number of minor breaking changes when compared with the last 2.3.2 release. A non-exhaustive lists of breaking changes is provided here and may be extended later:
EcsName
component is changed to an EcsIdentifier
relation which is instantiated with EcsName
and EcsSymbol
tagsecs_get_object
function no longer accepts a component to find an object for a relation, but an index to find the nth object for a relationgroup_by
callback signature have been modified to allow for a contextChildOf
and IsA
relations instead)include
and exclude
filter fields are no longer supported (use new filter API)entity::each(Func&&)
now expects a function that accepts a flecs::id
instead of a flecs::entity
This was a large release! A few random facts:
I'm skipping the full list of features/improvements/bugs for now as it's a lot, may add it later.
For the next 2 - 3 months the master branch will be used to migrate to the v3 APIs. If you need API stability, stay on the last v2 release until the official v3 release. There will be intermediate releases that allow for a more gradual upgrade path to the new v3 APIs.
Published by SanderMertens over 3 years ago
This release introduces a breaking change to fix C++ component registration. The symbol
member of the EcsName
(or flecs::Name
) component now requires an allocation. If you explicitly assign members to the EcsName
component (using get_mut
, not using set
) you will have to update your code.
Another change that was introduced to fix component registration is that the symbol
member of the EcsName
component for a module now always contains the fully qualified path to the entity. Previously this value contained the C or C++ typename, but this caused issues with module interop between C and C++. If your code relied on looking up modules by their C typename and not the fully qualified name, code will have to be updated.
This release contains the following improvements:
This release contains the following bugfixes:
Published by SanderMertens over 3 years ago
This version contains the following improvements:
This version contains the following bugfixes:
get_mut
with traitsPublished by SanderMertens almost 4 years ago
Highlights:
Thanks to @randy408, @sh-dave, @kevinresol, @jasonliang-dev and @Alexandre-P-J for submitting PRs! 🎉
Thanks to @ikrima and @jtferson for writing two awesome testimonials on using Flecs with Unreal Engine 4 🙏 :
Thanks to the new Flecs sponsors ❤️ :
Breaking changes:
ecs_get
for a tag will no longer return NULL
, but will asserttable_offset
member is removed from iteratorDeprecated features:
ecs_entity()
macro is now deprecated, use ecs_typeid()
This version includes the following features:
ecs_get_typeid
function to get the component id for traitsget_parent
function that accepts entity/tagThis version includes the following improvements:
ecs_delete
performance (reduced entity index accesses from 2 to 1)0
as base entity (using ECS_INSTANCEOF
)ecs_get
Name
component when provided name for entity is NULL
flecs::system
instances to be (re)created from entity idecs_modified
on entity that does not have the componentecs_defer_begin
and ecs_defer_end
to obtain defer status of worldtable_offset
member from ecs_iter_t
This version includes the following bugfixes:
ecs_entity_t
, is now size_t
)\0
when appending to application buffer with strbuf datastructureeach()
in the C++ APIecs_bulk_new
and traitsecs_entity_str
with small buffersecs_import
ecs_modified
ecs_delete
in manualPublished by SanderMertens about 4 years ago
Highlights:
Deprecated features:
action
method in C++ should no longer be used for systems. Use iter
instead.EcsSingleton
and flecs::Singleton
are deprecated. Use new singleton API insteadis_shared
function in the flecs::iter
class is deprecated. Use is_owned
instead.Breaking changes
[in]
by default. This may cause the API to throw an assert (in C++) or ecs_is_readonly
to return a different value (in C). To fix issues caused by this change, add const
to the column type, or annotate the column with [inout]
or [out]
.Thanks to @ikrima, @randy408 and @nbrk for submitting PRs! 🎉
This version includes the following features:
ecs_clear
API which removes all components without deleting the entityecs_is_alive
which tests if an entity has been deletedecs_exists
which tests if an entity id is currently in use (ignoring generation)This version includes the following improvements:
time_scale
function to C++iter()
which is an easier to use alternative to action()
FOR
syntax for trait queriesis_owned
to iterator class in C++[0]
in C++enabled()
function to entity class[in]
default for columns that are not ownedThis version includes the following bugfixes:
stdbool
NULL
signatureANY
modifier to C examplesecs_merge
is called when world is progressingentity::set
no longer takes const rvalue which prevented movesctor
if other lifecycle actions are NULL
ecs_os_api_strdup
incorrectly used ecs_os_api_malloc
instead of overrided mallocalloca
header in FreeBSDSHARED
modifier in signature