copper3d 1.15.6 → 1.15.8

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.
Files changed (50) hide show
  1. package/README.md +5 -2
  2. package/dist/Controls/Copper3dTrackballControls.js +37 -49
  3. package/dist/Controls/Copper3dTrackballControls.js.map +1 -1
  4. package/dist/Loader/copperDicomLoader.js +0 -2
  5. package/dist/Loader/copperDicomLoader.js.map +1 -1
  6. package/dist/Loader/copperNrrdLoader.js +1 -4
  7. package/dist/Loader/copperNrrdLoader.js.map +1 -1
  8. package/dist/Renderer/baseRenderer.d.ts +3 -3
  9. package/dist/Renderer/baseRenderer.js +9 -5
  10. package/dist/Renderer/baseRenderer.js.map +1 -1
  11. package/dist/Renderer/copperRenderer.d.ts +2 -2
  12. package/dist/Renderer/copperRenderer.js +6 -2
  13. package/dist/Renderer/copperRenderer.js.map +1 -1
  14. package/dist/Renderer/copperRendererOnDemond.d.ts +2 -2
  15. package/dist/Renderer/copperRendererOnDemond.js +0 -3
  16. package/dist/Renderer/copperRendererOnDemond.js.map +1 -1
  17. package/dist/Scene/baseScene.d.ts +2 -2
  18. package/dist/Scene/baseScene.js +7 -5
  19. package/dist/Scene/baseScene.js.map +1 -1
  20. package/dist/Scene/commonSceneMethod.d.ts +4 -2
  21. package/dist/Scene/commonSceneMethod.js +13 -8
  22. package/dist/Scene/commonSceneMethod.js.map +1 -1
  23. package/dist/Scene/copperScene.d.ts +2 -1
  24. package/dist/Scene/copperScene.js +5 -11
  25. package/dist/Scene/copperScene.js.map +1 -1
  26. package/dist/Utils/convet.js.map +1 -0
  27. package/dist/Utils/nrrd_tool.js +0 -2
  28. package/dist/Utils/nrrd_tool.js.map +1 -1
  29. package/dist/bundle.esm.js +77 -91
  30. package/dist/bundle.umd.js +77 -91
  31. package/dist/index.d.ts +1 -1
  32. package/dist/index.js +2 -2
  33. package/dist/types/Renderer/baseRenderer.d.ts +3 -3
  34. package/dist/types/Renderer/copperRenderer.d.ts +2 -2
  35. package/dist/types/Renderer/copperRendererOnDemond.d.ts +2 -2
  36. package/dist/types/Scene/baseScene.d.ts +2 -2
  37. package/dist/types/Scene/commonSceneMethod.d.ts +4 -2
  38. package/dist/types/Scene/copperScene.d.ts +2 -1
  39. package/dist/types/index.d.ts +1 -1
  40. package/dist/types/types/types.d.ts +11 -5
  41. package/dist/types/types.d.ts +11 -5
  42. package/package.json +1 -1
  43. package/dist/Controls/Copper3dTrackballControls1.d.ts +0 -45
  44. package/dist/Controls/Copper3dTrackballControls1.js +0 -531
  45. package/dist/Controls/Copper3dTrackballControls1.js.map +0 -1
  46. package/dist/Loader/convet.js.map +0 -1
  47. package/dist/types/Controls/Copper3dTrackballControls1.d.ts +0 -45
  48. /package/dist/{Loader → Utils}/convet.d.ts +0 -0
  49. /package/dist/{Loader → Utils}/convet.js +0 -0
  50. /package/dist/types/{Loader → Utils}/convet.d.ts +0 -0
@@ -5,13 +5,14 @@ import { GUI } from "dat.gui";
5
5
  interface SceneMapType {
6
6
  [key: string]: copperScene | baseScene | copperMScene;
7
7
  }
8
- interface optType {
8
+ interface ICopperRenderOpt {
9
9
  guiOpen: boolean;
10
- camera?: boolean;
11
- performance?: boolean;
12
- light?: boolean;
10
+ cameraGui?: boolean;
11
+ performanceGui?: boolean;
12
+ lightGui?: boolean;
13
13
  alpha?: boolean;
14
14
  controls?: "copper3d" | "trackball" | "orbit";
15
+ cameraType?: "perspective" | "orthographic";
15
16
  [key: string]: string | boolean | undefined;
16
17
  }
17
18
  interface stateType {
@@ -77,6 +78,11 @@ interface HeartRateResult_kiwrious {
77
78
  status: string;
78
79
  value?: number;
79
80
  }
81
+ interface ICopperSceneOpts {
82
+ controls?: "copper3d" | "orbit" | "trackball";
83
+ camera?: "perspective" | "orthographic";
84
+ alpha?: boolean;
85
+ }
80
86
  declare class SerialService_kiwrious {
81
87
  onSerialData?: (data: SensorReadResult_kiwrious) => void;
82
88
  onSerialConnection?: (connect: boolean) => void;
@@ -196,4 +202,4 @@ interface IOptVTKLoader {
196
202
  transparent?: boolean;
197
203
  opacity?: number;
198
204
  }
199
- export type { SceneMapType, optType, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, };
205
+ export type { SceneMapType, ICopperRenderOpt, stateType, modelVisualisationDataType, preRenderCallbackFunctionType, baseStateType, nrrdMeshesType, nrrdSliceType, nrrdDragImageOptType, nrrdDrawImageOptType, loadingBarType, SensorDecodedValue_kiwrious, SensorReadResult_kiwrious, HeartRateResult_kiwrious, SerialService_kiwrious, kiwriousType, mouseMovePositionType, positionType, paintImagesType, paintImageType, storedPaintImagesType, optionsGltfExporterType, vtkModels, undoType, copperVolumeType, dicomLoaderOptsType, skipSlicesDictType, exportPaintImagesType, exportPaintImageType, storeExportPaintImageType, IOptVTKLoader, ICopperSceneOpts, };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "copper3d",
3
3
  "description": "A 3d visualisation package base on threejs provides multiple scenes and Nrrd image load funtion.",
4
- "version": "1.15.6",
4
+ "version": "1.15.8",
5
5
  "main": "dist/bundle.umd.js",
6
6
  "moudle": "dist/bundle.esm.js",
7
7
  "types": "dist/types/index.d.ts",
@@ -1,45 +0,0 @@
1
- import { EventDispatcher, MOUSE, Vector3, PerspectiveCamera, OrthographicCamera } from "three";
2
- declare class Copper3dTrackballControls1 extends EventDispatcher {
3
- object: PerspectiveCamera | OrthographicCamera;
4
- domElement: HTMLElement;
5
- enabled: boolean;
6
- screen: {
7
- left: number;
8
- top: number;
9
- width: number;
10
- height: number;
11
- };
12
- rotateSpeed: number;
13
- zoomSpeed: number;
14
- panSpeed: number;
15
- noRotate: boolean;
16
- noZoom: boolean;
17
- noPan: boolean;
18
- staticMoving: boolean;
19
- dynamicDampingFactor: number;
20
- minDistance: number;
21
- maxDistance: number;
22
- minZoom: number;
23
- maxZoom: number;
24
- keys: ["KeyA", "KeyS", "KeyD"];
25
- mouseButtons: {
26
- LEFT: MOUSE.ROTATE;
27
- MIDDLE: MOUSE.DOLLY;
28
- RIGHT: MOUSE.PAN;
29
- };
30
- target: Vector3;
31
- target0: Vector3;
32
- position0: Vector3;
33
- up0: Vector3;
34
- zoom0: number;
35
- handleResize: () => void;
36
- rotateCamera: () => void;
37
- zoomCamera: () => void;
38
- panCamera: () => void;
39
- checkDistances: () => void;
40
- update: () => void;
41
- reset: () => void;
42
- dispose: () => void;
43
- constructor(object: PerspectiveCamera | OrthographicCamera, domElement: HTMLElement);
44
- }
45
- export { Copper3dTrackballControls1 };
@@ -1,531 +0,0 @@
1
- import { EventDispatcher, MathUtils, MOUSE, Quaternion, Vector2, Vector3, } from "three";
2
- const _changeEvent = { type: "change" };
3
- const _startEvent = { type: "start" };
4
- const _endEvent = { type: "end" };
5
- class Copper3dTrackballControls1 extends EventDispatcher {
6
- constructor(object, domElement) {
7
- super();
8
- const scope = this;
9
- const STATE = {
10
- NONE: -1,
11
- ROTATE: 0,
12
- ZOOM: 1,
13
- PAN: 2,
14
- TOUCH_ROTATE: 3,
15
- TOUCH_ZOOM: 4,
16
- TOUCH_PAN: 5,
17
- TOUCH_ZOOM_PAN: 6,
18
- };
19
- this.object = object;
20
- this.domElement = domElement;
21
- this.domElement.style.touchAction = "none"; // disable touch scroll
22
- // API
23
- this.enabled = true;
24
- this.screen = { left: 0, top: 0, width: 0, height: 0 };
25
- this.rotateSpeed = 1.0;
26
- this.zoomSpeed = 1.2;
27
- this.panSpeed = 0.3;
28
- this.noRotate = false;
29
- this.noZoom = false;
30
- this.noPan = false;
31
- this.staticMoving = false;
32
- this.dynamicDampingFactor = 0.2;
33
- this.minDistance = 0;
34
- this.maxDistance = Infinity;
35
- this.minZoom = 0;
36
- this.maxZoom = Infinity;
37
- this.keys = ["KeyA" /*A*/, "KeyS" /*S*/, "KeyD" /*D*/];
38
- this.mouseButtons = {
39
- LEFT: MOUSE.ROTATE,
40
- MIDDLE: MOUSE.DOLLY,
41
- RIGHT: MOUSE.PAN,
42
- };
43
- // internals
44
- this.target = new Vector3();
45
- const EPS = 0.000001;
46
- const lastPosition = new Vector3();
47
- let lastZoom = 1;
48
- let _state = STATE.NONE, _keyState = STATE.NONE, _touchZoomDistanceStart = 0, _touchZoomDistanceEnd = 0, _lastAngle = 0;
49
- const _eye = new Vector3(), _movePrev = new Vector2(), _moveCurr = new Vector2(), _lastAxis = new Vector3(), _zoomStart = new Vector2(), _zoomEnd = new Vector2(), _panStart = new Vector2(), _panEnd = new Vector2(), _pointers = [], _pointerPositions = {};
50
- // for reset
51
- this.target0 = this.target.clone();
52
- this.position0 = this.object.position.clone();
53
- this.up0 = this.object.up.clone();
54
- this.zoom0 = this.object.zoom;
55
- // methods
56
- this.handleResize = function () {
57
- const box = scope.domElement.getBoundingClientRect();
58
- // adjustments come from similar code in the jquery offset() function
59
- const d = scope.domElement.ownerDocument.documentElement;
60
- scope.screen.left = box.left + window.pageXOffset - d.clientLeft;
61
- scope.screen.top = box.top + window.pageYOffset - d.clientTop;
62
- scope.screen.width = box.width;
63
- scope.screen.height = box.height;
64
- };
65
- const getMouseOnScreen = (function () {
66
- const vector = new Vector2();
67
- return function getMouseOnScreen(pageX, pageY) {
68
- vector.set((pageX - scope.screen.left) / scope.screen.width, (pageY - scope.screen.top) / scope.screen.height);
69
- return vector;
70
- };
71
- })();
72
- const getMouseOnCircle = (function () {
73
- const vector = new Vector2();
74
- return function getMouseOnCircle(pageX, pageY) {
75
- vector.set((pageX - scope.screen.width * 0.5 - scope.screen.left) /
76
- (scope.screen.width * 0.5), (scope.screen.height + 2 * (scope.screen.top - pageY)) /
77
- scope.screen.width // screen.width intentional
78
- );
79
- return vector;
80
- };
81
- })();
82
- this.rotateCamera = (function () {
83
- const axis = new Vector3(), quaternion = new Quaternion(), eyeDirection = new Vector3(), objectUpDirection = new Vector3(), objectSidewaysDirection = new Vector3(), moveDirection = new Vector3();
84
- return function rotateCamera() {
85
- moveDirection.set(_moveCurr.x - _movePrev.x, _moveCurr.y - _movePrev.y, 0);
86
- let angle = moveDirection.length();
87
- if (angle) {
88
- _eye.copy(scope.object.position).sub(scope.target);
89
- eyeDirection.copy(_eye).normalize();
90
- objectUpDirection.copy(scope.object.up).normalize();
91
- objectSidewaysDirection
92
- .crossVectors(objectUpDirection, eyeDirection)
93
- .normalize();
94
- objectUpDirection.setLength(_moveCurr.y - _movePrev.y);
95
- objectSidewaysDirection.setLength(_moveCurr.x - _movePrev.x);
96
- moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));
97
- axis.crossVectors(moveDirection, _eye).normalize();
98
- angle *= scope.rotateSpeed;
99
- quaternion.setFromAxisAngle(axis, angle);
100
- _eye.applyQuaternion(quaternion);
101
- scope.object.up.applyQuaternion(quaternion);
102
- _lastAxis.copy(axis);
103
- _lastAngle = angle;
104
- }
105
- else if (!scope.staticMoving && _lastAngle) {
106
- _lastAngle *= Math.sqrt(1.0 - scope.dynamicDampingFactor);
107
- _eye.copy(scope.object.position).sub(scope.target);
108
- quaternion.setFromAxisAngle(_lastAxis, _lastAngle);
109
- _eye.applyQuaternion(quaternion);
110
- scope.object.up.applyQuaternion(quaternion);
111
- }
112
- _movePrev.copy(_moveCurr);
113
- };
114
- })();
115
- this.zoomCamera = function () {
116
- let factor;
117
- const zoomCore = function (factor) {
118
- if (scope.object.isPerspectiveCamera) {
119
- _eye.multiplyScalar(factor);
120
- }
121
- else if (scope.object.isOrthographicCamera) {
122
- scope.object.zoom = MathUtils.clamp(scope.object.zoom / factor, scope.minZoom, scope.maxZoom);
123
- if (lastZoom !== scope.object.zoom) {
124
- scope.object.updateProjectionMatrix();
125
- }
126
- }
127
- else {
128
- console.warn("THREE.TrackballControls: Unsupported camera type");
129
- }
130
- };
131
- if (_state === STATE.TOUCH_ZOOM_PAN) {
132
- factor = _touchZoomDistanceStart / _touchZoomDistanceEnd;
133
- _touchZoomDistanceStart = _touchZoomDistanceEnd;
134
- zoomCore(factor);
135
- }
136
- else {
137
- factor = 1.0 + (_zoomEnd.y - _zoomStart.y) * scope.zoomSpeed;
138
- if (factor !== 1.0 && factor > 0.0) {
139
- zoomCore(factor);
140
- }
141
- if (scope.staticMoving) {
142
- _zoomStart.copy(_zoomEnd);
143
- }
144
- else {
145
- _zoomStart.y +=
146
- (_zoomEnd.y - _zoomStart.y) * this.dynamicDampingFactor;
147
- }
148
- }
149
- };
150
- this.panCamera = (function () {
151
- const mouseChange = new Vector2(), objectUp = new Vector3(), pan = new Vector3();
152
- return function panCamera() {
153
- mouseChange.copy(_panEnd).sub(_panStart);
154
- if (mouseChange.lengthSq()) {
155
- if (scope.object.isOrthographicCamera) {
156
- const scale_x = (scope.object.right -
157
- scope.object.left) /
158
- scope.object.zoom /
159
- scope.domElement.clientWidth;
160
- const scale_y = (scope.object.top -
161
- scope.object.bottom) /
162
- scope.object.zoom /
163
- scope.domElement.clientWidth;
164
- mouseChange.x *= scale_x;
165
- mouseChange.y *= scale_y;
166
- }
167
- mouseChange.multiplyScalar(_eye.length() * scope.panSpeed);
168
- pan.copy(_eye).cross(scope.object.up).setLength(mouseChange.x);
169
- pan.add(objectUp.copy(scope.object.up).setLength(mouseChange.y));
170
- scope.object.position.add(pan);
171
- scope.target.add(pan);
172
- if (scope.staticMoving) {
173
- _panStart.copy(_panEnd);
174
- }
175
- else {
176
- _panStart.add(mouseChange
177
- .subVectors(_panEnd, _panStart)
178
- .multiplyScalar(scope.dynamicDampingFactor));
179
- }
180
- }
181
- };
182
- })();
183
- this.checkDistances = function () {
184
- if (!scope.noZoom || !scope.noPan) {
185
- if (_eye.lengthSq() > scope.maxDistance * scope.maxDistance) {
186
- scope.object.position.addVectors(scope.target, _eye.setLength(scope.maxDistance));
187
- _zoomStart.copy(_zoomEnd);
188
- }
189
- if (_eye.lengthSq() < scope.minDistance * scope.minDistance) {
190
- scope.object.position.addVectors(scope.target, _eye.setLength(scope.minDistance));
191
- _zoomStart.copy(_zoomEnd);
192
- }
193
- }
194
- };
195
- this.update = function () {
196
- _eye.subVectors(scope.object.position, scope.target);
197
- if (!scope.noRotate) {
198
- scope.rotateCamera();
199
- }
200
- if (!scope.noZoom) {
201
- scope.zoomCamera();
202
- }
203
- if (!scope.noPan) {
204
- scope.panCamera();
205
- }
206
- scope.object.position.addVectors(scope.target, _eye);
207
- if (scope.object.isPerspectiveCamera) {
208
- scope.checkDistances();
209
- scope.object.lookAt(scope.target);
210
- if (lastPosition.distanceToSquared(scope.object.position) > EPS) {
211
- scope.dispatchEvent(_changeEvent);
212
- lastPosition.copy(scope.object.position);
213
- }
214
- }
215
- else if (scope.object.isOrthographicCamera) {
216
- scope.object.lookAt(scope.target);
217
- if (lastPosition.distanceToSquared(scope.object.position) > EPS ||
218
- lastZoom !== scope.object.zoom) {
219
- scope.dispatchEvent(_changeEvent);
220
- lastPosition.copy(scope.object.position);
221
- lastZoom = scope.object.zoom;
222
- }
223
- }
224
- else {
225
- console.warn("THREE.TrackballControls: Unsupported camera type");
226
- }
227
- };
228
- this.reset = function () {
229
- _state = STATE.NONE;
230
- _keyState = STATE.NONE;
231
- scope.target.copy(scope.target0);
232
- scope.object.position.copy(scope.position0);
233
- scope.object.up.copy(scope.up0);
234
- scope.object.zoom = scope.zoom0;
235
- scope.object.updateProjectionMatrix();
236
- _eye.subVectors(scope.object.position, scope.target);
237
- scope.object.lookAt(scope.target);
238
- scope.dispatchEvent(_changeEvent);
239
- lastPosition.copy(scope.object.position);
240
- lastZoom = scope.object.zoom;
241
- };
242
- // listeners
243
- function onPointerDown(event) {
244
- if (scope.enabled === false)
245
- return;
246
- if (_pointers.length === 0) {
247
- scope.domElement.setPointerCapture(event.pointerId);
248
- scope.domElement.addEventListener("pointermove", onPointerMove);
249
- scope.domElement.addEventListener("pointerup", onPointerUp);
250
- }
251
- //
252
- addPointer(event);
253
- if (event.pointerType === "touch") {
254
- onTouchStart(event);
255
- }
256
- else {
257
- onMouseDown(event);
258
- }
259
- }
260
- function onPointerMove(event) {
261
- if (scope.enabled === false)
262
- return;
263
- if (event.pointerType === "touch") {
264
- onTouchMove(event);
265
- }
266
- else {
267
- onMouseMove(event);
268
- }
269
- }
270
- function onPointerUp(event) {
271
- if (scope.enabled === false)
272
- return;
273
- if (event.pointerType === "touch") {
274
- onTouchEnd(event);
275
- }
276
- else {
277
- onMouseUp();
278
- }
279
- //
280
- removePointer(event);
281
- if (_pointers.length === 0) {
282
- scope.domElement.releasePointerCapture(event.pointerId);
283
- scope.domElement.removeEventListener("pointermove", onPointerMove);
284
- scope.domElement.removeEventListener("pointerup", onPointerUp);
285
- }
286
- }
287
- function onPointerCancel(event) {
288
- removePointer(event);
289
- }
290
- function keydown(event) {
291
- if (scope.enabled === false)
292
- return;
293
- window.removeEventListener("keydown", keydown);
294
- if (_keyState !== STATE.NONE) {
295
- return;
296
- }
297
- else if (event.code === scope.keys[STATE.ROTATE] && !scope.noRotate) {
298
- _keyState = STATE.ROTATE;
299
- }
300
- else if (event.code === scope.keys[STATE.ZOOM] && !scope.noZoom) {
301
- _keyState = STATE.ZOOM;
302
- }
303
- else if (event.code === scope.keys[STATE.PAN] && !scope.noPan) {
304
- _keyState = STATE.PAN;
305
- }
306
- }
307
- function keyup() {
308
- if (scope.enabled === false)
309
- return;
310
- _keyState = STATE.NONE;
311
- window.addEventListener("keydown", keydown);
312
- }
313
- function onMouseDown(event) {
314
- if (_state === STATE.NONE) {
315
- switch (event.button) {
316
- case scope.mouseButtons.LEFT:
317
- _state = STATE.ROTATE;
318
- break;
319
- case scope.mouseButtons.MIDDLE:
320
- _state = STATE.ZOOM;
321
- break;
322
- case scope.mouseButtons.RIGHT:
323
- _state = STATE.PAN;
324
- break;
325
- }
326
- }
327
- const state = _keyState !== STATE.NONE ? _keyState : _state;
328
- if (state === STATE.ROTATE && !scope.noRotate) {
329
- _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));
330
- _movePrev.copy(_moveCurr);
331
- }
332
- else if (state === STATE.ZOOM && !scope.noZoom) {
333
- _zoomStart.copy(getMouseOnScreen(event.pageX, event.pageY));
334
- _zoomEnd.copy(_zoomStart);
335
- }
336
- else if (state === STATE.PAN && !scope.noPan) {
337
- _panStart.copy(getMouseOnScreen(event.pageX, event.pageY));
338
- _panEnd.copy(_panStart);
339
- }
340
- scope.dispatchEvent(_startEvent);
341
- }
342
- function onMouseMove(event) {
343
- const state = _keyState !== STATE.NONE ? _keyState : _state;
344
- if (state === STATE.ROTATE && !scope.noRotate) {
345
- _movePrev.copy(_moveCurr);
346
- _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));
347
- }
348
- else if (state === STATE.ZOOM && !scope.noZoom) {
349
- _zoomEnd.copy(getMouseOnScreen(event.pageX, event.pageY));
350
- }
351
- else if (state === STATE.PAN && !scope.noPan) {
352
- _panEnd.copy(getMouseOnScreen(event.pageX, event.pageY));
353
- }
354
- }
355
- function onMouseUp() {
356
- _state = STATE.NONE;
357
- scope.dispatchEvent(_endEvent);
358
- }
359
- function onMouseWheel(event) {
360
- if (scope.enabled === false)
361
- return;
362
- if (scope.noZoom === true)
363
- return;
364
- event.preventDefault();
365
- switch (event.deltaMode) {
366
- case 2:
367
- // Zoom in pages
368
- _zoomStart.y -= event.deltaY * 0.025;
369
- break;
370
- case 1:
371
- // Zoom in lines
372
- _zoomStart.y -= event.deltaY * 0.01;
373
- break;
374
- default:
375
- // undefined, 0, assume pixels
376
- _zoomStart.y -= event.deltaY * 0.00025;
377
- break;
378
- }
379
- scope.dispatchEvent(_startEvent);
380
- scope.dispatchEvent(_endEvent);
381
- }
382
- function onTouchStart(event) {
383
- trackPointer(event);
384
- switch (_pointers.length) {
385
- case 1:
386
- _state = STATE.TOUCH_ROTATE;
387
- _moveCurr.copy(getMouseOnCircle(_pointers[0].pageX, _pointers[0].pageY));
388
- _movePrev.copy(_moveCurr);
389
- break;
390
- case 2:
391
- _state = STATE.TOUCH_ZOOM_PAN;
392
- const dx = _pointers[0].pageX - _pointers[1].pageX;
393
- const dy = _pointers[0].pageY - _pointers[1].pageY;
394
- _touchZoomDistanceEnd = _touchZoomDistanceStart = Math.sqrt(dx * dx + dy * dy);
395
- const x = (_pointers[0].pageX + _pointers[1].pageX) / 2;
396
- const y = (_pointers[0].pageY + _pointers[1].pageY) / 2;
397
- _panStart.copy(getMouseOnScreen(x, y));
398
- _panEnd.copy(_panStart);
399
- break;
400
- case 3:
401
- _state = STATE.TOUCH_PAN;
402
- const centerX = (_pointers[0].pageX + _pointers[1].pageX + _pointers[2].pageX) / 3;
403
- const centerY = (_pointers[0].pageY + _pointers[1].pageY + _pointers[2].pageY) / 3;
404
- _panStart.copy(getMouseOnScreen(centerX, centerY));
405
- _panEnd.copy(_panStart);
406
- break;
407
- }
408
- scope.dispatchEvent(_startEvent);
409
- }
410
- function onTouchMove(event) {
411
- trackPointer(event);
412
- let position, x, y;
413
- switch (_pointers.length) {
414
- case 1:
415
- if (_state != STATE.TOUCH_ROTATE)
416
- return;
417
- _movePrev.copy(_moveCurr);
418
- _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));
419
- break;
420
- case 2:
421
- if (_state != STATE.TOUCH_ZOOM_PAN)
422
- return;
423
- position = getSecondPointerPosition(event);
424
- const dx = event.pageX - position.x;
425
- const dy = event.pageY - position.y;
426
- _touchZoomDistanceEnd = Math.sqrt(dx * dx + dy * dy);
427
- x = (event.pageX + position.x) / 2;
428
- y = (event.pageY + position.y) / 2;
429
- _panEnd.copy(getMouseOnScreen(x, y));
430
- break;
431
- case 3:
432
- if (_state != STATE.TOUCH_PAN)
433
- return;
434
- const point_1 = _pointerPositions[_pointers[0].pointerId];
435
- const point_2 = _pointerPositions[_pointers[1].pointerId];
436
- const point_3 = _pointerPositions[_pointers[2].pointerId];
437
- const centerX = (point_1.x + point_2.x + point_3.x) / 3;
438
- const centerY = (point_1.y + point_2.y + point_3.y) / 3;
439
- _panEnd.copy(getMouseOnScreen(centerX, centerY));
440
- break;
441
- }
442
- }
443
- function onTouchEnd(event) {
444
- switch (_pointers.length) {
445
- case 0:
446
- _state = STATE.NONE;
447
- break;
448
- case 1:
449
- _state = STATE.TOUCH_ROTATE;
450
- _moveCurr.copy(getMouseOnCircle(event.pageX, event.pageY));
451
- _movePrev.copy(_moveCurr);
452
- break;
453
- case 2:
454
- _state = STATE.TOUCH_ZOOM_PAN;
455
- for (let i = 0; i < _pointers.length; i++) {
456
- if (_pointers[i].pointerId !== event.pointerId) {
457
- const position = _pointerPositions[_pointers[i].pointerId];
458
- _moveCurr.copy(getMouseOnScreen(position.x, position.y));
459
- _movePrev.copy(_moveCurr);
460
- break;
461
- }
462
- }
463
- break;
464
- case 3:
465
- _state = STATE.TOUCH_PAN;
466
- for (let i = 0; i < _pointers.length; i++) {
467
- if (_pointers[i].pointerId !== event.pointerId) {
468
- const position = _pointerPositions[_pointers[i].pointerId];
469
- _moveCurr.copy(getMouseOnScreen(position.x, position.y));
470
- _movePrev.copy(_moveCurr);
471
- break;
472
- }
473
- }
474
- break;
475
- }
476
- scope.dispatchEvent(_endEvent);
477
- }
478
- function contextmenu(event) {
479
- if (scope.enabled === false)
480
- return;
481
- event.preventDefault();
482
- }
483
- function addPointer(event) {
484
- _pointers.push(event);
485
- }
486
- function removePointer(event) {
487
- delete _pointerPositions[event.pointerId];
488
- for (let i = 0; i < _pointers.length; i++) {
489
- if (_pointers[i].pointerId == event.pointerId) {
490
- _pointers.splice(i, 1);
491
- return;
492
- }
493
- }
494
- }
495
- function trackPointer(event) {
496
- let position = _pointerPositions[event.pointerId];
497
- if (position === undefined) {
498
- position = new Vector2();
499
- _pointerPositions[event.pointerId] = position;
500
- }
501
- position.set(event.pageX, event.pageY);
502
- }
503
- function getSecondPointerPosition(event) {
504
- const pointer = event.pointerId === _pointers[0].pointerId
505
- ? _pointers[1]
506
- : _pointers[0];
507
- return _pointerPositions[pointer.pointerId];
508
- }
509
- this.dispose = function () {
510
- scope.domElement.removeEventListener("contextmenu", contextmenu);
511
- scope.domElement.removeEventListener("pointerdown", onPointerDown);
512
- scope.domElement.removeEventListener("pointercancel", onPointerCancel);
513
- scope.domElement.removeEventListener("wheel", onMouseWheel);
514
- scope.domElement.removeEventListener("pointermove", onPointerMove);
515
- scope.domElement.removeEventListener("pointerup", onPointerUp);
516
- window.removeEventListener("keydown", keydown);
517
- window.removeEventListener("keyup", keyup);
518
- };
519
- this.domElement.addEventListener("contextmenu", contextmenu);
520
- this.domElement.addEventListener("pointerdown", onPointerDown);
521
- this.domElement.addEventListener("pointercancel", onPointerCancel);
522
- this.domElement.addEventListener("wheel", onMouseWheel, { passive: false });
523
- window.addEventListener("keydown", keydown);
524
- window.addEventListener("keyup", keyup);
525
- this.handleResize();
526
- // force an update at start
527
- this.update();
528
- }
529
- }
530
- export { Copper3dTrackballControls1 };
531
- //# sourceMappingURL=Copper3dTrackballControls1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Copper3dTrackballControls1.js","sourceRoot":"","sources":["../../src/Controls/Copper3dTrackballControls1.ts"],"names":[],"mappings":"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"}