@shapediver/viewer.rendering-engine.intersection-engine 3.3.1 → 3.3.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/dist/implementation/IntersectionEngine.d.ts +3 -2
- package/dist/implementation/IntersectionEngine.d.ts.map +1 -1
- package/dist/implementation/IntersectionEngine.js +8 -6
- package/dist/implementation/IntersectionEngine.js.map +1 -1
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/IIntersectionEngine.d.ts +2 -1
- package/dist/interfaces/IIntersectionEngine.d.ts.map +1 -1
- package/package.json +7 -7
- package/src/implementation/IntersectionEngine.ts +11 -6
- package/src/index.ts +9 -8
- package/src/interfaces/IIntersectionEngine.ts +2 -1
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
1
2
|
import { GeometryData } from '@shapediver/viewer.shared.types';
|
|
2
3
|
import { IIntersection } from '../interfaces/IIntersection';
|
|
3
4
|
import { IIntersectionEngine } from '../interfaces/IIntersectionEngine';
|
|
@@ -12,10 +13,10 @@ export declare class IntersectionEngine implements IIntersectionEngine {
|
|
|
12
13
|
private _intersectNodes;
|
|
13
14
|
private constructor();
|
|
14
15
|
static get instance(): IntersectionEngine;
|
|
15
|
-
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[]): IIntersection[];
|
|
16
|
+
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[], rayCasterParams?: THREE.RaycasterParameters): IIntersection[];
|
|
16
17
|
intersectNode(ray: IRay, node: ITreeNode, geometryData: {
|
|
17
18
|
[key: string]: GeometryData;
|
|
18
|
-
}, viewportId: string, filterCriteria?: IIntersectionFilter[]): IIntersection[] | undefined;
|
|
19
|
+
}, viewportId: string, filterCriteria?: IIntersectionFilter[], rayCasterParams?: THREE.RaycasterParameters): IIntersection[] | undefined;
|
|
19
20
|
/**
|
|
20
21
|
* Gather all nodes that contain geometry data.
|
|
21
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntersectionEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/IntersectionEngine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IntersectionEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/IntersectionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAS,SAAS,EAAQ,MAAM,qCAAqC,CAAC;AAE7E,qBAAa,kBAAmB,YAAW,mBAAmB;IAG1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqC;IAClE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0C;IACrE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;IAE9C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAqB;IAE7C,OAAO,CAAC,eAAe,CAMd;IAMT,OAAO;IAWP,WAAkB,QAAQ,uBAEzB;IAMM,SAAS,CACZ,GAAG,EAAE,IAAI,EACT,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,mBAAmB,EAAE,EACtC,eAAe,CAAC,EAAE,KAAK,CAAC,mBAAmB,GAC5C,aAAa,EAAE;IAWX,aAAa,CAChB,GAAG,EAAE,IAAI,EACT,IAAI,EAAE,SAAS,EACf,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAA;KAAE,EAC7C,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,mBAAmB,EAAE,EACtC,eAAe,CAAC,EAAE,KAAK,CAAC,mBAAmB,GAC5C,aAAa,EAAE,GAAG,SAAS;IAsB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;CAkC3B"}
|
|
@@ -49,17 +49,17 @@ class IntersectionEngine {
|
|
|
49
49
|
}
|
|
50
50
|
// #endregion Public Static Getters And Setters (1)
|
|
51
51
|
// #region Public Methods (2)
|
|
52
|
-
intersect(ray, viewportId, filterCriteria) {
|
|
52
|
+
intersect(ray, viewportId, filterCriteria, rayCasterParams) {
|
|
53
53
|
let intersections = [];
|
|
54
54
|
this._intersectNodes.forEach(i => {
|
|
55
|
-
const currentIntersections = this.intersectNode(ray, i.node, i.geometryData, viewportId, filterCriteria);
|
|
55
|
+
const currentIntersections = this.intersectNode(ray, i.node, i.geometryData, viewportId, filterCriteria, rayCasterParams);
|
|
56
56
|
if (currentIntersections)
|
|
57
57
|
intersections = intersections.concat(currentIntersections);
|
|
58
58
|
});
|
|
59
59
|
intersections.sort((a, b) => a.distance - b.distance);
|
|
60
60
|
return intersections;
|
|
61
61
|
}
|
|
62
|
-
intersectNode(ray, node, geometryData, viewportId, filterCriteria) {
|
|
62
|
+
intersectNode(ray, node, geometryData, viewportId, filterCriteria, rayCasterParams) {
|
|
63
63
|
if (node.visible === false)
|
|
64
64
|
return;
|
|
65
65
|
if (viewportId !== undefined) {
|
|
@@ -71,11 +71,11 @@ class IntersectionEngine {
|
|
|
71
71
|
if (filterCriteria) {
|
|
72
72
|
for (let i = 0; i < filterCriteria.length; i++) {
|
|
73
73
|
if (filterCriteria[i](node))
|
|
74
|
-
return this.intersectionTest(ray, node, geometryData, viewportId);
|
|
74
|
+
return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams);
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
else {
|
|
78
|
-
return this.intersectionTest(ray, node, geometryData, viewportId);
|
|
78
|
+
return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams);
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
// #endregion Public Methods (2)
|
|
@@ -119,7 +119,9 @@ class IntersectionEngine {
|
|
|
119
119
|
* @param viewportId the viewport id
|
|
120
120
|
* @returns
|
|
121
121
|
*/
|
|
122
|
-
intersectionTest(ray, node, geometryData, viewportId) {
|
|
122
|
+
intersectionTest(ray, node, geometryData, viewportId, rayCasterParams) {
|
|
123
|
+
if (rayCasterParams)
|
|
124
|
+
this._raycaster.params = rayCasterParams;
|
|
123
125
|
this._raycaster.ray.direction.set(ray.direction[0], ray.direction[1], ray.direction[2]);
|
|
124
126
|
this._raycaster.ray.origin.set(ray.origin[0], ray.origin[1], ray.origin[2]);
|
|
125
127
|
let intersections = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntersectionEngine.js","sourceRoot":"","sources":["../../src/implementation/IntersectionEngine.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,+EAA4E;AAC5E,yEAA+D;AAK/D,iFAA6E;AAE7E,MAAa,kBAAkB;IAiB3B,4BAA4B;IAE5B,2BAA2B;IAE3B;QApBA,yBAAyB;QAER,iBAAY,GAAgB,oCAAW,CAAC,QAAQ,CAAC;QACjD,eAAU,GAAoB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpD,UAAK,GAAU,8BAAI,CAAC,QAAQ,CAAC;QAItC,oBAAe,GAMjB,EAAE,CAAC;QAOL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,kCAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAA8B;IAE9B,gDAAgD;IAEzC,MAAM,KAAK,QAAQ;QACtB,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,mDAAmD;IAEnD,6BAA6B;IAEtB,SAAS,CACZ,GAAS,EACT,UAAkB,EAClB,cAAsC;
|
|
1
|
+
{"version":3,"file":"IntersectionEngine.js","sourceRoot":"","sources":["../../src/implementation/IntersectionEngine.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { IRay } from
|
|
6
|
-
|
|
1
|
+
import { IIntersection } from './interfaces/IIntersection';
|
|
2
|
+
import { IIntersectionEngine } from './interfaces/IIntersectionEngine';
|
|
3
|
+
import { IIntersectionFilter } from './interfaces/IIntersectionFilter';
|
|
4
|
+
import { IntersectionEngine } from './implementation/IntersectionEngine';
|
|
5
|
+
import { IRay } from './interfaces/IRay';
|
|
6
|
+
import { RaycasterParameters } from 'three';
|
|
7
|
+
export { IRay, IIntersection, IIntersectionFilter, IIntersectionEngine, RaycasterParameters };
|
|
7
8
|
export { IntersectionEngine };
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EACnF,CAAC;AAEF,OAAO,EACL,kBAAkB,EACnB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAGA,4EAAyE;AASvE,mGATO,uCAAkB,OASP"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
1
2
|
import { IIntersection } from './IIntersection';
|
|
2
3
|
import { IIntersectionFilter } from './IIntersectionFilter';
|
|
3
4
|
import { IRay } from './IRay';
|
|
4
5
|
export interface IIntersectionEngine {
|
|
5
|
-
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[]): IIntersection[];
|
|
6
|
+
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[], rayCasterParams?: THREE.RaycasterParameters): IIntersection[];
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=IIntersectionEngine.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IIntersectionEngine.d.ts","sourceRoot":"","sources":["../../src/interfaces/IIntersectionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAGhC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,EAAE,GAAG,aAAa,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"IIntersectionEngine.d.ts","sourceRoot":"","sources":["../../src/interfaces/IIntersectionEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAGhC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,mBAAmB,EAAE,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,mBAAmB,GAAG,aAAa,EAAE,CAAC;CAGlJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shapediver/viewer.rendering-engine.intersection-engine",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.3",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"author": "Michael Oppitz <michael@shapediver.com>",
|
|
@@ -39,15 +39,15 @@
|
|
|
39
39
|
"testEnvironment": "node"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@shapediver/viewer.rendering-engine.rendering-engine": "3.3.
|
|
43
|
-
"@shapediver/viewer.shared.math": "3.3.
|
|
44
|
-
"@shapediver/viewer.shared.node-tree": "3.3.
|
|
45
|
-
"@shapediver/viewer.shared.services": "3.3.
|
|
46
|
-
"@shapediver/viewer.shared.types": "3.3.
|
|
42
|
+
"@shapediver/viewer.rendering-engine.rendering-engine": "3.3.3",
|
|
43
|
+
"@shapediver/viewer.shared.math": "3.3.3",
|
|
44
|
+
"@shapediver/viewer.shared.node-tree": "3.3.3",
|
|
45
|
+
"@shapediver/viewer.shared.services": "3.3.3",
|
|
46
|
+
"@shapediver/viewer.shared.types": "3.3.3",
|
|
47
47
|
"@types/three": "0.162.0",
|
|
48
48
|
"detect-it": "4.0.1",
|
|
49
49
|
"gl-matrix": "3.3.0",
|
|
50
50
|
"three": "0.162.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "6218af442a50a13c09c5f61f556792e0b0171437"
|
|
53
53
|
}
|
|
@@ -50,11 +50,12 @@ export class IntersectionEngine implements IIntersectionEngine {
|
|
|
50
50
|
public intersect(
|
|
51
51
|
ray: IRay,
|
|
52
52
|
viewportId: string,
|
|
53
|
-
filterCriteria?: IIntersectionFilter[]
|
|
53
|
+
filterCriteria?: IIntersectionFilter[],
|
|
54
|
+
rayCasterParams?: THREE.RaycasterParameters
|
|
54
55
|
): IIntersection[] {
|
|
55
56
|
let intersections: IIntersection[] = [];
|
|
56
57
|
this._intersectNodes.forEach(i => {
|
|
57
|
-
const currentIntersections = this.intersectNode(ray, i.node, i.geometryData, viewportId, filterCriteria);
|
|
58
|
+
const currentIntersections = this.intersectNode(ray, i.node, i.geometryData, viewportId, filterCriteria, rayCasterParams);
|
|
58
59
|
if (currentIntersections)
|
|
59
60
|
intersections = intersections.concat(currentIntersections);
|
|
60
61
|
});
|
|
@@ -67,7 +68,8 @@ export class IntersectionEngine implements IIntersectionEngine {
|
|
|
67
68
|
node: ITreeNode,
|
|
68
69
|
geometryData: { [key: string]: GeometryData },
|
|
69
70
|
viewportId: string,
|
|
70
|
-
filterCriteria?: IIntersectionFilter[]
|
|
71
|
+
filterCriteria?: IIntersectionFilter[],
|
|
72
|
+
rayCasterParams?: THREE.RaycasterParameters
|
|
71
73
|
): IIntersection[] | undefined {
|
|
72
74
|
if (node.visible === false) return;
|
|
73
75
|
|
|
@@ -79,10 +81,10 @@ export class IntersectionEngine implements IIntersectionEngine {
|
|
|
79
81
|
if (filterCriteria) {
|
|
80
82
|
for (let i = 0; i < filterCriteria.length; i++) {
|
|
81
83
|
if (filterCriteria[i](node))
|
|
82
|
-
return this.intersectionTest(ray, node, geometryData, viewportId);
|
|
84
|
+
return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams);
|
|
83
85
|
}
|
|
84
86
|
} else {
|
|
85
|
-
return this.intersectionTest(ray, node, geometryData, viewportId);
|
|
87
|
+
return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams);
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
|
|
@@ -135,8 +137,11 @@ export class IntersectionEngine implements IIntersectionEngine {
|
|
|
135
137
|
ray: IRay,
|
|
136
138
|
node: ITreeNode,
|
|
137
139
|
geometryData: { [key: string]: GeometryData },
|
|
138
|
-
viewportId: string
|
|
140
|
+
viewportId: string,
|
|
141
|
+
rayCasterParams?: THREE.RaycasterParameters
|
|
139
142
|
): IIntersection[] | undefined {
|
|
143
|
+
if (rayCasterParams) this._raycaster.params = rayCasterParams;
|
|
144
|
+
|
|
140
145
|
this._raycaster.ray.direction.set(ray.direction[0], ray.direction[1], ray.direction[2]);
|
|
141
146
|
this._raycaster.ray.origin.set(ray.origin[0], ray.origin[1], ray.origin[2]);
|
|
142
147
|
|
package/src/index.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { IRay } from
|
|
1
|
+
import { IIntersection } from './interfaces/IIntersection';
|
|
2
|
+
import { IIntersectionEngine } from './interfaces/IIntersectionEngine';
|
|
3
|
+
import { IIntersectionFilter } from './interfaces/IIntersectionFilter';
|
|
4
|
+
import { IntersectionEngine } from './implementation/IntersectionEngine';
|
|
5
|
+
import { IRay } from './interfaces/IRay';
|
|
6
|
+
import { RaycasterParameters } from 'three';
|
|
6
7
|
|
|
7
8
|
export {
|
|
8
|
-
IRay, IIntersection, IIntersectionFilter, IIntersectionEngine
|
|
9
|
-
}
|
|
9
|
+
IRay, IIntersection, IIntersectionFilter, IIntersectionEngine, RaycasterParameters
|
|
10
|
+
};
|
|
10
11
|
|
|
11
12
|
export {
|
|
12
13
|
IntersectionEngine
|
|
13
|
-
}
|
|
14
|
+
};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
1
2
|
import { IIntersection } from './IIntersection';
|
|
2
3
|
import { IIntersectionFilter } from './IIntersectionFilter';
|
|
3
4
|
import { IRay } from './IRay';
|
|
@@ -5,7 +6,7 @@ import { IRay } from './IRay';
|
|
|
5
6
|
export interface IIntersectionEngine {
|
|
6
7
|
// #region Public Methods (1)
|
|
7
8
|
|
|
8
|
-
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[]): IIntersection[];
|
|
9
|
+
intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[], rayCasterParams?: THREE.RaycasterParameters): IIntersection[];
|
|
9
10
|
|
|
10
11
|
// #endregion Public Methods (1)
|
|
11
12
|
}
|