public void ReplaceElement(int index, GeneratedElement element) { if (index >= 0 && index < elements.Count) { elements[index] = element; } }
public void AddElement(GeneratedElement element) { if (float.IsNaN(element.Position.x) || float.IsNaN(element.Position.z) || float.IsNaN(element.Position.y) || float.IsNaN(element.EndPosition.x) || float.IsNaN(element.EndPosition.z) || float.IsNaN(element.EndPosition.y)) { Faulty = true; } elements.Add(element); }
public void InsertInbetween(bool straight) { int insertIndex = recentlyHovered.GetComponent <InteractiveCheckpoint>().ElementsIndex; int indexBefore = (insertIndex - 1) < 0 ? copy.Elements.Length - 1 : insertIndex - 1; int indexAfter = (insertIndex + 1) % copy.Elements.Length; if (straight == false || (straight && copy.Elements[indexBefore].GetType() == typeof(GeneratedBezSpline) && copy.Elements[insertIndex].GetType() == typeof(GeneratedBezSpline))) { List <GeneratedElement> newElements = new List <GeneratedElement>(); for (int i = 0; i < insertIndex; i++) { newElements.Add(copy.Elements[i]); } GeneratedElement newElement = null; if (straight) { GeneratedStraight newStraight = new GeneratedStraight(copy.Elements[indexBefore].EndPosition, copy.Elements[indexBefore].EndDirection, 0f, copy.Elements[indexBefore].WidthEnd); newElement = newStraight; } else { GeneratedBezSpline newSpline = new GeneratedBezSpline(copy.Elements[indexBefore].EndPosition, copy.Elements[indexBefore].EndDirection, copy.Elements[indexBefore].EndPosition, copy.Elements[indexBefore].EndDirection, copy.Elements[indexBefore].WidthEnd, copy.Elements[indexBefore].WidthEnd); newElement = newSpline; } newElements.Add(newElement); for (int i = insertIndex; i < copy.Elements.Length; i++) { newElements.Add(copy.Elements[i]); } GeneratedTrack newTrack = new GeneratedTrack(); for (int i = 0; i < newElements.Count; i++) { newTrack.AddElement(newElements[i]); } newTrack.SetTerrainModifier(copy.TerrainModifier); newTrack.Analyze(); SetTrack(newTrack); MakeEditable(); genRendererGUI.EnableEditButtons(); } }