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 class P3DParentGeometryNode<T extends IP3DNode> extends P3DParentNode<T> implements ParameterizedNode, NodeHighlighter{
20 private GeometryComponent component;
23 public P3DParentGeometryNode() {
24 component = new GeometryComponent() {
26 protected double[] getColor() {
27 return P3DParentGeometryNode.this.getColor();
31 protected double[] getSelectedColor() {
32 return P3DParentGeometryNode.this.getSelectedColor();
38 public void visualize(VtkView ren) {
40 component.visualize(ren);
43 public void updateParameters() {
44 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 setParameterMap(Map<String, Object> parameters) {
56 Set<String> ids = component.setParameterMap(parameters);
57 for (String id : ids) {
58 firePropertyChanged(id);
63 @RelatedGetObj(Plant3D.URIs.hasGeometry)
64 public GeometryProvider getGeometry() {
65 //return geometryProvider;
66 return component.getGeometry();
69 @RelatedSetObj(Plant3D.URIs.hasGeometry)
70 public void setGeometry(final GeometryProvider provider) {
71 if (provider != null && provider.equals(component.getGeometry()))
73 component.setGeometry(provider);
74 firePropertyChanged(Plant3D.URIs.hasGeometry);
79 public Collection<vtkProp3D> getActors() {
80 return component.getActors();
84 public void stopVisualize() {
85 component.stopVisualize();
89 public void highlight(HighlightEventType type) {
90 component.highlight(type);
93 protected double[] getSelectedColor() {
94 return new double[]{1,0,0};
97 protected double[] getColor() {
98 return new double[]{1,1,0};
103 public void update(vtkRenderer ren) {
104 vtkUtil.updateTransform(getActors(), getWorldPosition(), getWorldOrientation());