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); } }
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)); } } } }