87 lines
2.8 KiB
C#
87 lines
2.8 KiB
C#
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();
|
|
}
|
|
}
|
|
} |