@soonspacejs/plugin-pathfinding 2.13.5 → 2.13.7
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 +5 -5
- package/dist/index.esm.js +165 -1
- package/dist/index.esm.js.map +1 -0
- package/package.json +3 -3
- package/dist/index.d.ts +0 -25
- package/dist/utils.d.ts +0 -6
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
# @soonspacejs/plugin-pathfinding
|
|
2
|
-
|
|
3
|
-
> Pathfinding plugin for SoonSpace.js
|
|
4
|
-
|
|
5
|
-
Document: [http://www.xwbuilders.com:8800/plugin/pathfinding.html](http://www.xwbuilders.com:8800/plugin/pathfinding.html)
|
|
1
|
+
# @soonspacejs/plugin-pathfinding
|
|
2
|
+
|
|
3
|
+
> Pathfinding plugin for SoonSpace.js
|
|
4
|
+
|
|
5
|
+
Document: [http://www.xwbuilders.com:8800/plugin/pathfinding.html](http://www.xwbuilders.com:8800/plugin/pathfinding.html)
|
package/dist/index.esm.js
CHANGED
|
@@ -1 +1,165 @@
|
|
|
1
|
-
import{Matrix4
|
|
1
|
+
import { Matrix4, Mesh, InstancedMesh, MeshStandardMaterial } from 'three';
|
|
2
|
+
import { Crowd } from '@recast-navigation/core';
|
|
3
|
+
import { generateSoloNavMesh } from '@recast-navigation/generators';
|
|
4
|
+
import { DebugDrawer, CrowdHelper } from '@recast-navigation/three';
|
|
5
|
+
import SoonSpace from 'soonspacejs';
|
|
6
|
+
import { StaticGeometryGenerator } from 'three-mesh-bvh';
|
|
7
|
+
|
|
8
|
+
function deInstancingMesh(insMesh) {
|
|
9
|
+
const name = insMesh.name;
|
|
10
|
+
const geometry = insMesh.geometry;
|
|
11
|
+
const material = insMesh.material;
|
|
12
|
+
const count = insMesh.count;
|
|
13
|
+
const meshes = [];
|
|
14
|
+
for (let i = 0; i < count; i++) {
|
|
15
|
+
const matrix = new Matrix4();
|
|
16
|
+
insMesh.getMatrixAt(i, matrix);
|
|
17
|
+
const mesh = new Mesh(geometry, material);
|
|
18
|
+
mesh.name = `${name}_${i}`;
|
|
19
|
+
meshes.push(mesh);
|
|
20
|
+
matrix.premultiply(insMesh.matrixWorld);
|
|
21
|
+
mesh.matrix.copy(matrix);
|
|
22
|
+
mesh.matrixWorld.copy(matrix);
|
|
23
|
+
matrix.decompose(mesh.position, mesh.quaternion, mesh.scale);
|
|
24
|
+
}
|
|
25
|
+
return meshes;
|
|
26
|
+
}
|
|
27
|
+
function getVertices(objects) {
|
|
28
|
+
var _a;
|
|
29
|
+
/**
|
|
30
|
+
* traverse all meshes
|
|
31
|
+
*/
|
|
32
|
+
const meshes = [];
|
|
33
|
+
objects.forEach((object) => {
|
|
34
|
+
object.traverse(child => {
|
|
35
|
+
if (child.type === 'Mesh') {
|
|
36
|
+
if (child instanceof InstancedMesh) {
|
|
37
|
+
// instanced
|
|
38
|
+
meshes.push(...deInstancingMesh(child));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// normal
|
|
42
|
+
meshes.push(child);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
const staticGenerator = new StaticGeometryGenerator(meshes);
|
|
48
|
+
staticGenerator.applyWorldTransforms = true;
|
|
49
|
+
staticGenerator.attributes = ['position', 'index'];
|
|
50
|
+
const mergedGeometry = staticGenerator.generate();
|
|
51
|
+
const positions = mergedGeometry.attributes.position.array;
|
|
52
|
+
const indices = (_a = mergedGeometry.index) === null || _a === void 0 ? void 0 : _a.array;
|
|
53
|
+
return { positions, indices, };
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const { warn, } = SoonSpace.utils;
|
|
57
|
+
class PathfindingPlugin {
|
|
58
|
+
constructor(ssp) {
|
|
59
|
+
this.ssp = ssp;
|
|
60
|
+
this.navMesh = null;
|
|
61
|
+
this.crowd = null;
|
|
62
|
+
this.debugDrawer = null;
|
|
63
|
+
this.crowdHelper = null;
|
|
64
|
+
// crowd
|
|
65
|
+
this._crowdUpdate = () => {
|
|
66
|
+
var _a;
|
|
67
|
+
if (this.crowd) {
|
|
68
|
+
this.crowd.update(this.ssp.viewport.state.delta);
|
|
69
|
+
(_a = this.crowdHelper) === null || _a === void 0 ? void 0 : _a.update();
|
|
70
|
+
if (this.crowd.getActiveAgentCount() > 0)
|
|
71
|
+
this.ssp.render();
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// solo navmesh
|
|
76
|
+
createSoloNavMesh(objects, config = {}) {
|
|
77
|
+
if (this.navMesh) {
|
|
78
|
+
warn('navmesh 已经存在,请先调用 disposeNavMesh()');
|
|
79
|
+
return this.navMesh;
|
|
80
|
+
}
|
|
81
|
+
const { positions, indices, } = getVertices(objects);
|
|
82
|
+
const result = generateSoloNavMesh(positions, indices, config);
|
|
83
|
+
if (result.success) {
|
|
84
|
+
this.navMesh = result.navMesh;
|
|
85
|
+
return this.navMesh;
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
disposeSoloNavMesh() {
|
|
90
|
+
var _a;
|
|
91
|
+
(_a = this.navMesh) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
92
|
+
this.navMesh = null;
|
|
93
|
+
}
|
|
94
|
+
createCrowd(params) {
|
|
95
|
+
if (this.crowd) {
|
|
96
|
+
warn('crowd 已经存在,请先调用 disposeCrowd()');
|
|
97
|
+
return this.crowd;
|
|
98
|
+
}
|
|
99
|
+
if (!this.navMesh) {
|
|
100
|
+
warn('navmesh 不存在,请先调用 createSoloNavMesh()');
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
this.crowd = new Crowd(this.navMesh, params);
|
|
104
|
+
this.ssp.signals.beforeRender.add(this._crowdUpdate);
|
|
105
|
+
return this.crowd;
|
|
106
|
+
}
|
|
107
|
+
disposeCrowd() {
|
|
108
|
+
var _a;
|
|
109
|
+
(_a = this.crowd) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
110
|
+
this.crowd = null;
|
|
111
|
+
this.ssp.signals.beforeRender.remove(this._crowdUpdate);
|
|
112
|
+
}
|
|
113
|
+
createDebugDrawer() {
|
|
114
|
+
if (this.debugDrawer) {
|
|
115
|
+
warn('debug drawer 已经存在,请先调用 disposeDebugDrawer()');
|
|
116
|
+
return this.debugDrawer;
|
|
117
|
+
}
|
|
118
|
+
if (!this.navMesh) {
|
|
119
|
+
warn('navmesh 不存在,请先调用 createSoloNavMesh()');
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
this.debugDrawer = new DebugDrawer();
|
|
123
|
+
this.debugDrawer.drawNavMesh(this.navMesh, 0);
|
|
124
|
+
this.ssp.addObject(this.debugDrawer);
|
|
125
|
+
return this.debugDrawer;
|
|
126
|
+
}
|
|
127
|
+
disposeDebugDrawer() {
|
|
128
|
+
if (this.debugDrawer) {
|
|
129
|
+
this.debugDrawer.dispose();
|
|
130
|
+
this.ssp.removeObject(this.debugDrawer);
|
|
131
|
+
this.debugDrawer = null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
createCrowdHelper(params = { agentMaterial: new MeshStandardMaterial({ color: 0x00ff00, }), }) {
|
|
135
|
+
if (this.crowdHelper) {
|
|
136
|
+
warn('crowd helper 已经存在,请先调用 disposeCrowdHelper()');
|
|
137
|
+
return this.crowdHelper;
|
|
138
|
+
}
|
|
139
|
+
if (!this.crowd) {
|
|
140
|
+
warn('crowd 不存在,请先调用 createCrowd()');
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
this.crowdHelper = new CrowdHelper(this.crowd, params);
|
|
144
|
+
this.ssp.addObject(this.crowdHelper);
|
|
145
|
+
return this.crowdHelper;
|
|
146
|
+
}
|
|
147
|
+
disposeCrowdHelper() {
|
|
148
|
+
if (this.crowdHelper) {
|
|
149
|
+
this.crowdHelper.agentMeshes.forEach((mesh) => {
|
|
150
|
+
mesh.geometry.dispose();
|
|
151
|
+
mesh.material.dispose();
|
|
152
|
+
});
|
|
153
|
+
this.ssp.removeObject(this.crowdHelper);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
dispose() {
|
|
157
|
+
this.disposeSoloNavMesh();
|
|
158
|
+
this.disposeCrowd();
|
|
159
|
+
this.disposeDebugDrawer();
|
|
160
|
+
this.disposeCrowdHelper();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export { deInstancingMesh, PathfindingPlugin as default, getVertices };
|
|
165
|
+
//# sourceMappingURL=index.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/utils.ts","../src/index.ts"],"sourcesContent":["import { InstancedMesh, Matrix4, Mesh, Object3D, } from 'three'\r\nimport { StaticGeometryGenerator, } from 'three-mesh-bvh'\r\n\r\nexport function deInstancingMesh ( insMesh: InstancedMesh ) {\r\n\r\n const name = insMesh.name\r\n\r\n const geometry = insMesh.geometry\r\n const material = insMesh.material\r\n\r\n const count = insMesh.count\r\n\r\n const meshes = []\r\n\r\n for ( let i = 0; i < count; i++ ) {\r\n\r\n const matrix = new Matrix4()\r\n\r\n insMesh.getMatrixAt( i, matrix )\r\n\r\n const mesh = new Mesh( geometry, material )\r\n\r\n mesh.name = `${name}_${i}`\r\n meshes.push( mesh )\r\n\r\n matrix.premultiply( insMesh.matrixWorld )\r\n mesh.matrix.copy( matrix )\r\n mesh.matrixWorld.copy( matrix )\r\n \r\n\r\n matrix.decompose( mesh.position, mesh.quaternion, mesh.scale )\r\n\r\n }\r\n\r\n return meshes\r\n\r\n}\r\n\r\nexport function getVertices ( objects: Object3D[] ) {\r\n\r\n /**\r\n * traverse all meshes\r\n */\r\n const meshes: Mesh[] = []\r\n\r\n objects.forEach( ( object ) => {\r\n\r\n object.traverse( child => {\r\n\r\n if ( child.type === 'Mesh' ) {\r\n\r\n if ( child instanceof InstancedMesh ) {\r\n\r\n // instanced\r\n meshes.push( ...deInstancingMesh( child ) )\r\n \r\n } else {\r\n\r\n // normal\r\n meshes.push( child as Mesh )\r\n \r\n }\r\n \r\n }\r\n \r\n } )\r\n \r\n } )\r\n\r\n const staticGenerator = new StaticGeometryGenerator( meshes )\r\n\r\n staticGenerator.applyWorldTransforms = true\r\n staticGenerator.attributes = [ 'position', 'index' ]\r\n const mergedGeometry = staticGenerator.generate()\r\n\r\n const positions = mergedGeometry.attributes.position.array as Float32Array\r\n const indices = mergedGeometry.index?.array as Uint32Array\r\n\r\n return { positions, indices, }\r\n\r\n}","import { MeshStandardMaterial, Object3D, } from 'three'\r\nimport { NavMesh, Crowd, CrowdParams, } from '@recast-navigation/core'\r\nimport { generateSoloNavMesh, SoloNavMeshGeneratorConfig, } from '@recast-navigation/generators'\r\nimport { DebugDrawer, CrowdHelper, CrowdHelperParams, } from '@recast-navigation/three'\r\nimport SoonSpace from 'soonspacejs'\r\nimport { getVertices, } from './utils'\r\n\r\nconst { warn, } = SoonSpace.utils\r\n\r\nclass PathfindingPlugin {\r\n\r\n navMesh: NavMesh | null = null\r\n crowd: Crowd | null = null\r\n debugDrawer: DebugDrawer | null = null\r\n crowdHelper: CrowdHelper | null = null\r\n\r\n constructor ( readonly ssp: SoonSpace ) {}\r\n\r\n // solo navmesh\r\n createSoloNavMesh ( objects: Object3D[], config: Partial<SoloNavMeshGeneratorConfig> = {} ): NavMesh | null {\r\n\r\n if ( this.navMesh ) {\r\n\r\n warn( 'navmesh 已经存在,请先调用 disposeNavMesh()' )\r\n return this.navMesh\r\n \r\n }\r\n\r\n const { positions, indices, } = getVertices( objects )\r\n\r\n const result = generateSoloNavMesh( positions, indices, config )\r\n\r\n if ( result.success ) {\r\n\r\n this.navMesh = result.navMesh\r\n return this.navMesh\r\n \r\n } \r\n\r\n return null\r\n \r\n }\r\n\r\n disposeSoloNavMesh (): void {\r\n\r\n this.navMesh?.destroy()\r\n this.navMesh = null\r\n \r\n }\r\n\r\n // crowd\r\n _crowdUpdate = () => {\r\n\r\n if ( this.crowd ) {\r\n\r\n this.crowd.update( this.ssp.viewport.state.delta )\r\n this.crowdHelper?.update()\r\n if ( this.crowd.getActiveAgentCount() > 0 ) this.ssp.render()\r\n\r\n }\r\n \r\n }\r\n\r\n createCrowd ( params: CrowdParams ): Crowd | null {\r\n\r\n if ( this.crowd ) {\r\n\r\n warn( 'crowd 已经存在,请先调用 disposeCrowd()' )\r\n return this.crowd\r\n \r\n }\r\n\r\n if ( !this.navMesh ) {\r\n\r\n warn( 'navmesh 不存在,请先调用 createSoloNavMesh()' )\r\n return null\r\n \r\n }\r\n\r\n this.crowd = new Crowd( this.navMesh, params )\r\n this.ssp.signals.beforeRender.add( this._crowdUpdate )\r\n return this.crowd\r\n \r\n }\r\n\r\n disposeCrowd (): void {\r\n\r\n this.crowd?.destroy()\r\n this.crowd = null\r\n this.ssp.signals.beforeRender.remove( this._crowdUpdate )\r\n \r\n }\r\n\r\n createDebugDrawer (): DebugDrawer | null {\r\n\r\n if ( this.debugDrawer ) {\r\n\r\n warn( 'debug drawer 已经存在,请先调用 disposeDebugDrawer()' )\r\n return this.debugDrawer\r\n \r\n }\r\n\r\n if ( !this.navMesh ) {\r\n\r\n warn( 'navmesh 不存在,请先调用 createSoloNavMesh()' )\r\n return null\r\n \r\n }\r\n\r\n this.debugDrawer = new DebugDrawer()\r\n this.debugDrawer.drawNavMesh( this.navMesh, 0 )\r\n this.ssp.addObject( this.debugDrawer )\r\n return this.debugDrawer\r\n \r\n }\r\n\r\n disposeDebugDrawer (): void {\r\n\r\n if ( this.debugDrawer ) {\r\n\r\n this.debugDrawer.dispose()\r\n this.ssp.removeObject( this.debugDrawer )\r\n this.debugDrawer = null\r\n \r\n }\r\n \r\n }\r\n\r\n createCrowdHelper ( params: CrowdHelperParams = { agentMaterial: new MeshStandardMaterial( { color: 0x00ff00, } ), } ): CrowdHelper | null {\r\n\r\n if ( this.crowdHelper ) {\r\n\r\n warn( 'crowd helper 已经存在,请先调用 disposeCrowdHelper()' )\r\n return this.crowdHelper\r\n \r\n }\r\n\r\n if ( !this.crowd ) {\r\n\r\n warn( 'crowd 不存在,请先调用 createCrowd()' )\r\n return null\r\n \r\n }\r\n\r\n this.crowdHelper = new CrowdHelper( this.crowd, params )\r\n this.ssp.addObject( this.crowdHelper ) \r\n return this.crowdHelper\r\n \r\n }\r\n\r\n disposeCrowdHelper () {\r\n\r\n if ( this.crowdHelper ) {\r\n\r\n this.crowdHelper.agentMeshes.forEach( ( mesh ) => {\r\n\r\n mesh.geometry.dispose()\r\n ;( mesh.material as MeshStandardMaterial ).dispose()\r\n \r\n } )\r\n this.ssp.removeObject( this.crowdHelper )\r\n \r\n }\r\n \r\n }\r\n\r\n dispose () {\r\n\r\n this.disposeSoloNavMesh()\r\n this.disposeCrowd()\r\n this.disposeDebugDrawer()\r\n this.disposeCrowdHelper()\r\n \r\n }\r\n\r\n}\r\n\r\nexport default PathfindingPlugin\r\nexport * from './utils'"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soonspacejs/plugin-pathfinding",
|
|
3
3
|
"pluginName": "PathfindingPlugin",
|
|
4
|
-
"version": "2.13.
|
|
4
|
+
"version": "2.13.7",
|
|
5
5
|
"description": "Pathfinding plugin for SoonSpace.js",
|
|
6
6
|
"main": "dist/index.esm.js",
|
|
7
7
|
"module": "dist/index.esm.js",
|
|
@@ -13,12 +13,12 @@
|
|
|
13
13
|
],
|
|
14
14
|
"author": "xuek,jiangqi",
|
|
15
15
|
"license": "UNLICENSED",
|
|
16
|
-
"gitHead": "
|
|
16
|
+
"gitHead": "550040550bf20ec0015982ff1159d0cfe9b35ed3",
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"@recast-navigation/core": "^0.38.0",
|
|
19
19
|
"@recast-navigation/generators": "^0.38.0",
|
|
20
20
|
"@recast-navigation/three": "^0.38.0",
|
|
21
21
|
"@recast-navigation/wasm": "^0.38.0",
|
|
22
|
-
"soonspacejs": "2.13.
|
|
22
|
+
"soonspacejs": "2.13.7"
|
|
23
23
|
}
|
|
24
24
|
}
|
package/dist/index.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Object3D } from 'three';
|
|
2
|
-
import { NavMesh, Crowd, CrowdParams } from '@recast-navigation/core';
|
|
3
|
-
import { SoloNavMeshGeneratorConfig } from '@recast-navigation/generators';
|
|
4
|
-
import { DebugDrawer, CrowdHelper, CrowdHelperParams } from '@recast-navigation/three';
|
|
5
|
-
import SoonSpace from 'soonspacejs';
|
|
6
|
-
declare class PathfindingPlugin {
|
|
7
|
-
readonly ssp: SoonSpace;
|
|
8
|
-
navMesh: NavMesh | null;
|
|
9
|
-
crowd: Crowd | null;
|
|
10
|
-
debugDrawer: DebugDrawer | null;
|
|
11
|
-
crowdHelper: CrowdHelper | null;
|
|
12
|
-
constructor(ssp: SoonSpace);
|
|
13
|
-
createSoloNavMesh(objects: Object3D[], config?: Partial<SoloNavMeshGeneratorConfig>): NavMesh | null;
|
|
14
|
-
disposeSoloNavMesh(): void;
|
|
15
|
-
_crowdUpdate: () => void;
|
|
16
|
-
createCrowd(params: CrowdParams): Crowd | null;
|
|
17
|
-
disposeCrowd(): void;
|
|
18
|
-
createDebugDrawer(): DebugDrawer | null;
|
|
19
|
-
disposeDebugDrawer(): void;
|
|
20
|
-
createCrowdHelper(params?: CrowdHelperParams): CrowdHelper | null;
|
|
21
|
-
disposeCrowdHelper(): void;
|
|
22
|
-
dispose(): void;
|
|
23
|
-
}
|
|
24
|
-
export default PathfindingPlugin;
|
|
25
|
-
export * from './utils';
|
package/dist/utils.d.ts
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { InstancedMesh, Mesh, Object3D } from 'three';
|
|
2
|
-
export declare function deInstancingMesh(insMesh: InstancedMesh): Mesh<import("three").BufferGeometry<import("three").NormalBufferAttributes>, import("three").Material | import("three").Material[], import("three").Object3DEventMap>[];
|
|
3
|
-
export declare function getVertices(objects: Object3D[]): {
|
|
4
|
-
positions: Float32Array;
|
|
5
|
-
indices: Uint32Array;
|
|
6
|
-
};
|