/// <summary> /// Initialises a new instance of the <see cref="CameraPathInterpolator" /> class. /// </summary> /// <param name="points">The list of nodes along a complete camera path.</param> /// <param name="target">The target, if any, that the camera focusses on as it traverses the path.</param> internal CameraPathInterpolator(IEnumerable <CameraPoint> points, Vec3d target = null) { _cameraPath = points.ToList(); // NOTE: We don't count the origin position in the count here. _nodesToTravel = _cameraPath.Count - 1; _point = new CameraPoint(); var linearPath = _cameraPath.Count == 2; var tmpInterpolator = linearPath ? LinearInterpolator.Create(_point) : CubicInterpolator.Create(_point); _interpolator = target != null ? TargetInterpolator.Create(tmpInterpolator, _point, target) : tmpInterpolator; }
/// <summary> /// Initialises a new instance of the <see cref="TargetInterpolator" /> class. /// </summary> /// <param name="interpolator">The base interpolator to use for position and additional angles.</param> /// <param name="point">The camera point to transpose values into.</param> /// <param name="targetPos">The target position for the camera to focus on.</param> internal static ICameraPointInterpolator Create( ICameraPointInterpolator interpolator, CameraPoint point, Vec3d targetPos) { return(new TargetInterpolator(interpolator, point, targetPos)); }
/// <summary> /// Initialises a new instance of the <see cref="TargetInterpolator" /> class. /// </summary> /// <param name="interpolator">The base interpolator to use for position and additional angles.</param> /// <param name="point">The camera point to transpose values into.</param> /// <param name="targetPos">The target position for the camera to focus on.</param> private TargetInterpolator(ICameraPointInterpolator interpolator, CameraPoint point, Vec3d targetPos) : base(point) { (Interpolator, TargetPos) = (interpolator, targetPos); }