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;
}
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);
}
}
Aggregations