bool UpdateNavDataInDatabase() { UnityEngine.Object asset = Resources.Load(resourceFolder + "RecastNavmesh"); RecastNavigationAsset navDataAsset = asset as RecastNavigationAsset; if (navDataAsset == null) { if (m_navMeshRepresentation != null) { m_navMeshRepresentation.DoClear(); } return(false); } GCHandle handle = GCHandle.Alloc(navDataAsset.navMeshData, GCHandleType.Pinned); if (RecastNavigationDllImports.LoadNavDataImmediate(handle.AddrOfPinnedObject()) == false) { if (m_navMeshRepresentation != null) { m_navMeshRepresentation.DoClear(); } Debug.Log("Could not load data"); return(false); } return(true); }
private void LoadNavigationSuccessCallback(string NavAssetName, object NavAsset, float duration, object userData) { RecastNavigationAsset navDataAsset = NavAsset as RecastNavigationAsset; if (navDataAsset == null) { return; } handle = GCHandle.Alloc(navDataAsset.navMeshData, GCHandleType.Pinned); if (RecastNavigationDllImports.LoadNavDataImmediate(handle.AddrOfPinnedObject()) == false) { Debug.Log("Could not load data"); return; } }
void GenerateAsset() { IntPtr unmanagedPtr = new IntPtr(); int size = 0; bool success = RecastNavigationDllImports.GetGeneratedData(ref unmanagedPtr, ref size); if (success) { RecastNavigationAsset navMeshAsset = CreateInstance <RecastNavigationAsset>(); navMeshAsset.AssignData(unmanagedPtr, size); //int generatedTriangleCount = RecastNavigationDllImports.GetNavMeshTriangleCount(); //if (generatedTriangleCount == 0) // Debug.LogError("No triangles generated: verify that you have some geometry tagged as NavigationStatic, that your seedpoint is not outside navigable geometry or that your world scale is correct (1 unity unit = 1 meter)"); //navMeshAsset.SetDataInfo(generatedTriangleCount); System.IO.Directory.CreateDirectory(resourceFolder); AssetDatabase.CreateAsset(navMeshAsset, resourceFolder + "RecastNavmesh.asset"); Debug.Log(AssetDatabase.GetAssetPath(navMeshAsset)); string binaryPath = resourceFolder + sceneName + ".bin"; System.IO.File.WriteAllBytes(binaryPath, navMeshAsset.navMeshData); } }