X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d.jme%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fjme%2Futils%2FJmeUtil.java;fp=org.simantics.g3d.jme%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fjme%2Futils%2FJmeUtil.java;h=e680ffc75b49f23c8e2f9fce733e7be01ca005ff;hb=5b4454ce3dac8d0cf04caaaa696f300c16be99a0;hp=0000000000000000000000000000000000000000;hpb=2e9c37990c979fe7a877a6a9d0de65ee27f3b56f;p=simantics%2F3d.git diff --git a/org.simantics.g3d.jme/src/org/simantics/g3d/jme/utils/JmeUtil.java b/org.simantics.g3d.jme/src/org/simantics/g3d/jme/utils/JmeUtil.java new file mode 100644 index 00000000..e680ffc7 --- /dev/null +++ b/org.simantics.g3d.jme/src/org/simantics/g3d/jme/utils/JmeUtil.java @@ -0,0 +1,89 @@ +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); + } + } + +}