No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NavMeshModifierEditor.cs 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using UnityEditor;
  2. using UnityEditor.AI;
  3. using UnityEngine.AI;
  4. namespace Unity.AI.Navigation.Editor
  5. {
  6. [CanEditMultipleObjects]
  7. [CustomEditor(typeof(NavMeshModifier))]
  8. class NavMeshModifierEditor : UnityEditor.Editor
  9. {
  10. SerializedProperty m_AffectedAgents;
  11. SerializedProperty m_IgnoreFromBuild;
  12. SerializedProperty m_OverrideArea;
  13. SerializedProperty m_Area;
  14. #if UNITY_2022_2_OR_NEWER
  15. SerializedProperty m_ApplyToChildren;
  16. SerializedProperty m_OverrideGenerateLinks;
  17. SerializedProperty m_GenerateLinks;
  18. #endif
  19. void OnEnable()
  20. {
  21. m_AffectedAgents = serializedObject.FindProperty("m_AffectedAgents");
  22. m_IgnoreFromBuild = serializedObject.FindProperty("m_IgnoreFromBuild");
  23. m_OverrideArea = serializedObject.FindProperty("m_OverrideArea");
  24. m_Area = serializedObject.FindProperty("m_Area");
  25. #if UNITY_2022_2_OR_NEWER
  26. m_ApplyToChildren = serializedObject.FindProperty("m_ApplyToChildren");
  27. m_OverrideGenerateLinks = serializedObject.FindProperty("m_OverrideGenerateLinks");
  28. m_GenerateLinks = serializedObject.FindProperty("m_GenerateLinks");
  29. #endif
  30. #if !UNITY_2022_2_OR_NEWER
  31. NavMeshVisualizationSettings.showNavigation++;
  32. #endif
  33. }
  34. #if !UNITY_2022_2_OR_NEWER
  35. void OnDisable()
  36. {
  37. NavMeshVisualizationSettings.showNavigation--;
  38. }
  39. #endif
  40. public override void OnInspectorGUI()
  41. {
  42. serializedObject.Update();
  43. int mode = m_IgnoreFromBuild.boolValue ? 1 : 0;
  44. string[] choices = { "Add or Modify object", "Remove object" };
  45. mode = EditorGUILayout.Popup("Mode", mode, choices);
  46. m_IgnoreFromBuild.boolValue = mode == 1;
  47. NavMeshComponentsGUIUtility.AgentMaskPopup("Affected Agents", m_AffectedAgents);
  48. #if UNITY_2022_2_OR_NEWER
  49. EditorGUILayout.PropertyField(m_ApplyToChildren);
  50. #endif
  51. if (!m_IgnoreFromBuild.boolValue)
  52. {
  53. EditorGUILayout.PropertyField(m_OverrideArea);
  54. if (m_OverrideArea.boolValue)
  55. {
  56. EditorGUI.indentLevel++;
  57. NavMeshComponentsGUIUtility.AreaPopup("Area Type", m_Area);
  58. EditorGUI.indentLevel--;
  59. }
  60. #if UNITY_2022_2_OR_NEWER
  61. EditorGUILayout.PropertyField(m_OverrideGenerateLinks);
  62. if (m_OverrideGenerateLinks.boolValue)
  63. {
  64. EditorGUI.indentLevel++;
  65. EditorGUILayout.PropertyField(m_GenerateLinks);
  66. EditorGUI.indentLevel--;
  67. }
  68. #endif
  69. }
  70. EditorGUILayout.Space();
  71. serializedObject.ApplyModifiedProperties();
  72. }
  73. }
  74. }