]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d/scl/G3D/Scenegraph/Node.scl
Merge "Improve elbow placement when dual directed pathleg is no loner aligned"
[simantics/3d.git] / org.simantics.g3d / scl / G3D / Scenegraph / Node.scl
1 import "JavaBuiltin" as Java
2
3 importJava "org.simantics.g3d.scenegraph.base.ParentNode" where
4   data ParentNode
5   
6   @JavaName addNode
7   addNode' :: ParentNode -> String -> Node -> ()
8   @JavaName removeNode
9   removeNode' :: ParentNode -> String -> Node -> Boolean
10   @JavaName deattachNode
11   deattachNode' :: ParentNode -> String -> Node -> Boolean
12   
13   @JavaName removeNodes
14   removeNodes' :: ParentNode -> String ->()
15   @JavaName getNodes
16   getNodes' :: ParentNode -> String -> [Node]
17   @JavaName getNodes
18   getAllNodes' :: ParentNode -> [Node]
19   @JavaName remove
20   remove' :: ParentNode -> ()
21
22 class ParentNodeClass a where
23   asParentNode :: a -> ParentNode
24   asParentNode = Java.unsafeCoerce
25
26   addNode :: a -> String -> Node -> ()
27   addNode c = addNode' (asParentNode c)
28   removeNode :: a -> String -> Node -> Boolean
29   removeNode c = removeNode' (asParentNode c)
30   deattachNode :: a -> String -> Node -> Boolean
31   deattachNode c = deattachNode' (asParentNode c)
32   removeNodes :: a -> String ->()
33   removeNodes c = removeNodes' (asParentNode c)
34   getNodes :: a -> String -> [Node]
35   getNodes c = getNodes' (asParentNode c)
36   remove :: a -> ()
37   remove c = remove' (asParentNode c)
38
39 instance NodeClass ParentNode
40 instance ParentNodeClass ParentNode where
41   asParentNode = id
42   
43 importJava "org.simantics.g3d.scenegraph.base.INode" where
44   data Node
45   
46   @JavaName getParent
47   getParent' :: Node -> Maybe ParentNode
48   @JavaName getRootNode
49   getRootNode' :: Node -> Maybe ParentNode
50   @JavaName deattach
51   deattach' :: Node -> ()
52
53 class NodeClass a where
54   asNode :: a -> Node
55   asNode = Java.unsafeCoerce
56
57   getParent :: a -> Maybe ParentNode
58   getParent c = getParent' (asNode c)
59   getRootNode :: a -> Maybe ParentNode
60   getRootNode c = getRootNode' (asNode c)
61   deattach :: a -> ()
62   deattach c = deattach' (asNode c)
63
64 instance NodeClass Node where
65   asNode = id