private float SmoothStepInterpolation(float percentage)
    {
        int             index  = GetLastPointIndex(percentage);
        CameraPathSpeed pointP = (CameraPathSpeed)GetPoint(index);
        CameraPathSpeed pointQ = (CameraPathSpeed)GetPoint(index + 1);

        if (percentage < pointP.percent)
        {
            return(pointP.speed);
        }
        if (percentage > pointQ.percent)
        {
            return(pointQ.speed);
        }

        float startPercentage = pointP.percent;
        float endPercentage   = pointQ.percent;

        if (startPercentage > endPercentage)
        {
            endPercentage += 1;
        }

        float curveLength     = endPercentage - startPercentage;
        float curvePercentage = percentage - startPercentage;
        float ct = curvePercentage / curveLength;

        return(Mathf.Lerp(pointP.speed, pointQ.speed, CPMath.SmoothStep(ct)));
    }
Exemple #2
0
    private float SmoothStepInterpolation(float percentage)
    {
        int             lastPointIndex   = base.GetLastPointIndex(percentage);
        CameraPathSpeed cameraPathSpeed  = (CameraPathSpeed)base.GetPoint(lastPointIndex);
        CameraPathSpeed cameraPathSpeed2 = (CameraPathSpeed)base.GetPoint(lastPointIndex + 1);

        if (percentage < cameraPathSpeed.percent)
        {
            return(cameraPathSpeed.speed);
        }
        if (percentage > cameraPathSpeed2.percent)
        {
            return(cameraPathSpeed2.speed);
        }
        float percent = cameraPathSpeed.percent;
        float num     = cameraPathSpeed2.percent;

        if (percent > num)
        {
            num += 1f;
        }
        float num2 = num - percent;
        float num3 = percentage - percent;
        float val  = num3 / num2;

        return(Mathf.Lerp(cameraPathSpeed.speed, cameraPathSpeed2.speed, CPMath.SmoothStep(val)));
    }
Exemple #3
0
    private float SmoothStepInterpolation(float percentage)
    {
        int           index  = GetLastPointIndex(percentage);
        CameraPathFOV pointP = (CameraPathFOV)GetPoint(index);
        CameraPathFOV pointQ = (CameraPathFOV)GetPoint(index + 1);

//        if (percentage < pointP.percent)
//            return pointP.FOV;
//        if (percentage > pointQ.percent)
//            return pointQ.FOV;

        float startPercentage = pointP.percent;
        float endPercentage   = pointQ.percent;

        if (startPercentage > endPercentage)
        {
            endPercentage += 1;
        }

        float curveLength     = endPercentage - startPercentage;
        float curvePercentage = percentage - startPercentage;
        float ct = curvePercentage / curveLength;

//        Debug.DrawLine(cameraPath.GetPathPosition(percentage, true), pointP.worldPosition, Color.blue);
//        Debug.DrawLine(cameraPath.GetPathPosition(percentage, true), pointQ.worldPosition, Color.red);

        return(Mathf.Lerp(pointP.FOV, pointQ.FOV, CPMath.SmoothStep(ct)));
    }
Exemple #4
0
    private float SmoothStepInterpolation(float percentage)
    {
        int            index  = GetLastPointIndex(percentage);
        CameraPathTilt pointP = (CameraPathTilt)GetPoint(index);
        CameraPathTilt pointQ = (CameraPathTilt)GetPoint(index + 1);

//        if (percentage < pointP.percent)
//            return pointP.tilt;
//        if (percentage > pointQ.percent)
//            return pointQ.tilt;

        float startPercentage = pointP.percent;
        float endPercentage   = pointQ.percent;

        if (startPercentage > endPercentage)
        {
            endPercentage += 1;
        }

        float curveLength     = endPercentage - startPercentage;
        float curvePercentage = percentage - startPercentage;
        float ct = curvePercentage / curveLength;

        return(Mathf.LerpAngle(pointP.tilt, pointQ.tilt, CPMath.SmoothStep(ct)));
    }
Exemple #5
0
    public Vector3 GetPathPosition(float percentage, bool ignoreNormalisation)
    {
        if (this.realNumberOfPoints < 2)
        {
            Debug.LogError("Not enough points to define a curve");
            if (this.realNumberOfPoints == 1)
            {
                return(this._points.get_Item(0).worldPosition);
            }
            return(Vector3.get_zero());
        }
        else
        {
            if (!ignoreNormalisation)
            {
                percentage = this.ParsePercentage(percentage);
            }
            float num  = 1f / (float)this.numberOfCurves;
            int   num2 = Mathf.FloorToInt(percentage / num);
            float num3 = Mathf.Clamp01((percentage - (float)num2 * num) * (float)this.numberOfCurves);
            CameraPathControlPoint point  = this.GetPoint(num2);
            CameraPathControlPoint point2 = this.GetPoint(num2 + 1);
            if (point == null || point2 == null)
            {
                return(Vector3.get_zero());
            }
            switch (this.interpolation)
            {
            case CameraPath.Interpolation.Linear:
                return(Vector3.Lerp(point.worldPosition, point2.worldPosition, num3));

            case CameraPath.Interpolation.SmoothStep:
                return(Vector3.Lerp(point.worldPosition, point2.worldPosition, CPMath.SmoothStep(num3)));

            case CameraPath.Interpolation.CatmullRom:
            {
                CameraPathControlPoint point3 = this.GetPoint(num2 - 1);
                CameraPathControlPoint point4 = this.GetPoint(num2 + 2);
                return(CPMath.CalculateCatmullRom(point3.worldPosition, point.worldPosition, point2.worldPosition, point4.worldPosition, num3));
            }

            case CameraPath.Interpolation.Hermite:
            {
                CameraPathControlPoint point3 = this.GetPoint(num2 - 1);
                CameraPathControlPoint point4 = this.GetPoint(num2 + 2);
                return(CPMath.CalculateHermite(point3.worldPosition, point.worldPosition, point2.worldPosition, point4.worldPosition, num3, this.hermiteTension, this.hermiteBias));
            }

            case CameraPath.Interpolation.Bezier:
                return(CPMath.CalculateBezier(num3, point.worldPosition, point.forwardControlPointWorld, point2.backwardControlPointWorld, point2.worldPosition));

            default:
                return(Vector3.get_zero());
            }
        }
    }
    private float SmoothStepInterpolation(float percentage)
    {
        int            lastPointIndex  = base.GetLastPointIndex(percentage);
        CameraPathTilt cameraPathTilt  = (CameraPathTilt)base.GetPoint(lastPointIndex);
        CameraPathTilt cameraPathTilt2 = (CameraPathTilt)base.GetPoint(lastPointIndex + 1);
        float          percent         = cameraPathTilt.percent;
        float          num             = cameraPathTilt2.percent;

        if (percent > num)
        {
            num += 1f;
        }
        float num2 = num - percent;
        float num3 = percentage - percent;
        float val  = num3 / num2;

        return(Mathf.LerpAngle(cameraPathTilt.tilt, cameraPathTilt2.tilt, CPMath.SmoothStep(val)));
    }
    private float SmoothStepInterpolation(float percentage, CameraPathFOVList.ProjectionType projectionType)
    {
        int           lastPointIndex = base.GetLastPointIndex(percentage);
        CameraPathFOV cameraPathFOV  = (CameraPathFOV)base.GetPoint(lastPointIndex);
        CameraPathFOV cameraPathFOV2 = (CameraPathFOV)base.GetPoint(lastPointIndex + 1);
        float         percent        = cameraPathFOV.percent;
        float         num            = cameraPathFOV2.percent;

        if (percent > num)
        {
            num += 1f;
        }
        float num2 = num - percent;
        float num3 = percentage - percent;
        float val  = num3 / num2;
        float num4 = (projectionType != CameraPathFOVList.ProjectionType.FOV) ? cameraPathFOV.Size : cameraPathFOV.FOV;
        float num5 = (projectionType != CameraPathFOVList.ProjectionType.FOV) ? cameraPathFOV2.Size : cameraPathFOV2.FOV;

        return(Mathf.Lerp(num4, num5, CPMath.SmoothStep(val)));
    }
Exemple #8
0
    private Quaternion SmootStepInterpolation(float percentage)
    {
        int index = GetLastPointIndex(percentage);
        CameraPathOrientation pointP = (CameraPathOrientation)GetPoint(index);
        CameraPathOrientation pointQ = (CameraPathOrientation)GetPoint(index + 1);

        float startPercentage = pointP.percent;
        float endPercentage   = pointQ.percent;

        if (startPercentage > endPercentage)
        {
            endPercentage += 1;
        }

        float curveLength     = endPercentage - startPercentage;
        float curvePercentage = percentage - startPercentage;
        float ct = curvePercentage / curveLength;

        Quaternion returnQ = Quaternion.Lerp(pointP.rotation, pointQ.rotation, CPMath.SmoothStep(ct));

        return(returnQ);
    }
    private float SmoothStepInterpolation(float percentage, ProjectionType projectionType)
    {
        int           index  = GetLastPointIndex(percentage);
        CameraPathFOV pointP = (CameraPathFOV)GetPoint(index);
        CameraPathFOV pointQ = (CameraPathFOV)GetPoint(index + 1);

        float startPercentage = pointP.percent;
        float endPercentage   = pointQ.percent;

        if (startPercentage > endPercentage)
        {
            endPercentage += 1;
        }

        float curveLength     = endPercentage - startPercentage;
        float curvePercentage = percentage - startPercentage;
        float ct = curvePercentage / curveLength;

        float valueA = (projectionType == ProjectionType.FOV) ? pointP.FOV : pointP.Size;
        float valueB = (projectionType == ProjectionType.FOV) ? pointQ.FOV : pointQ.Size;

        return(Mathf.Lerp(valueA, valueB, CPMath.SmoothStep(ct)));
    }
Exemple #10
0
    private Quaternion SmootStepInterpolation(float percentage)
    {
        int lastPointIndex = base.GetLastPointIndex(percentage);
        CameraPathOrientation cameraPathOrientation  = (CameraPathOrientation)base.GetPoint(lastPointIndex);
        CameraPathOrientation cameraPathOrientation2 = (CameraPathOrientation)base.GetPoint(lastPointIndex + 1);
        float percent = cameraPathOrientation.percent;
        float num     = cameraPathOrientation2.percent;

        if (percent > num)
        {
            num += 1f;
        }
        float num2 = num - percent;
        float num3 = percentage - percent;
        float val  = num3 / num2;

        return(Quaternion.Lerp(cameraPathOrientation.rotation, cameraPathOrientation2.rotation, CPMath.SmoothStep(val)));
    }