From 311cd6d04440cd80385922d3f83213ac2b62d796 Mon Sep 17 00:00:00 2001 From: Marek Mrva Date: Thu, 28 May 2020 12:17:23 +0200 Subject: [PATCH] Add option to ignore trigger colliders when collecting sources --- Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs | 8 ++++++++ Assets/NavMeshComponents/Scripts/NavMeshSurface.cs | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs b/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs index c9f00689..70b27d84 100644 --- a/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs +++ b/Assets/NavMeshComponents/Editor/NavMeshSurfaceEditor.cs @@ -27,6 +27,7 @@ class NavMeshSurfaceEditor : Editor SerializedProperty m_Size; SerializedProperty m_TileSize; SerializedProperty m_UseGeometry; + SerializedProperty m_IgnoreTriggerColliders; SerializedProperty m_VoxelSize; #if NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF @@ -73,6 +74,7 @@ void OnEnable() m_Size = serializedObject.FindProperty("m_Size"); m_TileSize = serializedObject.FindProperty("m_TileSize"); m_UseGeometry = serializedObject.FindProperty("m_UseGeometry"); + m_IgnoreTriggerColliders = serializedObject.FindProperty("m_IgnoreTriggerColliders"); m_VoxelSize = serializedObject.FindProperty("m_VoxelSize"); #if NAVMESHCOMPONENTS_SHOW_NAVMESHDATA_REF @@ -132,6 +134,12 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(m_LayerMask, s_Styles.m_LayerMask); EditorGUILayout.PropertyField(m_UseGeometry); + if ((NavMeshCollectGeometry)m_UseGeometry.enumValueIndex == NavMeshCollectGeometry.PhysicsColliders) + { + EditorGUI.indentLevel++; + EditorGUILayout.PropertyField(m_IgnoreTriggerColliders); + EditorGUI.indentLevel--; + } EditorGUILayout.Space(); diff --git a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs b/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs index 9fd7dab4..f4f02bfa 100644 --- a/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs +++ b/Assets/NavMeshComponents/Scripts/NavMeshSurface.cs @@ -55,6 +55,10 @@ public class NavMeshSurface : MonoBehaviour bool m_IgnoreNavMeshObstacle = true; public bool ignoreNavMeshObstacle { get { return m_IgnoreNavMeshObstacle; } set { m_IgnoreNavMeshObstacle = value; } } + [SerializeField] + bool m_IgnoreTriggerColliders = false; + public bool ignoreTriggerColliders { get { return m_IgnoreTriggerColliders; } set { m_IgnoreTriggerColliders = value; } } + [SerializeField] bool m_OverrideTileSize; public bool overrideTileSize { get { return m_OverrideTileSize; } set { m_OverrideTileSize = value; } } @@ -346,6 +350,9 @@ List CollectSources() if (m_IgnoreNavMeshObstacle) sources.RemoveAll((x) => (x.component != null && x.component.gameObject.GetComponent() != null)); + if (m_UseGeometry == NavMeshCollectGeometry.PhysicsColliders && m_IgnoreTriggerColliders) + sources.RemoveAll((x) => (x.component != null && x.component.gameObject.TryGetComponent(out Collider col) && col.isTrigger)); + AppendModifierVolumes(ref sources); return sources;