package org.pollux3d.animation.cam;
import org.pollux3d.animation.AbstractAnimation;
import com.jme3.math.Vector3f;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
public class CamPositionAnimation extends AbstractAnimation {
private Vector3f start = Vector3f.ZERO;
private Spatial position = new Node("PolluxCamPos");
private Spatial target = new Node("PolluxCamTarget");
public CamPositionAnimation(Spatial position, float defaultAnimationTime, float minAnimationTime) {
super(defaultAnimationTime, minAnimationTime);
this.position = position;
}
public void animate(Spatial target) {
this.animate(target, 0); //default time
}
public void animate(Spatial target, float time) {
setAnimationTime(time);
start = position.getLocalTranslation().clone();
this.target = target;
}
public void update(float tpf) {
if (!isFinished()) {
updateTimer(tpf);
float p = getProgress();
Vector3f tar = target.getLocalTranslation();
Vector3f route = tar.subtract(start);
route.multLocal(p);
Vector3f newPos = start.add(route);
position.setLocalTranslation(newPos);
}
}
}