Skip to content

Commit d6b8bcd

Browse files
committed
In the editor collect sources only from either the main stage or the prefab stage.
1 parent 37d41ea commit d6b8bcd

2 files changed

Lines changed: 38 additions & 13 deletions

File tree

Assets/Examples/Editor/NavMeshPrefabInstanceEditor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using UnityEditor;
33
using UnityEngine;
44
using UnityEngine.AI;
5-
using NavMeshBuilder = UnityEngine.AI.NavMeshBuilder;
65

76
[CanEditMultipleObjects]
87
[CustomEditor(typeof(NavMeshPrefabInstance))]
@@ -71,7 +70,8 @@ NavMeshData Build(NavMeshPrefabInstance instance)
7170
var sources = new List<NavMeshBuildSource>();
7271
var markups = new List<NavMeshBuildMarkup>();
7372

74-
NavMeshBuilder.CollectSources(root, ~0, NavMeshCollectGeometry.RenderMeshes, 0, markups, instance.gameObject.scene, sources);
73+
UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage(
74+
root, ~0, NavMeshCollectGeometry.RenderMeshes, 0, markups, instance.gameObject.scene, sources);
7575
var settings = NavMesh.GetSettingsByID(0);
7676
var bounds = new Bounds(Vector3.zero, 1000.0f * Vector3.one);
7777
var navmesh = NavMeshBuilder.BuildNavMeshData(settings, sources, bounds, root.position, root.rotation);

Assets/NavMeshComponents/Scripts/NavMeshSurface.cs

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -299,20 +299,45 @@ List<NavMeshBuildSource> CollectSources()
299299
markups.Add(markup);
300300
}
301301

302-
var scene = gameObject.scene;
303-
if (m_CollectObjects == CollectObjects.All)
304-
{
305-
NavMeshBuilder.CollectSources(null, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, scene, sources);
306-
}
307-
else if (m_CollectObjects == CollectObjects.Children)
302+
#if UNITY_EDITOR
303+
if (!EditorApplication.isPlaying)
308304
{
309-
NavMeshBuilder.CollectSources(transform, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, scene, sources);
305+
if (m_CollectObjects == CollectObjects.All)
306+
{
307+
UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage(
308+
null, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources);
309+
}
310+
else if (m_CollectObjects == CollectObjects.Children)
311+
{
312+
UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage(
313+
transform, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources);
314+
}
315+
else if (m_CollectObjects == CollectObjects.Volume)
316+
{
317+
Matrix4x4 localToWorld = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one);
318+
var worldBounds = GetWorldBounds(localToWorld, new Bounds(m_Center, m_Size));
319+
320+
UnityEditor.AI.NavMeshBuilder.CollectSourcesInStage(
321+
worldBounds, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, gameObject.scene, sources);
322+
}
310323
}
311-
else if (m_CollectObjects == CollectObjects.Volume)
324+
else
325+
#endif
312326
{
313-
Matrix4x4 localToWorld = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one);
314-
var worldBounds = GetWorldBounds(localToWorld, new Bounds(m_Center, m_Size));
315-
NavMeshBuilder.CollectSources(worldBounds, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, scene, sources);
327+
if (m_CollectObjects == CollectObjects.All)
328+
{
329+
NavMeshBuilder.CollectSources(null, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources);
330+
}
331+
else if (m_CollectObjects == CollectObjects.Children)
332+
{
333+
NavMeshBuilder.CollectSources(transform, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources);
334+
}
335+
else if (m_CollectObjects == CollectObjects.Volume)
336+
{
337+
Matrix4x4 localToWorld = Matrix4x4.TRS(transform.position, transform.rotation, Vector3.one);
338+
var worldBounds = GetWorldBounds(localToWorld, new Bounds(m_Center, m_Size));
339+
NavMeshBuilder.CollectSources(worldBounds, m_LayerMask, m_UseGeometry, m_DefaultArea, markups, sources);
340+
}
316341
}
317342

318343
if (m_IgnoreNavMeshAgent)

0 commit comments

Comments
 (0)