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