diff --git a/package-lock.json b/package-lock.json index 979d712d..3c39b25a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "pbf": "^3.2.1", "polybooljs": "^1.2.0", "polylabel": "^1.1.0", - "rbush": "^3.0.1", + "rbush-rs": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.4.0", @@ -11450,11 +11450,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -11535,13 +11530,10 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } + "node_modules/rbush-rs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/rbush-rs/-/rbush-rs-0.1.0.tgz", + "integrity": "sha512-+ME2Ky99vzvMTsYbk3xEf0HI+QS5n8Z5gZj/pZpttrR7l+gd15Ee8cOBS5+6arPXRrcZxENOrxBAyfJCUtSLaA==" }, "node_modules/react": { "version": "18.2.0", diff --git a/package.json b/package.json index 1146a850..ce83066b 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "pbf": "^3.2.1", "polybooljs": "^1.2.0", "polylabel": "^1.1.0", - "rbush": "^3.0.1", + "rbush-rs": "^0.1.0", "react": "^18.2.0", "react-dom": "^18.2.0", "react-icons": "^4.4.0", diff --git a/src/app/objects/Labels.ts b/src/app/objects/Labels.ts index 3e4672b7..354e3c9d 100644 --- a/src/app/objects/Labels.ts +++ b/src/app/objects/Labels.ts @@ -7,7 +7,7 @@ import Vec3 from "~/lib/math/Vec3"; import TileLabelBuffers from "./TileLabelBuffers"; import Camera from "~/lib/core/Camera"; import Utils from "../Utils"; -import RBush from 'rbush'; +import {RBush} from 'rbush-rs'; import Vec2 from "~/lib/math/Vec2"; interface AttributeBuffers { @@ -29,7 +29,7 @@ export default class Labels extends RenderableObject3D { index: null }; private attributeBuffersDirty: boolean = false; - private tree: RBush = new RBush(); + private tree: RBush = new RBush(); public constructor() { super(); diff --git a/src/lib/road-graph/RoadGraph.ts b/src/lib/road-graph/RoadGraph.ts index a0226c33..db34d1a7 100644 --- a/src/lib/road-graph/RoadGraph.ts +++ b/src/lib/road-graph/RoadGraph.ts @@ -3,7 +3,7 @@ import Road from "~/lib/road-graph/Road"; import Intersection from "~/lib/road-graph/Intersection"; import LinkedVertex from "~/lib/road-graph/LinkedVertex"; import SegmentGroup from "~/lib/road-graph/SegmentGroup"; -import RBush from 'rbush'; +import {RBush} from 'rbush-rs'; interface Group { roads: Road[]; @@ -45,14 +45,15 @@ export default class RoadGraph { } public initIntersections(): void { + type IntersectionItem = { + minX: number; + minY: number; + maxX: number; + maxY: number; + data: [LinkedVertex, Road][]; + }; for (const group of this.groups.values()) { - const tree: RBush<{ - minX: number; - minY: number; - maxX: number; - maxY: number; - data: [LinkedVertex, Road][]; - }> = new RBush(); + const tree = new RBush(); for (const road of group.roads) { for (const vertex of road.vertices) { @@ -62,7 +63,7 @@ export default class RoadGraph { minY: pos.y - 0.01, maxX: pos.x + 0.01, maxY: pos.y + 0.01 - }); + }) as IntersectionItem[]; if (query.length > 0) { const data = query[0].data; diff --git a/webpack.config.js b/webpack.config.js index 577655f8..4201c37f 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,6 +14,10 @@ const VERSION = require('./package.json').version; module.exports = (env, argv) => ([{ entry: './src/app/App.ts', + experiments: { + asyncWebAssembly: true, + // syncWebAssembly: true, // Optional, depending on your setup + }, output: { filename: './js/index.[contenthash].js', path: path.resolve(__dirname, 'build')