]> gerrit.simantics Code Review - simantics/3d.git/commitdiff
Further refactoring of SCL interfaces 42/3142/2
authorReino Ruusu <reino.ruusu@semantum.fi>
Wed, 21 Aug 2019 15:41:30 +0000 (18:41 +0300)
committerReino Ruusu <reino.ruusu@semantum.fi>
Wed, 21 Aug 2019 16:12:02 +0000 (19:12 +0300)
gitlab #28

Change-Id: I3f82066ab83ab3210f8879d0457e6a1b7ba5e72f

14 files changed:
org.simantics.g3d/scl/G3D/Math/Vector3d.scl
org.simantics.g3d/scl/G3D/Scenegraph/G3DNode.scl
org.simantics.g3d/scl/G3D/Scenegraph/G3DParentNode.scl [deleted file]
org.simantics.g3d/scl/G3D/Scenegraph/Node.scl
org.simantics.g3d/src/org/simantics/g3d/scenegraph/base/INode.java
org.simantics.plant3d/scl/Plant3d/Scenegraph/EndComponent.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/Equipment.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/InlineComponent.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/Nozzle.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/P3DNode.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/P3DParentNode.scl [deleted file]
org.simantics.plant3d/scl/Plant3d/Scenegraph/P3DRootNode.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/PipelineComponent.scl
org.simantics.plant3d/scl/Plant3d/Scenegraph/TurnComponent.scl

index cab235384a4ff460882a056809372d8ce01ea053..59cfdf97289db415b029d5aeb5834cf8164ffab6 100644 (file)
@@ -1,4 +1,4 @@
-import "./Tuple3d"
+include "./Tuple3d"
 
 import "JavaBuiltin" as Java
 
index 14b362f826adc88bc325c588b8d2e26f25dbcc26..658eb9c5f4e7e7d60a3ef91ebbb2cc5ff3f1271b 100644 (file)
@@ -1,17 +1,57 @@
+import "JavaBuiltin" as Java
+
 import "G3D/Math/Vector3d"
 import "G3D/Math/Quat4d"
 
-importJava "org.simantics.g3d.scenegraph.G3DNode" where
+include "./Node"
+
+importJava "org.simantics.g3d.scenegraph.IG3DNode" where
   data G3DNode
   
-  getOrientation :: G3DNode -> Quat4d
-  getPosition :: G3DNode -> Vector3d
+  @JavaName getOrientation
+  getOrientation' :: G3DNode -> Quat4d
+  @JavaName getPosition
+  getPosition' :: G3DNode -> Vector3d
+  
+  @JavaName setOrientation
+  setOrientation' :: G3DNode -> Quat4d -> ()
+  @JavaName setPosition
+  setPosition' :: G3DNode -> Vector3d -> ()
+  
+  @JavaName getWorldOrientation
+  getWorldOrientation' :: G3DNode -> Quat4d
+  @JavaName getWorldPosition
+  getWorldPosition' :: G3DNode -> Vector3d
   
-  setOrientation :: G3DNode -> Quat4d -> ()
-  setPosition :: G3DNode -> Vector3d -> ()
+  @JavaName setWorldOrientation
+  setWorldOrientation' :: G3DNode -> Quat4d -> ()
+  @JavaName setWorldPosition
+  setWorldPosition' :: G3DNode -> Vector3d -> ()
+
+class G3DNodeClass a where
+  asG3DNode :: a -> G3DNode
+  asG3DNode = Java.unsafeCoerce
+
+  getOrientation :: a -> Quat4d
+  getOrientation c = getOrientation' (asG3DNode c)
+  getPosition :: a -> Vector3d
+  getPosition c = getPosition' (asG3DNode c)
   
-  getWorldOrientation :: G3DNode -> Quat4d
-  getWorldPosition :: G3DNode -> Vector3d
+  setOrientation :: a -> Quat4d -> ()
+  setOrientation c = setOrientation' (asG3DNode c)
+  setPosition :: a -> Vector3d -> ()
+  setPosition c = setPosition' (asG3DNode c)
   
-  setWorldOrientation :: G3DNode -> Quat4d -> ()
-  setWorldPosition :: G3DNode -> Vector3d -> ()
\ No newline at end of file
+  getWorldOrientation :: a -> Quat4d
+  getWorldOrientation c = getWorldOrientation' (asG3DNode c)
+  getWorldPosition :: a -> Vector3d
+  getWorldPosition c = getWorldPosition' (asG3DNode c)
+  
+  setWorldOrientation :: a -> Quat4d -> ()
+  setWorldOrientation c = setWorldOrientation' (asG3DNode c)
+  setWorldPosition :: a -> Vector3d -> ()
+  setWorldPosition c = setWorldPosition' (asG3DNode c)
+
+instance NodeClass G3DNode
+instance G3DNodeClass G3DNode where
+  asG3DNode = id
diff --git a/org.simantics.g3d/scl/G3D/Scenegraph/G3DParentNode.scl b/org.simantics.g3d/scl/G3D/Scenegraph/G3DParentNode.scl
deleted file mode 100644 (file)
index d62af17..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-import "G3D/Math/Vector3d"
-import "G3D/Math/Quat4d"
-
-importJava "org.simantics.g3d.scenegraph.G3DparentNode" where
-  data G3DParentNode
-  
-  getOrientation :: G3DParentNode -> Quat4d
-  getPosition :: G3DParentNode -> Vector3d
-  
-  setOrientation :: G3DParentNode -> Quat4d -> ()
-  setPosition :: G3DParentNode -> Vector3d -> ()
-  
-  getWorldOrientation :: G3DParentNode -> Quat4d
-  getWorldPosition :: G3DParentNode -> Vector3d
-  
-  setWorldOrientation :: G3DParentNode -> Quat4d -> ()
-  setWorldPosition :: G3DParentNode -> Vector3d -> ()
\ No newline at end of file
index 84d7fc4ed7926a2509a621083b39e001c303f9a5..b21bf4a2848d3073c0d428c04fefb8471baba37e 100644 (file)
@@ -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
index a8379433428befd060ed916050646ea58c1e5029..390b3a20c7938345426a1716eeccf686b56ec15e 100644 (file)
@@ -56,6 +56,8 @@ public interface INode {
      * Remove this node and its children from the scene graph.
      */
     public void remove();
+    
+    public void deattach();
 
     
     public void addListener(NodeListener listener);
index d6688e314ad5bee5f1707f79f40c589b24123076..0508635228d6a5d2968cf7912fd240601bbbe58c 100644 (file)
@@ -1,8 +1,9 @@
-import "./PipelineComponent"
+include "./PipelineComponent"
 
 importJava "org.simantics.plant3d.scenegraph.EndComponent" where
   data EndComponent
-  
-  getType :: EndComponent -> String
-  getControlPoint :: EndComponent -> PipeControlPoint
-  getPipeRun :: EndComponent -> Maybe PipeRun
\ No newline at end of file
+
+instance NodeClass EndComponent
+instance G3DNodeClass EndComponent
+instance P3DNodeClass EndComponent
+instance PipelineComponentClass EndComponent
index ce1b3b7ac21a19007453ea5e6694dea9416b1ab6..e528e7818f2d3a41a6ef940f3ec640064fed2e1f 100644 (file)
@@ -1,12 +1,23 @@
+include "G3D/Scenegraph/Node"
+include "G3D/Scenegraph/G3DNode"
+
+include "./P3DNode"
+
 import "./Nozzle"
 
 importJava "org.simantics.plant3d.scenegraph.Equipment" where
   data Equipment
   
-  getType :: Equipment -> String
+  @JavaName getType
+  getEquipmentType :: Equipment -> String
   
   addChild :: Equipment -> Nozzle -> ()
   remChild :: Equipment -> Nozzle -> ()
   getChild :: Equipment -> [Nozzle]
   
-  numberOfFixedNozzles :: Equipment -> Integer
\ No newline at end of file
+  numberOfFixedNozzles :: Equipment -> Integer
+
+instance NodeClass Equipment
+instance ParentNodeClass Equipment
+instance G3DNodeClass Equipment
+instance P3DNodeClass Equipment
index b8055009aaf0f920968c285d69db0175292ff594..4bbea43e51514345854303a72efa2b9e1d4da81a 100644 (file)
@@ -1,16 +1,16 @@
-import "./PipelineComponent"
+include "./PipelineComponent"
 
 importJava "org.simantics.plant3d.scenegraph.InlineComponent" where
   data InlineComponent
   
-  getType :: InlineComponent -> String
-  getControlPoint :: InlineComponent -> PipeControlPoint
-  getPipeRun :: InlineComponent -> Maybe PipeRun
-  
   isVariableLength :: InlineComponent -> Boolean
   getRotationAngle :: InlineComponent -> Maybe Double
   setRotationAngle :: InlineComponent -> Maybe Double -> ()
   
   isReversed :: InlineComponent -> Maybe Boolean
   setReversed :: InlineComponent -> Maybe Boolean -> ()
-  
\ No newline at end of file
+
+instance NodeClass InlineComponent
+instance G3DNodeClass InlineComponent
+instance P3DNodeClass InlineComponent
+instance PipelineComponentClass InlineComponent
index b5b780c6b2dad5b305cf4110bf9e5bf826ec87bc..316df0c47d25f23f090e8c231a6c313fec0523d1 100644 (file)
@@ -1,13 +1,13 @@
-import "./PipelineComponent"
+include "./PipelineComponent"
 
 importJava "org.simantics.plant3d.scenegraph.Nozzle" where
   data Nozzle
   
-  getType :: Nozzle -> String
-  getControlPoint :: Nozzle -> PipeControlPoint
-  getPipeRun :: Nozzle -> Maybe PipeRun
-  
   getNozzleId :: Nozzle -> Integer
   isFixed :: Nozzle -> Boolean
   isConnected :: Nozzle -> Boolean
-  
\ No newline at end of file
+
+instance NodeClass Nozzle
+instance G3DNodeClass Nozzle
+instance P3DNodeClass Nozzle
+instance PipelineComponentClass Nozzle
index b80f401a00c95ce4f1654841cccd307dc6858117..227c551ed89336e6fe723a3af13e125daa3b4267 100644 (file)
@@ -1,20 +1,21 @@
-import "G3D/Math/Vector3d"
-import "G3D/Math/Quat4d"
+import "JavaBuiltin" as Java
 
-importJava "org.simantics.plant3d.scenegraph.P3DNode" where
+importJava "org.simantics.plant3d.scenegraph.IP3DVisualNode" where
   data P3DNode
   
-  getName :: P3DNode -> Maybe String
-  setName :: P3DNode -> String -> ()
+  @JavaName getName
+  getName' :: P3DNode -> Maybe String
+  @JavaName setName
+  setName' :: P3DNode -> String -> ()
   
-  getOrientation :: P3DNode -> Quat4d
-  getPosition :: P3DNode -> Vector3d
-  
-  setOrientation :: P3DNode -> Quat4d -> ()
-  setPosition :: P3DNode -> Vector3d -> ()
-  
-  getWorldOrientation :: P3DNode -> Quat4d
-  getWorldPosition :: P3DNode -> Vector3d
-  
-  setWorldOrientation :: P3DNode -> Quat4d -> ()
-  setWorldPosition :: P3DNode -> Vector3d -> ()
\ No newline at end of file
+class P3DNodeClass a where
+  asP3DNode :: a -> P3DNode
+  asP3DNode = Java.unsafeCoerce
+
+  getName :: a -> Maybe String
+  getName c = getName' (asP3DNode c)
+  setName :: a -> String -> ()
+  setName c = setName' (asP3DNode c)
+
+instance P3DNodeClass P3DNode where
+  asP3DNode = id
diff --git a/org.simantics.plant3d/scl/Plant3d/Scenegraph/P3DParentNode.scl b/org.simantics.plant3d/scl/Plant3d/Scenegraph/P3DParentNode.scl
deleted file mode 100644 (file)
index e2b40c3..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import "G3D/Math/Vector3d"
-import "G3D/Math/Quat4d"
-
-importJava "org.simantics.plant3d.scenegraph.P3DParentNode" where
-  data P3DParentNode
-  
-  getName :: P3DParentNode -> Maybe String
-  setName :: P3DParentNode -> String -> ()
-  
-  getOrientation :: P3DParentNode -> Quat4d
-  getPosition :: P3DParentNode -> Vector3d
-  
-  setOrientation :: P3DParentNode -> Quat4d -> ()
-  setPosition :: P3DParentNode -> Vector3d -> ()
-  
-  getWorldOrientation :: P3DParentNode -> Quat4d
-  getWorldPosition :: P3DParentNode -> Vector3d
-  
-  setWorldOrientation :: P3DParentNode -> Quat4d -> ()
-  setWorldPosition :: P3DParentNode -> Vector3d -> ()
\ No newline at end of file
index 85e162d4b830e956c5ae42106e65b9ee2f7680ab..3b4991654730bf4c0e879df5601b3a1912ab2c20 100644 (file)
@@ -1,11 +1,13 @@
-import "G3D/Math/Vector3d"
-import "G3D/Math/Quat4d"
-import "G3D/Scenegraph/Node"
+include "G3D/Scenegraph/Node"
+include "G3D/Scenegraph/G3DNode"
 
 importJava "org.simantics.plant3d.scenegraph.P3DRootNode" where
   data P3DRootNode
   
-  addChild :: P3DRootNode -> INode -> () 
-  getChild :: P3DRootNode -> [INode]
-  remChild :: P3DRootNode -> INode -> () 
-  
+  addChild :: P3DRootNode -> Node -> () 
+  getChild :: P3DRootNode -> [Node]
+  remChild :: P3DRootNode -> Node -> () 
+
+instance NodeClass P3DRootNode
+instance ParentNodeClass P3DRootNode
+instance G3DNodeClass P3DRootNode
index f4b621560ad78f940ac7153319b626552cb2635b..efd86b715a7fbaed5ef88051ef4f64000cd7e44b 100644 (file)
@@ -2,47 +2,106 @@ import "G3D/Math/Tuple3d"
 import "G3D/Math/Quat4d"
 import "G3D/Math/Vector3d"
 
+include "G3D/Scenegraph/Node"
+include "G3D/Scenegraph/G3DNode"
+
+include "./P3DNode"
+
+import "JavaBuiltin" as Java
+
 importJava "org.simantics.plant3d.scenegraph.PipelineComponent" where
   data PipelineComponent
   
-  getPipeRun :: PipelineComponent -> PipeRun
-  setPipeRun :: PipelineComponent -> PipeRun -> ()
+  @JavaName getPipeRun
+  getPipeRun' :: PipelineComponent -> PipeRun
+  @JavaName setPipeRun
+  setPipeRun' :: PipelineComponent -> PipeRun -> ()
   
-  getAlternativePipeRun :: PipelineComponent -> Maybe PipeRun
-  setAlternativePipeRun :: PipelineComponent -> PipeRun -> ()
+  @JavaName getAlternativePipeRun
+  getAlternativePipeRun' :: PipelineComponent -> Maybe PipeRun
+  @JavaName setAlternativePipeRun
+  setAlternativePipeRun' :: PipelineComponent -> PipeRun -> ()
   
-  updateParameters :: PipelineComponent -> ()
+  @JavaName updateParameters
+  updateParameters' :: PipelineComponent -> ()
   
-  getNext :: PipelineComponent -> Maybe PipelineComponent
-  setNext :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName getNext
+  getNext' :: PipelineComponent -> Maybe PipelineComponent
+  @JavaName setNext
+  setNext' :: PipelineComponent -> Maybe PipelineComponent -> ()
   
-  getPrevious :: PipelineComponent -> Maybe PipelineComponent
-  setPrevious :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName getPrevious
+  getPrevious' :: PipelineComponent -> Maybe PipelineComponent
+  @JavaName setPrevious
+  setPrevious' :: PipelineComponent -> Maybe PipelineComponent -> ()
   
-  getBranch0 :: PipelineComponent -> Maybe PipelineComponent
-  setBranch0 :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName getBranch0
+  getBranch0' :: PipelineComponent -> Maybe PipelineComponent
+  @JavaName setBranch0
+  setBranch0' :: PipelineComponent -> Maybe PipelineComponent -> ()
   
-  getType :: PipelineComponent -> String
+  @JavaName getType
+  getType' :: PipelineComponent -> String
   
   //getControlPoint :: PipelineComponent -> PipeControlPoint
   
-  remove :: PipelineComponent -> ()
-  
-  getFlowLength :: PipelineComponent -> Maybe Double
-  getEnds :: PipelineComponent -> Tuple3d -> Tuple3d -> ()
-  
-  getOrientation :: PipelineComponent -> Quat4d
-  getPosition :: PipelineComponent -> Vector3d
-  
-  setOrientation :: PipelineComponent -> Quat4d -> ()
-  setPosition :: PipelineComponent -> Vector3d -> ()
-  
-  getWorldOrientation :: PipelineComponent -> Quat4d
-  getWorldPosition :: PipelineComponent -> Vector3d
-  
-  setWorldOrientation :: PipelineComponent -> Quat4d -> ()
-  setWorldPosition :: PipelineComponent -> Vector3d -> ()
+  @JavaName remove
+  remove' :: PipelineComponent -> ()
   
+  @JavaName getFlowLength
+  getFlowLength' :: PipelineComponent -> Maybe Double
+  @JavaName getEnds
+  getEnds' :: PipelineComponent -> Tuple3d -> Tuple3d -> ()
+
+class PipelineComponentClass a where
+  asPipelineComponent :: a -> PipelineComponent
+  asPipelineComponent = Java.unsafeCoerce
+
+  getPipeRun :: a -> PipeRun
+  getPipeRun c = getPipeRun' (asPipelineComponent c)
+  setPipeRun :: a -> PipeRun -> ()
+  setPipeRun c = setPipeRun' (asPipelineComponent c)
+  
+  getAlternativePipeRun :: a -> Maybe PipeRun
+  getAlternativePipeRun c = getAlternativePipeRun' (asPipelineComponent c)
+  setAlternativePipeRun :: a -> PipeRun -> ()
+  setAlternativePipeRun c = setAlternativePipeRun' (asPipelineComponent c)
+  
+  updateParameters :: a -> ()
+  updateParameters c = updateParameters' (asPipelineComponent c)
+  
+  getNext :: a -> Maybe PipelineComponent
+  getNext c = getNext' (asPipelineComponent c)
+  setNext :: a -> Maybe PipelineComponent -> ()
+  setNext c = setNext' (asPipelineComponent c)
+  
+  getPrevious :: a -> Maybe PipelineComponent
+  getPrevious c = getPrevious' (asPipelineComponent c)
+  setPrevious :: a -> Maybe PipelineComponent -> ()
+  setPrevious c = setPrevious' (asPipelineComponent c)
+  
+  getBranch0 :: a -> Maybe PipelineComponent
+  getBranch0 c = getBranch0' (asPipelineComponent c)
+  setBranch0 :: a -> Maybe PipelineComponent -> ()
+  setBranch0 c = setBranch0' (asPipelineComponent c)
+  
+  getType :: a -> String
+  getType c = getType' (asPipelineComponent c)
+  
+  remove :: a -> ()
+  remove c = remove' (asPipelineComponent c)
+  
+  getFlowLength :: a -> Maybe Double
+  getFlowLength c = getFlowLength' (asPipelineComponent c)
+  getEnds :: a -> Tuple3d -> Tuple3d -> ()
+  getEnds c = getEnds' (asPipelineComponent c)
+
+instance NodeClass PipelineComponent
+instance G3DNodeClass PipelineComponent
+instance P3DNodeClass PipelineComponent
+instance PipelineComponentClass PipelineComponent where
+  asPipelineComponent = id
+
 importJava "org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint$PointType" where
   data PointType
   
@@ -92,4 +151,9 @@ importJava "org.simantics.plant3d.scenegraph.PipeRun" where
   getChild :: PipeRun -> [PipelineComponent]
   remChild :: PipeRun -> PipelineComponent -> ()
   
-  getSortedChild :: PipeRun -> [PipelineComponent]
\ No newline at end of file
+  getSortedChild :: PipeRun -> [PipelineComponent]
+
+instance NodeClass PipeRun
+instance ParentNodeClass PipeRun
+instance G3DNodeClass PipeRun
+instance P3DNodeClass PipeRun
index f6a765f7618d7cd24814b2c2a0bd309a2f106e6a..3eedf63f4c6e8f84a842d164feb854bc60620206 100644 (file)
@@ -1,14 +1,10 @@
-import "./PipelineComponent"
+include "./PipelineComponent"
 
 import "G3D/Math/Vector3d"
 
 importJava "org.simantics.plant3d.scenegraph.TurnComponent" where
   data TurnComponent
   
-  getType :: TurnComponent -> String
-  getControlPoint :: TurnComponent -> PipeControlPoint
-  getPipeRun :: TurnComponent -> Maybe PipeRun
-  
   isVariableAngle :: TurnComponent -> Boolean
   getTurnAngle :: TurnComponent -> Maybe Double
   setTurnAngle :: TurnComponent -> Maybe Double -> ()
@@ -17,4 +13,8 @@ importJava "org.simantics.plant3d.scenegraph.TurnComponent" where
   
   getRotationAngle :: TurnComponent -> Maybe Double
   setRotationAngle :: TurnComponent -> Maybe Double -> ()
-  
\ No newline at end of file
+
+instance NodeClass TurnComponent
+instance G3DNodeClass TurnComponent
+instance P3DNodeClass TurnComponent
+instance PipelineComponentClass TurnComponent