X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Factions%2FRoutePipeAction.java;h=5c787037daed939790c0d8030942b9e1e5ea3aa9;hb=2a76147e3fc37ee609dd343c607cb51ae9b8b4e2;hp=64d2d8c6e6c84d7c7f70ae7bd1ab2a90313ea536;hpb=be4d3459d4823f934a387447c8bc1382eb97344c;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java b/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java index 64d2d8c6..5c787037 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/actions/RoutePipeAction.java @@ -23,6 +23,7 @@ import org.simantics.g3d.vtk.swt.InteractiveVtkComposite; import org.simantics.g3d.vtk.swt.vtkSwtAction; import org.simantics.g3d.vtk.utils.vtkUtil; import org.simantics.plant3d.Activator; +import org.simantics.plant3d.gizmo.ConstraintPointGizmo; import org.simantics.plant3d.gizmo.SplitPointSelectionGizmo; import org.simantics.plant3d.gizmo.TerminalSelectionGizmo; import org.simantics.plant3d.scenegraph.EndComponent; @@ -61,6 +62,7 @@ public class RoutePipeAction extends vtkSwtAction { private TranslateAxisGizmo translateAxisGizmo = new TranslateAxisGizmo(); private SplitPointSelectionGizmo splitPointSelectionGizmo; + private ConstraintPointGizmo constraintPointGizmo; private TerminalSelectionGizmo terminalSelectionGizmo; private NodeMap nodeMap; @@ -93,6 +95,7 @@ public class RoutePipeAction extends vtkSwtAction { nodeMap = root.getNodeMap(); splitPointSelectionGizmo = new SplitPointSelectionGizmo(panel); terminalSelectionGizmo = new TerminalSelectionGizmo(panel); + constraintPointGizmo = new ConstraintPointGizmo(panel); detector = new org.simantics.g3d.vtk.swt.ConstraintDetector(panel); } @@ -151,6 +154,8 @@ public class RoutePipeAction extends vtkSwtAction { splitPointSelectionGizmo.deattach(); if (terminalSelectionGizmo.isAttached()) terminalSelectionGizmo.deattach(); + if (constraintPointGizmo.isAttached()) + constraintPointGizmo.deattach(); if (infoActor != null) { panel.getRenderer().RemoveActor(infoActor); infoActor.Delete(); @@ -595,7 +600,10 @@ public class RoutePipeAction extends vtkSwtAction { private void updateConstraints() { detector.clearConstraints(); + constraintPointGizmo.clearPositions(); if (hoverObject == null) { + if (constraintPointGizmo.isAttached()) + constraintPointGizmo.deattach(); return; } if (hoverObject instanceof Nozzle) { @@ -608,10 +616,19 @@ public class RoutePipeAction extends vtkSwtAction { c.getEnds(p1, p2); detector.addContraintPoint(p1); detector.addContraintPoint(p2); + detector.addContraintPoint(new Point3d(c.getWorldPosition())); } else if (hoverObject instanceof TurnComponent) { TurnComponent n = (TurnComponent)hoverObject; detector.addContraintPoint(new Point3d(n.getWorldPosition())); } + if (detector.getConstraintPoints().size() > 0) { + for (Point3d p : detector.getConstraintPoints()) { + constraintPointGizmo.addPosition(new Vector3d(p)); + } + if (constraintPointGizmo.isAttached()) + constraintPointGizmo.deattach(); + constraintPointGizmo.attach(panel); + } } @Override