UnityEditor.Timeline.GetControls C# (CSharp) Method

GetControls() private method

private GetControls ( List segmentPoints, float scale ) : List
segmentPoints List
scale float
return List
        private List<Vector3> GetControls(List<Vector3> segmentPoints, float scale)
        {
            List<Vector3> list = new List<Vector3>();
            if (segmentPoints.Count >= 2)
            {
                for (int i = 0; i < segmentPoints.Count; i++)
                {
                    if (i == 0)
                    {
                        Vector3 item = segmentPoints[i];
                        Vector3 vector2 = segmentPoints[i + 1];
                        Vector3 vector3 = vector2 - item;
                        Vector3 vector4 = item + ((Vector3) (scale * vector3));
                        list.Add(item);
                        list.Add(vector4);
                    }
                    else if (i == (segmentPoints.Count - 1))
                    {
                        Vector3 vector5 = segmentPoints[i - 1];
                        Vector3 vector6 = segmentPoints[i];
                        Vector3 vector7 = vector6 - vector5;
                        Vector3 vector8 = vector6 - ((Vector3) (scale * vector7));
                        list.Add(vector8);
                        list.Add(vector6);
                    }
                    else
                    {
                        Vector3 vector9 = segmentPoints[i - 1];
                        Vector3 vector10 = segmentPoints[i];
                        Vector3 vector11 = segmentPoints[i + 1];
                        Vector3 vector13 = vector11 - vector9;
                        Vector3 normalized = vector13.normalized;
                        Vector3 vector15 = vector10 - vector9;
                        Vector3 vector14 = vector10 - ((Vector3) ((scale * normalized) * vector15.magnitude));
                        Vector3 vector17 = vector11 - vector10;
                        Vector3 vector16 = vector10 + ((Vector3) ((scale * normalized) * vector17.magnitude));
                        list.Add(vector14);
                        list.Add(vector10);
                        list.Add(vector16);
                    }
                }
            }
            return list;
        }