@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.
@@ -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":"AAEA,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,GACvC,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,GACvC,aAAa,EAAE,GAAG,SAAS;IAsB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;CA+B3B"}
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":"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"}
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 { IntersectionEngine } from "./implementation/IntersectionEngine";
2
- import { IIntersection } from "./interfaces/IIntersection";
3
- import { IIntersectionEngine } from "./interfaces/IIntersectionEngine";
4
- import { IIntersectionFilter } from "./interfaces/IIntersectionFilter";
5
- import { IRay } from "./interfaces/IRay";
6
- export { IRay, IIntersection, IIntersectionFilter, IIntersectionEngine };
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAExC,OAAO,EACL,IAAI,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAC9D,CAAA;AAED,OAAO,EACL,kBAAkB,EACnB,CAAA"}
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":";;;AAAA,4EAAwE;AAWtE,mGAXO,uCAAkB,OAWP"}
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;CAGrG"}
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.1",
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.1",
43
- "@shapediver/viewer.shared.math": "3.3.1",
44
- "@shapediver/viewer.shared.node-tree": "3.3.1",
45
- "@shapediver/viewer.shared.services": "3.3.1",
46
- "@shapediver/viewer.shared.types": "3.3.1",
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": "40c18b6ed3f4db41d1fb966945e8df97cb6fa333"
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 { IntersectionEngine } from "./implementation/IntersectionEngine"
2
- import { IIntersection } from "./interfaces/IIntersection"
3
- import { IIntersectionEngine } from "./interfaces/IIntersectionEngine"
4
- import { IIntersectionFilter } from "./interfaces/IIntersectionFilter"
5
- import { IRay } from "./interfaces/IRay"
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
  }