@shapediver/viewer.rendering-engine.intersection-engine 3.8.5 → 3.8.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.
@@ -1,9 +1,7 @@
1
1
  import * as THREE from 'three';
2
2
  import { GeometryData } from '@shapediver/viewer.shared.types';
3
- import { IIntersection } from '../interfaces/IIntersection';
3
+ import { IIntersection, IIntersectionFilter, IRay } from '@shapediver/viewer.shared.types';
4
4
  import { IIntersectionEngine } from '../interfaces/IIntersectionEngine';
5
- import { IIntersectionFilter } from '../interfaces/IIntersectionFilter';
6
- import { IRay } from '../interfaces/IRay';
7
5
  import { ITreeNode } from '@shapediver/viewer.shared.node-tree';
8
6
  export declare class IntersectionEngine implements IIntersectionEngine {
9
7
  private readonly _eventEngine;
@@ -1 +1 @@
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"}
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,mBAAmB,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,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;IAmCX,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;IAwB9B;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;CA0C3B"}
@@ -56,7 +56,30 @@ class IntersectionEngine {
56
56
  if (currentIntersections)
57
57
  intersections = intersections.concat(currentIntersections);
58
58
  });
59
- intersections.sort((a, b) => a.distance - b.distance);
59
+ intersections.sort((a, b) => {
60
+ const distanceDiff = a.distance - b.distance;
61
+ if (distanceDiff !== 0)
62
+ return distanceDiff;
63
+ // if the distance is the same, sort by the closest InteractionData within the sceneTree
64
+ let depthA = 0;
65
+ let depthB = 0;
66
+ const computeDepth = (targetNode, node, depth = 0) => {
67
+ if (targetNode === node)
68
+ return depth;
69
+ if (node.parent)
70
+ return computeDepth(targetNode, node.parent, depth + 1);
71
+ return -1;
72
+ };
73
+ a.node.traverse(node => {
74
+ if (node.data.includes(a.geometryData))
75
+ depthA = computeDepth(a.node, node);
76
+ });
77
+ b.node.traverse(node => {
78
+ if (node.data.includes(b.geometryData))
79
+ depthB = computeDepth(b.node, node);
80
+ });
81
+ return depthA - depthB;
82
+ });
60
83
  return intersections;
61
84
  }
62
85
  intersectNode(ray, node, geometryData, viewportId, filterCriteria, rayCasterParams) {
@@ -70,8 +93,10 @@ class IntersectionEngine {
70
93
  }
71
94
  if (filterCriteria) {
72
95
  for (let i = 0; i < filterCriteria.length; i++) {
96
+ // if the filter criteria returns false, skip the intersection test
97
+ // the filter criteria per geometryData is then evaluated in the intersectionTest method
73
98
  if (filterCriteria[i](node))
74
- return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams);
99
+ return this.intersectionTest(ray, node, geometryData, viewportId, rayCasterParams, filterCriteria);
75
100
  }
76
101
  }
77
102
  else {
@@ -119,28 +144,36 @@ class IntersectionEngine {
119
144
  * @param viewportId the viewport id
120
145
  * @returns
121
146
  */
122
- intersectionTest(ray, node, geometryData, viewportId, rayCasterParams) {
147
+ intersectionTest(ray, node, geometryData, viewportId, rayCasterParams, filterCriteria) {
123
148
  if (rayCasterParams)
124
149
  this._raycaster.params = rayCasterParams;
125
150
  this._raycaster.ray.direction.set(ray.direction[0], ray.direction[1], ray.direction[2]);
126
151
  this._raycaster.ray.origin.set(ray.origin[0], ray.origin[1], ray.origin[2]);
127
- let intersections = [];
128
152
  const threeJsObject = node.convertedObject[viewportId];
129
153
  if (threeJsObject) {
130
154
  const intersectionThree = this._raycaster.intersectObject(threeJsObject);
131
- const intersection = intersectionThree.map(i => {
132
- const intersection = {
155
+ if (intersectionThree.length === 0)
156
+ return;
157
+ let intersections = intersectionThree.map(i => {
158
+ const intersectionDefinition = {
133
159
  distance: i.distance,
134
160
  point: [i.point.x, i.point.y, i.point.z],
135
161
  node: node,
136
162
  geometryData: geometryData[`${i.object.parent.SDid}_${i.object.parent.SDversion}`]
137
163
  };
138
- return intersection;
164
+ return intersectionDefinition;
139
165
  });
140
- intersections = intersections.concat(intersection);
166
+ if (filterCriteria) {
167
+ intersections = intersections.filter(i => {
168
+ for (let j = 0; j < filterCriteria.length; j++)
169
+ if (filterCriteria[j](i.node, i.geometryData))
170
+ return true;
171
+ return false;
172
+ });
173
+ }
174
+ intersections.sort((a, b) => a.distance - b.distance);
175
+ return intersections;
141
176
  }
142
- intersections.sort((a, b) => a.distance - b.distance);
143
- return intersections;
144
177
  }
145
178
  }
146
179
  exports.IntersectionEngine = IntersectionEngine;
@@ -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,9 +1,6 @@
1
- import { IIntersection } from './interfaces/IIntersection';
2
1
  import { IIntersectionEngine } from './interfaces/IIntersectionEngine';
3
- import { IIntersectionFilter } from './interfaces/IIntersectionFilter';
4
2
  import { IntersectionEngine } from './implementation/IntersectionEngine';
5
- import { IRay } from './interfaces/IRay';
6
3
  import { RaycasterParameters } from 'three';
7
- export { IRay, IIntersection, IIntersectionFilter, IIntersectionEngine, RaycasterParameters };
4
+ export { IIntersectionEngine, RaycasterParameters };
8
5
  export { IntersectionEngine };
9
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EACL,mBAAmB,EAAE,mBAAmB,EACzC,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":";;;AAGA,4EAAyE;AASvE,mGATO,uCAAkB,OASP"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,4EAAyE;AAQvE,mGARO,uCAAkB,OAQP"}
@@ -9,6 +9,6 @@ export interface IIntersection {
9
9
  /** The intersected node. */
10
10
  node: ITreeNode;
11
11
  /** The intersected geometry data */
12
- geometryData?: IGeometryData;
12
+ geometryData: IGeometryData;
13
13
  }
14
14
  //# sourceMappingURL=IIntersection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IIntersection.d.ts","sourceRoot":"","sources":["../../src/interfaces/IIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC1B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,KAAK,EAAE,IAAI,CAAC;IACZ,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,oCAAoC;IACpC,YAAY,CAAC,EAAE,aAAa,CAAA;CAC/B"}
1
+ {"version":3,"file":"IIntersection.d.ts","sourceRoot":"","sources":["../../src/interfaces/IIntersection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC1B,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,iCAAiC;IACjC,KAAK,EAAE,IAAI,CAAC;IACZ,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAA;IACf,oCAAoC;IACpC,YAAY,EAAE,aAAa,CAAA;CAC9B"}
@@ -1,7 +1,5 @@
1
1
  import * as THREE from 'three';
2
- import { IIntersection } from './IIntersection';
3
- import { IIntersectionFilter } from './IIntersectionFilter';
4
- import { IRay } from './IRay';
2
+ import { IIntersection, IIntersectionFilter, IRay } from '@shapediver/viewer.shared.types';
5
3
  export interface IIntersectionEngine {
6
4
  intersect(ray: IRay, viewportId: string, filterCriteria?: IIntersectionFilter[], rayCasterParams?: THREE.RaycasterParameters): IIntersection[];
7
5
  }
@@ -1 +1 @@
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"}
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,mBAAmB,EAAE,IAAI,EAAE,MAAM,iCAAiC,CAAC;AAE3F,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.8.5",
3
+ "version": "3.8.7",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -38,15 +38,15 @@
38
38
  "testEnvironment": "node"
39
39
  },
40
40
  "dependencies": {
41
- "@shapediver/viewer.rendering-engine.rendering-engine": "3.8.5",
42
- "@shapediver/viewer.shared.math": "3.8.5",
43
- "@shapediver/viewer.shared.node-tree": "3.8.5",
44
- "@shapediver/viewer.shared.services": "3.8.5",
45
- "@shapediver/viewer.shared.types": "3.8.5",
41
+ "@shapediver/viewer.rendering-engine.rendering-engine": "3.8.7",
42
+ "@shapediver/viewer.shared.math": "3.8.7",
43
+ "@shapediver/viewer.shared.node-tree": "3.8.7",
44
+ "@shapediver/viewer.shared.services": "3.8.7",
45
+ "@shapediver/viewer.shared.types": "3.8.7",
46
46
  "@types/three": "0.162.0",
47
47
  "detect-it": "4.0.1",
48
48
  "gl-matrix": "3.3.0",
49
49
  "three": "0.162.0"
50
50
  },
51
- "gitHead": "d6743d2145082ca860761af8e26badfca3440f00"
51
+ "gitHead": "21a47b04addb991a98d0b1e746e2578fc649ccf3"
52
52
  }