Ejemplo n.º 1
0
    void Update()
    {
        //clean memory and skip this frame
        if (shouldClean)
        {
            shouldClean = false;
            BezierCurves.CleanMemory();
            return;
        }

        //if there are 3 childrens, calculate quadratic curves
        if (transform.childCount == 3)
        {
            lerpBezierPos = BezierCurves.Quadratic(
                transform.GetChild(0).position,
                transform.GetChild(1).position,
                transform.GetChild(2).position,
                t
                );
            bezierPoints = BezierCurves.QuadraticPointsList(
                transform.GetChild(0).position,
                transform.GetChild(1).position,
                transform.GetChild(2).position,
                pointsNumber
                );
        }
        //if there are 4 childrens, calculate cubic curves
        else if (transform.childCount == 4)
        {
            lerpBezierPos = BezierCurves.Cubic(
                transform.GetChild(0).position,
                transform.GetChild(1).position,
                transform.GetChild(2).position,
                transform.GetChild(3).position,
                t
                );
            bezierPoints = BezierCurves.CubicPointsList(
                transform.GetChild(0).position,
                transform.GetChild(1).position,
                transform.GetChild(2).position,
                transform.GetChild(3).position,
                pointsNumber
                );
        }
        //else if the are more than 4, calculate generic curves
        else if (transform.childCount > 4)
        {
            controlPoints = new List <Vector3>();
            for (int i = 0; i < transform.childCount; i++)
            {
                controlPoints.Add(transform.GetChild(i).position);
            }
            lerpBezierPos = BezierCurves.Generic(controlPoints, t);
            bezierPoints  = BezierCurves.GenericPointsList(controlPoints, pointsNumber);
        }
    }