package com.akjava.gwt.three.client.gwt.boneanimation;
import com.akjava.gwt.lib.client.LogUtils;
import com.akjava.gwt.three.client.js.math.Vector3;
public class BoneLimit {
public final static double MAX=Math.toRadians(180);
public final static double MIN=Math.toRadians(-180);
public double getMinX() {
return minX;
}
public void setMinX(double minX) {
this.minX = minX;
}
public double getMinY() {
return minY;
}
public void setMinY(double minY) {
this.minY = minY;
}
public double getMinZ() {
return minZ;
}
public void setMinZ(double minZ) {
this.minZ = minZ;
}
public double getMaxX() {
return maxX;
}
public void setMaxX(double maxX) {
this.maxX = maxX;
}
public double getMaxY() {
return maxY;
}
public void setMaxY(double maxY) {
this.maxY = maxY;
}
public double getMaxZ() {
return maxZ;
}
public void setMaxZ(double maxZ) {
this.maxZ = maxZ;
}
public static BoneLimit createBoneLimit(double minx,double maxx,double miny,double maxy,double minz,double maxz){
BoneLimit limit=new BoneLimit();
limit.setMinXDegit(minx);
limit.setMaxXDegit(maxx);
limit.setMinYDegit(miny);
limit.setMaxYDegit(maxy);
limit.setMinZDegit(minz);
limit.setMaxZDegit(maxz);
limit.setMinX(Math.toRadians(minx));
limit.setMaxX(Math.toRadians(maxx));
limit.setMinY(Math.toRadians(miny));
limit.setMaxY(Math.toRadians(maxy));
limit.setMinZ(Math.toRadians(minz));
limit.setMaxZ(Math.toRadians(maxz));
return limit;
}
private double minXDegit,minYDegit,minZDegit,maxXDegit,maxYDegit,maxZDegit;
public double getMinXDegit() {
return minXDegit;
}
public void setMinXDegit(double minXDegit) {
this.minXDegit = minXDegit;
}
public double getMinYDegit() {
return minYDegit;
}
public void setMinYDegit(double minYDegit) {
this.minYDegit = minYDegit;
}
public double getMinZDegit() {
return minZDegit;
}
public void setMinZDegit(double minZDegit) {
this.minZDegit = minZDegit;
}
public double getMaxXDegit() {
return maxXDegit;
}
public void setMaxXDegit(double maxXDegit) {
this.maxXDegit = maxXDegit;
}
public double getMaxYDegit() {
return maxYDegit;
}
public void setMaxYDegit(double maxYDegit) {
this.maxYDegit = maxYDegit;
}
public double getMaxZDegit() {
return maxZDegit;
}
public void setMaxZDegit(double maxZDegit) {
this.maxZDegit = maxZDegit;
}
private double minX,minY,minZ,maxX,maxY,maxZ;
public void apply(Vector3 angles) {
if(angles.getX()<minX){
angles.setX(minX);
}
else if(angles.getX()>maxX){
angles.setX(maxX);
}
if(angles.getY()<minY){
angles.setY(minY);
}
else if(angles.getY()>maxY){
angles.setY(maxY);
}
if(angles.getZ()<minZ){
angles.setZ(minZ);
}
else if(angles.getZ()>maxZ){
angles.setZ(maxZ);
}
}
}