123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using UnityEditor;
- using UnityEditor.AI;
- using UnityEngine.AI;
-
- namespace Unity.AI.Navigation.Editor
- {
- [CanEditMultipleObjects]
- [CustomEditor(typeof(NavMeshModifier))]
- class NavMeshModifierEditor : UnityEditor.Editor
- {
- SerializedProperty m_AffectedAgents;
- SerializedProperty m_IgnoreFromBuild;
- SerializedProperty m_OverrideArea;
- SerializedProperty m_Area;
- #if UNITY_2022_2_OR_NEWER
- SerializedProperty m_ApplyToChildren;
- SerializedProperty m_OverrideGenerateLinks;
- SerializedProperty m_GenerateLinks;
- #endif
-
- void OnEnable()
- {
- m_AffectedAgents = serializedObject.FindProperty("m_AffectedAgents");
- m_IgnoreFromBuild = serializedObject.FindProperty("m_IgnoreFromBuild");
- m_OverrideArea = serializedObject.FindProperty("m_OverrideArea");
- m_Area = serializedObject.FindProperty("m_Area");
- #if UNITY_2022_2_OR_NEWER
- m_ApplyToChildren = serializedObject.FindProperty("m_ApplyToChildren");
- m_OverrideGenerateLinks = serializedObject.FindProperty("m_OverrideGenerateLinks");
- m_GenerateLinks = serializedObject.FindProperty("m_GenerateLinks");
- #endif
- #if !UNITY_2022_2_OR_NEWER
- NavMeshVisualizationSettings.showNavigation++;
- #endif
- }
-
- #if !UNITY_2022_2_OR_NEWER
- void OnDisable()
- {
- NavMeshVisualizationSettings.showNavigation--;
- }
- #endif
-
- public override void OnInspectorGUI()
- {
- serializedObject.Update();
-
- int mode = m_IgnoreFromBuild.boolValue ? 1 : 0;
- string[] choices = { "Add or Modify object", "Remove object" };
-
- mode = EditorGUILayout.Popup("Mode", mode, choices);
-
- m_IgnoreFromBuild.boolValue = mode == 1;
-
- NavMeshComponentsGUIUtility.AgentMaskPopup("Affected Agents", m_AffectedAgents);
-
- #if UNITY_2022_2_OR_NEWER
- EditorGUILayout.PropertyField(m_ApplyToChildren);
- #endif
-
- if (!m_IgnoreFromBuild.boolValue)
- {
- EditorGUILayout.PropertyField(m_OverrideArea);
- if (m_OverrideArea.boolValue)
- {
- EditorGUI.indentLevel++;
- NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area);
- EditorGUI.indentLevel--;
- }
-
- #if UNITY_2022_2_OR_NEWER
- EditorGUILayout.PropertyField(m_OverrideGenerateLinks);
- if (m_OverrideGenerateLinks.boolValue)
- {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(m_GenerateLinks);
- EditorGUI.indentLevel--;
- }
- #endif
- }
-
- EditorGUILayout.Space();
-
- serializedObject.ApplyModifiedProperties();
- }
- }
- }
|