]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/G3DAPI.java
git-svn-id: https://www.simantics.org/svn/simantics/3d/branches/dev@9354 ac1ea38d...
[simantics/3d.git] / org.simantics.proconf.g3d / src / org / simantics / proconf / g3d / base / G3DAPI.java
1 package org.simantics.proconf.g3d.base;\r
2 \r
3 import javax.vecmath.AxisAngle4d;\r
4 import javax.vecmath.Tuple3d;\r
5 \r
6 import org.simantics.db.Resource;\r
7 import org.simantics.layer0.utils.IEntity;\r
8 import org.simantics.proconf.g3d.Resources;\r
9 \r
10 /**\r
11  * Set of methods that make scene-graph handling easier.\r
12  * \r
13  * \r
14  * @author Marko Luukkainen <Marko.Luukkainen@vtt.fi>\r
15  *\r
16  */\r
17 public class G3DAPI {\r
18 \r
19         \r
20         public static void setWorldPosition(IEntity node, Tuple3d position) {\r
21                 G3DTools.setTuple3(node.getSingleRelatedObject(Resources.g3dResource.HasWorldPosition), position);\r
22                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
23                 G3DTools.propagateWorldTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
24         }\r
25         \r
26         public static void setLocalPosition(IEntity node, Tuple3d position) {\r
27                 G3DTools.setTuple3(node.getSingleRelatedObject(Resources.g3dResource.HasLocalPosition), position);\r
28                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
29                 G3DTools.propagateLocalTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
30                 \r
31         }\r
32         \r
33         public static void setWorldOrientation(IEntity node, AxisAngle4d orientation) {\r
34                 G3DTools.setOrientation(node.getSingleRelatedObject(Resources.g3dResource.HasWorldOrientation), orientation);\r
35                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
36                 G3DTools.propagateWorldTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
37                 \r
38         }\r
39         \r
40         public static void setLocalOrientation(IEntity node, AxisAngle4d orientation) {\r
41                 G3DTools.setOrientation(node.getSingleRelatedObject(Resources.g3dResource.HasLocalOrientation), orientation);\r
42                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
43                 G3DTools.propagateLocalTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
44                 \r
45                 \r
46         }\r
47         \r
48         public static void setWorldTransformation(IEntity node, Tuple3d position, AxisAngle4d orientation) {\r
49                 G3DTools.setTuple3(node.getSingleRelatedObject(Resources.g3dResource.HasWorldPosition), position);\r
50                 G3DTools.setOrientation(node.getSingleRelatedObject(Resources.g3dResource.HasWorldOrientation), orientation);\r
51                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
52                 G3DTools.propagateWorldTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
53                 \r
54         }\r
55         \r
56         public static void setLocalTransformation(IEntity node, Tuple3d position, AxisAngle4d orientation) {\r
57                 G3DTools.setTuple3(node.getSingleRelatedObject(Resources.g3dResource.HasLocalPosition), position);\r
58                 G3DTools.setOrientation(node.getSingleRelatedObject(Resources.g3dResource.HasLocalOrientation), orientation);\r
59                 //G3DTools.transformationUpdate(node.getGraph(), node.getResource());\r
60                 G3DTools.propagateLocalTransformChange(node.getSingleRelatedObject(Resources.g3dResource.HasParent), node);\r
61         }\r
62         \r
63         public static void addNodeWorld(IEntity parent, IEntity node) {\r
64                 parent.addStatement(Resources.g3dResource.HasChild, node);\r
65                 G3DTools.propagateWorldTransformChange(parent,node);\r
66         }\r
67         \r
68         public static void addNodeLocal(IEntity parent, IEntity node) {\r
69                 parent.addStatement(Resources.g3dResource.HasChild, node);\r
70                 G3DTools.propagateLocalTransformChange(parent,node);\r
71         }\r
72         \r
73         public static void addNodeWorld(IEntity parent, Resource relation, IEntity node) {\r
74                 assert(parent.getGraph().isSubrelationOf(relation, Resources.g3dResource.HasChild));\r
75                 parent.addStatement(relation, node);\r
76                 G3DTools.propagateWorldTransformChange(parent,node);\r
77         }\r
78         \r
79         public static void addNodeLocal(IEntity parent, Resource relation, IEntity node) {\r
80                 assert(parent.getGraph().isSubrelationOf(relation, Resources.g3dResource.HasChild));\r
81                 parent.addStatement(relation, node);\r
82                 G3DTools.propagateLocalTransformChange(parent,node);\r
83         }\r
84         \r
85         public static void removeNode(IEntity node) {\r
86                 node.removeRelatedStatements(Resources.g3dResource.HasParent);\r
87         }\r
88         \r
89         public static void moveNode(IEntity node, IEntity newParent) {\r
90                 node.removeRelatedStatements(Resources.g3dResource.HasParent);\r
91                 newParent.addStatement(Resources.g3dResource.HasChild, node);\r
92                 G3DTools.propagateWorldTransformChange(newParent,node);\r
93         }\r
94 }\r