package net.mostlyoriginal.game.system;
import com.artemis.Aspect;
import com.artemis.ComponentMapper;
import com.artemis.Entity;
import com.artemis.annotations.Wire;
import com.artemis.systems.EntityProcessingSystem;
import com.badlogic.gdx.math.MathUtils;
import net.mostlyoriginal.api.component.basic.Pos;
import net.mostlyoriginal.game.component.Bobbing;
/**
* Bob entity slowly up and down.
*
* @author Daan van Yperen
*/
@Wire
public class BobbingSystem extends EntityProcessingSystem {
ComponentMapper<Pos> pm;
ComponentMapper<Bobbing> bm;
public BobbingSystem() {
super(Aspect.getAspectForAll(Bobbing.class, Pos.class));
}
@Override
protected void process(Entity e) {
Pos pos = pm.get(e);
Bobbing bobbing = bm.get(e);
bobbing.age += world.delta * bobbing.speed;
pos.x = bobbing.originX + MathUtils.cosDeg(bobbing.age * 360) * bobbing.maxDistanceX;
pos.y = bobbing.originY + MathUtils.sinDeg(bobbing.age * 360) * bobbing.maxDistanceY;
}
}