X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.plant3d%2Fsrc%2Forg%2Fsimantics%2Fplant3d%2Fscl%2FP3DScriptNodeMap.java;h=d38af1718b14068331192d82c5bf5aa203220c9e;hb=d207cfa3235339e7d7b894494be400160b121bd5;hp=b9826ff050c6c40c007464d6042e168f3829af6b;hpb=8da9a6a979f4513be2e0ab5533acc5e4763cf00e;p=simantics%2F3d.git diff --git a/org.simantics.plant3d/src/org/simantics/plant3d/scl/P3DScriptNodeMap.java b/org.simantics.plant3d/src/org/simantics/plant3d/scl/P3DScriptNodeMap.java index b9826ff0..d38af171 100644 --- a/org.simantics.plant3d/src/org/simantics/plant3d/scl/P3DScriptNodeMap.java +++ b/org.simantics.plant3d/src/org/simantics/plant3d/scl/P3DScriptNodeMap.java @@ -4,13 +4,13 @@ import java.util.HashSet; import java.util.Set; import org.simantics.db.ReadGraph; -import org.simantics.db.Session; +import org.simantics.db.RequestProcessor; +import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.g3d.ontology.G3D; import org.simantics.g3d.scenegraph.base.INode; import org.simantics.g3d.scenegraph.base.ParentNode; import org.simantics.g3d.scl.ScriptNodeMap; -import org.simantics.g3d.vtk.common.VtkView; import org.simantics.objmap.graph.IMapping; import org.simantics.plant3d.ontology.Plant3D; import org.simantics.plant3d.scenegraph.IP3DNode; @@ -22,158 +22,157 @@ import org.simantics.plant3d.scenegraph.PipeRun; import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint; import org.simantics.plant3d.scenegraph.controlpoint.PipingRules; -import vtk.vtkProp3D; - -public class P3DScriptNodeMap extends ScriptNodeMap{ - - private static final boolean DEBUG = false; - - public P3DScriptNodeMap(Session session, IMapping mapping, P3DRootNode rootNode) { - super(session,mapping,rootNode); - //rootNode.setNodeMap(this); - } - - @Override - protected void updateActor(INode n, Set ids) { - if (DEBUG) System.out.println("P3DNodeMap update " + n); - if (!(n instanceof IP3DVisualNode)) { - if (n instanceof PipeControlPoint) { - n = ((PipeControlPoint)n).getPipelineComponent(); - if (n == null) - return; - } else { - return; - } - } - - IP3DVisualNode node = (IP3DVisualNode)n; - - if (DEBUG) { - System.out.print("P3DNodeMap update " + node); - for (String s : ids) - System.out.print(" " + s); - System.out.println(); - } - - if (ids.contains(Plant3D.URIs.hasGeometry)) { - //node.visualize(view); - //updateRenderObjectsFor(node); - updateTransform(node); - } - if (n instanceof ParameterizedNode) { - ParameterizedNode geom = (ParameterizedNode)n; - for (String id : geom.getParameterMap().keySet()) { - if (ids.contains(id)) { +public class P3DScriptNodeMap extends ScriptNodeMap { + + private static final boolean DEBUG = false; + + public P3DScriptNodeMap(RequestProcessor session, IMapping mapping, P3DRootNode rootNode) { + super(session,mapping,rootNode); + rootNode.setMapping(mapping); + } + + @Override + protected void updateActor(INode n, Set ids) { + if (DEBUG) System.out.println("P3DNodeMap update " + n); + if (!(n instanceof IP3DVisualNode)) { + if (n instanceof PipeControlPoint) { + n = ((PipeControlPoint)n).getPipelineComponent(); + if (n == null) + return; + } else { + return; + } + } + + IP3DVisualNode node = (IP3DVisualNode)n; + + if (DEBUG) { + System.out.print("P3DNodeMap update " + node); + for (String s : ids) + System.out.print(" " + s); + System.out.println(); + } + + if (ids.contains(Plant3D.URIs.hasGeometry)) { + //node.visualize(view); + //updateRenderObjectsFor(node); + updateTransform(node); + } + if (n instanceof ParameterizedNode) { + ParameterizedNode geom = (ParameterizedNode)n; + for (String id : geom.getParameterMap().keySet()) { + if (ids.contains(id)) { // node.visualize(view); // updateRenderObjectsFor(node); - updateTransform(node); - break; - } - } - } else if (n instanceof PipeRun) { - // FIXME: may require rule based update! - PipeRun run = (PipeRun)n; - Set ids2 = new HashSet(); - ids2.add(Plant3D.URIs.hasGeometry); - for (PipeControlPoint pcp : run.getControlPoints()) { - updateActor(pcp, ids2); - } - } - - if (ids.contains(G3D.URIs.hasPosition) || - ids.contains(G3D.URIs.hasOrientation) || - ids.contains(G3D.URIs.hasWorldPosition) || - ids.contains(G3D.URIs.hasWorldOrientation)) { - updateTransform(node); - } - } - - private void updateTransform(IP3DNode node) { - if (DEBUG) System.out.println("P3DNodeMap update Transform " + node); + updateTransform(node); + break; + } + } + } else if (n instanceof PipeRun) { + // FIXME: may require rule based update! + PipeRun run = (PipeRun)n; + Set ids2 = new HashSet(); + ids2.add(Plant3D.URIs.hasGeometry); + for (PipeControlPoint pcp : run.getControlPoints()) { + updateActor(pcp, ids2); + } + } + + if (ids.contains(G3D.URIs.hasPosition) || + ids.contains(G3D.URIs.hasOrientation) || + ids.contains(G3D.URIs.hasWorldPosition) || + ids.contains(G3D.URIs.hasWorldOrientation)) { + updateTransform(node); + } + } + + private void updateTransform(IP3DNode node) { + if (DEBUG) System.out.println("P3DNodeMap update Transform " + node); - - if (node instanceof ParentNode) { - ParentNode p = (ParentNode)node; - for (IP3DNode n : p.getNodes()) - updateTransform(n); - } - } - - @Override - protected void removeActor(INode n) { - if (DEBUG) System.out.println("P3DNodeMap.removeActor " + n); - if (!(n instanceof IP3DVisualNode)) - return; - IP3DVisualNode node = (IP3DVisualNode)n; + + if (node instanceof ParentNode) { + @SuppressWarnings("unchecked") + ParentNode p = (ParentNode)node; + for (IP3DNode n : p.getNodes()) + updateTransform(n); + } + } + + @Override + protected void removeActor(INode n) { + if (DEBUG) System.out.println("P3DNodeMap.removeActor " + n); + if (!(n instanceof IP3DVisualNode)) + return; + IP3DVisualNode node = (IP3DVisualNode)n; // remActor(node); - - if (node instanceof P3DParentNode) { - for (IP3DNode n2 : ((P3DParentNode)node).getNodes()) - if (n2 instanceof IP3DVisualNode) - removeActor((IP3DVisualNode)n2); - } - } - - @Override - protected void addActor(INode n) { - if (DEBUG) System.out.println("P3DNodeMap.addActor " + n); - if (!(n instanceof IP3DVisualNode)) - return; - IP3DVisualNode node = (IP3DVisualNode)n; - + + if (node instanceof P3DParentNode) { + for (IP3DNode n2 : ((P3DParentNode)node).getNodes()) + if (n2 instanceof IP3DVisualNode) + removeActor((IP3DVisualNode)n2); + } + } + + @Override + protected void addActor(INode n) { + if (DEBUG) System.out.println("P3DNodeMap.addActor " + n); + if (!(n instanceof IP3DVisualNode)) + return; + IP3DVisualNode node = (IP3DVisualNode)n; + // if (hasActor(node)) // return; - - if (node instanceof P3DParentNode) { - for (IP3DNode n2 : ((P3DParentNode)node).getNodes()) - if (n2 instanceof IP3DVisualNode) - addActor((IP3DVisualNode)n2); - } - - updateTransform(node); - } - - @Override - protected void update(ReadGraph graph) throws DatabaseException { - validate(); + + if (node instanceof P3DParentNode) { + for (IP3DNode n2 : ((P3DParentNode)node).getNodes()) + if (n2 instanceof IP3DVisualNode) + addActor((IP3DVisualNode)n2); + } + + updateTransform(node); + } + + @Override + protected void update(ReadGraph graph) throws DatabaseException { + validate(); // System.out.println("Graph updates"); - super.update(graph); - validate(); - } - - @Override - public void commit(String commitMessage) { - validate(); + super.update(graph); + validate(); + } + + @Override + public void commit(String commitMessage) { + validate(); // System.out.println("Graph commit"); - super.commit(commitMessage); - - } - @Override - protected void doCommit() throws DatabaseException{ + super.commit(commitMessage); + + } + @Override + protected void doCommit() throws DatabaseException{ // System.out.println("Do commit"); - validate(); - super.doCommit(); - } - - private void validate() { - for (INode node : rootNode.getNodes()) { - if (node instanceof PipeRun) - PipingRules.validate((PipeRun)node); - } - } - - @Override - public void update() throws DatabaseException { - try { - boolean b = true; - while (b) { - updateCycle(); - b = PipingRules.update(); - } - } catch (Exception e) { - e.printStackTrace(); - } - super.update(); - } + validate(); + super.doCommit(); + } + + private void validate() { + for (INode node : rootNode.getNodes()) { + if (node instanceof PipeRun) + PipingRules.validate((PipeRun)node); + } + } + + @Override + public void update() throws DatabaseException { + try { + boolean b = true; + while (b) { + updateCycle(); + b = PipingRules.update(); + } + } catch (Exception e) { + e.printStackTrace(); + } + super.update(); + } }