]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java
Merge "Publish Plant3D feature"
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / TurnComponent.java
diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java b/org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java
new file mode 100644 (file)
index 0000000..6050b60
--- /dev/null
@@ -0,0 +1,83 @@
+package org.simantics.plant3d.scenegraph;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.vecmath.Vector3d;
+
+import org.simantics.g3d.math.MathTools;
+import org.simantics.g3d.property.annotations.GetPropertyValue;
+import org.simantics.g3d.scenegraph.base.ParentNode;
+import org.simantics.objmap.graph.annotations.DynamicGraphType;
+import org.simantics.objmap.graph.annotations.GetType;
+import org.simantics.objmap.graph.annotations.SetType;
+import org.simantics.plant3d.ontology.Plant3D;
+import org.simantics.plant3d.scenegraph.controlpoint.ControlPointFactory;
+import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
+
+@DynamicGraphType(Plant3D.URIs.TurnComponent)
+public class TurnComponent extends PipelineComponent {
+
+       
+       private String type;
+       private PipeControlPoint controlPoint;
+       
+       @GetType(Plant3D.URIs.TurnComponent)
+       public String getType() {
+               return type;
+       }
+       
+       @SetType(Plant3D.URIs.TurnComponent)
+       public void setType(String type) throws Exception{
+               this.type = type;
+               controlPoint = ControlPointFactory.create(this);
+       }
+       
+       @Override
+       public PipeControlPoint getControlPoint() {
+               return controlPoint;
+       }
+       
+       @Override
+       public void setParent(ParentNode<?> parent, String name) {
+               super.setParent(parent, name);
+               setPipeRun((PipeRun)parent);
+       }
+       
+       @Override
+       public Map<String, Object> updateParameterMap() {
+               Map<String,Object> map = new HashMap<String, Object>();
+               
+               PipeRun pipeRun = getPipeRun();
+               if (pipeRun != null) {
+                       map.put("turnRadius", pipeRun.getTurnRadius());
+                       map.put("radius", pipeRun.getPipeDiameter() * 0.5);
+               }
+               if (controlPoint != null && controlPoint.getTurnAngle() != null  && !Double.isNaN(controlPoint.getTurnAngle())) {
+                       map.put("turnAngle", controlPoint.getTurnAngle());
+               }
+               return map;
+       }
+       
+       
+       public Double getTurnAngle() {
+               return getControlPoint().getTurnAngle();
+       }
+       
+       @GetPropertyValue(name="Turn Angle", value="turn angle", tabId = "Default")
+       public Double getTurnAngleDeg() {
+               Double d = getControlPoint().getTurnAngle();
+               if (d == null)
+                       return null;
+               return MathTools.radToDeg(d);
+       }
+       
+       public Vector3d getTurnAxis() {
+               return getControlPoint().getTurnAxis();
+       }
+       
+       @Override
+       public Vector3d getNormal() {
+               return getTurnAxis();
+       }
+}