X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Feditor%2FP3DNodeMap.java;h=00118cfd842441568b8bc85dd6cf83364d0a5bcb;hb=HEAD;hp=8daee3a530e9286a725bf5b0a113f711fd507f86;hpb=b93886889422a3111b05a6944b3bcb2cdd8c416a;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DNodeMap.java b/org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DNodeMap.java index 8daee3a5..00118cfd 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DNodeMap.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/editor/P3DNodeMap.java @@ -34,7 +34,7 @@ public class P3DNodeMap extends AbstractVTKNodeMap { private static final boolean DEBUG = false; - public P3DNodeMap(Session session, IMapping mapping, VtkView panel, P3DRootNode rootNode) { + public P3DNodeMap(Session session, IMapping mapping, VtkView panel, P3DRootNode rootNode) { super(session, mapping, panel, rootNode); rootNode.setNodeMap(this); } @@ -76,8 +76,14 @@ public class P3DNodeMap extends AbstractVTKNodeMap { } } } else if (n instanceof PipeRun) { - // FIXME: may require rule based update! PipeRun run = (PipeRun)n; + + // Check for change to turn radii and update turn components + if (ids.contains(Plant3D.URIs.HasTurnRadiusArray) || + ids.contains(Plant3D.URIs.HasTurnRadius)) { + requestTurnUpdates(run); + } + Set ids2 = new HashSet(); ids2.add(Plant3D.URIs.hasGeometry); for (PipeControlPoint pcp : run.getControlPoints()) { @@ -97,12 +103,20 @@ public class P3DNodeMap extends AbstractVTKNodeMap { } } + private void requestTurnUpdates(PipeRun run) { + for (PipeControlPoint pcp : run.getControlPoints()) { + if (pcp.isTurn()) + PipingRules.requestUpdate(pcp); + } + } + private void updateTransform(IP3DNode node) { if (DEBUG) System.out.println("P3DNodeMap update Transform " + debugString(node)); node.update(view.getRenderer()); if (node instanceof ParentNode) { + @SuppressWarnings("unchecked") ParentNode p = (ParentNode)node; for (IP3DNode n : p.getNodes()) updateTransform(n);