artemis-odb-2.0.0-RC4
junkdog
released this
10 Jul 04:58
·
294 commits
to develop
since this release
Change Log
Version: 2.0.0-RC4 - 2016-07-10
- BREAKING CHANGES
- Removed previously deprecated code, see: 5de377d.
- InvocationStrategy - affectes custom implementations:
- bag-of-systems now stored as a field, instead of being passed as a parameter
toInvocationStrategy::process
InvocationStrategy::updateEntityStates
must be called before processing the first system.
Previously, the initial update was done by the world instance.
- bag-of-systems now stored as a field, instead of being passed as a parameter
ComponentManager::compositionIdentity(BitSet)
now public.@AspectDescriptor
now also valid on Archetypes.EntityLinkManager
fires events for initial entities when registering a LinkListener;
toggleable in constructor.
Version: 2.0.0-RC3 - 2016-06-21
- BREAKING CHANGES
- World's systems array is now typed with
BaseSystem
; this should only have
implication for custom implementations ofSystemInvocationStrategy
. - EntityFactory annotation processor and related classes have been removed,
for more background, see #428.
- World's systems array is now typed with
- AspectFieldResolver; additional default injection field resolver.
@AspectDescriptor
on appropriate fields to inject.- Valid targets:
Aspect
,Aspect.Builder
,EntityTransmuter
,EntitySubscription
- add
EntityTransmuter(World, Aspect.Builder)
constructor - Deserialization exception reports on missing component identifiers (usually from
manually edited json). - Fix: WorldConfigurationBuilder.Priority didn't compare properly.
- Fix: thread safefty; InjectionCache's fields no longer static.
Version: 2.0.0-RC2 - 2016-05-26
- BREAKING CHANGES
- Components require a public no-args constructor. While this was allowed in past versions,
it never worked with serialization or pooled components.
- Components require a public no-args constructor. While this was allowed in past versions,
World#compositionId(entityId)
added. Previously, one had to go
viaEntity#getCompositionId()
EntityManager#reset
- if the world is empty, resets entity id generation to0
- Optimized entity subscriptions: compositionId pre-calculated and bundled
byAspectSubscriptionManager
before informing listeners. - Fix: ComponentMapper was accidentally marked as final in RC1.
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). - Bag#getData throws ClassCastException when container wasn't created with any of the
typed constructors.
- 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