Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
    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);
        }
    }