Search in sources :

Example 1 with ComponentMapper

use of com.artemis.ComponentMapper in project commons-gdx by gemserk.

the class GetComponentPerformanceTest method testTimeWithGetComponentFromMapper.

public long testTimeWithGetComponentFromMapper(int iterations) {
    World world = new World();
    Entity e = world.createEntity();
    e.addComponent(new MyTestComponent());
    e.refresh();
    ComponentMapper<MyTestComponent> myTestComponentMapper = new ComponentMapper<MyTestComponent>(MyTestComponent.class, world.getEntityManager());
    long startNanoTime = System.nanoTime();
    for (int i = 0; i < iterations; i++) {
        myTestComponentMapper.get(e);
    // MyTestComponent myTestComponent = myTestComponentMapper.get(e);
    }
    return System.nanoTime() - startNanoTime;
}
Also used : Entity(com.artemis.Entity) ComponentMapper(com.artemis.ComponentMapper) World(com.artemis.World)

Example 2 with ComponentMapper

use of com.artemis.ComponentMapper in project commons-gdx by gemserk.

the class ComponentMapperInitHelper method config.

@SuppressWarnings({ "rawtypes", "unchecked" })
public static void config(Object target, EntityManager entityManager) {
    try {
        for (Field field : target.getClass().getDeclaredFields()) {
            String fieldName = field.getName();
            Class<?> fieldType = field.getType();
            if (ComponentMapper.class.isAssignableFrom(fieldType)) {
                System.out.println("ComponentMapper detected: " + fieldName);
                ParameterizedType genericType = (ParameterizedType) field.getGenericType();
                Class componentType = (Class) genericType.getActualTypeArguments()[0];
                ComponentMapper<Component> componentMapper = new ComponentMapper<Component>(componentType, entityManager);
                field.setAccessible(true);
                field.set(target, componentMapper);
            }
        }
    } catch (Exception e) {
        throw new RuntimeException("Error while setting component mappers", e);
    }
}
Also used : ParameterizedType(java.lang.reflect.ParameterizedType) Field(java.lang.reflect.Field) ComponentMapper(com.artemis.ComponentMapper) Component(com.artemis.Component)

Aggregations

ComponentMapper (com.artemis.ComponentMapper)2 Component (com.artemis.Component)1 Entity (com.artemis.Entity)1 World (com.artemis.World)1 Field (java.lang.reflect.Field)1 ParameterizedType (java.lang.reflect.ParameterizedType)1