Newer
Older
CGTrack / Assets / Editor / TrackEditor.cs
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();
        }
    }
}