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