]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.jme/src/org/simantics/g3d/jme/utils/JmeUtil.java
Alpha-version of jME-bindings for g3d.
[simantics/3d.git] / org.simantics.g3d.jme / src / org / simantics / g3d / jme / utils / JmeUtil.java
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 (file)
index 0000000..e680ffc
--- /dev/null
@@ -0,0 +1,89 @@
+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