|
@@ -282,6 +282,42 @@ export class RecastJSPlugin implements INavigationEnginePlugin {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * build the navmesh from a previously saved state using getNavmeshData
|
|
|
+ * @param data the Uint8Array returned by getNavmeshData
|
|
|
+ */
|
|
|
+ buildFromNavmeshData(data: Uint8Array): void
|
|
|
+ {
|
|
|
+ var nDataBytes = data.length * data.BYTES_PER_ELEMENT;
|
|
|
+ var dataPtr = this.bjsRECAST._malloc(nDataBytes);
|
|
|
+
|
|
|
+ var dataHeap = new Uint8Array(this.bjsRECAST.HEAPU8.buffer, dataPtr, nDataBytes);
|
|
|
+ dataHeap.set(data);
|
|
|
+
|
|
|
+ let buf = new this.bjsRECAST.NavmeshData();
|
|
|
+ buf.dataPointer = dataHeap.byteOffset;
|
|
|
+ buf.size = data.length;
|
|
|
+ this.navMesh = new this.bjsRECAST.NavMesh();
|
|
|
+ this.navMesh.buildFromNavmeshData(buf);
|
|
|
+
|
|
|
+ // Free memory
|
|
|
+ this.bjsRECAST._free(dataHeap.byteOffset);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * returns the navmesh data that can be used later. The navmesh must be built before retrieving the data
|
|
|
+ * @returns data the Uint8Array that can be saved and reused
|
|
|
+ */
|
|
|
+ getNavmeshData(): Uint8Array
|
|
|
+ {
|
|
|
+ let navmeshData = this.navMesh.getNavmeshData();
|
|
|
+ var arrView = new Uint8Array(this.bjsRECAST.HEAPU8.buffer, navmeshData.dataPointer, navmeshData.size);
|
|
|
+ var ret = new Uint8Array(navmeshData.size);
|
|
|
+ ret.set(arrView);
|
|
|
+ this.navMesh.freeNavmeshData(navmeshData);
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Get the Bounding box extent result specified by setDefaultQueryExtent
|
|
|
* @param result output the box extent values
|
|
|
*/
|