@shopware-ag/dive 1.16.0 → 1.16.2
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 +271 -40
- package/build/dive.cjs +575 -159
- package/build/dive.cjs.map +1 -1
- package/build/dive.d.cts +83 -57
- package/build/dive.d.ts +83 -57
- package/build/dive.js +614 -164
- package/build/dive.js.map +1 -1
- package/package.json +72 -60
- package/src/__test__/DIVE.test.ts +35 -31
- package/src/animation/AnimationSystem.ts +4 -4
- package/src/animation/__test__/AnimationSystem.test.ts +3 -3
- package/src/axiscamera/AxisCamera.ts +31 -11
- package/src/axiscamera/__test__/AxisCamera.test.ts +18 -10
- package/src/camera/PerspectiveCamera.ts +28 -13
- package/src/camera/__test__/PerspectiveCamera.test.ts +2 -2
- package/src/com/Communication.ts +282 -100
- package/src/com/__test__/Communication.test.ts +207 -141
- package/src/com/actions/camera/computeencompassingview.ts +8 -7
- package/src/com/actions/camera/getcameratransform.ts +8 -7
- package/src/com/actions/camera/movecamera.ts +16 -13
- package/src/com/actions/camera/resetcamera.ts +4 -3
- package/src/com/actions/camera/setcameralayer.ts +4 -3
- package/src/com/actions/camera/setcameratransform.ts +8 -7
- package/src/com/actions/camera/zoomcamera.ts +4 -3
- package/src/com/actions/index.ts +54 -54
- package/src/com/actions/media/generatemedia.ts +17 -13
- package/src/com/actions/object/addobject.ts +5 -4
- package/src/com/actions/object/deleteobject.ts +5 -4
- package/src/com/actions/object/deselectobject.ts +5 -4
- package/src/com/actions/object/getallobjects.ts +5 -4
- package/src/com/actions/object/getobjects.ts +5 -4
- package/src/com/actions/object/model/dropit.ts +4 -3
- package/src/com/actions/object/model/modelloaded.ts +4 -3
- package/src/com/actions/object/model/placeonfloor.ts +4 -3
- package/src/com/actions/object/selectobject.ts +5 -4
- package/src/com/actions/object/setparent.ts +8 -7
- package/src/com/actions/object/updateobject.ts +5 -4
- package/src/com/actions/scene/exportscene.ts +5 -4
- package/src/com/actions/scene/getallscenedata.ts +24 -18
- package/src/com/actions/scene/setbackground.ts +4 -3
- package/src/com/actions/scene/updatescene.ts +10 -9
- package/src/com/actions/toolbox/select/setgizmomode.ts +4 -3
- package/src/com/actions/toolbox/transform/setgizmovisible.ts +4 -3
- package/src/com/actions/toolbox/usetool.ts +5 -4
- package/src/com/types/COMBaseEntity.ts +2 -2
- package/src/com/types/COMEntity.ts +6 -6
- package/src/com/types/COMEntityType.ts +1 -1
- package/src/com/types/COMGeometry.ts +2 -2
- package/src/com/types/COMGroup.ts +3 -3
- package/src/com/types/COMLight.ts +3 -3
- package/src/com/types/COMMaterial.ts +2 -2
- package/src/com/types/COMModel.ts +4 -4
- package/src/com/types/COMPov.ts +3 -3
- package/src/com/types/COMPrimitive.ts +5 -5
- package/src/com/types/index.ts +10 -10
- package/src/constant/AxisHelperColors.ts +1 -1
- package/src/constant/GridColors.ts +1 -1
- package/src/controls/OrbitControls.ts +62 -29
- package/src/controls/__test__/OrbitControls.test.ts +133 -39
- package/src/dive.ts +82 -36
- package/src/gizmo/Gizmo.ts +21 -13
- package/src/gizmo/handles/AxisHandle.ts +40 -17
- package/src/gizmo/handles/RadialHandle.ts +39 -15
- package/src/gizmo/handles/ScaleHandle.ts +62 -25
- package/src/gizmo/plane/GizmoPlane.ts +5 -6
- package/src/gizmo/rotate/RotateGizmo.ts +58 -16
- package/src/gizmo/scale/ScaleGizmo.ts +37 -15
- package/src/gizmo/translate/TranslateGizmo.ts +34 -14
- package/src/grid/Grid.ts +13 -5
- package/src/grid/__test__/Grid.test.ts +5 -3
- package/src/group/Group.ts +9 -7
- package/src/group/__test__/Group.test.ts +8 -6
- package/src/helper/applyMixins/__test__/applyMixins.test.ts +9 -6
- package/src/helper/applyMixins/applyMixins.ts +6 -3
- package/src/helper/findInterface/__test__/findInterface.test.ts +28 -18
- package/src/helper/findInterface/findInterface.ts +7 -4
- package/src/helper/findSceneRecursive/__test__/findSceneRecursive.test.ts +1 -1
- package/src/helper/findSceneRecursive/findSceneRecursive.ts +1 -1
- package/src/helper/getObjectDelta/__test__/getObjectDelta.test.ts +43 -7
- package/src/helper/getObjectDelta/getObjectDelta.ts +13 -9
- package/src/helper/isInterface/__test__/implementsInterface.test.ts +1 -1
- package/src/helper/isInterface/implementsInterface.ts +6 -3
- package/src/info/Info.ts +20 -16
- package/src/info/__test__/Info.test.ts +67 -36
- package/src/interface/Draggable.ts +2 -2
- package/src/interface/Hoverable.ts +2 -2
- package/src/interface/Movable.ts +1 -1
- package/src/interface/Rotatable.ts +1 -1
- package/src/interface/Scalable.ts +1 -1
- package/src/io/IO.ts +21 -43
- package/src/io/__test__/IO.test.ts +16 -62
- package/src/io/gltf/GLTFIO.ts +34 -31
- package/src/io/gltf/__test__/GLTFIO.test.ts +88 -78
- package/src/light/PointLight.ts +42 -9
- package/src/light/SceneLight.ts +5 -5
- package/src/light/__test__/AmbientLight.test.ts +5 -4
- package/src/light/__test__/PointLight.test.ts +14 -10
- package/src/light/__test__/SceneLight.test.ts +19 -13
- package/src/loadingmanager/LoadingManager.ts +11 -6
- package/src/loadingmanager/__test__/LoadingManager.test.ts +14 -9
- package/src/math/__test__/DIVEMath.test.ts +1 -1
- package/src/math/ceil/__test__/ceilExp.test.ts +1 -1
- package/src/math/ceil/ceilExp.ts +2 -2
- package/src/math/floor/__test__/floorExp.test.ts +1 -1
- package/src/math/floor/floorExp.ts +2 -2
- package/src/math/helper/__test__/shift.test.ts +1 -1
- package/src/math/helper/shift.ts +1 -1
- package/src/math/index.ts +7 -7
- package/src/math/round/__test__/roundExp.test.ts +1 -1
- package/src/math/round/roundExp.ts +6 -3
- package/src/math/signedAngleTo/__test__/signedAngleTo.test.ts +10 -4
- package/src/math/signedAngleTo/signedAngleTo.ts +11 -4
- package/src/math/toFixed/__test__/toFixedExp.test.ts +9 -9
- package/src/math/toFixed/toFixedExp.ts +6 -3
- package/src/math/truncate/__test__/truncateExp.test.ts +1 -1
- package/src/math/truncate/truncateExp.ts +6 -3
- package/src/mediacreator/MediaCreator.ts +20 -10
- package/src/mediacreator/__test__/MediaCreator.test.ts +27 -12
- package/src/model/Model.ts +35 -7
- package/src/model/__test__/Model.test.ts +71 -44
- package/src/node/Node.ts +34 -12
- package/src/node/__test__/Node.test.ts +17 -13
- package/src/primitive/Primitive.ts +78 -13
- package/src/primitive/__test__/Primitive.test.ts +49 -38
- package/src/primitive/floor/Floor.ts +14 -3
- package/src/primitive/floor/__test__/Floor.test.ts +10 -4
- package/src/renderer/Renderer.ts +46 -15
- package/src/renderer/__test__/Renderer.test.ts +74 -24
- package/src/scene/Scene.ts +9 -3
- package/src/scene/__test__/Scene.test.ts +2 -2
- package/src/scene/root/Root.ts +142 -75
- package/src/scene/root/__test__/Root.test.ts +439 -111
- package/src/toolbox/BaseTool.ts +69 -33
- package/src/toolbox/Toolbox.ts +37 -17
- package/src/toolbox/__test__/BaseTool.test.ts +324 -160
- package/src/toolbox/__test__/Toolbox.test.ts +31 -14
- package/src/toolbox/select/SelectTool.ts +24 -19
- package/src/toolbox/select/__test__/SelectTool.test.ts +95 -59
- package/src/toolbox/transform/TransformTool.ts +40 -17
- package/src/toolbox/transform/__test__/TransformTool.test.ts +22 -15
- package/src/types/SceneObjects.ts +8 -8
- package/src/types/SceneType.ts +3 -3
- package/src/types/index.ts +3 -6
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
import { DIVEBaseTool } from '../BaseTool';
|
|
3
2
|
import type DIVEOrbitControls from '../../controls/OrbitControls';
|
|
4
3
|
import type { DIVEScene } from '../../scene/Scene';
|
|
@@ -10,7 +9,6 @@ import { type DIVEDraggable } from '../../interface/Draggable';
|
|
|
10
9
|
* @jest-environment jsdom
|
|
11
10
|
*/
|
|
12
11
|
|
|
13
|
-
|
|
14
12
|
const mock_Canvas = {
|
|
15
13
|
width: 0,
|
|
16
14
|
height: 0,
|
|
@@ -25,8 +23,8 @@ const mockController = {
|
|
|
25
23
|
domElement: mock_Canvas,
|
|
26
24
|
object: {
|
|
27
25
|
isPerspectiveCamera: true,
|
|
28
|
-
type: 'cameraP'
|
|
29
|
-
}
|
|
26
|
+
type: 'cameraP',
|
|
27
|
+
},
|
|
30
28
|
} as unknown as DIVEOrbitControls;
|
|
31
29
|
|
|
32
30
|
const mockScene = {
|
|
@@ -36,7 +34,7 @@ const mockScene = {
|
|
|
36
34
|
const abstractWrapper = class Wrapper extends DIVEBaseTool {
|
|
37
35
|
constructor(scene: DIVEScene, controller: DIVEOrbitControls) {
|
|
38
36
|
super(scene, controller);
|
|
39
|
-
this.name =
|
|
37
|
+
this.name = 'DIVEBaseTool';
|
|
40
38
|
}
|
|
41
39
|
};
|
|
42
40
|
|
|
@@ -95,9 +93,15 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
95
93
|
|
|
96
94
|
it('should execute onPointerDown correctly', () => {
|
|
97
95
|
const toolBox = new abstractWrapper(mockScene, mockController);
|
|
98
|
-
expect(() =>
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
expect(() =>
|
|
97
|
+
toolBox.onPointerDown({ button: 0 } as PointerEvent),
|
|
98
|
+
).not.toThrow();
|
|
99
|
+
expect(() =>
|
|
100
|
+
toolBox.onPointerDown({ button: 1 } as PointerEvent),
|
|
101
|
+
).not.toThrow();
|
|
102
|
+
expect(() =>
|
|
103
|
+
toolBox.onPointerDown({ button: 2 } as PointerEvent),
|
|
104
|
+
).not.toThrow();
|
|
101
105
|
|
|
102
106
|
toolBox['_intersects'] = [
|
|
103
107
|
{
|
|
@@ -107,12 +111,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
107
111
|
return {
|
|
108
112
|
x: 1,
|
|
109
113
|
y: 1,
|
|
110
|
-
z: 1
|
|
114
|
+
z: 1,
|
|
111
115
|
} as unknown as Vector3;
|
|
112
116
|
},
|
|
113
117
|
x: 1,
|
|
114
118
|
y: 1,
|
|
115
|
-
z: 1
|
|
119
|
+
z: 1,
|
|
116
120
|
} as unknown as Vector3,
|
|
117
121
|
object: {
|
|
118
122
|
uuid: 'uuid2',
|
|
@@ -120,13 +124,19 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
120
124
|
onPointerEnter() {
|
|
121
125
|
return;
|
|
122
126
|
},
|
|
123
|
-
} as unknown as Object3D & DIVEHoverable
|
|
124
|
-
}
|
|
127
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
128
|
+
},
|
|
125
129
|
];
|
|
126
130
|
|
|
127
|
-
expect(() =>
|
|
128
|
-
|
|
129
|
-
|
|
131
|
+
expect(() =>
|
|
132
|
+
toolBox.onPointerDown({ button: 0 } as PointerEvent),
|
|
133
|
+
).not.toThrow();
|
|
134
|
+
expect(() =>
|
|
135
|
+
toolBox.onPointerDown({ button: 1 } as PointerEvent),
|
|
136
|
+
).not.toThrow();
|
|
137
|
+
expect(() =>
|
|
138
|
+
toolBox.onPointerDown({ button: 2 } as PointerEvent),
|
|
139
|
+
).not.toThrow();
|
|
130
140
|
});
|
|
131
141
|
|
|
132
142
|
it('should execute onPointerMove correctly', () => {
|
|
@@ -134,7 +144,10 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
134
144
|
jest.spyOn(toolBox['_raycaster'], 'setFromCamera').mockImplementation();
|
|
135
145
|
|
|
136
146
|
// test with no hit with hovered object before
|
|
137
|
-
jest.spyOn(
|
|
147
|
+
jest.spyOn(
|
|
148
|
+
toolBox['_raycaster'],
|
|
149
|
+
'intersectObjects',
|
|
150
|
+
).mockReturnValueOnce([]);
|
|
138
151
|
|
|
139
152
|
toolBox['_hovered'] = {
|
|
140
153
|
uuid: 'uuid',
|
|
@@ -143,82 +156,139 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
143
156
|
},
|
|
144
157
|
} as Object3D & DIVEHoverable;
|
|
145
158
|
|
|
146
|
-
expect(() =>
|
|
147
|
-
|
|
148
|
-
|
|
159
|
+
expect(() =>
|
|
160
|
+
toolBox.onPointerMove({
|
|
161
|
+
button: 0,
|
|
162
|
+
offsetX: 100,
|
|
163
|
+
offsetY: 100,
|
|
164
|
+
} as PointerEvent),
|
|
165
|
+
).not.toThrow();
|
|
166
|
+
expect(() =>
|
|
167
|
+
toolBox.onPointerMove({
|
|
168
|
+
button: 1,
|
|
169
|
+
offsetX: 100,
|
|
170
|
+
offsetY: 100,
|
|
171
|
+
} as PointerEvent),
|
|
172
|
+
).not.toThrow();
|
|
173
|
+
expect(() =>
|
|
174
|
+
toolBox.onPointerMove({
|
|
175
|
+
button: 2,
|
|
176
|
+
offsetX: 100,
|
|
177
|
+
offsetY: 100,
|
|
178
|
+
} as PointerEvent),
|
|
179
|
+
).not.toThrow();
|
|
149
180
|
|
|
150
181
|
// test with no hovered object
|
|
151
|
-
jest.spyOn(
|
|
152
|
-
[
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
182
|
+
jest.spyOn(
|
|
183
|
+
toolBox['_raycaster'],
|
|
184
|
+
'intersectObjects',
|
|
185
|
+
).mockReturnValueOnce([
|
|
186
|
+
{
|
|
187
|
+
distance: 1,
|
|
188
|
+
point: {
|
|
189
|
+
x: 1,
|
|
190
|
+
y: 1,
|
|
191
|
+
z: 1,
|
|
192
|
+
} as unknown as Vector3,
|
|
193
|
+
object: {
|
|
194
|
+
uuid: 'uuid',
|
|
195
|
+
isHoverable: true,
|
|
196
|
+
visible: true,
|
|
197
|
+
} as Object3D & DIVEHoverable,
|
|
198
|
+
},
|
|
199
|
+
]);
|
|
168
200
|
|
|
169
201
|
toolBox['_hovered'] = null;
|
|
170
202
|
|
|
171
|
-
expect(() =>
|
|
172
|
-
|
|
173
|
-
|
|
203
|
+
expect(() =>
|
|
204
|
+
toolBox.onPointerMove({
|
|
205
|
+
button: 0,
|
|
206
|
+
offsetX: 100,
|
|
207
|
+
offsetY: 100,
|
|
208
|
+
} as PointerEvent),
|
|
209
|
+
).not.toThrow();
|
|
210
|
+
expect(() =>
|
|
211
|
+
toolBox.onPointerMove({
|
|
212
|
+
button: 1,
|
|
213
|
+
offsetX: 100,
|
|
214
|
+
offsetY: 100,
|
|
215
|
+
} as PointerEvent),
|
|
216
|
+
).not.toThrow();
|
|
217
|
+
expect(() =>
|
|
218
|
+
toolBox.onPointerMove({
|
|
219
|
+
button: 2,
|
|
220
|
+
offsetX: 100,
|
|
221
|
+
offsetY: 100,
|
|
222
|
+
} as PointerEvent),
|
|
223
|
+
).not.toThrow();
|
|
174
224
|
|
|
175
225
|
// test with no hovered object with onPointerEnter
|
|
176
|
-
jest.spyOn(
|
|
177
|
-
[
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
expect(() =>
|
|
199
|
-
|
|
226
|
+
jest.spyOn(
|
|
227
|
+
toolBox['_raycaster'],
|
|
228
|
+
'intersectObjects',
|
|
229
|
+
).mockReturnValueOnce([
|
|
230
|
+
{
|
|
231
|
+
distance: 1,
|
|
232
|
+
point: {
|
|
233
|
+
x: 1,
|
|
234
|
+
y: 1,
|
|
235
|
+
z: 1,
|
|
236
|
+
} as unknown as Vector3,
|
|
237
|
+
object: {
|
|
238
|
+
uuid: 'uuid',
|
|
239
|
+
isHoverable: true,
|
|
240
|
+
visible: true,
|
|
241
|
+
onPointerEnter() {
|
|
242
|
+
return;
|
|
243
|
+
},
|
|
244
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
245
|
+
},
|
|
246
|
+
]);
|
|
247
|
+
|
|
248
|
+
expect(() =>
|
|
249
|
+
toolBox.onPointerMove({
|
|
250
|
+
button: 0,
|
|
251
|
+
offsetX: 100,
|
|
252
|
+
offsetY: 100,
|
|
253
|
+
} as PointerEvent),
|
|
254
|
+
).not.toThrow();
|
|
255
|
+
expect(() =>
|
|
256
|
+
toolBox.onPointerMove({
|
|
257
|
+
button: 1,
|
|
258
|
+
offsetX: 100,
|
|
259
|
+
offsetY: 100,
|
|
260
|
+
} as PointerEvent),
|
|
261
|
+
).not.toThrow();
|
|
262
|
+
expect(() =>
|
|
263
|
+
toolBox.onPointerMove({
|
|
264
|
+
button: 2,
|
|
265
|
+
offsetX: 100,
|
|
266
|
+
offsetY: 100,
|
|
267
|
+
} as PointerEvent),
|
|
268
|
+
).not.toThrow();
|
|
200
269
|
|
|
201
270
|
// test with same hovered object
|
|
202
|
-
jest.spyOn(
|
|
203
|
-
[
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
271
|
+
jest.spyOn(
|
|
272
|
+
toolBox['_raycaster'],
|
|
273
|
+
'intersectObjects',
|
|
274
|
+
).mockReturnValueOnce([
|
|
275
|
+
{
|
|
276
|
+
distance: 1,
|
|
277
|
+
point: {
|
|
278
|
+
x: 1,
|
|
279
|
+
y: 1,
|
|
280
|
+
z: 1,
|
|
281
|
+
} as unknown as Vector3,
|
|
282
|
+
object: {
|
|
283
|
+
uuid: 'uuid',
|
|
284
|
+
isHoverable: true,
|
|
285
|
+
visible: true,
|
|
286
|
+
onPointerOver() {
|
|
287
|
+
return;
|
|
288
|
+
},
|
|
289
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
290
|
+
},
|
|
291
|
+
]);
|
|
222
292
|
|
|
223
293
|
toolBox['_hovered'] = {
|
|
224
294
|
uuid: 'uuid',
|
|
@@ -228,31 +298,50 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
228
298
|
},
|
|
229
299
|
} as Object3D & DIVEHoverable;
|
|
230
300
|
|
|
231
|
-
expect(() =>
|
|
232
|
-
|
|
233
|
-
|
|
301
|
+
expect(() =>
|
|
302
|
+
toolBox.onPointerMove({
|
|
303
|
+
button: 0,
|
|
304
|
+
offsetX: 100,
|
|
305
|
+
offsetY: 100,
|
|
306
|
+
} as PointerEvent),
|
|
307
|
+
).not.toThrow();
|
|
308
|
+
expect(() =>
|
|
309
|
+
toolBox.onPointerMove({
|
|
310
|
+
button: 1,
|
|
311
|
+
offsetX: 100,
|
|
312
|
+
offsetY: 100,
|
|
313
|
+
} as PointerEvent),
|
|
314
|
+
).not.toThrow();
|
|
315
|
+
expect(() =>
|
|
316
|
+
toolBox.onPointerMove({
|
|
317
|
+
button: 2,
|
|
318
|
+
offsetX: 100,
|
|
319
|
+
offsetY: 100,
|
|
320
|
+
} as PointerEvent),
|
|
321
|
+
).not.toThrow();
|
|
234
322
|
|
|
235
323
|
// test with different hovered object
|
|
236
|
-
jest.spyOn(
|
|
237
|
-
[
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
324
|
+
jest.spyOn(
|
|
325
|
+
toolBox['_raycaster'],
|
|
326
|
+
'intersectObjects',
|
|
327
|
+
).mockReturnValueOnce([
|
|
328
|
+
{
|
|
329
|
+
distance: 1,
|
|
330
|
+
point: {
|
|
331
|
+
x: 1,
|
|
332
|
+
y: 1,
|
|
333
|
+
z: 1,
|
|
334
|
+
} as unknown as Vector3,
|
|
335
|
+
object: {
|
|
336
|
+
uuid: 'uuid2',
|
|
337
|
+
isHoverable: true,
|
|
338
|
+
visible: true,
|
|
339
|
+
onPointerEnter() {
|
|
340
|
+
return;
|
|
341
|
+
},
|
|
342
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
343
|
+
},
|
|
344
|
+
]);
|
|
256
345
|
|
|
257
346
|
toolBox['_hovered'] = {
|
|
258
347
|
uuid: 'uuid',
|
|
@@ -262,31 +351,93 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
262
351
|
},
|
|
263
352
|
} as Object3D & DIVEHoverable;
|
|
264
353
|
|
|
265
|
-
expect(() =>
|
|
266
|
-
|
|
267
|
-
|
|
354
|
+
expect(() =>
|
|
355
|
+
toolBox.onPointerMove({
|
|
356
|
+
button: 0,
|
|
357
|
+
offsetX: 100,
|
|
358
|
+
offsetY: 100,
|
|
359
|
+
} as PointerEvent),
|
|
360
|
+
).not.toThrow();
|
|
361
|
+
expect(() =>
|
|
362
|
+
toolBox.onPointerMove({
|
|
363
|
+
button: 1,
|
|
364
|
+
offsetX: 100,
|
|
365
|
+
offsetY: 100,
|
|
366
|
+
} as PointerEvent),
|
|
367
|
+
).not.toThrow();
|
|
368
|
+
expect(() =>
|
|
369
|
+
toolBox.onPointerMove({
|
|
370
|
+
button: 2,
|
|
371
|
+
offsetX: 100,
|
|
372
|
+
offsetY: 100,
|
|
373
|
+
} as PointerEvent),
|
|
374
|
+
).not.toThrow();
|
|
268
375
|
|
|
269
376
|
// test with pointer down
|
|
270
377
|
toolBox['_pointerPrimaryDown'] = true;
|
|
271
|
-
expect(() =>
|
|
272
|
-
|
|
273
|
-
|
|
378
|
+
expect(() =>
|
|
379
|
+
toolBox.onPointerMove({
|
|
380
|
+
button: 0,
|
|
381
|
+
offsetX: 100,
|
|
382
|
+
offsetY: 100,
|
|
383
|
+
} as PointerEvent),
|
|
384
|
+
).not.toThrow();
|
|
385
|
+
expect(() =>
|
|
386
|
+
toolBox.onPointerMove({
|
|
387
|
+
button: 1,
|
|
388
|
+
offsetX: 100,
|
|
389
|
+
offsetY: 100,
|
|
390
|
+
} as PointerEvent),
|
|
391
|
+
).not.toThrow();
|
|
392
|
+
expect(() =>
|
|
393
|
+
toolBox.onPointerMove({
|
|
394
|
+
button: 2,
|
|
395
|
+
offsetX: 100,
|
|
396
|
+
offsetY: 100,
|
|
397
|
+
} as PointerEvent),
|
|
398
|
+
).not.toThrow();
|
|
274
399
|
|
|
275
400
|
// test with pointer down while already dragging
|
|
276
401
|
toolBox['_pointerPrimaryDown'] = true;
|
|
277
402
|
toolBox['_dragging'] = true;
|
|
278
|
-
expect(() =>
|
|
279
|
-
|
|
280
|
-
|
|
403
|
+
expect(() =>
|
|
404
|
+
toolBox.onPointerMove({
|
|
405
|
+
button: 0,
|
|
406
|
+
offsetX: 100,
|
|
407
|
+
offsetY: 100,
|
|
408
|
+
} as PointerEvent),
|
|
409
|
+
).not.toThrow();
|
|
410
|
+
expect(() =>
|
|
411
|
+
toolBox.onPointerMove({
|
|
412
|
+
button: 1,
|
|
413
|
+
offsetX: 100,
|
|
414
|
+
offsetY: 100,
|
|
415
|
+
} as PointerEvent),
|
|
416
|
+
).not.toThrow();
|
|
417
|
+
expect(() =>
|
|
418
|
+
toolBox.onPointerMove({
|
|
419
|
+
button: 2,
|
|
420
|
+
offsetX: 100,
|
|
421
|
+
offsetY: 100,
|
|
422
|
+
} as PointerEvent),
|
|
423
|
+
).not.toThrow();
|
|
281
424
|
});
|
|
282
425
|
|
|
283
426
|
it('should execute onPointerUp correctly', () => {
|
|
284
427
|
const toolBox = new abstractWrapper(mockScene, mockController);
|
|
285
|
-
expect(() =>
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
428
|
+
expect(() =>
|
|
429
|
+
toolBox.onPointerUp({ button: 0 } as PointerEvent),
|
|
430
|
+
).not.toThrow();
|
|
431
|
+
expect(() =>
|
|
432
|
+
toolBox.onPointerUp({ button: 1 } as PointerEvent),
|
|
433
|
+
).not.toThrow();
|
|
434
|
+
expect(() =>
|
|
435
|
+
toolBox.onPointerUp({ button: 2 } as PointerEvent),
|
|
436
|
+
).not.toThrow();
|
|
437
|
+
|
|
438
|
+
toolBox['pointerWasDragged'] = () => {
|
|
439
|
+
return true;
|
|
440
|
+
};
|
|
290
441
|
toolBox['_dragging'] = true;
|
|
291
442
|
toolBox['_intersects'] = [
|
|
292
443
|
{
|
|
@@ -296,12 +447,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
296
447
|
return {
|
|
297
448
|
x: 1,
|
|
298
449
|
y: 1,
|
|
299
|
-
z: 1
|
|
450
|
+
z: 1,
|
|
300
451
|
} as unknown as Vector3;
|
|
301
452
|
},
|
|
302
453
|
x: 1,
|
|
303
454
|
y: 1,
|
|
304
|
-
z: 1
|
|
455
|
+
z: 1,
|
|
305
456
|
} as unknown as Vector3,
|
|
306
457
|
object: {
|
|
307
458
|
uuid: 'uuid2',
|
|
@@ -309,17 +460,23 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
309
460
|
onPointerEnter() {
|
|
310
461
|
return;
|
|
311
462
|
},
|
|
312
|
-
} as unknown as Object3D & DIVEHoverable
|
|
313
|
-
}
|
|
463
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
464
|
+
},
|
|
314
465
|
];
|
|
315
466
|
toolBox['_draggable'] = {
|
|
316
467
|
onDragEnd() {
|
|
317
468
|
return;
|
|
318
469
|
},
|
|
319
470
|
} as unknown as Object3D & DIVEDraggable;
|
|
320
|
-
expect(() =>
|
|
321
|
-
|
|
322
|
-
|
|
471
|
+
expect(() =>
|
|
472
|
+
toolBox.onPointerUp({ button: 0 } as PointerEvent),
|
|
473
|
+
).not.toThrow();
|
|
474
|
+
expect(() =>
|
|
475
|
+
toolBox.onPointerUp({ button: 1 } as PointerEvent),
|
|
476
|
+
).not.toThrow();
|
|
477
|
+
expect(() =>
|
|
478
|
+
toolBox.onPointerUp({ button: 2 } as PointerEvent),
|
|
479
|
+
).not.toThrow();
|
|
323
480
|
});
|
|
324
481
|
|
|
325
482
|
it('should execute onDragStart correctly', () => {
|
|
@@ -336,10 +493,16 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
336
493
|
toolBox['_dragRaycastOnObjects'] = [];
|
|
337
494
|
expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
|
|
338
495
|
|
|
339
|
-
jest.spyOn(
|
|
496
|
+
jest.spyOn(
|
|
497
|
+
toolBox['_raycaster'],
|
|
498
|
+
'intersectObjects',
|
|
499
|
+
).mockReturnValueOnce([]);
|
|
340
500
|
expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
|
|
341
501
|
|
|
342
|
-
jest.spyOn(
|
|
502
|
+
jest.spyOn(
|
|
503
|
+
toolBox['_raycaster'],
|
|
504
|
+
'intersectObjects',
|
|
505
|
+
).mockReturnValueOnce([
|
|
343
506
|
{
|
|
344
507
|
distance: 1,
|
|
345
508
|
point: {
|
|
@@ -347,12 +510,12 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
347
510
|
return {
|
|
348
511
|
x: 1,
|
|
349
512
|
y: 1,
|
|
350
|
-
z: 1
|
|
513
|
+
z: 1,
|
|
351
514
|
} as unknown as Vector3;
|
|
352
515
|
},
|
|
353
516
|
x: 1,
|
|
354
517
|
y: 1,
|
|
355
|
-
z: 1
|
|
518
|
+
z: 1,
|
|
356
519
|
} as unknown as Vector3,
|
|
357
520
|
object: {
|
|
358
521
|
uuid: 'uuid2',
|
|
@@ -360,8 +523,8 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
360
523
|
onPointerEnter() {
|
|
361
524
|
return;
|
|
362
525
|
},
|
|
363
|
-
} as unknown as Object3D & DIVEHoverable
|
|
364
|
-
}
|
|
526
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
527
|
+
},
|
|
365
528
|
]);
|
|
366
529
|
expect(() => toolBox.onDragStart({} as PointerEvent)).not.toThrow();
|
|
367
530
|
|
|
@@ -385,32 +548,33 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
385
548
|
return;
|
|
386
549
|
},
|
|
387
550
|
} as unknown as Object3D & DIVEDraggable;
|
|
388
|
-
jest.spyOn(
|
|
389
|
-
[
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
551
|
+
jest.spyOn(
|
|
552
|
+
toolBox['_raycaster'],
|
|
553
|
+
'intersectObjects',
|
|
554
|
+
).mockReturnValueOnce([
|
|
555
|
+
{
|
|
556
|
+
distance: 1,
|
|
557
|
+
point: {
|
|
558
|
+
clone() {
|
|
559
|
+
return {
|
|
560
|
+
x: 1,
|
|
561
|
+
y: 1,
|
|
562
|
+
z: 1,
|
|
563
|
+
} as unknown as Vector3;
|
|
564
|
+
},
|
|
565
|
+
x: 1,
|
|
566
|
+
y: 1,
|
|
567
|
+
z: 1,
|
|
568
|
+
} as unknown as Vector3,
|
|
569
|
+
object: {
|
|
570
|
+
uuid: 'uuid2',
|
|
571
|
+
isHoverable: true,
|
|
572
|
+
onPointerEnter() {
|
|
573
|
+
return;
|
|
574
|
+
},
|
|
575
|
+
} as unknown as Object3D & DIVEHoverable,
|
|
576
|
+
},
|
|
577
|
+
]);
|
|
414
578
|
expect(() => toolBox.onDrag({} as PointerEvent)).not.toThrow();
|
|
415
579
|
});
|
|
416
580
|
|
|
@@ -428,4 +592,4 @@ describe('dive/toolbox/DIVEBaseTool', () => {
|
|
|
428
592
|
const toolBox = new abstractWrapper(mockScene, mockController);
|
|
429
593
|
expect(() => toolBox.onWheel({} as WheelEvent)).not.toThrow();
|
|
430
594
|
});
|
|
431
|
-
});
|
|
595
|
+
});
|