]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/TurnComponent.java
Use a bit darker grey color for elbows
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / TurnComponent.java
1 package org.simantics.plant3d.scenegraph;
2
3 import java.util.HashMap;
4 import java.util.Map;
5
6 import javax.vecmath.Vector3d;
7
8 import org.simantics.g3d.math.MathTools;
9 import org.simantics.g3d.property.annotations.GetPropertyValue;
10 import org.simantics.g3d.scenegraph.base.ParentNode;
11 import org.simantics.objmap.graph.annotations.DynamicGraphType;
12 import org.simantics.objmap.graph.annotations.GetType;
13 import org.simantics.objmap.graph.annotations.SetType;
14 import org.simantics.plant3d.ontology.Plant3D;
15 import org.simantics.plant3d.scenegraph.controlpoint.ControlPointFactory;
16 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
17
18 @DynamicGraphType(Plant3D.URIs.TurnComponent)
19 public class TurnComponent extends PipelineComponent {
20
21         
22         private String type;
23         private PipeControlPoint controlPoint;
24         
25         @GetType(Plant3D.URIs.TurnComponent)
26         public String getType() {
27                 return type;
28         }
29         
30         @SetType(Plant3D.URIs.TurnComponent)
31         public void setType(String type) throws Exception{
32                 this.type = type;
33                 controlPoint = ControlPointFactory.create(this);
34         }
35         
36         @Override
37         public PipeControlPoint getControlPoint() {
38                 return controlPoint;
39         }
40         
41         @Override
42         public void setParent(ParentNode<?> parent, String name) {
43                 super.setParent(parent, name);
44                 setPipeRun((PipeRun)parent);
45         }
46         
47         @Override
48         public Map<String, Object> updateParameterMap() {
49                 Map<String,Object> map = new HashMap<String, Object>();
50                 
51                 PipeRun pipeRun = getPipeRun();
52                 if (pipeRun != null) {
53                         map.put("turnRadius", pipeRun.getTurnRadius());
54                         map.put("radius", pipeRun.getPipeDiameter() * 0.5);
55                 }
56                 if (controlPoint != null && controlPoint.getTurnAngle() != null  && !Double.isNaN(controlPoint.getTurnAngle())) {
57                         map.put("turnAngle", controlPoint.getTurnAngle());
58                 }
59                 return map;
60         }
61         
62         
63         public Double getTurnAngle() {
64                 return getControlPoint().getTurnAngle();
65         }
66         
67         @GetPropertyValue(name="Turn Angle", value="turn angle", tabId = "Default")
68         public Double getTurnAngleDeg() {
69                 Double d = getControlPoint().getTurnAngle();
70                 if (d == null)
71                         return null;
72                 return MathTools.radToDeg(d);
73         }
74         
75         public Vector3d getTurnAxis() {
76                 return getControlPoint().getTurnAxis();
77         }
78         
79         @Override
80         public Vector3d getNormal() {
81                 return getTurnAxis();
82         }
83         
84         @Override
85         protected double[] getColor() {
86                 if (getControlPoint() == null || !getControlPoint().isFixed())
87                         return new double[]{0.6,0.6,0.6};
88                 else
89                         return new double[]{1.0,0.0,0.0};
90         }
91 }