artemis-odb-2.0.0-RC1
junkdog
released this
09 May 14:11
·
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#getSafe
deprecated,#get
is sufficient for all use-cases now.
due to mappers always growing their backing arrays to accomodate the highest entity id.- Calling
BaseSystem#process
will now run the system, even ifsetEnabled(false)
has been called.
SystemInvocationStrategy
now tracks which systems are enabled/disabled.
(you may want to update your customSystemInvocationStrategy
implementations).
- 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). LinkListener
for 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:
@DelayedComponentRemoval
guarantees that component is available inSubscriptionListener#removed(IntBag)
.World#getRegistered
, retrieves injectable objects programmatically.- Re-worked
EntityEdit
logic, less code and more performance. - ComponentType validates component when first encountered.
- Removed
PackedComponent
and@PackedWeaver
. - added
AspectSubscriptionManager#getSubscriptions
- added
Bag(Class<T>)
andBag(Class<T>, int capacity)
IntBag#get
throwsArrayIndexOutOfBoundsException
wheneverindex
is 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-serializer
artifact, used by all serialization backends, - Kryo serialization backend: binary with kryo
(thanks to @piotr-j).
- new