namespace VRTK { using UnityEditor; [CustomEditor(typeof(VRTK_NavMeshData), true)] public class VRTK_NavMeshDataEditor : Editor { public new VRTK_NavMeshData target { get { return base.target as VRTK_NavMeshData; } } private SerializedProperty distanceLimit = null; private bool _showLayers; public override void OnInspectorGUI() { EditorGUILayout.PropertyField(distanceLimit); _showLayers = EditorGUILayout.Foldout(_showLayers, VRTK_EditorUtilities.BuildGUIContent("validAreas")); if (_showLayers) { EditorGUI.indentLevel++; int currentAreas = target.validAreas; string[] areas = GameObjectUtility.GetNavMeshAreaNames(); for (int i = 0; i < areas.Length; i++) { var selected = (currentAreas & (1 << i)) != 0; if (EditorGUILayout.Toggle(areas[i], selected)) { target.validAreas |= (1 << i); } else { target.validAreas &= ~(1 << i); } } EditorGUI.indentLevel--; } } protected virtual void OnEnable() { distanceLimit = serializedObject.FindProperty("distanceLimit"); } } }