mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2024-09-20 06:11:54 +00:00
fix navmesh generation
This commit is contained in:
parent
7ebc1ea9bf
commit
0dc2a4c42d
1 changed files with 20 additions and 7 deletions
|
@ -5,6 +5,8 @@ using UnityEngine.AI;
|
|||
using SanAndreasUnity.Behaviours.World;
|
||||
using System.Collections;
|
||||
using SanAndreasUnity.Utilities;
|
||||
using UnityEditor.SceneManagement;
|
||||
using SanAndreasUnity.Behaviours;
|
||||
|
||||
namespace SanAndreasUnity.Editor
|
||||
{
|
||||
|
@ -12,6 +14,7 @@ namespace SanAndreasUnity.Editor
|
|||
{
|
||||
private static int s_selectedAgentId = 0;
|
||||
[SerializeField] private NavMeshData m_navMeshData;
|
||||
private NavMeshDataInstance m_navMeshDataInstance = new NavMeshDataInstance();
|
||||
private static CoroutineInfo s_coroutine;
|
||||
|
||||
|
||||
|
@ -94,7 +97,13 @@ namespace SanAndreasUnity.Editor
|
|||
if (m_navMeshData != null)
|
||||
{
|
||||
NavMeshBuilder.Cancel(m_navMeshData);
|
||||
F.DestroyEvenInEditMode(m_navMeshData);
|
||||
|
||||
NavMesh.RemoveNavMeshData(m_navMeshDataInstance);
|
||||
m_navMeshDataInstance = new NavMeshDataInstance();
|
||||
|
||||
if (!AssetDatabase.Contains(m_navMeshData))
|
||||
F.DestroyEvenInEditMode(m_navMeshData);
|
||||
|
||||
m_navMeshData = null;
|
||||
}
|
||||
}
|
||||
|
@ -195,13 +204,14 @@ namespace SanAndreasUnity.Editor
|
|||
if (!EditorUtility.DisplayDialog("", $"Found total of {numObjects} objects with {navMeshBuildSources.Count} sources. Proceed ?", "Ok", "Cancel"))
|
||||
yield break;
|
||||
|
||||
/*UnityEditor.AI.NavMeshBuilder.ClearAllNavMeshes();
|
||||
NavMesh.RemoveAllNavMeshData();*/
|
||||
|
||||
if (m_navMeshData == null)
|
||||
{
|
||||
m_navMeshData = new NavMeshData(s_selectedAgentId);
|
||||
NavMesh.AddNavMeshData(m_navMeshData);
|
||||
m_navMeshData = NavMeshBuilder.BuildNavMeshData(
|
||||
navMeshBuildSettings,
|
||||
new List<NavMeshBuildSource>(),
|
||||
new Bounds(),
|
||||
cell.transform.position,
|
||||
cell.transform.rotation);
|
||||
}
|
||||
|
||||
var asyncOperation = NavMeshBuilder.UpdateNavMeshDataAsync(
|
||||
|
@ -212,7 +222,7 @@ namespace SanAndreasUnity.Editor
|
|||
|
||||
var etaMeasurer = new ETAMeasurer(2f);
|
||||
|
||||
while (!(asyncOperation.isDone || asyncOperation.progress == 1f))
|
||||
while (!asyncOperation.isDone)
|
||||
{
|
||||
yield return null;
|
||||
|
||||
|
@ -230,6 +240,9 @@ namespace SanAndreasUnity.Editor
|
|||
yield break;
|
||||
}
|
||||
|
||||
m_navMeshDataInstance = NavMesh.AddNavMeshData(m_navMeshData);
|
||||
EditorSceneManager.MarkSceneDirty(cell.gameObject.scene);
|
||||
|
||||
EditorUtility.ClearProgressBar();
|
||||
EditorUtility.DisplayDialog("", "Nav mesh generation complete !", "Ok");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue