@esengine/pathfinding 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -2
- package/{bin/modules/breadth-first.js → dist/pathfinding.cjs} +51 -44
- package/dist/pathfinding.cjs.map +1 -0
- package/{bin → dist}/pathfinding.d.ts +26 -41
- package/dist/pathfinding.js +572 -0
- package/dist/pathfinding.js.map +1 -0
- package/{bin/modules/astar.js → dist/pathfinding.mjs} +44 -45
- package/dist/pathfinding.mjs.map +1 -0
- package/package.json +38 -23
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/source.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/.vscode/tasks.json +0 -13
- package/.wing/settings.json +0 -3
- package/bin/README.md +0 -245
- package/bin/modules/astar.min.js +0 -1
- package/bin/modules/breadth-first.min.js +0 -1
- package/bin/package.json +0 -54
- package/bin/pathfinding.js +0 -559
- package/bin/pathfinding.min.js +0 -1
- package/gulpfile.js +0 -137
- package/lib/wxgame.d.ts +0 -3945
- package/src/AI/Pathfinding/AStar/AStarPathfinder.ts +0 -244
- package/src/AI/Pathfinding/AStar/AstarGridGraph.ts +0 -183
- package/src/AI/Pathfinding/AStar/IAstarGraph.ts +0 -30
- package/src/AI/Pathfinding/BreadthFirst/BreadthFirstPathfinder.ts +0 -109
- package/src/AI/Pathfinding/BreadthFirst/IUnweightedGraph.ts +0 -14
- package/src/AI/Pathfinding/BreadthFirst/UnweightedGraph.ts +0 -29
- package/src/AI/Pathfinding/BreadthFirst/UnweightedGridGraph.ts +0 -81
- package/src/Types/IVector2.ts +0 -102
- package/src/Utils/PriorityQueue.ts +0 -121
- package/src/index.ts +0 -49
- package/tsconfig.json +0 -34
package/README.md
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
# 寻路算法库
|
|
2
2
|
|
|
3
|
+
[](https://github.com/esengine/ecs-astar/actions)
|
|
4
|
+
[](https://www.npmjs.com/package/@esengine/pathfinding)
|
|
5
|
+
[](https://github.com/esengine/ecs-astar)
|
|
6
|
+
[](https://github.com/esengine/ecs-astar/blob/main/LICENSE)
|
|
7
|
+
|
|
3
8
|
适用于Cocos Creator和Laya引擎的寻路算法库,支持A*和广度优先搜索算法。
|
|
4
9
|
|
|
5
|
-
## 特性
|
|
10
|
+
## ✨ 特性
|
|
6
11
|
|
|
7
12
|
- **多算法支持**:A*、广度优先搜索
|
|
8
13
|
- **引擎兼容**:支持Cocos Creator和Laya引擎
|
|
9
14
|
- **TypeScript**:完整的类型定义
|
|
10
|
-
-
|
|
15
|
+
- **高性能**:对象池优化,减少GC压力
|
|
11
16
|
|
|
12
17
|
## 安装
|
|
13
18
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
/**
|
|
2
|
+
* @esengine/pathfinding v1.0.3
|
|
3
|
+
* 高性能寻路算法库 - 支持A*、广度优先等算法,适用于Cocos Creator、Laya等游戏引擎
|
|
4
|
+
*
|
|
5
|
+
* @author yhh
|
|
6
|
+
* @license MIT
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
9
|
|
|
10
10
|
var Vector2Utils = (function () {
|
|
11
11
|
function Vector2Utils() {
|
|
@@ -50,7 +50,6 @@ var Vector2Utils = (function () {
|
|
|
50
50
|
Vector2Utils.MAX_COORD = 32767;
|
|
51
51
|
return Vector2Utils;
|
|
52
52
|
}());
|
|
53
|
-
export { Vector2Utils };
|
|
54
53
|
|
|
55
54
|
var PriorityQueue = (function () {
|
|
56
55
|
function PriorityQueue() {
|
|
@@ -132,9 +131,8 @@ var PriorityQueue = (function () {
|
|
|
132
131
|
};
|
|
133
132
|
return PriorityQueue;
|
|
134
133
|
}());
|
|
135
|
-
export { PriorityQueue };
|
|
136
134
|
|
|
137
|
-
var __spreadArray = (
|
|
135
|
+
var __spreadArray = (globalThis && globalThis.__spreadArray) || function (to, from, pack) {
|
|
138
136
|
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
139
137
|
if (ar || !(i in from)) {
|
|
140
138
|
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
@@ -143,8 +141,6 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
143
141
|
}
|
|
144
142
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
145
143
|
};
|
|
146
|
-
import { Vector2Utils } from '../../../Types/IVector2';
|
|
147
|
-
import { PriorityQueue } from '../../../Utils/PriorityQueue';
|
|
148
144
|
var AStarNode = (function () {
|
|
149
145
|
function AStarNode(node, gCost, hCost, parent) {
|
|
150
146
|
if (gCost === void 0) { gCost = 0; }
|
|
@@ -221,10 +217,14 @@ var AStarPathfinder = (function () {
|
|
|
221
217
|
if (startHash === goalHash) {
|
|
222
218
|
return { found: true, goalNode: this._getNode(start, 0, 0) };
|
|
223
219
|
}
|
|
220
|
+
if (!graph.isNodePassable(start)) {
|
|
221
|
+
return { found: false, openSetNodes: [] };
|
|
222
|
+
}
|
|
224
223
|
var startNode = this._getNode(start, 0, graph.heuristic(start, goal));
|
|
225
224
|
openSet.enqueue(startNode);
|
|
226
225
|
openSetMap.set(startHash, startNode);
|
|
227
226
|
var goalNode;
|
|
227
|
+
var processedNodes = [];
|
|
228
228
|
while (!openSet.isEmpty) {
|
|
229
229
|
var current = openSet.dequeue();
|
|
230
230
|
var currentHash = current.hash;
|
|
@@ -255,37 +255,41 @@ var AStarPathfinder = (function () {
|
|
|
255
255
|
openSetMap.set(neighborHash, neighborNode);
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
|
-
|
|
259
|
-
this._recycleNode(current);
|
|
260
|
-
}
|
|
258
|
+
processedNodes.push(current);
|
|
261
259
|
}
|
|
260
|
+
var remainingNodes = [];
|
|
262
261
|
while (!openSet.isEmpty) {
|
|
263
|
-
|
|
264
|
-
if (node !== goalNode) {
|
|
265
|
-
this._recycleNode(node);
|
|
266
|
-
}
|
|
262
|
+
remainingNodes.push(openSet.dequeue());
|
|
267
263
|
}
|
|
268
|
-
|
|
264
|
+
var allNodesToRecycle = __spreadArray(__spreadArray([], processedNodes, true), remainingNodes, true);
|
|
265
|
+
return { found: !!goalNode, goalNode: goalNode, openSetNodes: allNodesToRecycle };
|
|
269
266
|
};
|
|
270
267
|
AStarPathfinder.searchPath = function (graph, start, goal) {
|
|
271
268
|
var result = this.search(graph, start, goal);
|
|
272
269
|
if (!result.found || !result.goalNode) {
|
|
270
|
+
if (result.openSetNodes) {
|
|
271
|
+
for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {
|
|
272
|
+
var node = _a[_i];
|
|
273
|
+
this._recycleNode(node);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
273
276
|
return [];
|
|
274
277
|
}
|
|
275
|
-
|
|
278
|
+
var path = this.reconstructPathFromNode(result.goalNode);
|
|
279
|
+
if (result.openSetNodes) {
|
|
280
|
+
for (var _b = 0, _c = result.openSetNodes; _b < _c.length; _b++) {
|
|
281
|
+
var node = _c[_b];
|
|
282
|
+
this._recycleNode(node);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
return path;
|
|
276
286
|
};
|
|
277
|
-
AStarPathfinder.reconstructPathFromNode = function (goalNode
|
|
287
|
+
AStarPathfinder.reconstructPathFromNode = function (goalNode) {
|
|
278
288
|
this._tempPath.length = 0;
|
|
279
289
|
var current = goalNode;
|
|
280
|
-
var startHash = Vector2Utils.toHash(start);
|
|
281
290
|
while (current) {
|
|
282
291
|
this._tempPath.unshift(current.node);
|
|
283
|
-
|
|
284
|
-
var parent_1 = current.parent;
|
|
285
|
-
if (currentHash !== startHash) {
|
|
286
|
-
this._recycleNode(current);
|
|
287
|
-
}
|
|
288
|
-
current = parent_1;
|
|
292
|
+
current = current.parent;
|
|
289
293
|
}
|
|
290
294
|
return __spreadArray([], this._tempPath, true);
|
|
291
295
|
};
|
|
@@ -294,6 +298,14 @@ var AStarPathfinder = (function () {
|
|
|
294
298
|
if (result.goalNode) {
|
|
295
299
|
this._recycleNode(result.goalNode);
|
|
296
300
|
}
|
|
301
|
+
if (result.openSetNodes) {
|
|
302
|
+
for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {
|
|
303
|
+
var node = _a[_i];
|
|
304
|
+
if (node !== result.goalNode) {
|
|
305
|
+
this._recycleNode(node);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
297
309
|
return result.found;
|
|
298
310
|
};
|
|
299
311
|
AStarPathfinder.clearPool = function () {
|
|
@@ -310,10 +322,7 @@ var AStarPathfinder = (function () {
|
|
|
310
322
|
AStarPathfinder._tempPath = [];
|
|
311
323
|
return AStarPathfinder;
|
|
312
324
|
}());
|
|
313
|
-
export { AStarPathfinder };
|
|
314
325
|
|
|
315
|
-
import { Vector2Utils } from '../../../Types/IVector2';
|
|
316
|
-
import { AStarPathfinder } from './AStarPathfinder';
|
|
317
326
|
var AstarGridGraph = (function () {
|
|
318
327
|
function AstarGridGraph(width, height) {
|
|
319
328
|
this.dirs = [
|
|
@@ -423,11 +432,7 @@ var AstarGridGraph = (function () {
|
|
|
423
432
|
};
|
|
424
433
|
return AstarGridGraph;
|
|
425
434
|
}());
|
|
426
|
-
export { AstarGridGraph };
|
|
427
|
-
|
|
428
|
-
export {};
|
|
429
435
|
|
|
430
|
-
import { Vector2Utils } from '../../../Types/IVector2';
|
|
431
436
|
var BreadthFirstPathfinder = (function () {
|
|
432
437
|
function BreadthFirstPathfinder() {
|
|
433
438
|
}
|
|
@@ -485,9 +490,6 @@ var BreadthFirstPathfinder = (function () {
|
|
|
485
490
|
};
|
|
486
491
|
return BreadthFirstPathfinder;
|
|
487
492
|
}());
|
|
488
|
-
export { BreadthFirstPathfinder };
|
|
489
|
-
|
|
490
|
-
export {};
|
|
491
493
|
|
|
492
494
|
var UnweightedGraph = (function () {
|
|
493
495
|
function UnweightedGraph() {
|
|
@@ -502,10 +504,7 @@ var UnweightedGraph = (function () {
|
|
|
502
504
|
};
|
|
503
505
|
return UnweightedGraph;
|
|
504
506
|
}());
|
|
505
|
-
export { UnweightedGraph };
|
|
506
507
|
|
|
507
|
-
import { Vector2Utils } from '../../../Types/IVector2';
|
|
508
|
-
import { BreadthFirstPathfinder } from './BreadthFirstPathfinder';
|
|
509
508
|
var UnweightedGridGraph = (function () {
|
|
510
509
|
function UnweightedGridGraph(width, height, allowDiagonalSearch) {
|
|
511
510
|
if (allowDiagonalSearch === void 0) { allowDiagonalSearch = false; }
|
|
@@ -556,4 +555,12 @@ var UnweightedGridGraph = (function () {
|
|
|
556
555
|
];
|
|
557
556
|
return UnweightedGridGraph;
|
|
558
557
|
}());
|
|
559
|
-
|
|
558
|
+
|
|
559
|
+
exports.AStarPathfinder = AStarPathfinder;
|
|
560
|
+
exports.AstarGridGraph = AstarGridGraph;
|
|
561
|
+
exports.BreadthFirstPathfinder = BreadthFirstPathfinder;
|
|
562
|
+
exports.PriorityQueue = PriorityQueue;
|
|
563
|
+
exports.UnweightedGraph = UnweightedGraph;
|
|
564
|
+
exports.UnweightedGridGraph = UnweightedGridGraph;
|
|
565
|
+
exports.Vector2Utils = Vector2Utils;
|
|
566
|
+
//# sourceMappingURL=pathfinding.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathfinding.cjs","sources":["../bin/Types/IVector2.js","../bin/Utils/PriorityQueue.js","../bin/AI/Pathfinding/AStar/AStarPathfinder.js","../bin/AI/Pathfinding/AStar/AstarGridGraph.js","../bin/AI/Pathfinding/BreadthFirst/BreadthFirstPathfinder.js","../bin/AI/Pathfinding/BreadthFirst/UnweightedGraph.js","../bin/AI/Pathfinding/BreadthFirst/UnweightedGridGraph.js"],"sourcesContent":["var Vector2Utils = (function () {\n function Vector2Utils() {\n }\n Vector2Utils.equals = function (a, b) {\n if (a.equals) {\n return a.equals(b);\n }\n return a.x === b.x && a.y === b.y;\n };\n Vector2Utils.create = function (x, y) {\n return { x: x, y: y };\n };\n Vector2Utils.clone = function (vector) {\n return { x: vector.x, y: vector.y };\n };\n Vector2Utils.add = function (a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n };\n Vector2Utils.manhattanDistance = function (a, b) {\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\n };\n Vector2Utils.distance = function (a, b) {\n var dx = a.x - b.x;\n var dy = a.y - b.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n Vector2Utils.toHash = function (vector) {\n var x = (vector.x + this.MAX_COORD) | 0;\n var y = (vector.y + this.MAX_COORD) | 0;\n return (x << 16) | y;\n };\n Vector2Utils.toKey = function (vector) {\n return \"\".concat(vector.x, \",\").concat(vector.y);\n };\n Vector2Utils.fromHash = function (hash) {\n var x = (hash >> 16) - this.MAX_COORD;\n var y = (hash & 0xFFFF) - this.MAX_COORD;\n return { x: x, y: y };\n };\n Vector2Utils.HASH_MULTIPLIER = 73856093;\n Vector2Utils.MAX_COORD = 32767;\n return Vector2Utils;\n}());\nexport { Vector2Utils };\n","var PriorityQueue = (function () {\n function PriorityQueue() {\n this._heap = [];\n this._size = 0;\n }\n Object.defineProperty(PriorityQueue.prototype, \"size\", {\n get: function () {\n return this._size;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PriorityQueue.prototype, \"isEmpty\", {\n get: function () {\n return this._size === 0;\n },\n enumerable: false,\n configurable: true\n });\n PriorityQueue.prototype.clear = function () {\n this._heap.length = 0;\n this._size = 0;\n };\n PriorityQueue.prototype.enqueue = function (item) {\n this._heap[this._size] = item;\n this._bubbleUp(this._size);\n this._size++;\n };\n PriorityQueue.prototype.dequeue = function () {\n if (this._size === 0) {\n return undefined;\n }\n var result = this._heap[0];\n this._size--;\n if (this._size > 0) {\n this._heap[0] = this._heap[this._size];\n this._bubbleDown(0);\n }\n return result;\n };\n PriorityQueue.prototype.peek = function () {\n return this._size > 0 ? this._heap[0] : undefined;\n };\n PriorityQueue.prototype._bubbleUp = function (index) {\n while (index > 0) {\n var parentIndex = Math.floor((index - 1) / 2);\n if (this._heap[index].priority >= this._heap[parentIndex].priority) {\n break;\n }\n this._swap(index, parentIndex);\n index = parentIndex;\n }\n };\n PriorityQueue.prototype._bubbleDown = function (index) {\n while (true) {\n var minIndex = index;\n var leftChild = 2 * index + 1;\n var rightChild = 2 * index + 2;\n if (leftChild < this._size &&\n this._heap[leftChild].priority < this._heap[minIndex].priority) {\n minIndex = leftChild;\n }\n if (rightChild < this._size &&\n this._heap[rightChild].priority < this._heap[minIndex].priority) {\n minIndex = rightChild;\n }\n if (minIndex === index) {\n break;\n }\n this._swap(index, minIndex);\n index = minIndex;\n }\n };\n PriorityQueue.prototype._swap = function (i, j) {\n var temp = this._heap[i];\n this._heap[i] = this._heap[j];\n this._heap[j] = temp;\n };\n return PriorityQueue;\n}());\nexport { PriorityQueue };\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { Vector2Utils } from '../../../Types/IVector2';\nimport { PriorityQueue } from '../../../Utils/PriorityQueue';\nvar AStarNode = (function () {\n function AStarNode(node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n this.priority = 0;\n this.gCost = 0;\n this.hCost = 0;\n this.parent = null;\n this.hash = 0;\n this.node = node;\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n this.hash = Vector2Utils.toHash(node);\n }\n AStarNode.prototype.updateCosts = function (gCost, hCost, parent) {\n if (parent === void 0) { parent = null; }\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n };\n AStarNode.prototype.updateNode = function (node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n this.node = node;\n this.gCost = gCost;\n this.hCost = hCost;\n this.priority = gCost + hCost;\n this.parent = parent;\n this.hash = Vector2Utils.toHash(node);\n };\n AStarNode.prototype.reset = function () {\n this.node = null;\n this.priority = 0;\n this.gCost = 0;\n this.hCost = 0;\n this.parent = null;\n this.hash = 0;\n };\n return AStarNode;\n}());\nvar AStarPathfinder = (function () {\n function AStarPathfinder() {\n }\n AStarPathfinder._getNode = function (node, gCost, hCost, parent) {\n if (gCost === void 0) { gCost = 0; }\n if (hCost === void 0) { hCost = 0; }\n if (parent === void 0) { parent = null; }\n var astarNode = this._nodePool.pop();\n if (!astarNode) {\n astarNode = new AStarNode(node, gCost, hCost, parent);\n }\n else {\n astarNode.updateNode(node, gCost, hCost, parent);\n }\n return astarNode;\n };\n AStarPathfinder._recycleNode = function (node) {\n if (this._nodePool.length < 1000) {\n node.reset();\n this._nodePool.push(node);\n }\n };\n AStarPathfinder.search = function (graph, start, goal) {\n var openSet = new PriorityQueue();\n var closedSet = new Set();\n var openSetMap = new Map();\n var startHash = Vector2Utils.toHash(start);\n var goalHash = Vector2Utils.toHash(goal);\n if (startHash === goalHash) {\n return { found: true, goalNode: this._getNode(start, 0, 0) };\n }\n if (!graph.isNodePassable(start)) {\n return { found: false, openSetNodes: [] };\n }\n var startNode = this._getNode(start, 0, graph.heuristic(start, goal));\n openSet.enqueue(startNode);\n openSetMap.set(startHash, startNode);\n var goalNode;\n var processedNodes = [];\n while (!openSet.isEmpty) {\n var current = openSet.dequeue();\n var currentHash = current.hash;\n openSetMap.delete(currentHash);\n if (currentHash === goalHash) {\n goalNode = current;\n break;\n }\n closedSet.add(currentHash);\n for (var _i = 0, _a = graph.getNeighbors(current.node); _i < _a.length; _i++) {\n var neighbor = _a[_i];\n var neighborHash = Vector2Utils.toHash(neighbor);\n if (closedSet.has(neighborHash)) {\n continue;\n }\n var tentativeGScore = current.gCost + graph.cost(current.node, neighbor);\n var existingNode = openSetMap.get(neighborHash);\n if (existingNode) {\n if (tentativeGScore < existingNode.gCost) {\n var hCost = existingNode.hCost;\n existingNode.updateCosts(tentativeGScore, hCost, current);\n }\n }\n else {\n var hCost = graph.heuristic(neighbor, goal);\n var neighborNode = this._getNode(neighbor, tentativeGScore, hCost, current);\n openSet.enqueue(neighborNode);\n openSetMap.set(neighborHash, neighborNode);\n }\n }\n processedNodes.push(current);\n }\n var remainingNodes = [];\n while (!openSet.isEmpty) {\n remainingNodes.push(openSet.dequeue());\n }\n var allNodesToRecycle = __spreadArray(__spreadArray([], processedNodes, true), remainingNodes, true);\n return { found: !!goalNode, goalNode: goalNode, openSetNodes: allNodesToRecycle };\n };\n AStarPathfinder.searchPath = function (graph, start, goal) {\n var result = this.search(graph, start, goal);\n if (!result.found || !result.goalNode) {\n if (result.openSetNodes) {\n for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {\n var node = _a[_i];\n this._recycleNode(node);\n }\n }\n return [];\n }\n var path = this.reconstructPathFromNode(result.goalNode);\n if (result.openSetNodes) {\n for (var _b = 0, _c = result.openSetNodes; _b < _c.length; _b++) {\n var node = _c[_b];\n this._recycleNode(node);\n }\n }\n return path;\n };\n AStarPathfinder.reconstructPathFromNode = function (goalNode) {\n this._tempPath.length = 0;\n var current = goalNode;\n while (current) {\n this._tempPath.unshift(current.node);\n current = current.parent;\n }\n return __spreadArray([], this._tempPath, true);\n };\n AStarPathfinder.hasPath = function (graph, start, goal) {\n var result = this.search(graph, start, goal);\n if (result.goalNode) {\n this._recycleNode(result.goalNode);\n }\n if (result.openSetNodes) {\n for (var _i = 0, _a = result.openSetNodes; _i < _a.length; _i++) {\n var node = _a[_i];\n if (node !== result.goalNode) {\n this._recycleNode(node);\n }\n }\n }\n return result.found;\n };\n AStarPathfinder.clearPool = function () {\n this._nodePool.length = 0;\n this._tempPath.length = 0;\n };\n AStarPathfinder.getPoolStats = function () {\n return {\n poolSize: this._nodePool.length,\n maxPoolSize: 1000\n };\n };\n AStarPathfinder._nodePool = [];\n AStarPathfinder._tempPath = [];\n return AStarPathfinder;\n}());\nexport { AStarPathfinder };\n","import { Vector2Utils } from '../../../Types/IVector2';\nimport { AStarPathfinder } from './AStarPathfinder';\nvar AstarGridGraph = (function () {\n function AstarGridGraph(width, height) {\n this.dirs = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(0, 1)\n ];\n this.walls = [];\n this.weightedNodes = [];\n this.defaultWeight = 1;\n this.weightedNodeWeight = 5;\n this._neighbors = new Array(4);\n this._wallsSet = new Set();\n this._weightedNodesSet = new Set();\n this._wallsDirty = true;\n this._weightedNodesDirty = true;\n this._width = width;\n this._height = height;\n }\n AstarGridGraph.prototype.addWall = function (wall) {\n this.walls.push(wall);\n this._wallsDirty = true;\n };\n AstarGridGraph.prototype.addWalls = function (walls) {\n var _a;\n (_a = this.walls).push.apply(_a, walls);\n this._wallsDirty = true;\n };\n AstarGridGraph.prototype.clearWalls = function () {\n this.walls.length = 0;\n this._wallsSet.clear();\n this._wallsDirty = false;\n };\n AstarGridGraph.prototype.addWeightedNode = function (node) {\n this.weightedNodes.push(node);\n this._weightedNodesDirty = true;\n };\n AstarGridGraph.prototype.addWeightedNodes = function (nodes) {\n var _a;\n (_a = this.weightedNodes).push.apply(_a, nodes);\n this._weightedNodesDirty = true;\n };\n AstarGridGraph.prototype.clearWeightedNodes = function () {\n this.weightedNodes.length = 0;\n this._weightedNodesSet.clear();\n this._weightedNodesDirty = false;\n };\n AstarGridGraph.prototype._updateHashSets = function () {\n if (this._wallsDirty) {\n this._wallsSet.clear();\n for (var _i = 0, _a = this.walls; _i < _a.length; _i++) {\n var wall = _a[_i];\n this._wallsSet.add(Vector2Utils.toHash(wall));\n }\n this._wallsDirty = false;\n }\n if (this._weightedNodesDirty) {\n this._weightedNodesSet.clear();\n for (var _b = 0, _c = this.weightedNodes; _b < _c.length; _b++) {\n var node = _c[_b];\n this._weightedNodesSet.add(Vector2Utils.toHash(node));\n }\n this._weightedNodesDirty = false;\n }\n };\n AstarGridGraph.prototype.isNodeInBounds = function (node) {\n return 0 <= node.x && node.x < this._width && 0 <= node.y && node.y < this._height;\n };\n AstarGridGraph.prototype.isNodePassable = function (node) {\n this._updateHashSets();\n return !this._wallsSet.has(Vector2Utils.toHash(node));\n };\n AstarGridGraph.prototype.search = function (start, goal) {\n return AStarPathfinder.hasPath(this, start, goal);\n };\n AstarGridGraph.prototype.searchPath = function (start, goal) {\n return AStarPathfinder.searchPath(this, start, goal);\n };\n AstarGridGraph.prototype.getNeighbors = function (node) {\n this._neighbors.length = 0;\n for (var _i = 0, _a = this.dirs; _i < _a.length; _i++) {\n var dir = _a[_i];\n var next = Vector2Utils.add(node, dir);\n if (this.isNodeInBounds(next) && this.isNodePassable(next)) {\n this._neighbors.push(next);\n }\n }\n return this._neighbors;\n };\n AstarGridGraph.prototype.cost = function (from, to) {\n this._updateHashSets();\n return this._weightedNodesSet.has(Vector2Utils.toHash(to)) ? this.weightedNodeWeight : this.defaultWeight;\n };\n AstarGridGraph.prototype.heuristic = function (node, goal) {\n return Vector2Utils.manhattanDistance(node, goal);\n };\n AstarGridGraph.prototype.getStats = function () {\n this._updateHashSets();\n return {\n walls: this.walls.length,\n weightedNodes: this.weightedNodes.length,\n gridSize: \"\".concat(this._width, \"x\").concat(this._height),\n wallsSetSize: this._wallsSet.size,\n weightedNodesSetSize: this._weightedNodesSet.size\n };\n };\n return AstarGridGraph;\n}());\nexport { AstarGridGraph };\n","import { Vector2Utils } from '../../../Types/IVector2';\nvar BreadthFirstPathfinder = (function () {\n function BreadthFirstPathfinder() {\n }\n BreadthFirstPathfinder.search = function (graph, start, goal, cameFrom) {\n var frontier = [];\n var visited = new Set();\n var pathMap = cameFrom || new Map();\n var startHash = Vector2Utils.toHash(start);\n var goalHash = Vector2Utils.toHash(goal);\n if (startHash === goalHash) {\n return true;\n }\n frontier.push(start);\n visited.add(startHash);\n while (frontier.length > 0) {\n var current = frontier.shift();\n var currentHash = Vector2Utils.toHash(current);\n if (currentHash === goalHash) {\n return true;\n }\n for (var _i = 0, _a = graph.getNeighbors(current); _i < _a.length; _i++) {\n var neighbor = _a[_i];\n var neighborHash = Vector2Utils.toHash(neighbor);\n if (visited.has(neighborHash)) {\n continue;\n }\n visited.add(neighborHash);\n pathMap.set(neighborHash, current);\n frontier.push(neighbor);\n }\n }\n return false;\n };\n BreadthFirstPathfinder.searchPath = function (graph, start, goal) {\n var cameFrom = new Map();\n if (this.search(graph, start, goal, cameFrom)) {\n return this.reconstructPath(cameFrom, start, goal);\n }\n return [];\n };\n BreadthFirstPathfinder.reconstructPath = function (cameFrom, start, goal) {\n var path = [];\n var current = goal;\n var startHash = Vector2Utils.toHash(start);\n while (Vector2Utils.toHash(current) !== startHash) {\n path.unshift(current);\n var currentHash = Vector2Utils.toHash(current);\n var parent_1 = cameFrom.get(currentHash);\n if (!parent_1)\n break;\n current = parent_1;\n }\n path.unshift(start);\n return path;\n };\n return BreadthFirstPathfinder;\n}());\nexport { BreadthFirstPathfinder };\n","var UnweightedGraph = (function () {\n function UnweightedGraph() {\n this.edges = new Map();\n }\n UnweightedGraph.prototype.addEdgesForNode = function (node, neighbors) {\n this.edges.set(node, neighbors);\n return this;\n };\n UnweightedGraph.prototype.getNeighbors = function (node) {\n return this.edges.get(node) || [];\n };\n return UnweightedGraph;\n}());\nexport { UnweightedGraph };\n","import { Vector2Utils } from '../../../Types/IVector2';\nimport { BreadthFirstPathfinder } from './BreadthFirstPathfinder';\nvar UnweightedGridGraph = (function () {\n function UnweightedGridGraph(width, height, allowDiagonalSearch) {\n if (allowDiagonalSearch === void 0) { allowDiagonalSearch = false; }\n this.walls = [];\n this._neighbors = [];\n this._width = width;\n this._height = height;\n this._dirs = allowDiagonalSearch ? UnweightedGridGraph.COMPASS_DIRS : UnweightedGridGraph.CARDINAL_DIRS;\n }\n UnweightedGridGraph.prototype.isNodeInBounds = function (node) {\n return 0 <= node.x && node.x < this._width && 0 <= node.y && node.y < this._height;\n };\n UnweightedGridGraph.prototype.isNodePassable = function (node) {\n return !this.walls.find(function (wall) { return Vector2Utils.equals(wall, node); });\n };\n UnweightedGridGraph.prototype.getNeighbors = function (node) {\n this._neighbors.length = 0;\n for (var _i = 0, _a = this._dirs; _i < _a.length; _i++) {\n var dir = _a[_i];\n var next = Vector2Utils.add(node, dir);\n if (this.isNodeInBounds(next) && this.isNodePassable(next)) {\n this._neighbors.push(next);\n }\n }\n return this._neighbors;\n };\n UnweightedGridGraph.prototype.searchPath = function (start, goal) {\n return BreadthFirstPathfinder.searchPath(this, start, goal);\n };\n UnweightedGridGraph.prototype.hasPath = function (start, goal) {\n return BreadthFirstPathfinder.search(this, start, goal);\n };\n UnweightedGridGraph.CARDINAL_DIRS = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(0, 1)\n ];\n UnweightedGridGraph.COMPASS_DIRS = [\n Vector2Utils.create(1, 0),\n Vector2Utils.create(1, -1),\n Vector2Utils.create(0, -1),\n Vector2Utils.create(-1, -1),\n Vector2Utils.create(-1, 0),\n Vector2Utils.create(-1, 1),\n Vector2Utils.create(0, 1),\n Vector2Utils.create(1, 1),\n ];\n return UnweightedGridGraph;\n}());\nexport { UnweightedGridGraph };\n"],"names":["this"],"mappings":"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"}
|
|
@@ -1,21 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export { IUnweightedGraph } from './AI/Pathfinding/BreadthFirst/IUnweightedGraph';
|
|
7
|
-
export { BreadthFirstPathfinder } from './AI/Pathfinding/BreadthFirst/BreadthFirstPathfinder';
|
|
8
|
-
export { UnweightedGraph } from './AI/Pathfinding/BreadthFirst/UnweightedGraph';
|
|
9
|
-
export { UnweightedGridGraph } from './AI/Pathfinding/BreadthFirst/UnweightedGridGraph';
|
|
10
|
-
|
|
11
|
-
export interface IVector2 {
|
|
1
|
+
/**
|
|
2
|
+
* @esengine/pathfinding v1.0.3
|
|
3
|
+
* TypeScript definitions
|
|
4
|
+
*/
|
|
5
|
+
interface IVector2 {
|
|
12
6
|
x: number;
|
|
13
7
|
y: number;
|
|
14
8
|
}
|
|
15
|
-
|
|
9
|
+
interface IComparableVector2 extends IVector2 {
|
|
16
10
|
equals?(other: IVector2): boolean;
|
|
17
11
|
}
|
|
18
|
-
|
|
12
|
+
declare class Vector2Utils {
|
|
19
13
|
private static readonly HASH_MULTIPLIER;
|
|
20
14
|
private static readonly MAX_COORD;
|
|
21
15
|
static equals(a: IVector2, b: IVector2): boolean;
|
|
@@ -29,10 +23,10 @@ export declare class Vector2Utils {
|
|
|
29
23
|
static fromHash(hash: number): IVector2;
|
|
30
24
|
}
|
|
31
25
|
|
|
32
|
-
|
|
26
|
+
interface IPriorityQueueNode {
|
|
33
27
|
priority: number;
|
|
34
28
|
}
|
|
35
|
-
|
|
29
|
+
declare class PriorityQueue<T extends IPriorityQueueNode> {
|
|
36
30
|
private _heap;
|
|
37
31
|
private _size;
|
|
38
32
|
get size(): number;
|
|
@@ -46,9 +40,13 @@ export declare class PriorityQueue<T extends IPriorityQueueNode> {
|
|
|
46
40
|
private _swap;
|
|
47
41
|
}
|
|
48
42
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
43
|
+
interface IAstarGraph<T extends IVector2> {
|
|
44
|
+
getNeighbors(node: T): T[];
|
|
45
|
+
cost(from: T, to: T): number;
|
|
46
|
+
heuristic(node: T, goal: T): number;
|
|
47
|
+
isNodePassable(node: T): boolean;
|
|
48
|
+
}
|
|
49
|
+
|
|
52
50
|
declare class AStarNode implements IPriorityQueueNode {
|
|
53
51
|
node: IVector2;
|
|
54
52
|
priority: number;
|
|
@@ -61,7 +59,7 @@ declare class AStarNode implements IPriorityQueueNode {
|
|
|
61
59
|
updateNode(node: IVector2, gCost?: number, hCost?: number, parent?: AStarNode | null): void;
|
|
62
60
|
reset(): void;
|
|
63
61
|
}
|
|
64
|
-
|
|
62
|
+
declare class AStarPathfinder {
|
|
65
63
|
private static _nodePool;
|
|
66
64
|
private static _tempPath;
|
|
67
65
|
private static _getNode;
|
|
@@ -69,6 +67,7 @@ export declare class AStarPathfinder {
|
|
|
69
67
|
static search<T extends IVector2>(graph: IAstarGraph<T>, start: T, goal: T): {
|
|
70
68
|
found: boolean;
|
|
71
69
|
goalNode?: AStarNode;
|
|
70
|
+
openSetNodes?: AStarNode[];
|
|
72
71
|
};
|
|
73
72
|
static searchPath<T extends IVector2>(graph: IAstarGraph<T>, start: T, goal: T): T[];
|
|
74
73
|
private static reconstructPathFromNode;
|
|
@@ -79,11 +78,8 @@ export declare class AStarPathfinder {
|
|
|
79
78
|
maxPoolSize: number;
|
|
80
79
|
};
|
|
81
80
|
}
|
|
82
|
-
export {};
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
import { IAstarGraph } from './IAstarGraph';
|
|
86
|
-
export declare class AstarGridGraph implements IAstarGraph<IVector2> {
|
|
82
|
+
declare class AstarGridGraph implements IAstarGraph<IVector2> {
|
|
87
83
|
dirs: IVector2[];
|
|
88
84
|
walls: IVector2[];
|
|
89
85
|
weightedNodes: IVector2[];
|
|
@@ -120,37 +116,23 @@ export declare class AstarGridGraph implements IAstarGraph<IVector2> {
|
|
|
120
116
|
};
|
|
121
117
|
}
|
|
122
118
|
|
|
123
|
-
|
|
124
|
-
export interface IAstarGraph<T extends IVector2> {
|
|
119
|
+
interface IUnweightedGraph<T extends IVector2> {
|
|
125
120
|
getNeighbors(node: T): T[];
|
|
126
|
-
cost(from: T, to: T): number;
|
|
127
|
-
heuristic(node: T, goal: T): number;
|
|
128
121
|
}
|
|
129
122
|
|
|
130
|
-
|
|
131
|
-
import { IUnweightedGraph } from './IUnweightedGraph';
|
|
132
|
-
export declare class BreadthFirstPathfinder {
|
|
123
|
+
declare class BreadthFirstPathfinder {
|
|
133
124
|
static search<T extends IVector2>(graph: IUnweightedGraph<T>, start: T, goal: T, cameFrom?: Map<number, T>): boolean;
|
|
134
125
|
static searchPath<T extends IVector2>(graph: IUnweightedGraph<T>, start: T, goal: T): T[];
|
|
135
126
|
static reconstructPath<T extends IVector2>(cameFrom: Map<number, T>, start: T, goal: T): T[];
|
|
136
127
|
}
|
|
137
128
|
|
|
138
|
-
|
|
139
|
-
export interface IUnweightedGraph<T extends IVector2> {
|
|
140
|
-
getNeighbors(node: T): T[];
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
import { IVector2 } from '../../../Types/IVector2';
|
|
144
|
-
import { IUnweightedGraph } from './IUnweightedGraph';
|
|
145
|
-
export declare class UnweightedGraph<T extends IVector2> implements IUnweightedGraph<T> {
|
|
129
|
+
declare class UnweightedGraph<T extends IVector2> implements IUnweightedGraph<T> {
|
|
146
130
|
edges: Map<T, T[]>;
|
|
147
131
|
addEdgesForNode(node: T, neighbors: T[]): this;
|
|
148
132
|
getNeighbors(node: T): T[];
|
|
149
133
|
}
|
|
150
134
|
|
|
151
|
-
|
|
152
|
-
import { IUnweightedGraph } from './IUnweightedGraph';
|
|
153
|
-
export declare class UnweightedGridGraph implements IUnweightedGraph<IVector2> {
|
|
135
|
+
declare class UnweightedGridGraph implements IUnweightedGraph<IVector2> {
|
|
154
136
|
private static readonly CARDINAL_DIRS;
|
|
155
137
|
private static readonly COMPASS_DIRS;
|
|
156
138
|
walls: IVector2[];
|
|
@@ -165,3 +147,6 @@ export declare class UnweightedGridGraph implements IUnweightedGraph<IVector2> {
|
|
|
165
147
|
searchPath(start: IVector2, goal: IVector2): IVector2[];
|
|
166
148
|
hasPath(start: IVector2, goal: IVector2): boolean;
|
|
167
149
|
}
|
|
150
|
+
|
|
151
|
+
export { AStarPathfinder, AstarGridGraph, BreadthFirstPathfinder, PriorityQueue, UnweightedGraph, UnweightedGridGraph, Vector2Utils };
|
|
152
|
+
export type { IAstarGraph, IComparableVector2, IPriorityQueueNode, IUnweightedGraph, IVector2 };
|