korchoon
5/11/2020 - 3:12 PM

InterpolateFwOnly

IEnumerator Interpolate(float3 p0, float3 p1) {
    var maxProgress = 0f;
    var segmentDelta = p1 - p0;
    var len = math.distance(p1, p0);
    var fwDelta = fwDeltaLen / len;
    var segmentDir = math.normalize(segmentDelta);
    while (true) {
        float3 position = transform.position;
        var progress = fwDelta + math.dot(position - p0, segmentDir) / len;
        progress = math.clamp(progress, 0f, 1f);
        if (progress > maxProgress)
            maxProgress = progress;
        _projectedTarget = math.lerp(p0, p1, maxProgress);
        if (maxProgress == 1f)
            break;

        yield return null;
    }
}