package com.akjava.gwt.three.client.gwt.core;
public class CameraControler {
private long mouseLast;
private double tmpZoom;
protected int defaultZoomIncrement=3;
protected int minCameraZ=5;
protected int maxCameraZ=4000;
public int getDefaultZoomIncrement() {
return defaultZoomIncrement;
}
public void setPositions(double x,double y,double z){
setPositionX(x);
setPositionY(y);
setPositionZ(z);
}
public void setRotations(double x,double y,double z){
setRotationX(x);
setRotationY(y);
setRotationZ(z);
}
public void incrementRotationX(double x){
rotationX+=x;
if(rotationX>180){
rotationX=-180+(rotationX-180);
}
if(rotationX<180){
rotationX=180+(rotationX+180);
}
}
public void incrementRotationY(double y){
rotationY+=y;
if(rotationY>180){
rotationY=-180+(rotationY-180);
}
if(rotationY<180){
rotationY=180+(rotationY+180);
}
}
public double getRadiantRotationZ() {
return Math.toRadians(rotationZ);
}
public double getRadiantRotationY() {
return Math.toRadians(rotationY);
}
public double getRadiantRotationX() {
return Math.toRadians(rotationX);
}
public double getRotationZ() {
return rotationZ;
}
public void setRotationZ(double rotattionZ) {
this.rotationZ = rotattionZ;
}
public double getRotationX() {
return rotationX;
}
public void setRotationX(double rotattionX) {
this.rotationX = rotattionX;
}
public double getRotationY() {
return rotationY;
}
public void setRotationY(double rotattionY) {
this.rotationY = rotattionY;
}
public void setDefaultZoomIncrement(int defaultZoomIncrement) {
this.defaultZoomIncrement = defaultZoomIncrement;
}
public int getMinCameraZ() {
return minCameraZ;
}
public void setMinCameraZ(int minCameraZ) {
this.minCameraZ = minCameraZ;
}
public int getMaxCameraZ() {
return maxCameraZ;
}
public void setMaxCameraZ(int maxCameraZ) {
this.maxCameraZ = maxCameraZ;
}
protected double positionZ=100;
protected double positionX;
protected double positionY;
protected double rotationZ;
protected double rotationX;
protected double rotationY;
public double getPositionZ() {
return positionZ;
}
public void setPositionZ(double positionZ) {
this.positionZ = positionZ;
}
public double getPositionX() {
return positionX;
}
public void setPositionX(double positionX) {
this.positionX = positionX;
}
public double getPositionY() {
return positionY;
}
public void setPositionY(double positionY) {
this.positionY = positionY;
}
public void doMouseWheel(int deltaY){
long t=System.currentTimeMillis();
if(mouseLast+50>t){
tmpZoom*=1.2;
}else{
tmpZoom=defaultZoomIncrement;
}
int tmp=(int)(positionZ+deltaY*tmpZoom);
tmp=Math.min(maxCameraZ, tmp);
tmp=Math.max(minCameraZ, tmp);
positionZ=tmp;
mouseLast=t;
}
}