Releases: dustContributor/dustArtemis
dustArtemis-1.1.4
- Maven support, added through JitPack (easiest option out there).
- Now component types used throughout the framework must be specified in the World builder. This is to avoid lookup costs when adding/removing components from entities.
- On the other hand, no more hard limits on the amount of components now. Its dynamically handled via flat bitsets (ie, arrays of longs), also less memory consumption.
- EntityObserver creation must be deferred to later since the World builder needs all the component types to assign them indices first, and Aspects need them to build themselves.
- EntityObserver are added via either Supplier or Function<Aspect, EntitySystem> passed to the World builder, along an Aspect builder if needed.
dustArtemis-1.1.2
Updating to latest commits. Biggest changes in this release:
- Arbitrary 'data' field in World instance, now you can provide an Object to the World builder which will be available via World#data accessor (visible from observer instances for example). Deprecated 'delta' field, you can implement it via the 'data' field now.
- EntityWatcher observer, which has inserted/removed entity events but doesn't keeps track of an 'active' entities inside the observer, which avoids maintaining the sorted list of ids when you don't need it.
- All entities components are tracked through a single bit set instance instead of tons of tiny fixed bit set instances, this improves locality and reduces memory consumption by quite a bit! In consequence, removed all fixed bit set classes, no need for them anymore.
- Removed entity managers and IntervalEntitySystem, you're encouraged to implement such functionality on your own if you want it 😊
dustArtemis-1.1.0
Updating to latest commits. Biggest changes in this release:
New Injector utility class, allows you to inject the following things:
- EntityObservers
- ComponentHandlers
- ImmutableIntBag views over the entities of other observers through @EntitiesOf annotation.
Optimizations like:
- ComponentHandler now combines ComponentManager and ComponentMapper functionality to have one centralized fast way to add/remove components from an entity (as long as you hold onto that handler reference that is).
- Now IdAllocator uses binary search when freeing ids (ie, much faster!).
- processEntities gets only called if there is actually something to process (consistent with 'inserted' and 'removed').
And other things like:
- World builder, which allows you to specify different orders for initialization and processing of EntityObservers (see World.builder() ).
- DustArtemis exception to validate quite a few things across the framework.
A thing that did went away were pooled components. Might reintroduce them after I have a good idea for an API but really you should do that kind of resource management on your own 😃
dustArtemis-1.0.8
Updating to latest commits. Biggest changes in this release:
- Removed VoidEntitySystem, simply extending EntityObserver accomplishes the same thing.
- Added a bunch of utility methods to Bag (see getOrSet, forEach passing index, totalClear).
- Added a bunch of static utility methods to Aspect for easier initialization (Aspect.all, Aspect.exclude, etc).
- Tiny optimizations all around (avoiding full Bag.clear when necessary, processModifiedEntities is more efficient, etc).
dustArtemis-1.0.7
Updating to latest commits. Biggest changes in this release:
- Inserted/removed events in EntityObservers now are handled in bulk. An ImmutableIntBag is passed with the entities that were removed or inserted to that observer in that frame.
- Now there is a bit less indirection overall in the IdAllocator and ComponentManager by using plain arrays as much as possible.
dustArtemis-1.0.6
Updating to latest commits. Biggest changes in this release:
- Added convenience methods for adding/removing components to avoid hash lookups of ComponentManager indices.
- IdAllocator now uses plain int arrays to avoid creating objects.
dustArtemis-1.0.5
Updating to latest commits. Biggest changes in this release:
- Now entities are plain 'int' IDs, removing Entity class altogether. This means that now operations like add/remove components or checking if an entity is enabled will be done through ComponentManager and EntityManager objects respectively, obtained through getter methods in a World instance.
- Simplified logic in various places thanks to simpler plain 'int' entities.
dustArtemis-1.0.4
Updating to latest commits. Biggest changes in this release:
- Added support for pooling components.
- Added fixed-size bit sets for tracking components of entities and aspects.
dustArtemis-1.0.3
Updating to newest commits, biggest change is EntityObservers unification.
dustArtemis-1.0.2
Updating to newest commits.