package org.simantics.g3d.jme.utils; import java.util.Collection; import javax.vecmath.AxisAngle4d; import javax.vecmath.Quat4d; import javax.vecmath.Vector3d; import org.simantics.g3d.math.MathTools; import com.jme3.app.Application; import com.jme3.math.Quaternion; import com.jme3.renderer.RenderManager; import com.jme3.scene.Node; import com.jme3.scene.Spatial; public class JmeUtil { public static Node getRoot(Application app) { return getRoot(app.getRenderManager()); } public static Node getRoot(RenderManager manager) { return (Node)(manager.getMainView("Default").getScenes().get(0)); } public static void updateTransform(Collection props, Vector3d pos, Quat4d q) { double position[] = new double[]{pos.x,pos.y,pos.z}; updateTransform(props, position, q); } public static void updateTransform(Spatial actor, double pos[], Quat4d quat) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); } public static void updateTransform(Collection props, double pos[], AxisAngle4d aa) { Quat4d q = new Quat4d(); MathTools.getQuat(aa, q); updateTransform(props, pos, q); } public static void updateTransform(Collection props, double pos[], Quat4d quat) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); } } public static void updateTransform(Collection props, Vector3d pos, Quat4d quat, double scale) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scale); } } public static void updateTransform(Collection props, double pos[], Quat4d quat, double scale) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]); actor.setLocalScale((float)scale); } } public static void updateTransform(Spatial actor, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scalex,(float)scaley,(float)scalez); } public static void updateTransform(Collection props, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) { Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w); for (Spatial actor : props) { actor.setLocalRotation(q); actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z); actor.setLocalScale((float)scalex,(float)scaley,(float)scalez); } } }