using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; [CustomEditor(typeof(Track))] public class TrackEditor : Editor { public override void OnInspectorGUI() { // DrawDefaultInspector(); var track = (Track)target; EditorGUILayout.BeginHorizontal(); var pointPrefab = EditorGUILayout.ObjectField("TrackPoint Prefab", track.pointPrefab, typeof(GameObject), true); if (pointPrefab != null && PrefabUtility.GetPrefabAssetType(pointPrefab) != PrefabAssetType.NotAPrefab) { track.pointPrefab = (GameObject) pointPrefab; } else { track.pointPrefab = null; } EditorGUILayout.EndHorizontal(); track.original = (Mesh) EditorGUILayout.ObjectField("Track mesh", track.original, typeof(Mesh), false); var nextDistance = EditorGUILayout.IntField("Next point distance", track.nextDistance); if (nextDistance > 0) track.nextDistance = nextDistance; if(GUILayout.Button("Add point")) { track.AddPoint(); } EditorGUILayout.Space(); var maxDistance = EditorGUILayout.FloatField("Max subdiv distance", track.maxDistance); if (maxDistance >= 0) track.maxDistance = maxDistance; track.realtimeUpdate = EditorGUILayout.Toggle("Realtime update?", track.realtimeUpdate); track.renderTrack = EditorGUILayout.Toggle("Show track?", track.renderTrack); if(GUILayout.Button("Calculate Spline")) { track.CalculateSpline(); } if(GUILayout.Button("Calculate Track")) { track.CalculateTrack(); } } }