public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        Spline spline = target as Spline;

        if (GUILayout.Button("Add section"))
        {
            GameObject goSplineIdx = new GameObject("Section " + spline.sections.Count);

            GameObject goStart        = new GameObject("Start");
            GameObject goEnd          = new GameObject("End");
            GameObject goStartTangent = new GameObject("Start tangent");
            GameObject goEndTangent   = new GameObject("End tangent");

            goStart.transform.SetParent(goSplineIdx.transform);
            goEnd.transform.SetParent(goSplineIdx.transform);
            goStartTangent.transform.SetParent(goSplineIdx.transform);
            goEndTangent.transform.SetParent(goSplineIdx.transform);

            goSplineIdx.transform.SetParent(spline.transform, false);

            SplineSection section = new SplineSection()
            {
                startPoint   = goStart.transform,
                endPoint     = goEnd.transform,
                startTangent = goStartTangent.transform,
                endTangent   = goEndTangent.transform
            };

            spline.sections.Add(section);
        }
    }
Exemple #2
0
 private void OnDrawGizmos()
 {
     for (int i = 0; i < sections.Count; i++)
     {
         SplineSection splineSection = sections[i];
         if (splineSection.IsValid())
         {
             Gizmos.color = Color.yellow;
             Gizmos.DrawLine(splineSection.startPoint.position, splineSection.startTangent.position);
             Gizmos.DrawLine(splineSection.endPoint.position, splineSection.endTangent.position);
             Gizmos.color = Color.white;
             for (int j = 0; j < 16; j++)
             {
                 Gizmos.DrawLine(splineSection.GetPositionAt(i / 16f), splineSection.GetPositionAt(((float)i + 1) / 16f));
             }
         }
     }
 }