public void traverseRight( TraversePointInfo info, float distanceFromCurPoint, int method, boolean affectRender) { // if info.pathnode is null, then according to mehtod get one of the end path nodes if (info.getPathNode() == null) { PathNode pt = nodes.getFirst(); info.initialize(pt.getLocation(), pt, 0, 0, this, 0); if (affectRender) pt.setActive(false); // Helper.printKeyVal("info pathnode in null check: ", info.getPathNode().toString()); return; } // info.pathnode is not null // Helper.printKeyVal("\n\nCurrent distance: ", info.getDistance()); // Helper.println("distance from current point: " + distanceFromCurPoint); try { float traversedDistance = 0; float distanceToTraverse = distanceFromCurPoint + info.getDistance(); float distance = info.getDistance(); PathNode t = info.getPathNode(); while (true) { nextNode = t.getNextTraversingNode(method); // current is the last node if (nextNode == null) { if (affectRender) t.setActive(false); info.initialize( t.getLocation(), t, this.totalDistance, this.totalDistance, this, traversedDistance); // Helper.println("2 Right Return last"); return; } if (!nextNode.isActive()) { info.setLastTraversedDistance(0); return; } // Helper.printKeyVal("2 t.linkDistance: ", t.getDistance(method)); // Helper.printKeyVal("2 out of distanceToTraverse: ", distanceToTraverse); linkDistance = t.getDistance(method); if (linkDistance >= distanceToTraverse) { traversedDistance += distanceToTraverse; // Helper.printKeyVal("\n3 traveresed distance: ", "" + traversedDistance); // Helper.printKeyVal("3 out of : ", distanceToTraverse); Point retP = t.getPointAtDistance(distanceToTraverse, method); if (affectRender) t.setActive(false); // Helper.printKeyVal("getPointAtDistance() returned point: ", retP.toString()); // Helper.printKeyVal("Right traverse Last distance: ", traversedDistance + // distanceToTraverse-info.getDistance()); info.initialize( retP, t, distanceToTraverse, info.getTotalDistanceInPath() + distanceFromCurPoint, this, distanceFromCurPoint); // Helper.println("2 Return good"); return; } traversedDistance += linkDistance; distanceToTraverse = distanceToTraverse - linkDistance; distance = 0; t = nextNode; // Helper.printKeyVal("Switching to new node: ", t.toString()); } } catch (Exception e) { e.printStackTrace(); } }
public void traverseLeft( TraversePointInfo info, float distanceFromCurPoint, int method, boolean affectRender) { PathNode t; float dtv; float dis; /** * ************************************************** * * <p><-----dtv-----> ********************* <-- t * * <p>************************************************* */ t = info.getPathNode(); if (t == null) { t = info.getPath().nodes.getLast(); info.initialize(t.getLocation(), t, t.getLeftDistance(), totalDistance, this, 0); if (affectRender) t.setActive(false); // Helper.println("Return from: " + t.getLocation().toString()); return; } // Helper.printKeyVal("Step 1: DFCP", distanceFromCurPoint); // Helper.printKeyVal("Step 1: current distance", info.getDistance()); if (t.getNextNode() == null) dtv = distanceFromCurPoint; else { if (info.getDistance() > 0) { dtv = t.getRightDistance() - info.getDistance() + distanceFromCurPoint; // if(affectRender) // t.setActive(false); t = t.getNextNode(); } else { dtv = distanceFromCurPoint; } } // Helper.printKeyVal("Step 1: DTV", dtv); // Helper.printKeyVal("Step 1: t.getLeftDistance()", t.getLeftDistance()); while (true) { if (dtv > t.getLeftDistance()) { // Helper.printKeyVal("\nStep 2: DTV", dtv); // Helper.printKeyVal("Step 2: t.getLeftDistance(): ", t.getLeftDistance()); if (t.getPrevNode() == null) { if (affectRender) t.setActive(false); info.initialize( t.getLocation(), t, 0, info.getTotalDistanceInPath() - (distanceFromCurPoint - dtv), this, distanceFromCurPoint - dtv); // Helper.printKeyVal("Retrun: 1: ", info.getDistance()); return; } dtv = dtv - t.getLeftDistance(); if (affectRender) t.setActive(false); t = t.getPrevNode(); if (!t.isActive()) { info.setLastTraversedDistance(0); return; } // Helper.printKeyVal("Step 2: New DTV", dtv); // Helper.printKeyVal("Step 2: Switched to new Node: ", t.getLocation().toString()); // Helper.printKeyVal("Step 2: New Node index: ", info.getPath().nodes.indexOf(t)); } else break; } /** ************************************************* */ Point p = t.getPointAtDistance(dtv, Path.METHOD_LEFT); info.initialize( p, t.getPrevNode(), t.getLeftDistance() - dtv, info.getTotalDistanceInPath() - distanceFromCurPoint, this, distanceFromCurPoint); // t.setActive(false); // Helper.printKeyVal("Step 2: New Node index: ", info.getPath().nodes.indexOf(t)); // Helper.printKeyVal("Step 2: New Node index: ", // info.getPath().nodes.indexOf(t.getPrevNode())); // Helper.printKeyVal("Retruning point: ", p.toString()); // Helper.printKeyVal("Retrun: 2", info.getDistance()); }