Rasagar/Library/PackageCache/com.unity.ai.navigation/Editor/NavMeshModifierEditor.cs

87 lines
2.8 KiB
C#
Raw Normal View History

2024-08-26 13:07:20 -07:00
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();
}
}
}