This one brings forth a lot of new changes and adds some much-needed polish to some features introduced in 0.5.0. Be sure to check out the Component Dependency Matrix.
- GWT support (demo) sporting libgdx's reflection wrapper code.
- This means that @Mapper and @Wire works for GWT builds too.
- Note: @PooledWeaver and @PackedWeaver don't work under GWT, though the presence of the annotations doesn't break anything.
- Automatically generate a bird's eye view of artemis: Component Dependency Matrix.
- Faux structs with @PackedWeaver.
- Looks and behaves just like normal java classes.
- Direct field access works - no need to generate getters and setters - i.e. position.x += 0.24f is valid.
- Contiguously stored in memory, internally backed by a shared ByteBuffer.allocateDirect().
- Works for all components composed of primitive types.
- Entity systems and managers can @Wire (inject) anything from the world: will eventually replace @Mapper. No need to annotate each field - just annotate the class and artemis will take care of injecting applicable fields.
- @Wire can inject parent classes too.
- @Wire can resolve non-final references. Eg, AbstractEntityFactory is resolved as EntityFactory etc. See test/example.
- EntitySystems process entities in ascending id order.
- Considerably faster processing when memory access is aligned (potential biggest gains from PackedComponents).
- Slightly slower insert/remove (3-4% with 4096 entities)
- New optional UuidEntityManager, tracks entities by UUID.
- Optional expectedEntityCount parameters in World constructor.
- -DideFriendlyPacking: If true, will leave field stubs to keep IDE:s happy after transformations. Defaults to false.
- -DenablePooledWeaving: Enables weaving of pooled components (more viable on Android than JVM). Defaults to true.
- -DenableArtemisPlugin: If set to false, no weaving will take place (useful for debugging).
- Fix: Possible NPE when removing recently created entities.
- Fix: Entity#getComponent would sometimes throw an ArrayIndexOutOfBoundsException.