]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d.jme/src/org/simantics/g3d/jme/utils/JmeUtil.java
Copyrights
[simantics/3d.git] / org.simantics.g3d.jme / src / org / simantics / g3d / jme / utils / JmeUtil.java
1 /*******************************************************************************\r
2  * Copyright (c) 2012, 2013 Association for Decentralized Information Management in\r
3  * Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.g3d.jme.utils;\r
13 \r
14 import java.util.Collection;\r
15 \r
16 import javax.vecmath.AxisAngle4d;\r
17 import javax.vecmath.Quat4d;\r
18 import javax.vecmath.Vector3d;\r
19 \r
20 import org.simantics.g3d.math.MathTools;\r
21 \r
22 import com.jme3.app.Application;\r
23 import com.jme3.math.Quaternion;\r
24 import com.jme3.renderer.RenderManager;\r
25 import com.jme3.scene.Node;\r
26 import com.jme3.scene.Spatial;\r
27 \r
28 public class JmeUtil {\r
29         \r
30         public static Node getRoot(Application app) {\r
31                 return getRoot(app.getRenderManager());\r
32         }\r
33 \r
34         public static Node getRoot(RenderManager manager) {\r
35                 return (Node)(manager.getMainView("Default").getScenes().get(0));\r
36         }\r
37         \r
38         public static void updateTransform(Collection<Spatial> props, Vector3d pos, Quat4d q) {\r
39                 double position[] = new double[]{pos.x,pos.y,pos.z};\r
40                 updateTransform(props, position, q);\r
41         }\r
42         \r
43         public static void updateTransform(Spatial actor, double pos[], Quat4d quat) {\r
44                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
45                 actor.setLocalRotation(q);\r
46                 actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]);\r
47                 \r
48         }\r
49         \r
50         public static void updateTransform(Collection<Spatial> props, double pos[], AxisAngle4d aa) {\r
51                 Quat4d q = new Quat4d();\r
52                 MathTools.getQuat(aa, q);\r
53                 updateTransform(props, pos, q);\r
54         }\r
55         \r
56         public static void updateTransform(Collection<Spatial> props, double pos[], Quat4d quat) {\r
57                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
58                 for (Spatial actor : props) {\r
59                         actor.setLocalRotation(q);\r
60                         actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]);\r
61                 }\r
62         }\r
63         \r
64         public static void updateTransform(Collection<Spatial> props, Vector3d pos, Quat4d quat, double scale) {\r
65                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
66                 for (Spatial actor : props) {\r
67                         actor.setLocalRotation(q);\r
68                         actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z);\r
69                         actor.setLocalScale((float)scale);\r
70                 }\r
71         }\r
72         \r
73         public static void updateTransform(Collection<Spatial> props, double pos[], Quat4d quat, double scale) {\r
74                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
75                 for (Spatial actor : props) {\r
76                         actor.setLocalRotation(q);\r
77                         actor.setLocalTranslation((float)pos[0], (float)pos[1], (float)pos[2]);\r
78                         actor.setLocalScale((float)scale);\r
79                 }\r
80         }\r
81         \r
82         public static void updateTransform(Spatial actor, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) {\r
83                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
84 \r
85                 actor.setLocalRotation(q);\r
86                 actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z);\r
87                 actor.setLocalScale((float)scalex,(float)scaley,(float)scalez);\r
88 \r
89         }\r
90         \r
91         public static void updateTransform(Collection<Spatial> props, Vector3d pos, Quat4d quat, double scalex, double scaley,double scalez) {\r
92                 Quaternion q = new Quaternion((float)quat.x, (float)quat.y,(float)quat.z, (float)quat.w);\r
93                 for (Spatial actor : props) {\r
94                         actor.setLocalRotation(q);\r
95                         actor.setLocalTranslation((float)pos.x, (float)pos.y, (float)pos.z);\r
96                         actor.setLocalScale((float)scalex,(float)scaley,(float)scalez);\r
97                 }\r
98         }\r
99         \r
100 }\r