artemis-odb-2.2.0
Changelog
Version: 2.2.0 - 2019-01-06
-
BREAKING CHANGES
- Web backend upgraded to GWT
2.8.0
(LibGDX is blocking2.8.2
). - Serialization modules that depend on libGDX now require
1.9.9
.
- Web backend upgraded to GWT
-
Global option to delay component removal until all subscriptions have been notified.
new WorldConfigurationBuilder().alwaysDelayComponentRemoval(true)
-
Annotation driven aspects (
@All
,@Exclude
,@One
).- Annotate BaseEntitySystem subclass, alternative to constructor argument.
- Adds DI of
Archetype
,Aspect
,Aspect.Builder
andEntitySubscription
fields.
-
Fluid entities quality of life changes.
- To enable fluid entities in your world, best practice register
FluidEntityPlugin
instead ofSuperMapper
. FluidEntityPlugin
generated as part of the fluid generation process.- Added
FluidIteratingSystem
. - Generate class C containing all fluid component class literals. (not usable in annotations, sorry).
- Convenience methods to find entities:
- by group
for ( E e : E.withGroup("enemy") ) { .. }
- by tag
E player = E.withTag("player");
- by aspect
for ( E e : E.withAspect(Aspect.all(Pickup.class, Pos.class)) ) { .. }
- by component
for ( E e : E.withComponent(Pickup.class) ) { .. }
- by group
- Allow plugins for fluid interface generation.
- Override type handling via FieldProxyStrategy. (Want extra methods for LibGDX's
Pos2
? Now you can!)
- Override type handling via FieldProxyStrategy. (Want extra methods for LibGDX's
- To enable fluid entities in your world, best practice register
-
Support for abstract plugins with multiple possible implementations.
For example, a logging plugin might have multiple implementations (TinyLog, SLF4J+??, LibGDX).
As a plugin developer, we want to be able to refer to the generic facade (LoggingPlugin) and
throw a warning when no specific implementation has been registered. -
Fix: Better document side effects of ComponentMapper and EntitySubscription.
-
Fix: Unchecked warning in
SuperMapper
. -
Fix: ArtemisMultiException was missing no-args ctor (req by serializaion)
-
World
instances can now inject themselves (World::inject
)