private Vector3[] GetPivotVectors(PivotSample[] samples, float width, Rect rect, float height, bool loop) { if (samples.Length == 0 || width < 0.33f) // not pivots for super small anims { return(new Vector3[0]); } List <Vector3> vectorList = new List <Vector3>(); for (int i = 0; i < samples.Length; i++) { PivotSample s = samples[i]; Vector3 point = Vector3.zero; point.x = m_TimeArea.TimeToPixel(s.m_Time, rect); point.y = height / 16 + s.m_Weight * 12 * height / 16; vectorList.Add(point); } if (loop && vectorList[vectorList.Count - 1].x <= rect.width) { float pos = vectorList[vectorList.Count - 1].x; int iterator = 0; int multiplier = 1; List <Vector3> loopVectors = new List <Vector3>(); while (pos < rect.width) { if (iterator > vectorList.Count - 1) { iterator = 0; multiplier++; } Vector3 point = vectorList[iterator]; point.x += (multiplier * width); pos = point.x; loopVectors.Add(point); iterator++; } vectorList.AddRange(loopVectors); } List <Vector3> controls = GetControls(vectorList, .5f); vectorList.Clear(); for (int i = 0; i < controls.Count - 3; i += 3) { Vector3 p0 = controls[i]; Vector3 p1 = controls[i + 1]; Vector3 p2 = controls[i + 2]; Vector3 p3 = controls[i + 3]; if (i == 0) { vectorList.Add(CalculatePoint(0, p0, p1, p2, p3)); } for (int j = 1; j <= 10; j++) { vectorList.Add(CalculatePoint(j / 10f, p0, p1, p2, p3)); } } return(vectorList.ToArray()); }
private Vector3[] GetPivotVectors(PivotSample[] samples, float width, Rect rect, float height, bool loop) { if ((samples.Length == 0) || (width < 0.33f)) { return(new Vector3[0]); } List <Vector3> segmentPoints = new List <Vector3>(); for (int i = 0; i < samples.Length; i++) { PivotSample sample = samples[i]; Vector3 zero = Vector3.zero; zero.x = this.m_TimeArea.TimeToPixel(sample.m_Time, rect); zero.y = (height / 16f) + (((sample.m_Weight * 12f) * height) / 16f); segmentPoints.Add(zero); } if (loop) { Vector3 vector7 = segmentPoints[segmentPoints.Count - 1]; if (vector7.x <= rect.width) { Vector3 vector8 = segmentPoints[segmentPoints.Count - 1]; float x = vector8.x; int num3 = 0; int num4 = 1; List <Vector3> collection = new List <Vector3>(); while (x < rect.width) { if (num3 > (segmentPoints.Count - 1)) { num3 = 0; num4++; } Vector3 item = segmentPoints[num3]; item.x += num4 * width; x = item.x; collection.Add(item); num3++; } segmentPoints.AddRange(collection); } } List <Vector3> controls = this.GetControls(segmentPoints, 0.5f); segmentPoints.Clear(); for (int j = 0; j < (controls.Count - 3); j += 3) { Vector3 vector3 = controls[j]; Vector3 vector4 = controls[j + 1]; Vector3 vector5 = controls[j + 2]; Vector3 vector6 = controls[j + 3]; if (j == 0) { segmentPoints.Add(this.CalculatePoint(0f, vector3, vector4, vector5, vector6)); } for (int k = 1; k <= 10; k++) { segmentPoints.Add(this.CalculatePoint(((float)k) / 10f, vector3, vector4, vector5, vector6)); } } return(segmentPoints.ToArray()); }
private Vector3[] GetPivotVectors(PivotSample[] samples, float width, Rect rect, float height, bool loop) { if ((samples.Length == 0) || (width < 0.33f)) { return new Vector3[0]; } List<Vector3> segmentPoints = new List<Vector3>(); for (int i = 0; i < samples.Length; i++) { PivotSample sample = samples[i]; Vector3 zero = Vector3.zero; zero.x = this.m_TimeArea.TimeToPixel(sample.m_Time, rect); zero.y = (height / 16f) + (((sample.m_Weight * 12f) * height) / 16f); segmentPoints.Add(zero); } if (loop) { Vector3 vector7 = segmentPoints[segmentPoints.Count - 1]; if (vector7.x <= rect.width) { Vector3 vector8 = segmentPoints[segmentPoints.Count - 1]; float x = vector8.x; int num3 = 0; int num4 = 1; List<Vector3> collection = new List<Vector3>(); while (x < rect.width) { if (num3 > (segmentPoints.Count - 1)) { num3 = 0; num4++; } Vector3 item = segmentPoints[num3]; item.x += num4 * width; x = item.x; collection.Add(item); num3++; } segmentPoints.AddRange(collection); } } List<Vector3> controls = this.GetControls(segmentPoints, 0.5f); segmentPoints.Clear(); for (int j = 0; j < (controls.Count - 3); j += 3) { Vector3 vector3 = controls[j]; Vector3 vector4 = controls[j + 1]; Vector3 vector5 = controls[j + 2]; Vector3 vector6 = controls[j + 3]; if (j == 0) { segmentPoints.Add(this.CalculatePoint(0f, vector3, vector4, vector5, vector6)); } for (int k = 1; k <= 10; k++) { segmentPoints.Add(this.CalculatePoint(((float) k) / 10f, vector3, vector4, vector5, vector6)); } } return segmentPoints.ToArray(); }