//box to detect current position nodeTrigger(detect(ygNode), volume(sphere), local(false), when(inside,$node.event(inside,xpos=$xpos,ypos=$ypos))) ygNode(when(inside,currentPosition.values($xpos $ypos))) // "V" = distance between lastPosition and currentPosition subtract deltaPosition(size(2), when(changed,xDelta.set($value),yDelta.set($value1))) { value currentPosition(when(changed,lastPosition.values($value0,$value1)+)) value lastPosition() } //calculate x^2 + y^2 add(when(changed,magnitude.sqrt($value))) { //square x delta and y delta multiply() { value xDelta() value(reference(xDelta)) } multiply() { value yDelta() value(reference(yDelta)) } } //take square root mathematics magnitude(minimum(0)) //box to detect outFront position transform(position(0 5 0)) { nodeTrigger(detect(ygNode), volume(sphere), local(false), when(inside,$node.event(inside,xpos=$xpos,ypos=$ypos))) ygNode(when(inside,outFront.values($xpos $ypos))) } // "F" = distance between currentPosition and outFront subtract distancePosition(size(2)) { value outFront() value (reference(currentPosition)) } // V*F and then added = dot.... multiply(size(2), when(changed,xVal.set($value)), when(changed,yVal.set($value1))) { value(reference(deltaPosition)) value(reference(distancePosition)) } lessThan(when(changedTrue,direction.set(-1)), when(changedFalse,direction.set(1))) { add dotProduct() { value xVal() value yVal() } value(set(0.0)) } multiply velocity() { value(reference(magnitude)) value direction(set(1)) }