diff --git a/.changeset/nervous-rabbits-turn.md b/.changeset/nervous-rabbits-turn.md new file mode 100644 index 00000000..8eb68bb7 --- /dev/null +++ b/.changeset/nervous-rabbits-turn.md @@ -0,0 +1,6 @@ +--- +"@recast-navigation/generators": patch +"recast-navigation": patch +--- + +feat: check whether the library has been initialised in the high level generators, throw a friendly error diff --git a/packages/recast-navigation-generators/src/generators/generate-solo-nav-mesh.ts b/packages/recast-navigation-generators/src/generators/generate-solo-nav-mesh.ts index c68f758c..efaf5892 100644 --- a/packages/recast-navigation-generators/src/generators/generate-solo-nav-mesh.ts +++ b/packages/recast-navigation-generators/src/generators/generate-solo-nav-mesh.ts @@ -91,6 +91,12 @@ export const generateSoloNavMesh = ( navMeshGeneratorConfig: Partial = {}, keepIntermediates = false ): SoloNavMeshGeneratorResult => { + if (!Raw.Module) { + throw new Error( + '"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization' + ); + } + const buildContext = new RecastBuildContext(); const intermediates: SoloNavMeshGeneratorIntermediates = { @@ -141,7 +147,7 @@ export const generateSoloNavMesh = ( error, }; }; - + /* input geometry */ const vertices = positions as number[]; const numVertices = indices.length; diff --git a/packages/recast-navigation-generators/src/generators/generate-tile-cache.ts b/packages/recast-navigation-generators/src/generators/generate-tile-cache.ts index b5f7118a..b19306a1 100644 --- a/packages/recast-navigation-generators/src/generators/generate-tile-cache.ts +++ b/packages/recast-navigation-generators/src/generators/generate-tile-cache.ts @@ -133,6 +133,12 @@ export const generateTileCache = ( navMeshGeneratorConfig: Partial = {}, keepIntermediates = false ): TileCacheGeneratorResult => { + if (!Raw.Module) { + throw new Error( + '"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization' + ); + } + const buildContext = new RecastBuildContext(); const intermediates: TileCacheGeneratorIntermediates = { diff --git a/packages/recast-navigation-generators/src/generators/generate-tiled-nav-mesh.ts b/packages/recast-navigation-generators/src/generators/generate-tiled-nav-mesh.ts index c8e5270c..a3d4d3cf 100644 --- a/packages/recast-navigation-generators/src/generators/generate-tiled-nav-mesh.ts +++ b/packages/recast-navigation-generators/src/generators/generate-tiled-nav-mesh.ts @@ -113,6 +113,12 @@ export const generateTiledNavMesh = ( navMeshGeneratorConfig: Partial = {}, keepIntermediates = false ): TiledNavMeshGeneratorResult => { + if (!Raw.Module) { + throw new Error( + '"init" must be called before using any recast-navigation-js APIs. See: https://github.com/isaac-mason/recast-navigation-js?tab=readme-ov-file#initialization' + ); + } + const buildContext = new RecastBuildContext(); const intermediates: TiledNavMeshGeneratorIntermediates = {