]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.plant3d/src/org/simantics/plant3d/scenegraph/P3DParentGeometryNode.java
317904cb9112d7cc81faa77c664c4dd91037f324
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / scenegraph / P3DParentGeometryNode.java
1 package org.simantics.plant3d.scenegraph;
2
3 import java.util.Collection;
4 import java.util.Map;
5 import java.util.Set;
6
7 import org.simantics.g3d.scenegraph.GeometryProvider;
8 import org.simantics.g3d.scenegraph.NodeHighlighter;
9 import org.simantics.g3d.vtk.common.VtkView;
10 import org.simantics.g3d.vtk.utils.vtkUtil;
11 import org.simantics.objmap.graph.annotations.RelatedGetObj;
12 import org.simantics.objmap.graph.annotations.RelatedSetObj;
13 import org.simantics.plant3d.ontology.Plant3D;
14
15 import vtk.vtkProp3D;
16 import vtk.vtkRenderer;
17
18 public class P3DParentGeometryNode<T extends IP3DNode> extends P3DParentNode<T> implements ParameterizedNode, NodeHighlighter{
19
20         private GeometryComponent component;
21         
22         
23         public P3DParentGeometryNode() {
24                 component = new GeometryComponent() {
25                         @Override
26                         protected double[] getColor() {
27                                 return P3DParentGeometryNode.this.getColor();
28                         }
29                         
30                         @Override
31                         protected double[] getSelectedColor() {
32                                 return P3DParentGeometryNode.this.getSelectedColor();
33                         }
34                 };
35         }
36         
37         @Override
38         public void visualize(VtkView ren) {
39                 updateParameters();
40                 component.visualize(ren);
41         }
42         
43         public void updateParameters() {
44                 component.updateParameters();
45         }
46
47         public Map<String, Object> getParameterMap() {
48                 return component.getParameterMap();
49         }
50         
51         public Map<String, Object> getCalculatedParameters() {
52                 return component.getCalculatedParameters();
53         }
54         
55         public void setParameterMap(Map<String, Object> parameters) {
56                 Set<String> ids = component.setParameterMap(parameters);
57                 for (String id : ids) {
58                         firePropertyChanged(id);
59                 }
60         }
61
62         
63         @RelatedGetObj(Plant3D.URIs.hasGeometry)
64         public GeometryProvider getGeometry() {
65                 //return geometryProvider;
66                 return component.getGeometry();
67         }
68         
69         @RelatedSetObj(Plant3D.URIs.hasGeometry)
70         public void setGeometry(final GeometryProvider provider) {
71                 if (provider != null && provider.equals(component.getGeometry()))
72                         return;
73                 component.setGeometry(provider);
74                 firePropertyChanged(Plant3D.URIs.hasGeometry);
75         }
76         
77         
78         @Override
79         public Collection<vtkProp3D> getActors() {
80                 return component.getActors();
81         }
82         
83         @Override
84         public void stopVisualize() {
85                 component.stopVisualize();
86         }
87
88         @Override
89         public void highlight(HighlightEventType type) {
90                 component.highlight(type);
91         }
92         
93         protected double[] getSelectedColor() {
94                 return new double[]{1,0,0};
95         }
96         
97         protected double[] getColor() {
98                 return new double[]{1,1,0};
99         }
100         
101
102         
103         public void update(vtkRenderer ren) {
104                 vtkUtil.updateTransform(getActors(), getWorldPosition(), getWorldOrientation());
105         }
106
107 }