code: private void moveTo(double extrp, int dx, int dy)
      {
          final Force force = getMovementForce(transformable.getX(), transformable.getY(), dx, dy);
          final double sx = force.getDirectionHorizontal();
          final double sy = force.getDirectionVertical();
  
          // Move object
          moveX = sx;
          moveY = sy;
          transformable.moveLocation(extrp, force);
          moving = true;
  
          // Object arrived, next step
          final boolean arrivedX = checkArrivedX(extrp, sx, dx);
          final boolean arrivedY = checkArrivedY(extrp, sy, dy);
  
          if (arrivedX && arrivedY)
          {
              // When object arrived on next step, we place it on step location, in order to avoid bug
              // (to be sure object location is correct)
              setLocation(path.getX(currentStep), path.getY(currentStep));
  
              // Go to next step
              final int next = currentStep + 1;
              if (currentStep < getMaxStep() - 1)
              {
                  updateObjectId(currentStep, next);
              }
              if (!pathStoppedRequested && !skip)
              {
                  currentStep = next;
              }
              // Check if a new path has been assigned (this allow the object to change its path before finishing it)
              if (currentStep > 0 && !skip)
              {
                  checkPathfinderChanges();
              }
          }
      }
docs: Move to destination.
  
  @param extrp The extrapolation value.
  @param dx The destination horizontal location.
  @param dy The destination vertical location.