package net.onedaybeard.dominatrix.demo.system.spatial;
import static net.onedaybeard.dominatrix.pool.Vector2Pool.free;
import static net.onedaybeard.dominatrix.pool.Vector2Pool.vector2;
import net.onedaybeard.dominatrix.demo.component.Position;
import net.onedaybeard.dominatrix.demo.component.Velocity;
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
import com.artemis.Entity;
import com.artemis.systems.EntityProcessingSystem;
import com.badlogic.gdx.math.Vector2;
public final class PositionUpdateSystem extends EntityProcessingSystem
{
private ComponentMapper<Position> positionMapper;
private ComponentMapper<Velocity> velocityMapper;
@SuppressWarnings("unchecked")
public PositionUpdateSystem()
{
super(Aspect.getAspectForAll(Position.class, Velocity.class));
}
@Override
protected void initialize()
{
positionMapper = world.getMapper(Position.class);
velocityMapper = world.getMapper(Velocity.class);
}
@Override
protected void process(Entity e)
{
Vector2 point = positionMapper.get(e).point();
Vector2 velocity = vector2(velocityMapper.get(e).get());
point.add(velocity.scl(world.delta));
free(velocity);
}
}