package com.akjava.gwt.three.client.java;
import com.akjava.gwt.lib.client.LogUtils;
import com.akjava.gwt.three.client.gwt.boneanimation.AnimationBone;
import com.akjava.gwt.three.client.gwt.core.BoundingBox;
import com.akjava.gwt.three.client.java.utils.GWTThreeUtils;
import com.akjava.gwt.three.client.js.THREE;
import com.akjava.gwt.three.client.js.math.Euler;
import com.akjava.gwt.three.client.js.math.Matrix4;
import com.akjava.gwt.three.client.js.math.Quaternion;
import com.akjava.gwt.three.client.js.math.Sphere;
import com.akjava.gwt.three.client.js.math.Vector2;
import com.akjava.gwt.three.client.js.math.Vector3;
import com.akjava.gwt.three.client.js.math.Vector4;
import com.akjava.gwt.three.client.js.objects.SkinnedMesh;
import com.google.gwt.core.client.JsArrayNumber;
public class ThreeLog extends LogUtils{
public static String getAngle(Matrix4 mx){
if(mx==null){
return "Null";
}
Vector3 vec=THREE.Vector3();
vec.getRotationFromMatrix(mx);
return getAngle(vec);
}
public static String getAngle(Vector3 vec){
if(vec==null){
return "Null";
}
String ret="x:"+Math.toDegrees(vec.getX());
ret+=",y:"+Math.toDegrees(vec.getY());
ret+=",z:"+Math.toDegrees(vec.getZ());
return ret;
}
public static String getAsDegree(Vector3 vec){
return get(GWTThreeUtils.radiantToDegree(vec));
}
public static String get(Vector3 vec){
if(vec==null){
return "Null";
}
String ret="x:"+vec.getX();
ret+=",y:"+vec.getY();
ret+=",z:"+vec.getZ();
return ret;
}
public static String get(Sphere vec){
if(vec==null){
return "Null";
}
String ret="x:"+vec.getCenter().getX();
ret+=",y:"+vec.getCenter().getY();
ret+=",z:"+vec.getCenter().getZ();
ret+=",radius:"+vec.getRadius();
return ret;
}
public static String get(BoundingBox vec){
if(vec==null){
return "Null";
}
String ret="min{x:"+vec.getMin().getX();
ret+=",y:"+vec.getMin().getY();
ret+=",z:"+vec.getMin().getZ();
ret+="} ";
ret+="max{x:"+vec.getMax().getX();
ret+=",y:"+vec.getMax().getY();
ret+=",z:"+vec.getMax().getZ();
ret+="} ";
return ret;
}
public static String get(Euler vec){
if(vec==null){
return "Null";
}
String ret="x:"+Math.toDegrees(vec.getX());
ret+=",y:"+Math.toDegrees(vec.getY());
ret+=",z:"+Math.toDegrees(vec.getZ());
ret+=","+vec.getOrder();
return ret;
}
public static String get(Vector2 vec){
if(vec==null){
return "Null";
}
String ret="x:"+vec.getX();
ret+=",y:"+vec.getY();
return ret;
}
public static String get(Vector4 vec){
if(vec==null){
return "Null";
}
String ret="x:"+vec.getX();
ret+=",y:"+vec.getY();
ret+=",z:"+vec.getZ();
ret+=",w:"+vec.getW();
return ret;
}
public static String get(AnimationBone bone){
if(bone==null){
return "Null";
}
String ret=get(THREE.Vector3().fromArray(bone.getPos()));
return ret;
}
public static String get(Quaternion vec){
if(vec==null){
return "Null";
}
String ret="x:"+vec.getX();
ret+=",y:"+vec.getY();
ret+=",z:"+vec.getZ();
ret+=",w:"+vec.getW();
return ret;
}
public static String get(JsArrayNumber numbers){
if(numbers==null){
return "Null";
}
String ret="";
for(int i=0;i<numbers.length();i++){
ret+=numbers.get(i)+",";
}
return ret;
}
public static void log(Vector2 vec){
LogUtils.log(get(vec));
}
public static void log(String header,double vec){
LogUtils.log(header+" "+vec);
}
public static void log(String header,Vector2 vec){
LogUtils.log(header+" "+get(vec));
}
public static void log(Vector3 vec){
LogUtils.log(get(vec));
}
public static void log(String header,Vector3 vec){
LogUtils.log(header+" "+get(vec));
}
public static void log(Vector4 vec){
LogUtils.log(get(vec));
}
public static void log(String header,AnimationBone vec){
LogUtils.log(header+" "+get(vec));
}
public static void log(AnimationBone vec){
LogUtils.log(get(vec));
}
public static void log(String header,Euler vec){
LogUtils.log(header+" "+get(vec));
}
public static void log(Euler vec){
LogUtils.log(get(vec));
}
public static void log(String header,Vector4 vec){
LogUtils.log(header+" "+get(vec));
}
public static void logBoneNames(SkinnedMesh characterMesh) {
if(characterMesh.getGeometry().getBones()==null){
LogUtils.log("no bone");
return;
}
for(int i=0;i<characterMesh.getGeometry().getBones().length();i++){
LogUtils.log(i+","+characterMesh.getGeometry().getBones().get(i).getName());
}
}
public static void log(String header, Quaternion quaternion) {
LogUtils.log(header+" "+get(quaternion));
}
public static void log(String header, BoundingBox box) {
log(header+" "+get(box));
}
public static void log(String header, Sphere sphere) {
log(header+" "+get(sphere));
}
}