Skip to content

artemis-odb-2.0.0-RC1

Compare
Choose a tag to compare
@junkdog 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 if setEnabled(false) has been called.
      SystemInvocationStrategy now tracks which systems are enabled/disabled.
      (you may want to update your custom SystemInvocationStrategy implementations).
  • 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.
  • @DelayedComponentRemoval guarantees that component is available in SubscriptionListener#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>) and Bag(Class<T>, int capacity)
  • IntBag#get throws ArrayIndexOutOfBoundsException whenever index 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).