]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/editor/Plant3DEditor.java
Fixed variable angle turns when they are not connected
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / editor / Plant3DEditor.java
index 2dc90bdd57466abf8f3bd2c4f4bc8d9002799fe4..e7db15d11e3b8adb47f68429c17202c2348f89cb 100644 (file)
@@ -1,5 +1,6 @@
 package org.simantics.plant3d.editor;
 
+import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -29,9 +30,11 @@ import org.simantics.g3d.vtk.action.RemoveAction;
 import org.simantics.g3d.vtk.common.HoverHighlighter;
 import org.simantics.g3d.vtk.common.NodeSelectionProvider2;
 import org.simantics.g3d.vtk.common.SelectionHighlighter;
+import org.simantics.g3d.vtk.common.VTKSelectionItem;
 import org.simantics.g3d.vtk.common.VtkView;
 import org.simantics.g3d.vtk.shape.vtkShape;
 import org.simantics.g3d.vtk.swt.ContextMenuListener;
+import org.simantics.g3d.vtk.swt.FocusAction;
 import org.simantics.g3d.vtk.swt.InteractiveVtkComposite;
 import org.simantics.g3d.vtk.swt.RotateAction;
 import org.simantics.g3d.vtk.swt.TranslateAction;
@@ -72,10 +75,15 @@ import org.simantics.utils.ui.ExceptionUtils;
 import vtk.vtkActor;
 import vtk.vtkCameraPass;
 import vtk.vtkDefaultPass;
+import vtk.vtkGaussianBlurPass;
 import vtk.vtkLightsPass;
+import vtk.vtkProp;
 import vtk.vtkRenderPassCollection;
 import vtk.vtkRenderer;
+import vtk.vtkSSAAPass;
 import vtk.vtkSequencePass;
+import vtk.vtkSimpleMotionBlurPass;
+import vtk.vtkSobelGradientMagnitudePass;
 
 
 public class Plant3DEditor extends ResourceEditorPart {
@@ -89,9 +97,11 @@ public class Plant3DEditor extends ResourceEditorPart {
        private P3DRootNode rootNode;
        private IMapping<Resource,Object> mapping;
        
-       private NodeSelectionProvider2<Resource,Object> selectionProvider;
+       protected NodeSelectionProvider2<Resource,Object> selectionProvider;
+       
        
        protected vtkCameraAndSelectorAction cameraAction;
+       protected FocusAction focusAction;
        protected TranslateAction translateAction;
        protected TranslateInlineAction translateInlineAction;
        protected TranslateFreeVariableLengthAction translateFreeVariableLengthAction;
@@ -235,6 +245,7 @@ public class Plant3DEditor extends ResourceEditorPart {
        }
        
        protected void createActions() {
+           focusAction = new FocusAction(panel, cameraAction);
                translateAction = new TranslateAction(panel,nodeMap);
                translateInlineAction = new TranslateInlineAction(panel, nodeMap);
                translateFreeVariableLengthAction = new TranslateFreeVariableLengthAction(panel, getRootNode());
@@ -301,6 +312,10 @@ public class Plant3DEditor extends ResourceEditorPart {
                vtkRenderer ren1 = panel.getRenderer();
                
                boolean multiPass = false;
+               boolean blur = false;
+               boolean ssaa = false;
+               //boolean sobel = true;
+               boolean mblur = false;
                if (multiPass) {
                        
                        vtkLightsPass lightsPass = new vtkLightsPass();
@@ -317,8 +332,26 @@ public class Plant3DEditor extends ResourceEditorPart {
                        vtkCameraPass cameraPass = new vtkCameraPass();
                        cameraPass.SetDelegatePass(seq);
                        
-                       ren1.SetPass(cameraPass);
-                       
+                       if (blur) {
+                           vtkGaussianBlurPass blurPass = new vtkGaussianBlurPass();
+                           blurPass.SetDelegatePass(cameraPass);
+                           ren1.SetPass(blurPass);
+                       } else if (ssaa) {
+                           vtkSSAAPass ssaaPass = new vtkSSAAPass();
+                           ssaaPass.SetDelegatePass(cameraPass);
+                           ren1.SetPass(ssaaPass);
+                       } else if (mblur) {
+                           vtkSimpleMotionBlurPass mBlurPass = new vtkSimpleMotionBlurPass();
+                           mBlurPass.SetDelegatePass(cameraPass);
+                ren1.SetPass(mBlurPass);
+//                     } else if (sobel) {
+//                         vtkSobelGradientMagnitudePass sobelPass = new vtkSobelGradientMagnitudePass();
+//                         sobelPass.SetDelegatePass(sobelPass);
+//                         ren1.SetPass(sobelPass);
+               } else {
+                   ren1.SetPass(cameraPass);
+               }
+                        
                }
 //             ren1.GetRenderWindow().LineSmoothingOn();
 //             ren1.GetRenderWindow().PointSmoothingOn();
@@ -357,7 +390,20 @@ public class Plant3DEditor extends ResourceEditorPart {
        }
        
        protected void createContextMenu(IMenuManager m) {
-               List<IG3DNode> selected = selectionProvider.getSelectedNodes();
+               List<INode> selected = selectionProvider.getSelectedNodes();
+               List<VTKSelectionItem<Resource>> selectedItems = selectionProvider.getSelectedItems();
+               if (selectedItems.size() > 0) {
+                   List<vtkProp> props = new ArrayList<>();
+                   for (VTKSelectionItem<Resource> i : selectedItems) {
+                       vtkProp p = (vtkProp)i.getAdapter(vtkProp.class);
+                       if (p != null)
+                           props.add(p);
+                   }
+                   if (props.size() > 0) {
+                       focusAction.setProps(props);
+                       m.add(focusAction);
+                   }
+               }
                try {
                        if (selected.size() == 0) {
                                for (Item eq : P3DUtil.getEquipments(getLibraryUri())) {