491 */ 492 @Override 493 public void interpolate(double frac) { 494 if (!Double.isNaN(startX)) { 495 cachedNode.setTranslateX(startX + frac * deltaX); 496 } 497 if (!Double.isNaN(startY)) { 498 cachedNode.setTranslateY(startY + frac * deltaY); 499 } 500 if (!Double.isNaN(startZ)) { 501 cachedNode.setTranslateZ(startZ + frac * deltaZ); 502 } 503 } 504 505 private Node getTargetNode() { 506 final Node node = getNode(); 507 return (node != null)? node : getParentTargetNode(); 508 } 509 510 @Override 511 boolean impl_startable(boolean forceSync) { 512 return super.impl_startable(forceSync) 513 && ((getTargetNode() != null) || (!forceSync && (cachedNode != null))); 514 } 515 516 @Override 517 void impl_sync(boolean forceSync) { 518 super.impl_sync(forceSync); 519 if (forceSync || (cachedNode == null)) { 520 cachedNode = getTargetNode(); 521 522 final double _fromX = getFromX(); 523 final double _fromY = getFromY(); 524 final double _fromZ = getFromZ(); 525 526 final double _toX = getToX(); 527 final double _toY = getToY(); 528 final double _toZ = getToZ(); 529 530 final double _byX = getByX(); 531 final double _byY = getByY(); 532 final double _byZ = getByZ(); 533 534 if (Double.isNaN(_fromX) && Double.isNaN(_toX) && (Math.abs(_byX) < EPSILON)) { 535 startX = Double.NaN; 536 } else { 537 startX = (!Double.isNaN(_fromX)) ? _fromX : cachedNode.getTranslateX(); 538 deltaX = (!Double.isNaN(_toX)) ? _toX - startX : _byX; | 491 */ 492 @Override 493 public void interpolate(double frac) { 494 if (!Double.isNaN(startX)) { 495 cachedNode.setTranslateX(startX + frac * deltaX); 496 } 497 if (!Double.isNaN(startY)) { 498 cachedNode.setTranslateY(startY + frac * deltaY); 499 } 500 if (!Double.isNaN(startZ)) { 501 cachedNode.setTranslateZ(startZ + frac * deltaZ); 502 } 503 } 504 505 private Node getTargetNode() { 506 final Node node = getNode(); 507 return (node != null)? node : getParentTargetNode(); 508 } 509 510 @Override 511 boolean startable(boolean forceSync) { 512 return super.startable(forceSync) 513 && ((getTargetNode() != null) || (!forceSync && (cachedNode != null))); 514 } 515 516 @Override 517 void sync(boolean forceSync) { 518 super.sync(forceSync); 519 if (forceSync || (cachedNode == null)) { 520 cachedNode = getTargetNode(); 521 522 final double _fromX = getFromX(); 523 final double _fromY = getFromY(); 524 final double _fromZ = getFromZ(); 525 526 final double _toX = getToX(); 527 final double _toY = getToY(); 528 final double _toZ = getToZ(); 529 530 final double _byX = getByX(); 531 final double _byY = getByY(); 532 final double _byZ = getByZ(); 533 534 if (Double.isNaN(_fromX) && Double.isNaN(_toX) && (Math.abs(_byX) < EPSILON)) { 535 startX = Double.NaN; 536 } else { 537 startX = (!Double.isNaN(_fromX)) ? _fromX : cachedNode.getTranslateX(); 538 deltaX = (!Double.isNaN(_toX)) ? _toX - startX : _byX; |