]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/scl/Plant3d/Scenegraph/PipelineComponent.scl
Add SCL binding for PipeRun.getInsideDiameter()
[simantics/3d.git] / org.simantics.plant3d / scl / Plant3d / Scenegraph / PipelineComponent.scl
index f4b621560ad78f940ac7153319b626552cb2635b..215095862f101a6503bbd695b026e0f40ae9e5b5 100644 (file)
 import "G3D/Math/Tuple3d"
 import "G3D/Math/Quat4d"
 import "G3D/Math/Vector3d"
+import "G3D/Math/Point3d"
+
+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 -> ()
-  
-  getAlternativePipeRun :: PipelineComponent -> Maybe PipeRun
-  setAlternativePipeRun :: PipelineComponent -> PipeRun -> ()
+  @JavaName getPipeRun
+  getPipeRun' :: PipelineComponent -> <Proc> PipeRun
+  @JavaName setPipeRun
+  setPipeRun' :: PipelineComponent -> PipeRun -> <Proc> ()
   
-  updateParameters :: PipelineComponent -> ()
+  @JavaName getAlternativePipeRun
+  getAlternativePipeRun' :: PipelineComponent -> <Proc> Maybe PipeRun
+  @JavaName setAlternativePipeRun
+  setAlternativePipeRun' :: PipelineComponent -> PipeRun -> <Proc> ()
   
-  getNext :: PipelineComponent -> Maybe PipelineComponent
-  setNext :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName updateParameters
+  updateParameters' :: PipelineComponent -> ()
   
-  getPrevious :: PipelineComponent -> Maybe PipelineComponent
-  setPrevious :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName getNext
+  getNext' :: PipelineComponent -> Maybe PipelineComponent
+  @JavaName setNext
+  setNext' :: PipelineComponent -> Maybe PipelineComponent -> <Proc> ()
   
-  getBranch0 :: PipelineComponent -> Maybe PipelineComponent
-  setBranch0 :: PipelineComponent -> Maybe PipelineComponent -> ()
+  @JavaName getPrevious
+  getPrevious' :: PipelineComponent -> <Proc> Maybe PipelineComponent
+  @JavaName setPrevious
+  setPrevious' :: PipelineComponent -> Maybe PipelineComponent -> <Proc> ()
   
-  getType :: PipelineComponent -> String
+  @JavaName getBranch0
+  getBranch0' :: PipelineComponent -> <Proc> Maybe PipelineComponent
+  @JavaName setBranch0
+  setBranch0' :: PipelineComponent -> Maybe PipelineComponent -> <Proc> ()
   
-  //getControlPoint :: PipelineComponent -> PipeControlPoint
+  @JavaName getType
+  getType' :: PipelineComponent -> <Proc> String
   
-  remove :: PipelineComponent -> ()
+  @JavaName getControlPoint 
+  getControlPoint' :: PipelineComponent -> <Proc> PipeControlPoint
   
-  getFlowLength :: PipelineComponent -> Maybe Double
-  getEnds :: PipelineComponent -> Tuple3d -> Tuple3d -> ()
+  @JavaName remove
+  remove' :: PipelineComponent -> <Proc> ()
   
-  getOrientation :: PipelineComponent -> Quat4d
-  getPosition :: PipelineComponent -> Vector3d
+  @JavaName getFlowLength
+  getFlowLength' :: PipelineComponent -> <Proc> Maybe Double
+  @JavaName getEnds
+  getEnds' :: PipelineComponent -> MTuple3d -> MTuple3d -> <Proc> ()
+  @JavaName getEndDirections
+  getEndDirections' :: PipelineComponent -> MTuple3d -> MTuple3d -> <Proc> ()
   
-  setOrientation :: PipelineComponent -> Quat4d -> ()
-  setPosition :: PipelineComponent -> Vector3d -> ()
-  
-  getWorldOrientation :: PipelineComponent -> Quat4d
-  getWorldPosition :: PipelineComponent -> Vector3d
-  
-  setWorldOrientation :: PipelineComponent -> Quat4d -> ()
-  setWorldPosition :: PipelineComponent -> Vector3d -> ()
+  @JavaName getVolume
+  getVolume' :: PipelineComponent -> <Proc> Double
   
+  @JavaName getCentroid
+  getCentroid' :: PipelineComponent -> MTuple3d -> <Proc> ()
+
+class PipelineComponentClass a where
+  asPipelineComponent :: a -> PipelineComponent
+  asPipelineComponent = Java.unsafeCoerce
+
+  getPipeRun :: a -> <Proc> PipeRun
+  getPipeRun c = getPipeRun' (asPipelineComponent c)
+  setPipeRun :: a -> PipeRun -> <Proc> ()
+  setPipeRun c = setPipeRun' (asPipelineComponent c)
+  
+  getAlternativePipeRun :: a -> <Proc> Maybe PipeRun
+  getAlternativePipeRun c = getAlternativePipeRun' (asPipelineComponent c)
+  setAlternativePipeRun :: a -> PipeRun -> <Proc> ()
+  setAlternativePipeRun c = setAlternativePipeRun' (asPipelineComponent c)
+  
+  updateParameters :: a -> <Proc> ()
+  updateParameters c = updateParameters' (asPipelineComponent c)
+  
+  getNext :: a -> <Proc> Maybe PipelineComponent
+  getNext c = getNext' (asPipelineComponent c)
+  setNext :: a -> Maybe PipelineComponent -> <Proc> ()
+  setNext c = setNext' (asPipelineComponent c)
+  
+  getPrevious :: a -> <Proc> Maybe PipelineComponent
+  getPrevious c = getPrevious' (asPipelineComponent c)
+  setPrevious :: a -> Maybe PipelineComponent -> <Proc> ()
+  setPrevious c = setPrevious' (asPipelineComponent c)
+  
+  getBranch0 :: a -> <Proc> Maybe PipelineComponent
+  getBranch0 c = getBranch0' (asPipelineComponent c)
+  setBranch0 :: a -> Maybe PipelineComponent -> <Proc> ()
+  setBranch0 c = setBranch0' (asPipelineComponent c)
+  
+  getType :: a -> <Proc> String
+  getType c = getType' (asPipelineComponent c)
+  
+  getControlPoint ::  a -> <Proc> PipeControlPoint
+  getControlPoint c = getControlPoint' (asPipelineComponent c)
+  
+  remove :: a -> <Proc> ()
+  remove c = remove' (asPipelineComponent c)
+  
+  getFlowLength :: a -> <Proc> Maybe Double
+  getFlowLength c = getFlowLength' (asPipelineComponent c)
+  
+  getEnds :: a -> <Proc> (Vector3d, Vector3d)
+  getEnds c = runProc let
+    p1 = defaultMVector3d
+    p2 = defaultMVector3d
+    getEnds' (asPipelineComponent c) (asMTuple p1) (asMTuple p2)
+    in (freeze p1, freeze p2)
+    
+  getEndDirections :: a -> <Proc> (Vector3d, Vector3d)
+  getEndDirections c = runProc let
+    p1 = defaultMVector3d
+    p2 = defaultMVector3d
+    getEndDirections' (asPipelineComponent c) (asMTuple p1) (asMTuple p2)
+    in (freeze p1, freeze p2)
+
+  getVolume :: a -> <Proc> Double
+  getVolume c = getVolume' (asPipelineComponent c)
+
+  getCentroid :: a -> <Proc> Vector3d
+  getCentroid c = runProc let
+    p = defaultMVector3d
+    getCentroid' (asPipelineComponent c) (asMTuple p)
+    in freeze p
+
+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
   
@@ -71,25 +164,35 @@ importJava "org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint" wher
   
   getPipelineComponent :: PipeControlPoint -> PipelineComponent
   
+  getTurnAngle :: PipeControlPoint -> <Proc> Maybe Double
+  
   //@JavaName getType
   //getPointType :: PipeControlPoint -> PointType
   
-  isFixed :: PipeControlPoint -> Boolean
+  isFixed :: PipeControlPoint -> <Proc> Boolean
   
-  getSubPoint :: PipeControlPoint -> [PipeControlPoint]
-  getParentPoint :: PipeControlPoint -> Maybe PipeControlPoint
+  @JavaName getChildPoints
+  getSubPoint :: PipeControlPoint -> <Proc> [PipeControlPoint]
+  getParentPoint :: PipeControlPoint -> <Proc> Maybe PipeControlPoint
   
 importJava "org.simantics.plant3d.scenegraph.PipeRun" where
   data PipeRun
   
-  getTurnRadius :: PipeRun -> Double
-  setTurnRadius :: PipeRun -> Double -> ()
+  getTurnRadius :: PipeRun -> <Proc> Double
+  setTurnRadius :: PipeRun -> Double -> <Proc> ()
+  
+  getPipeDiameter :: PipeRun -> <Proc> Double
+  setPipeDiameter :: PipeRun -> Double -> <Proc> ()
   
-  getPipeDiameter :: PipeRun -> Double
-  setPipeDiameter :: PipeRun -> Double -> ()
+  getInsideDiameter :: PipeRun -> <Proc> Double
   
-  addChild :: PipeRun -> PipelineComponent -> ()
-  getChild :: PipeRun -> [PipelineComponent]
-  remChild :: PipeRun -> PipelineComponent -> ()
+  addChild :: PipeRun -> PipelineComponent -> <Proc> ()
+  getChild :: PipeRun -> <Proc> [PipelineComponent]
+  remChild :: PipeRun -> PipelineComponent -> <Proc> ()
   
-  getSortedChild :: PipeRun -> [PipelineComponent]
\ No newline at end of file
+  getSortedChild :: PipeRun -> <Proc> [PipelineComponent]
+
+instance NodeClass PipeRun
+instance ParentNodeClass PipeRun
+instance G3DNodeClass PipeRun
+instance P3DNodeClass PipeRun