1 package org.simantics.plant3d.scenegraph;
3 import java.util.Collection;
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;
16 import vtk.vtkRenderer;
18 public abstract class GeometryNode extends P3DNode implements ParameterizedNode, NodeHighlighter {
20 private GeometryComponent component;
22 public GeometryNode() {
23 component = new GeometryComponent() {
25 protected double[] getColor() {
26 return GeometryNode.this.getColor();
30 protected double[] getSelectedColor() {
31 return GeometryNode.this.getSelectedColor();
37 public void visualize(VtkView panel) {
39 component.visualize(panel);
42 public void updateParameters() {
43 component.updateParameters();
47 public Map<String, Object> getParameterMap() {
48 return component.getParameterMap();
51 public Map<String, Object> getCalculatedParameters() {
52 return component.getCalculatedParameters();
55 public void setParametersUpdated(boolean parametersUpdated) {
56 component.setParametersUpdated(parametersUpdated);
59 public void setParameterMap(Map<String, Object> parameters) {
60 Set<String> ids = component.setParameterMap(parameters);
61 for (String id : ids) {
62 firePropertyChanged(id);
66 @RelatedGetObj(Plant3D.URIs.hasGeometry)
67 public GeometryProvider getGeometry() {
68 return component.getGeometry();
71 @RelatedSetObj(Plant3D.URIs.hasGeometry)
72 public void setGeometry(final GeometryProvider provider) {
73 if (provider != null && provider.equals(component.getGeometry()))
75 component.setGeometry(provider);
76 firePropertyChanged(Plant3D.URIs.hasGeometry);
80 public Collection<vtkProp3D> getActors() {
81 return component.getActors();
85 public void stopVisualize() {
86 component.stopVisualize();
90 public void highlight(HighlightEventType type) {
91 component.highlight(type);
95 protected double[] getSelectedColor() {
96 return new double[]{1,0,0};
99 protected double[] getColor() {
100 return new double[]{1,1,0};
103 public void update(vtkRenderer ren) {
104 vtkUtil.updateTransform(getActors(), getWorldPosition(), getWorldOrientation());