package info.u250.c2d.engine;
import com.badlogic.gdx.graphics.PerspectiveCamera;
import com.badlogic.gdx.math.Vector3;
/**
* @author lycying@gmail.com
*/
public class Flip3DCamera extends PerspectiveCamera {
private float angleX = 0;
private float angleY = 0;
private float angleZ = 0;
private Vector3 lookAt = new Vector3();
private Vector3 axisX = new Vector3(1,0,0);
private Vector3 axisY = new Vector3(0,1,0);
private Vector3 axisZ = new Vector3(0,0,1);
public Flip3DCamera(float width,float height){
this.viewportWidth = width;
this.viewportHeight = height;
this.position.set(width/2, height/2,height/2);
this.near = 0;
this.far = height;
this.lookAt.set(width/2,height/2,0);
this.lookAt(lookAt.x, lookAt.y, lookAt.z);
this.fieldOfView = 90;//not 67 now
}
public void resize(float width,float height){
this.viewportWidth = width;
this.viewportHeight = height;
this.position.set(width/2, height/2,height/2);
this.near = 1;
this.far = height;
this.lookAt.set(width/2,height/2,0);
this.lookAt(lookAt.x, lookAt.y, lookAt.z);
this.fieldOfView = 90;//not 67 now
final float zoom = this.getZoom();
this.setZoom(zoom);
}
public void setZoom(float zoom){
this.position.z = this.viewportHeight/2*zoom;
}
public float getZoom(){
return this.position.z/(this.viewportHeight/2);
}
public float getAngleX() {
return angleX;
}
public void setAngleX(float angleX) {
this.rotateAround(lookAt, axisX , angleX-this.angleX);
this.angleX = angleX;
}
public float getAngleY() {
return angleY;
}
public void setAngleY(float angleY) {
this.rotateAround(lookAt, axisY , angleY-this.angleY);
this.angleY = angleY;
}
public float getAngleZ() {
return angleZ;
}
public void setAngleZ(float angleZ) {
this.rotateAround(lookAt, axisZ , angleZ-this.angleZ);
this.angleZ = angleZ;
}
}