X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d%2Fscl%2FG3D%2FScenegraph%2FNode.scl;fp=org.simantics.g3d%2Fscl%2FG3D%2FScenegraph%2FNode.scl;h=b21bf4a2848d3073c0d428c04fefb8471baba37e;hb=d3f535e82944e98845638c0e56b23077c1e7c104;hp=84d7fc4ed7926a2509a621083b39e001c303f9a5;hpb=8c8a6f597d1c56ebe788a028d70c7851f58dae9f;p=simantics%2F3d.git diff --git a/org.simantics.g3d/scl/G3D/Scenegraph/Node.scl b/org.simantics.g3d/scl/G3D/Scenegraph/Node.scl index 84d7fc4e..b21bf4a2 100644 --- a/org.simantics.g3d/scl/G3D/Scenegraph/Node.scl +++ b/org.simantics.g3d/scl/G3D/Scenegraph/Node.scl @@ -1,24 +1,65 @@ - - -importJava "org.simantics.g3d.scenegraph.base.INode" where - data INode +import "JavaBuiltin" as Java importJava "org.simantics.g3d.scenegraph.base.ParentNode" where data ParentNode - addNode :: ParentNode -> String -> INode -> () - removeNode :: ParentNode -> String -> INode -> Boolean - deattachNode :: ParentNode -> String -> INode -> Boolean + @JavaName addNode + addNode' :: ParentNode -> String -> Node -> () + @JavaName removeNode + removeNode' :: ParentNode -> String -> Node -> Boolean + @JavaName deattachNode + deattachNode' :: ParentNode -> String -> Node -> Boolean - removeNodes :: ParentNode -> String ->() - getNodes :: ParentNode -> String -> [INode] + @JavaName removeNodes + removeNodes' :: ParentNode -> String ->() @JavaName getNodes - getAllNodes :: ParentNode -> [INode] - remove :: ParentNode -> () + getNodes' :: ParentNode -> String -> [Node] + @JavaName getNodes + getAllNodes' :: ParentNode -> [Node] + @JavaName remove + remove' :: ParentNode -> () + +class ParentNodeClass a where + asParentNode :: a -> ParentNode + asParentNode = Java.unsafeCoerce + + addNode :: a -> String -> Node -> () + addNode c = addNode' (asParentNode c) + removeNode :: a -> String -> Node -> Boolean + removeNode c = removeNode' (asParentNode c) + deattachNode :: a -> String -> Node -> Boolean + deattachNode c = deattachNode' (asParentNode c) + removeNodes :: a -> String ->() + removeNodes c = removeNodes' (asParentNode c) + getNodes :: a -> String -> [Node] + getNodes c = getNodes' (asParentNode c) + remove :: a -> () + remove c = remove' (asParentNode c) + +instance NodeClass ParentNode +instance ParentNodeClass ParentNode where + asParentNode = id -importJava "org.simantics.g3d.scenegraph.base.Node" where +importJava "org.simantics.g3d.scenegraph.base.INode" where data Node - getParent :: Node -> Maybe ParentNode - getRootNode :: Node -> Maybe ParentNode - deattach :: Node -> () + @JavaName getParent + getParent' :: Node -> Maybe ParentNode + @JavaName getRootNode + getRootNode' :: Node -> Maybe ParentNode + @JavaName deattach + deattach' :: Node -> () + +class NodeClass a where + asNode :: a -> Node + asNode = Java.unsafeCoerce + + getParent :: a -> Maybe ParentNode + getParent c = getParent' (asNode c) + getRootNode :: a -> Maybe ParentNode + getRootNode c = getRootNode' (asNode c) + deattach :: a -> () + deattach c = deattach' (asNode c) + +instance NodeClass Node where + asNode = id