Пример #1
0
 public void ReplaceElement(int index, GeneratedElement element)
 {
     if (index >= 0 && index < elements.Count)
     {
         elements[index] = element;
     }
 }
Пример #2
0
 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);
 }
Пример #3
0
    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();
        }
    }