package com.indignado.logicbricks.systems.actuators;
import com.badlogic.ashley.core.Entity;
import com.badlogic.gdx.math.Vector3;
import com.badlogic.gdx.physics.box2d.Transform;
import com.indignado.logicbricks.components.RigidBodiesComponents;
import com.indignado.logicbricks.components.actuators.CameraActuatorComponent;
import com.indignado.logicbricks.core.actuators.CameraActuator;
/**
* @author Rubentxu
*/
public class CameraActuatorSystem extends ActuatorSystem<CameraActuator, CameraActuatorComponent> {
public CameraActuatorSystem() {
super(CameraActuatorComponent.class);
}
@Override
public void processActuator(CameraActuator actuator, float deltaTime) {
Entity target = null;
if(actuator.followEntity != null)
target = actuator.followEntity;
else if(actuator.followTagEntity != null)
actuator.followEntity = target = engine.getEntities(actuator.followTagEntity).first();
if(target != null) {
RigidBodiesComponents rc = target.getComponent(RigidBodiesComponents.class);
Transform transform = rc.rigidBodies.first().getTransform();
Vector3 position = actuator.camera.position;
position.x += (transform.getPosition().x - position.x) * actuator.damping;
position.y += (transform.getPosition().y - position.y) * actuator.damping;
}
}
}