package com.akjava.gwt.three.client.gwt.boneanimation;
import com.akjava.gwt.lib.client.JavaScriptUtils;
import com.akjava.gwt.three.client.js.THREE;
import com.akjava.gwt.three.client.js.math.Quaternion;
import com.akjava.gwt.three.client.js.math.Vector3;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayNumber;
/*
* before THREE.BONE JSON-Data
* Geometry Bone
*
* relative path
*/
public class AnimationBone extends JavaScriptObject{
protected AnimationBone(){}
public native final String getName ()/*-{
return this['name'];
}-*/;
public native final void setName (String name)/*-{
this['name']=name;
}-*/;
public native final int getParent ()/*-{
return this['parent'];
}-*/;
public native final void setParent (int parent)/*-{
this['parent']=parent;
}-*/;
public native final void setRotq(Quaternion q)/*-{
this['rotq']=[q.x,q.y,q.z,q.w];
}-*/;
public native final void setRotq(double x,double y,double z,double w)/*-{
this['rotq']=[x,y,z,w];
}-*/;
public native final void setRotq(JsArrayNumber array)/*-{
this['rotq']=array;
}-*/;
/*
* sometime it's empty
*/
public native final JsArrayNumber getRotq()/*-{
return this['rotq'];
}-*/;
//I'm not sure still exist?
public native final void setRot(JsArrayNumber array)/*-{
this['rot']=array;
}-*/;
//I'm not sure still exist?
//really work?
public native final void setRot(double x,double y,double z)/*-{
this['rot']=[x,y,z];
}-*/;
//I'm not sure still exist?
public native final void setRot(double x,double y,double z,double w)/*-{
this['rot']=[x,y,z,w];
}-*/;
//I'm not sure still exist?
/*
* sometime it's empty
*/
public native final JsArrayNumber getRot()/*-{
return this['rot'];
}-*/;
public native final void setPos(Vector3 vec)/*-{
this['pos']=[vec.x,vec.y,vec.z];
}-*/;
public native final void setPos(double x,double y,double z)/*-{
this['pos']=[x,y,z];
}-*/;
public native final void setPos(JsArrayNumber array)/*-{
this['pos']=array;
}-*/;
/**
* not working?
*/
public native final void gwtClearAll()/*-{
this['pos']=undefined;
this['rot']=undefined;
this['rotq']=undefined;
this['scl']=undefined;
}-*/;
public static final JsArray<AnimationBone> gwtClone(JsArray<AnimationBone> bones){
JsArray<AnimationBone> array=JavaScriptUtils.createJSArray();
for(int i=0;i<bones.length();i++){
array.push(bones.get(i).gwtClone());
}
return array;
}
public final AnimationBone gwtClone(){
AnimationBone bone=AnimationBone.createObject().cast();
bone.setName(getName());
bone.setParent(getParent());
if(getPos()!=null){
bone.setPos(JavaScriptUtils.clone(getPos()));
}
if(getRotq()!=null){
bone.setRotq(JavaScriptUtils.clone(getRotq()));
}
if(getRot()!=null){
bone.setRot(JavaScriptUtils.clone(getRot()));
}
if(getScl()!=null){
bone.setScl(JavaScriptUtils.clone(getScl()));
}
return bone;
}
public final Vector3 gwtGetPosition(){
return THREE.Vector3().fromArray(getPos());
}
public final Quaternion gwtGetRotationQuaternion(){
return THREE.Quaternion().fromArray(getRotq());
}
/**
* @deprecated
* @param array
* @return
*/
public static final Vector3 jsArrayToVector3(JsArrayNumber array){
return THREE.Vector3(array.get(0),array.get(1), array.get(2));
}
/**
* @deprecated
* @param array
* @return
*/
public static final Quaternion jsArrayToQuaternion(JsArrayNumber array){
return THREE.Quaternion(array.get(0),array.get(1), array.get(2),array.get(3));
}
/*
* sometime it's empty
*/
public native final JsArrayNumber getPos()/*-{
return this['pos'];
}-*/;
public native final void setScl(JsArrayNumber array)/*-{
this['scl']=array;
}-*/;
public native final void setScl(double x,double y,double z)/*-{
this['scl']=[x,y,z];
}-*/;
/*
* sometime it's empty
*/
public native final JsArrayNumber getScl()/*-{
return this['scl'];
}-*/;
}