UnityEditor.NormalCurveRenderer.DrawCurveWrapped C# (CSharp) Method

DrawCurveWrapped() public static method

public static DrawCurveWrapped ( float minTime, float maxTime, float rangeStart, float rangeEnd, WrapMode preWrap, WrapMode postWrap, Color color, Matrix4x4 transform, Vector3 points, Color wrapColor ) : void
minTime float
maxTime float
rangeStart float
rangeEnd float
preWrap WrapMode
postWrap WrapMode
color Color
transform UnityEngine.Matrix4x4
points Vector3
wrapColor Color
return void
        public static void DrawCurveWrapped(float minTime, float maxTime, float rangeStart, float rangeEnd, WrapMode preWrap, WrapMode postWrap, Color color, Matrix4x4 transform, Vector3[] points, Color wrapColor)
        {
            if (points.Length != 0)
            {
                int num;
                int num2;
                if ((rangeEnd - rangeStart) != 0f)
                {
                    num = Mathf.FloorToInt((minTime - rangeStart) / (rangeEnd - rangeStart));
                    num2 = Mathf.CeilToInt((maxTime - rangeEnd) / (rangeEnd - rangeStart));
                    if (num < -100)
                    {
                        preWrap = WrapMode.Once;
                    }
                    if (num2 > 100)
                    {
                        postWrap = WrapMode.Once;
                    }
                }
                else
                {
                    preWrap = WrapMode.Once;
                    postWrap = WrapMode.Once;
                    num = (minTime >= rangeStart) ? 0 : -1;
                    num2 = (maxTime <= rangeEnd) ? 0 : 1;
                }
                int index = points.Length - 1;
                Handles.color = color;
                List<Vector3> list = new List<Vector3>();
                if ((num <= 0) && (num2 >= 0))
                {
                    DrawPolyLine(transform, 2f, points);
                }
                else
                {
                    Handles.DrawPolyLine(points);
                }
                Handles.color = new Color(wrapColor.r, wrapColor.g, wrapColor.b, wrapColor.a * color.a);
                if (preWrap == WrapMode.Loop)
                {
                    list = new List<Vector3>();
                    for (int i = num; i < 0; i++)
                    {
                        for (int j = 0; j < points.Length; j++)
                        {
                            Vector3 v = points[j];
                            v.x += i * (rangeEnd - rangeStart);
                            v = transform.MultiplyPoint(v);
                            list.Add(v);
                        }
                    }
                    list.Add(transform.MultiplyPoint(points[0]));
                    Handles.DrawPolyLine(list.ToArray());
                }
                else if (preWrap == WrapMode.PingPong)
                {
                    list = new List<Vector3>();
                    for (int k = num; k < 0; k++)
                    {
                        for (int m = 0; m < points.Length; m++)
                        {
                            if ((k / 2) == (((float) k) / 2f))
                            {
                                Vector3 vector2 = points[m];
                                vector2.x += k * (rangeEnd - rangeStart);
                                vector2 = transform.MultiplyPoint(vector2);
                                list.Add(vector2);
                            }
                            else
                            {
                                Vector3 vector3 = points[index - m];
                                vector3.x = (-vector3.x + ((k + 1) * (rangeEnd - rangeStart))) + (rangeStart * 2f);
                                vector3 = transform.MultiplyPoint(vector3);
                                list.Add(vector3);
                            }
                        }
                    }
                    Handles.DrawPolyLine(list.ToArray());
                }
                else if (num < 0)
                {
                    Vector3[] vectorArray1 = new Vector3[] { transform.MultiplyPoint(new Vector3(minTime, points[0].y, 0f)), transform.MultiplyPoint(new Vector3(Mathf.Min(maxTime, points[0].x), points[0].y, 0f)) };
                    Handles.DrawPolyLine(vectorArray1);
                }
                if (postWrap == WrapMode.Loop)
                {
                    list = new List<Vector3> {
                        transform.MultiplyPoint(points[index])
                    };
                    for (int n = 1; n <= num2; n++)
                    {
                        for (int num9 = 0; num9 < points.Length; num9++)
                        {
                            Vector3 vector4 = points[num9];
                            vector4.x += n * (rangeEnd - rangeStart);
                            vector4 = transform.MultiplyPoint(vector4);
                            list.Add(vector4);
                        }
                    }
                    Handles.DrawPolyLine(list.ToArray());
                }
                else if (postWrap == WrapMode.PingPong)
                {
                    list = new List<Vector3>();
                    for (int num10 = 1; num10 <= num2; num10++)
                    {
                        for (int num11 = 0; num11 < points.Length; num11++)
                        {
                            if ((num10 / 2) == (((float) num10) / 2f))
                            {
                                Vector3 vector5 = points[num11];
                                vector5.x += num10 * (rangeEnd - rangeStart);
                                vector5 = transform.MultiplyPoint(vector5);
                                list.Add(vector5);
                            }
                            else
                            {
                                Vector3 vector6 = points[index - num11];
                                vector6.x = (-vector6.x + ((num10 + 1) * (rangeEnd - rangeStart))) + (rangeStart * 2f);
                                vector6 = transform.MultiplyPoint(vector6);
                                list.Add(vector6);
                            }
                        }
                    }
                    Handles.DrawPolyLine(list.ToArray());
                }
                else if (num2 > 0)
                {
                    Vector3[] vectorArray2 = new Vector3[] { transform.MultiplyPoint(new Vector3(Mathf.Max(minTime, points[index].x), points[index].y, 0f)), transform.MultiplyPoint(new Vector3(maxTime, points[index].y, 0f)) };
                    Handles.DrawPolyLine(vectorArray2);
                }
            }
        }

Same methods

NormalCurveRenderer::DrawCurveWrapped ( float minTime, float maxTime, float rangeStart, float rangeEnd, WrapMode preWrap, WrapMode postWrap, Mesh mesh, Vector3 firstPoint, Vector3 lastPoint, Matrix4x4 transform, Color color, Color wrapColor ) : void

Usage Example

示例#1
0
        public void DrawCurve(float minTime, float maxTime, Color color, Matrix4x4 transform, int component, Color wrapColor)
        {
            if ((double)minTime < (double)this.cachedRangeStart || (double)maxTime > (double)this.cachedRangeEnd)
            {
                this.CalculateCurves(minTime, maxTime);
                if ((double)minTime <= (double)this.rangeStart && (double)maxTime >= (double)this.rangeEnd)
                {
                    this.cachedRangeStart = float.NegativeInfinity;
                    this.cachedRangeEnd   = float.PositiveInfinity;
                }
                else
                {
                    this.cachedRangeStart = minTime;
                    this.cachedRangeEnd   = maxTime;
                }
            }
            List <Vector3> vector3List = new List <Vector3>();

            using (SortedDictionary <float, Vector3> .Enumerator enumerator = this.points.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    KeyValuePair <float, Vector3> current = enumerator.Current;
                    vector3List.Add(new Vector3(current.Key, current.Value[component]));
                }
            }
            NormalCurveRenderer.DrawCurveWrapped(minTime, maxTime, this.rangeStart, this.rangeEnd, this.preWrapMode, this.postWrapMode, color, transform, vector3List.ToArray(), wrapColor);
        }
All Usage Examples Of UnityEditor.NormalCurveRenderer::DrawCurveWrapped