artemis-odb-2.0.0-RC1
·
354 commits
to develop
since this release
New version starting to shape up. There will probably be a few more release candidates before the official 2.0.0. Upgrading from 1.x to 2.0.0 should be a relatively smooth operation - less invasive than when migrating to 1.0.0.
Be sure to check out the EntityLinkManager, and for retrieving those removed components in subscription listeners - @DelayedComponentRemoval. Finally, the kryo serializer is in place now too (wiki entry coming soon.
Change Log
Version: 2.0.0-RC1 - 2016-05-09
- BREAKING CHANGES
- Methods added to interface
Injector#getRegistered(Class|String) ComponentMapper#getSafedeprecated,#getis sufficient for all use-cases now.
due to mappers always growing their backing arrays to accomodate the highest entity id.- Calling
BaseSystem#processwill now run the system, even ifsetEnabled(false)has been called.
SystemInvocationStrategynow tracks which systems are enabled/disabled.
(you may want to update your customSystemInvocationStrategyimplementations).
- Methods added to interface
- Optional manager: EntityLinkManager, discovery and maintenance of relationships between entities.
- Automatically tracks component fields:
@EntityId int,Entity,@EntityId IntBag,Bag<Entity>
(shares behavior with serialization). LinkListenerfor listening in on when links between entities are established, changed or disconnected.- Tune behavior with
@LinkPolicy, applied on component fields referencing entities. - Optimized link accessors via maven/gradle plugin - reflection-based fallback during development.
- Automatically tracks component fields:
@DelayedComponentRemovalguarantees that component is available inSubscriptionListener#removed(IntBag).World#getRegistered, retrieves injectable objects programmatically.- Re-worked
EntityEditlogic, less code and more performance. - ComponentType validates component when first encountered.
- Removed
PackedComponentand@PackedWeaver. - added
AspectSubscriptionManager#getSubscriptions - added
Bag(Class<T>)andBag(Class<T>, int capacity) IntBag#getthrowsArrayIndexOutOfBoundsExceptionwheneverindexis greater than the reported size,
regardless of the size of the underlying array.- All systems are first injected, after which all systems are initialized. Previously,
each system was injected/initialized at the same time. - Serialization
- new
artemis-odb-serializerartifact, used by all serialization backends, - Kryo serialization backend: binary with kryo
(thanks to @piotr-j).
- new