IEnumerator ChangeShape(Vector3[] newShape, LINE line, float Seconds) { cycling = true;//technically this isnt the best way to handle cycling. float StartTime = Time.time; for (int i = 0; i < line.offset; i++) { Cycle(newShape); } while (Time.time - StartTime < Seconds) { if (cycle) { line.Cycle(); Cycle(newShape); } for (int i = 0; i < 128; i++) { line.points[i] = Vector3.Lerp(line.points[i], newShape[i], (Time.time - StartTime) / (Seconds + Time.time - StartTime) / Seconds / 3); } line.SetPositions(); yield return(null); } line.points = newShape; line.SetPositions(); cycling = false; }
//function for a horizontal line public void horiz_line(float width, float y, LINE line, bool instant = false) { Vector3[] horiz_line = new Vector3[128]; horiz_line[0] = new Vector3(-width / 2, y); horiz_line[127] = new Vector3(width / 2, y); for (int i = 0; i < 128; i++) { horiz_line[i] = Vector3.Lerp(horiz_line[0], horiz_line[127], i / 127f); } if (instant) { line.points = horiz_line; line.SetPositions(); } else { StartCoroutine(ChangeShape(horiz_line, line, 9)); } }