Releases: Ukendio/jecs
Releases · Ukendio/jecs
Jecs v0.5.0
Highlights
- Now supports cached queries which can save
3-5
microseconds by not having to recreate the same queries every frame. - Thanks to Luau's progress to supporting user defined type functions, we can now fully type
Pair
, and as such I have extended support for them to support relation data if either IDs is aComponent
Changelog
[world]
:- Fixed
world:target
not giving adjacent pairs - Added
world:each
to find entities with a specific Tag - Added
world:children
to find children of entity
- Fixed
[query]
:- Added
query:cached
- Adds query cache that updates itself when an archetype matching the query gets created or deleted.
- Added
[luau]
:- Changed how entities' types are inferred with user-defined type functions
- Changed
Pair<First, Second>
to returnSecond
ifFirst
is aTag
; otherwise, returnsFirst
.
New Contributors
- @ChinoUkaegbu made their first contribution in #151
- @maeriil made their first contribution in #160
Full Changelog: v0.4.0...v0.5.0
Jecs v0.4.0
Highlights
- Jecs now has entity recycling which will allow you to reuse 2^24 indexes 2^16 times each by giving them generations, giving you a possible range of 2^40 entities in total, you will never run out! Huge thanks to @centau and @SanderMertens for the guidance on the implementation of this!
- The query iterator has been simplified to keep the API more lightweight and transparent.
- Now that jecs is much more stable than before, I am going to take a pivot towards working on flamecs, a jecs wrapper for Flamework. Takes advantage of Flamework macros and type ID system for increased ergonomics.
Changelog
[world]
:- Added recycling to
world:entity
- If you see much larger entity ids, that is because its generation has been incremented
- Added recycling to
[query]
:- Removed
query:drain
- The default behaviour is simply to drain the iterator
- Removed
query:next
- Just call the iterator function returned by
query:iter
directly if you want to get the next results
- Just call the iterator function returned by
- Removed
query:replace
- Removed
[luau]
:- Fixed
query:archetypes
not takingself
- Changed so that the
jecs.Pair
type now returns the first element's type so you won't need to typecast anymore.
- Fixed
New Contributors
- @silly-spongus made their first contribution in #130
- @christopher-buss made their first contribution in #144
- @bortantle made their first contribution in #146
- @daolgierd made their first contribution in #152
- @metrowaii made their first contribution in #157
Full Changelog: v0.3.2...v0.4.0
Jecs v0.4.0-rc.0
Bump
Jecs v0.3.2
Optimized world:cleanup() and the archetype graph to scale better.
Jecs v0.3.1
Changelog
[world]
:- Fixed a regression that occurred when you call
world:remove
- Remove explicit error in JECS_DEBUG for
world:target
when not applying an index parameter
- Fixed a regression that occurred when you call
[typescript]
:- Fixed
world.set
with NoInfer
- Fixed
New Contributors
Full Changelog: v0.3.0...v0.3.1
Jecs v0.3.0
Highlights
- Jecs is the first ECS to have implemented archetype deletion second only to flecs!
- Reached 121 stars!
- Added new creations to the addons page
Changelog
[world]
:- Added an index parameter to
world:target
- Added a way to change the components limit via
_G.JECS_HI_COMPONENT_ID
- Set it to whatever number you want but try to make it as close to the number of components you will use as possible
- Make sure to set this before calling jecs or else it will not work
- Added debug mode, enable via setting
_G.JECS_DEBUG
to true- Make sure to set this before calling jecs or else it will not work
- Added
world:cleanup
which is called to cleanup empty archetypes manually - Changed
world:delete
to delete archetypes that are dependent on the passed entity - Changed
world:delete
to delete entity's children before the entity to prevent cycles
- Added an index parameter to
[query]
:- Fixed the iterator to not drain by default
[typescript]
- Fixed entry point of the package.json file to be
src
rather thansrc/init
- Fixed
query.next
returning a query object whereas it would be expected to return a tuple containing the entity and the corresponding component values - Exported
query.archetypes
- Changed
pair
to return a number instead of an entity- Preventing direct usage of a pair as an entity while still allowing it to be used as a component
- Exported built-in components
ChildOf
andName
- Exported
world.parent
- Fixed entry point of the package.json file to be
New Contributors
- @ffrostfall made their first contribution in #114
- @hautajoki made their first contribution in #115
- @jakeundefinedz made their first contribution in #121
- @revvy02 made their first contribution in #122
- @Someon1e made their first contribution in #120
Full Changelog: v0.2.10...v0.3.0
Jecs v0.2.10
Bump
Jecs v0.2.10-rc.4
Final one before release of 0.2.10. This just slightly improves hooks performance. But since it is a change to the world, it warranted a separate release.
Jecs v0.2.10-rc.3
Changelog
[traits]
:- Added cleanup condition
jecs.OnDelete
for when the entity or component is deleted - Added cleanup action
jecs.Remove
which removes instances of the specified (component) id from all entities- This is the default cleanup action
- Added component trait
jecs.Tag
which allows for zero-cost components used as tags- Setting data to a component with this trait will do nothing
- Added cleanup condition
[luau]
:- Exported
world:contains()
- Exported
query:drain()
- Exported
Query
- Improved types for the hook
OnAdd
,OnSet
,OnRemove
- Changed functions to accept any ID including pairs in type parameters
- Applies to
world:add()
,world:set()
,world:remove()
,world:get()
,world:has()
andworld:query()
- New exported type
Id<T = nil> = Entity<T> | Pair
- Applies to
- Changed
world:contains()
to return aboolean
instead of an entity which may or may not exist - Fixed
world:has()
to take the correct parameters
- Exported
thread: https://discord.com/channels/385151591524597761/1248734074940559511
Check out the demo that is in WIP
Full Changelog: v0.2.10-rc.1...v0.2.10-rc.3
Jecs v0.2.10-rc.1
What's Changed
- Fix types of
OnAdd
,OnRemove
andOnSet
by @Mark-Marks in #107 - Add EcsTag by @Ukendio in #108
- Allow functions to accept any ID including pairs in type parameters by @Mark-Marks in #109
New Contributors
- @Mark-Marks made their first contribution in #107
Full Changelog: v0.2.10-rc.0...v0.2.10-rc.1