@shopware-ag/dive 1.19.1-beta.0 → 1.19.1-beta.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.
Files changed (188) hide show
  1. package/build/dive.cjs +362 -199
  2. package/build/dive.cjs.map +1 -1
  3. package/build/dive.js +330 -167
  4. package/build/dive.js.map +1 -1
  5. package/build/dive.mjs +10803 -8714
  6. package/build/dive.mjs.map +1 -1
  7. package/build/src/converter/Converter.d.ts +3 -12
  8. package/build/src/dive.d.ts +1 -0
  9. package/build/src/exporter/Exporter.d.ts +20 -2
  10. package/build/src/loader/Loader.d.ts +0 -4
  11. package/build/src/types/error/index.d.ts +12 -0
  12. package/build/src/types/file/FileTypes.d.ts +17 -0
  13. package/build/src/types/file/index.d.ts +1 -0
  14. package/build/src/types/index.d.ts +5 -8
  15. package/package.json +2 -3
  16. package/build/src/types/ExporterOptions.d.ts +0 -15
  17. package/build/src/types/FileTypes.d.ts +0 -27
  18. package/src/__test__/DIVE.test.ts +0 -274
  19. package/src/animation/AnimationSystem.ts +0 -34
  20. package/src/animation/__test__/AnimationSystem.test.ts +0 -40
  21. package/src/ar/AR.ts +0 -101
  22. package/src/ar/__test__/AR.test.ts +0 -276
  23. package/src/ar/arquicklook/ARQuickLook.ts +0 -53
  24. package/src/ar/arquicklook/__test__/ARQuickLook.test.ts +0 -144
  25. package/src/ar/sceneviewer/SceneViewer.ts +0 -119
  26. package/src/ar/sceneviewer/__test__/SceneViewer.test.ts +0 -190
  27. package/src/ar/webxr/WebXR.ts +0 -177
  28. package/src/ar/webxr/controller/WebXRController.ts +0 -340
  29. package/src/ar/webxr/crosshair/WebXRCrosshair.ts +0 -35
  30. package/src/ar/webxr/origin/WebXROrigin.ts +0 -192
  31. package/src/ar/webxr/overlay/Overlay.ts +0 -50
  32. package/src/ar/webxr/raycaster/WebXRRaycaster.ts +0 -131
  33. package/src/ar/webxr/raycaster/ar/WebXRRaycasterAR.ts +0 -102
  34. package/src/ar/webxr/raycaster/three/WebXRRaycasterTHREE.ts +0 -49
  35. package/src/ar/webxr/touchscreencontrols/WebXRTouchscreenControls.ts +0 -356
  36. package/src/axiscamera/AxisCamera.ts +0 -108
  37. package/src/axiscamera/__test__/AxisCamera.test.ts +0 -150
  38. package/src/camera/PerspectiveCamera.ts +0 -63
  39. package/src/camera/__test__/PerspectiveCamera.test.ts +0 -36
  40. package/src/com/Communication.ts +0 -806
  41. package/src/com/__test__/Communication.test.ts +0 -1030
  42. package/src/com/actions/camera/computeencompassingview.ts +0 -10
  43. package/src/com/actions/camera/getcameratransform.ts +0 -10
  44. package/src/com/actions/camera/movecamera.ts +0 -18
  45. package/src/com/actions/camera/resetcamera.ts +0 -5
  46. package/src/com/actions/camera/setcameralayer.ts +0 -5
  47. package/src/com/actions/camera/setcameratransform.ts +0 -10
  48. package/src/com/actions/camera/zoomcamera.ts +0 -5
  49. package/src/com/actions/index.ts +0 -61
  50. package/src/com/actions/media/generatemedia.ts +0 -18
  51. package/src/com/actions/object/addobject.ts +0 -7
  52. package/src/com/actions/object/deleteobject.ts +0 -7
  53. package/src/com/actions/object/deselectobject.ts +0 -7
  54. package/src/com/actions/object/getallobjects.ts +0 -7
  55. package/src/com/actions/object/getobjects.ts +0 -7
  56. package/src/com/actions/object/model/dropit.ts +0 -5
  57. package/src/com/actions/object/model/modelloaded.ts +0 -5
  58. package/src/com/actions/object/model/placeonfloor.ts +0 -5
  59. package/src/com/actions/object/selectobject.ts +0 -7
  60. package/src/com/actions/object/setparent.ts +0 -10
  61. package/src/com/actions/object/updateobject.ts +0 -7
  62. package/src/com/actions/renderer/startrender.ts +0 -5
  63. package/src/com/actions/scene/exportscene.ts +0 -7
  64. package/src/com/actions/scene/getallscenedata.ts +0 -7
  65. package/src/com/actions/scene/launchar.ts +0 -7
  66. package/src/com/actions/scene/setbackground.ts +0 -5
  67. package/src/com/actions/scene/updatescene.ts +0 -11
  68. package/src/com/actions/toolbox/select/setgizmomode.ts +0 -5
  69. package/src/com/actions/toolbox/transform/setgizmoscalelinked.ts +0 -5
  70. package/src/com/actions/toolbox/transform/setgizmovisible.ts +0 -5
  71. package/src/com/actions/toolbox/usetool.ts +0 -7
  72. package/src/com/types/COMBaseEntity.ts +0 -9
  73. package/src/com/types/COMEntity.ts +0 -7
  74. package/src/com/types/COMEntityType.ts +0 -1
  75. package/src/com/types/COMGeometry.ts +0 -8
  76. package/src/com/types/COMGeometryType.ts +0 -9
  77. package/src/com/types/COMGroup.ts +0 -9
  78. package/src/com/types/COMLight.ts +0 -11
  79. package/src/com/types/COMMaterial.ts +0 -12
  80. package/src/com/types/COMModel.ts +0 -12
  81. package/src/com/types/COMPov.ts +0 -8
  82. package/src/com/types/COMPrimitive.ts +0 -12
  83. package/src/com/types/index.ts +0 -23
  84. package/src/constant/AxisHelperColors.ts +0 -7
  85. package/src/constant/GridColors.ts +0 -2
  86. package/src/constant/VisibilityLayerMask.ts +0 -5
  87. package/src/controls/OrbitControls.ts +0 -211
  88. package/src/controls/__test__/OrbitControls.test.ts +0 -256
  89. package/src/converter/Converter.ts +0 -117
  90. package/src/dive.ts +0 -363
  91. package/src/events/EventExecutor.ts +0 -35
  92. package/src/exporter/Exporter.ts +0 -75
  93. package/src/gizmo/Gizmo.ts +0 -144
  94. package/src/gizmo/handles/AxisHandle.ts +0 -153
  95. package/src/gizmo/handles/RadialHandle.ts +0 -149
  96. package/src/gizmo/handles/ScaleHandle.ts +0 -195
  97. package/src/gizmo/plane/GizmoPlane.ts +0 -84
  98. package/src/gizmo/rotate/RotateGizmo.ts +0 -143
  99. package/src/gizmo/scale/ScaleGizmo.ts +0 -125
  100. package/src/gizmo/translate/TranslateGizmo.ts +0 -114
  101. package/src/grid/Grid.ts +0 -34
  102. package/src/grid/__test__/Grid.test.ts +0 -28
  103. package/src/group/Group.ts +0 -184
  104. package/src/group/__test__/Group.test.ts +0 -212
  105. package/src/helper/applyMixins/__test__/applyMixins.test.ts +0 -30
  106. package/src/helper/applyMixins/applyMixins.ts +0 -70
  107. package/src/helper/findInterface/__test__/findInterface.test.ts +0 -63
  108. package/src/helper/findInterface/findInterface.ts +0 -13
  109. package/src/helper/findSceneRecursive/__test__/findSceneRecursive.test.ts +0 -40
  110. package/src/helper/findSceneRecursive/findSceneRecursive.ts +0 -16
  111. package/src/helper/getObjectDelta/__test__/getObjectDelta.test.ts +0 -186
  112. package/src/helper/getObjectDelta/getObjectDelta.ts +0 -105
  113. package/src/helper/isInterface/__test__/implementsInterface.test.ts +0 -19
  114. package/src/helper/isInterface/implementsInterface.ts +0 -9
  115. package/src/info/Info.ts +0 -178
  116. package/src/info/__test__/Info.test.ts +0 -346
  117. package/src/interface/Draggable.ts +0 -14
  118. package/src/interface/Hoverable.ts +0 -14
  119. package/src/interface/Movable.ts +0 -12
  120. package/src/interface/Rotatable.ts +0 -10
  121. package/src/interface/Scalable.ts +0 -10
  122. package/src/interface/Selectable.ts +0 -11
  123. package/src/io/IO.ts +0 -62
  124. package/src/io/__test__/IO.test.ts +0 -116
  125. package/src/io/gltf/GLTFIO.ts +0 -56
  126. package/src/io/gltf/__test__/GLTFIO.test.ts +0 -108
  127. package/src/light/AmbientLight.ts +0 -39
  128. package/src/light/PointLight.ts +0 -115
  129. package/src/light/SceneLight.ts +0 -63
  130. package/src/light/__test__/AmbientLight.test.ts +0 -29
  131. package/src/light/__test__/PointLight.test.ts +0 -74
  132. package/src/light/__test__/SceneLight.test.ts +0 -47
  133. package/src/loader/Loader.ts +0 -48
  134. package/src/math/__test__/DIVEMath.test.ts +0 -12
  135. package/src/math/ceil/__test__/ceilExp.test.ts +0 -12
  136. package/src/math/ceil/ceilExp.ts +0 -6
  137. package/src/math/degToRad/__test__/degToRad.test.ts +0 -172
  138. package/src/math/degToRad/degToRad.ts +0 -5
  139. package/src/math/floor/__test__/floorExp.test.ts +0 -14
  140. package/src/math/floor/floorExp.ts +0 -6
  141. package/src/math/helper/__test__/shift.test.ts +0 -12
  142. package/src/math/helper/shift.ts +0 -4
  143. package/src/math/index.ts +0 -28
  144. package/src/math/radToDeg/__test__/radToDeg.test.ts +0 -155
  145. package/src/math/radToDeg/radToDeg.ts +0 -5
  146. package/src/math/round/__test__/roundExp.test.ts +0 -14
  147. package/src/math/round/roundExp.ts +0 -10
  148. package/src/math/signedAngleTo/__test__/signedAngleTo.test.ts +0 -20
  149. package/src/math/signedAngleTo/signedAngleTo.ts +0 -20
  150. package/src/math/toFixed/__test__/toFixedExp.test.ts +0 -14
  151. package/src/math/toFixed/toFixedExp.ts +0 -9
  152. package/src/math/truncate/__test__/truncateExp.test.ts +0 -14
  153. package/src/math/truncate/truncateExp.ts +0 -9
  154. package/src/mediacreator/MediaCreator.ts +0 -75
  155. package/src/mediacreator/__test__/MediaCreator.test.ts +0 -155
  156. package/src/model/Model.ts +0 -190
  157. package/src/model/__test__/Model.test.ts +0 -215
  158. package/src/module/Module.ts +0 -45
  159. package/src/module/__test__/Module.test.ts +0 -54
  160. package/src/node/Node.ts +0 -100
  161. package/src/node/__test__/Node.test.ts +0 -120
  162. package/src/primitive/Primitive.ts +0 -299
  163. package/src/primitive/__test__/Primitive.test.ts +0 -281
  164. package/src/primitive/floor/Floor.ts +0 -45
  165. package/src/primitive/floor/__test__/Floor.test.ts +0 -24
  166. package/src/renderer/Renderer.ts +0 -215
  167. package/src/renderer/__test__/Renderer.test.ts +0 -228
  168. package/src/scene/Scene.ts +0 -106
  169. package/src/scene/__test__/Scene.test.ts +0 -124
  170. package/src/scene/root/Root.ts +0 -426
  171. package/src/scene/root/__test__/Root.test.ts +0 -903
  172. package/src/scene/xrroot/XRRoot.ts +0 -56
  173. package/src/scene/xrroot/xrlightroot/XRLightRoot.ts +0 -80
  174. package/src/toolbox/BaseTool.ts +0 -319
  175. package/src/toolbox/Toolbox.ts +0 -129
  176. package/src/toolbox/__test__/BaseTool.test.ts +0 -627
  177. package/src/toolbox/__test__/Toolbox.test.ts +0 -143
  178. package/src/toolbox/select/SelectTool.ts +0 -92
  179. package/src/toolbox/select/__test__/SelectTool.test.ts +0 -237
  180. package/src/toolbox/transform/TransformTool.ts +0 -166
  181. package/src/toolbox/transform/__test__/TransformTool.test.ts +0 -147
  182. package/src/types/ExporterOptions.ts +0 -14
  183. package/src/types/FileTypes.ts +0 -37
  184. package/src/types/SceneData.ts +0 -26
  185. package/src/types/SceneObjects.ts +0 -14
  186. package/src/types/SceneType.ts +0 -14
  187. package/src/types/index.ts +0 -31
  188. package/src/types/info/index.ts +0 -76
@@ -1,356 +0,0 @@
1
- import { Vector2 } from 'three';
2
- import { DIVEEventExecutor } from '../../../events/EventExecutor';
3
-
4
- export type DIVETouchscreenEvents = {
5
- TOUCH_START: {
6
- touches: {
7
- current: Vector2;
8
- }[];
9
- touchCount: number;
10
- };
11
- TOUCH_MOVE: {
12
- touches: {
13
- current: Vector2;
14
- delta: Vector2;
15
- }[];
16
- touchCount: number;
17
- };
18
- TOUCH_END: {
19
- touches: {
20
- current: Vector2;
21
- }[];
22
- touchCount: number;
23
- };
24
- ROTATE_START: {
25
- current: number;
26
- };
27
- ROTATE_MOVE: {
28
- current: number;
29
- delta: number;
30
- };
31
- ROTATE_END: {
32
- current: number;
33
- };
34
- PINCH_START: {
35
- current: number;
36
- };
37
- PINCH_MOVE: {
38
- current: number;
39
- delta: number;
40
- };
41
- PINCH_END: {
42
- current: number;
43
- };
44
- };
45
-
46
- type DIVETouch = {
47
- start: Vector2;
48
- current: Vector2;
49
- delta: Vector2;
50
- };
51
-
52
- export class DIVEWebXRTouchscreenControls extends DIVEEventExecutor<DIVETouchscreenEvents> {
53
- // general members
54
- private _session: XRSession;
55
-
56
- // touch members
57
- private _touchCount: number = 0;
58
- private _touches: DIVETouch[] = [];
59
-
60
- // rotate members
61
- private _handleRotateStarted: boolean = false;
62
- private _handleRotateMoved: boolean = false;
63
- private _handleRotateEnded: boolean = false;
64
-
65
- private _startAngle: number = 0;
66
- private _lastAngle: number = 0;
67
- private _angleDelta: number = 0;
68
-
69
- // scale members
70
- private _handlePinchStarted: boolean = false;
71
- private _handlePinchMoved: boolean = false;
72
- private _handlePinchEnded: boolean = false;
73
-
74
- private _scaleDistanceStart: number = 0;
75
- private _currentDistance: number = 1;
76
- private _deltaDistance: number = 0;
77
-
78
- constructor(session: XRSession) {
79
- super();
80
-
81
- this._session = session;
82
-
83
- this._touches = [
84
- {
85
- start: new Vector2(),
86
- current: new Vector2(),
87
- delta: new Vector2(),
88
- },
89
- {
90
- start: new Vector2(),
91
- current: new Vector2(),
92
- delta: new Vector2(),
93
- },
94
- ];
95
-
96
- this._handleRotateStarted = false;
97
-
98
- window.addEventListener('touchstart', (e: TouchEvent) =>
99
- this.onTouchStart(e),
100
- );
101
- window.addEventListener('touchmove', (e: TouchEvent) =>
102
- this.onTouchMove(e),
103
- );
104
- window.addEventListener('touchend', (e: TouchEvent) =>
105
- this.onTouchEnd(e),
106
- );
107
-
108
- this._session.addEventListener('selectstart', () =>
109
- this.onSessionSelectStart(),
110
- );
111
- this._session.addEventListener('selectend', () =>
112
- this.onSessionSelectEnd(),
113
- );
114
- }
115
-
116
- public Dispose(): void {
117
- window.removeEventListener('touchstart', (e: TouchEvent) =>
118
- this.onTouchStart(e),
119
- );
120
- window.removeEventListener('touchmove', (e: TouchEvent) =>
121
- this.onTouchMove(e),
122
- );
123
- window.removeEventListener('touchend', (e: TouchEvent) =>
124
- this.onTouchEnd(e),
125
- );
126
-
127
- this._session.removeEventListener('selectstart', () =>
128
- this.onSessionSelectStart(),
129
- );
130
- this._session.removeEventListener('selectend', () =>
131
- this.onSessionSelectEnd(),
132
- );
133
- }
134
-
135
- private onTouchStart(event: TouchEvent): void {
136
- this._touchCount = event.touches.length;
137
-
138
- this._touches[0].start.set(
139
- event.touches[0].clientX,
140
- event.touches[0].clientY,
141
- );
142
- this._touches[0].current.set(
143
- event.touches[0].clientX,
144
- event.touches[0].clientY,
145
- );
146
- this._touches[0].delta.set(0, 0);
147
-
148
- if (this._touchCount > 1) {
149
- this._touches[1].start.set(
150
- event.touches[1].clientX,
151
- event.touches[1].clientY,
152
- );
153
- this._touches[1].current.set(
154
- event.touches[1].clientX,
155
- event.touches[1].clientY,
156
- );
157
- this._touches[1].delta.set(0, 0);
158
- }
159
-
160
- if (this._touchCount === 2) {
161
- this.handleRotateStart();
162
- this.handlePinchStart();
163
- }
164
-
165
- if (this._handleRotateStarted) {
166
- this.dispatch('ROTATE_START', {
167
- current: 0,
168
- });
169
- this._handleRotateStarted = false;
170
- }
171
-
172
- if (this._handlePinchStarted) {
173
- this.dispatch('PINCH_START', {
174
- current: 0,
175
- });
176
- this._handlePinchStarted = false;
177
- }
178
- }
179
-
180
- private onTouchMove(event: TouchEvent): void {
181
- this._touchCount = event.touches.length;
182
-
183
- this._touches[0].start.set(
184
- event.touches[0].clientX,
185
- event.touches[0].clientY,
186
- );
187
- this._touches[0].current.set(
188
- event.touches[0].clientX,
189
- event.touches[0].clientY,
190
- );
191
- this._touches[0].delta.copy(
192
- this._touches[0].current.clone().sub(this._touches[0].start),
193
- );
194
-
195
- if (this._touchCount > 1) {
196
- this._touches[1].start.set(
197
- event.touches[1].clientX,
198
- event.touches[1].clientY,
199
- );
200
- this._touches[1].current.set(
201
- event.touches[1].clientX,
202
- event.touches[1].clientY,
203
- );
204
- this._touches[1].delta.copy(
205
- this._touches[1].current.clone().sub(this._touches[1].start),
206
- );
207
- }
208
-
209
- if (this._touchCount === 2) {
210
- this.handleRotateMoved();
211
- this.handlePinchMoved();
212
- }
213
-
214
- if (this._touchCount === 1) {
215
- this.dispatch('TOUCH_MOVE', {
216
- touches: [
217
- {
218
- current: this._touches[0].current.clone(),
219
- delta: this._touches[0].delta.clone(),
220
- },
221
- {
222
- current: this._touches[1].current.clone(),
223
- delta: this._touches[1].delta.clone(),
224
- },
225
- ],
226
- touchCount: this._touchCount,
227
- });
228
- }
229
-
230
- if (this._touchCount === 2) {
231
- if (this._handleRotateMoved) {
232
- this.dispatch('ROTATE_MOVE', {
233
- current: this._lastAngle,
234
- delta: this._angleDelta,
235
- });
236
- this._handleRotateMoved = false;
237
- }
238
-
239
- if (this._handlePinchMoved) {
240
- this.dispatch('PINCH_MOVE', {
241
- current: this._currentDistance,
242
- delta: this._deltaDistance,
243
- });
244
- this._handlePinchMoved = false;
245
- }
246
- }
247
- }
248
-
249
- private onTouchEnd(event: TouchEvent): void {
250
- this._touchCount = event.touches.length;
251
-
252
- if (this._touchCount === 0) {
253
- this._touches[0].start.set(0, 0);
254
- this._touches[0].current.set(0, 0);
255
- this._touches[0].delta.set(0, 0);
256
- }
257
-
258
- if (this._touchCount === 1) {
259
- this.handleRotateEnded();
260
- this.handlePinchEnded();
261
-
262
- this._touches[1].start.set(0, 0);
263
- this._touches[1].current.set(0, 0);
264
- this._touches[1].delta.set(0, 0);
265
- }
266
-
267
- if (this._handleRotateEnded) {
268
- this.dispatch('ROTATE_END', {
269
- current: this._lastAngle,
270
- });
271
- this._handleRotateEnded = false;
272
- }
273
-
274
- if (this._handlePinchEnded) {
275
- this.dispatch('PINCH_END', {
276
- current: this._currentDistance,
277
- });
278
- this._handlePinchEnded = false;
279
- }
280
- }
281
-
282
- private onSessionSelectStart(): void {
283
- this.dispatch('TOUCH_START', {
284
- touches: [
285
- {
286
- current: this._touches[0].current.clone(),
287
- },
288
- {
289
- current: this._touches[1].current.clone(),
290
- },
291
- ],
292
- touchCount: this._touchCount,
293
- });
294
- }
295
-
296
- private onSessionSelectEnd(): void {
297
- this.dispatch('TOUCH_END', {
298
- touches: [
299
- {
300
- current: this._touches[0].current.clone(),
301
- },
302
- {
303
- current: this._touches[1].current.clone(),
304
- },
305
- ],
306
- touchCount: this._touchCount,
307
- });
308
- }
309
-
310
- // rotation handler
311
- private handleRotateStart(): void {
312
- this._handleRotateStarted = true;
313
- this._startAngle = this._touches[1].start
314
- .clone()
315
- .sub(this._touches[0].current)
316
- .angle();
317
- }
318
-
319
- private handleRotateMoved(): void {
320
- this._handleRotateMoved = true;
321
- const currentAngle = this._touches[1].current
322
- .clone()
323
- .sub(this._touches[0].current)
324
- .angle();
325
- this._angleDelta = currentAngle - this._startAngle;
326
- this._lastAngle = this._angleDelta * -1;
327
- }
328
-
329
- private handleRotateEnded(): void {
330
- this._handleRotateEnded = true;
331
- }
332
-
333
- // pinch handler
334
- private handlePinchStart(): void {
335
- this._handlePinchStarted = true;
336
-
337
- this._scaleDistanceStart = this._touches[1].start.distanceTo(
338
- this._touches[0].current,
339
- );
340
- }
341
-
342
- private handlePinchMoved(): void {
343
- this._handlePinchMoved = true;
344
-
345
- const beforeDistance = this._currentDistance;
346
- const distance = this._touches[1].current.distanceTo(
347
- this._touches[0].current,
348
- );
349
- this._currentDistance = distance / this._scaleDistanceStart;
350
- this._deltaDistance = this._currentDistance - beforeDistance;
351
- }
352
-
353
- private handlePinchEnded(): void {
354
- this._handlePinchEnded = true;
355
- }
356
- }
@@ -1,108 +0,0 @@
1
- import {
2
- AxesHelper,
3
- Color,
4
- type Material,
5
- Matrix4,
6
- OrthographicCamera,
7
- Vector4,
8
- } from 'three';
9
- import SpriteText from 'three-spritetext';
10
- import { COORDINATE_LAYER_MASK } from '../constant/VisibilityLayerMask.ts';
11
- import {
12
- AxesColorRed,
13
- AxesColorGreen,
14
- AxesColorBlue,
15
- AxesColorRedLetter,
16
- AxesColorGreenLetter,
17
- AxesColorBlueLetter,
18
- } from '../constant/AxisHelperColors.ts';
19
- import { type DIVERenderer } from '../renderer/Renderer.ts';
20
- import { type DIVEScene } from '../scene/Scene.ts';
21
- import type DIVEOrbitControls from '../controls/OrbitControls.ts';
22
-
23
- /**
24
- * Shows the scene axes in the bottom left corner of the screen.
25
- *
26
- * @module
27
- */
28
-
29
- export default class DIVEAxisCamera extends OrthographicCamera {
30
- private axesHelper: AxesHelper;
31
-
32
- private _renderer: DIVERenderer;
33
- private _scene: DIVEScene;
34
-
35
- private _renderCallbackId: string;
36
-
37
- constructor(
38
- renderer: DIVERenderer,
39
- scene: DIVEScene,
40
- controls: DIVEOrbitControls,
41
- ) {
42
- super(-1, 1, 1, -1, 0.1, 100);
43
-
44
- this.layers.mask = COORDINATE_LAYER_MASK;
45
-
46
- this.axesHelper = new AxesHelper(0.5);
47
- this.axesHelper.layers.mask = COORDINATE_LAYER_MASK;
48
- (this.axesHelper.material as Material).depthTest = false; // always draw
49
- this.axesHelper.position.set(0, 0, -1);
50
-
51
- this.axesHelper.setColors(
52
- new Color(AxesColorRed),
53
- new Color(AxesColorGreen),
54
- new Color(AxesColorBlue),
55
- );
56
-
57
- const x = new SpriteText('X', 0.2, AxesColorRedLetter);
58
- const y = new SpriteText('Y', 0.2, AxesColorGreenLetter);
59
- const z = new SpriteText('Z', 0.2, AxesColorBlueLetter);
60
- x.layers.mask = COORDINATE_LAYER_MASK;
61
- y.layers.mask = COORDINATE_LAYER_MASK;
62
- z.layers.mask = COORDINATE_LAYER_MASK;
63
- x.position.set(0.7, 0, 0);
64
- y.position.set(0, 0.7, 0);
65
- z.position.set(0, 0, 0.7);
66
- this.axesHelper.add(x);
67
- this.axesHelper.add(y);
68
- this.axesHelper.add(z);
69
-
70
- this.add(this.axesHelper);
71
-
72
- // attach everything to current scene and render cycle
73
- this._renderer = renderer;
74
- this._scene = scene;
75
- this._scene.add(this);
76
-
77
- const restoreViewport = new Vector4();
78
-
79
- this._renderCallbackId = renderer.AddPostRenderCallback(() => {
80
- const restoreBackground = scene.background;
81
- scene.background = null;
82
-
83
- renderer.getViewport(restoreViewport);
84
- renderer.setViewport(0, 0, 150, 150);
85
- renderer.autoClear = false;
86
-
87
- this.SetFromCameraMatrix(controls.object.matrix);
88
-
89
- renderer.render(scene, this);
90
-
91
- renderer.setViewport(restoreViewport);
92
- renderer.autoClear = true;
93
-
94
- scene.background = restoreBackground;
95
- });
96
- }
97
-
98
- public Dispose(): void {
99
- this._renderer.RemovePostRenderCallback(this._renderCallbackId);
100
- this._scene.remove(this);
101
- }
102
-
103
- public SetFromCameraMatrix(matrix: Matrix4): void {
104
- this.axesHelper.rotation.setFromRotationMatrix(
105
- new Matrix4().extractRotation(matrix).invert(),
106
- );
107
- }
108
- }
@@ -1,150 +0,0 @@
1
- import { AxesHelper, Matrix4, OrthographicCamera, Vector4 } from 'three';
2
- import DIVEAxisCamera from '../AxisCamera';
3
- import { DIVERenderer } from '../../renderer/Renderer';
4
- import { DIVEScene } from '../../scene/Scene';
5
- import DIVEOrbitControls from '../../controls/OrbitControls';
6
-
7
- const mockRenderer = {
8
- render: jest.fn(),
9
- OnResize: jest.fn(),
10
- getViewport: jest.fn(),
11
- setViewport: jest.fn(),
12
- AddPostRenderCallback: jest.fn((callback) => {
13
- callback();
14
- }),
15
- RemovePostRenderCallback: jest.fn(),
16
- } as unknown as DIVERenderer;
17
-
18
- const mockScene = {
19
- add: jest.fn(),
20
- remove: jest.fn(),
21
- SetBackground: jest.fn(),
22
- AddSceneObject: jest.fn(),
23
- UpdateSceneObject: jest.fn(),
24
- DeleteSceneObject: jest.fn(),
25
- PlaceOnFloor: jest.fn(),
26
- GetSceneObject: jest.fn(),
27
- background: {
28
- getHexString: jest.fn().mockReturnValue('ffffff'),
29
- },
30
- Root: {
31
- Floor: {
32
- isFloor: true,
33
- visible: true,
34
- material: {
35
- color: {
36
- getHexString: jest.fn().mockReturnValue('ffffff'),
37
- },
38
- },
39
- SetVisibility: jest.fn(),
40
- SetColor: jest.fn(),
41
- },
42
- Grid: {
43
- SetVisibility: jest.fn(),
44
- },
45
- HelperRoot: {
46
- add: jest.fn(),
47
- remove: jest.fn(),
48
- },
49
- },
50
- } as unknown as DIVEScene;
51
-
52
- const mockController = {
53
- enableDamping: true,
54
- dampingFactor: 0.25,
55
- enableZoom: true,
56
- enablePan: true,
57
- minPolarAngle: 0,
58
- maxPolarAngle: Math.PI,
59
- minDistance: 0,
60
- maxDistance: Infinity,
61
- rotateSpeed: 0.5,
62
- panSpeed: 0.5,
63
- zoomSpeed: 0.5,
64
- keyPanSpeed: 0.5,
65
- screenSpacePanning: true,
66
- autoRotate: false,
67
- autoRotateSpeed: 2.0,
68
- enableKeys: true,
69
- keys: {
70
- LEFT: 37,
71
- UP: 38,
72
- RIGHT: 39,
73
- BOTTOM: 40,
74
- },
75
- mouseButtons: {
76
- LEFT: 0,
77
- MIDDLE: 1,
78
- RIGHT: 2,
79
- },
80
- target: {
81
- x: 4,
82
- y: 5,
83
- z: 6,
84
- set: jest.fn(),
85
- clone: jest.fn().mockReturnValue({ x: 4, y: 5, z: 6 }),
86
- copy: jest.fn(),
87
- },
88
- update: jest.fn(),
89
- dispose: jest.fn(),
90
- ZoomIn: jest.fn(),
91
- ZoomOut: jest.fn(),
92
- object: {
93
- position: {
94
- x: 1,
95
- y: 2,
96
- z: 3,
97
- clone: jest.fn().mockReturnValue({ x: 1, y: 2, z: 3 }),
98
- copy: jest.fn(),
99
- },
100
- quaternion: {
101
- x: 1,
102
- y: 2,
103
- z: 3,
104
- w: 4,
105
- clone: jest.fn().mockReturnValue({ x: 1, y: 2, z: 3, w: 4 }),
106
- copy: jest.fn(),
107
- },
108
- SetCameraLayer: jest.fn(),
109
- OnResize: jest.fn(),
110
- layers: {
111
- mask: 1,
112
- },
113
- },
114
- MoveTo: jest.fn(),
115
- RevertLast: jest.fn(),
116
- } as unknown as DIVEOrbitControls;
117
-
118
- let textAxisCamera: DIVEAxisCamera;
119
-
120
- describe('dive/axiscamera/DIVEAxisCamera', () => {
121
- beforeEach(() => {
122
- textAxisCamera = new DIVEAxisCamera(
123
- mockRenderer,
124
- mockScene,
125
- mockController,
126
- );
127
- });
128
-
129
- it('should instantiate', () => {
130
- expect(textAxisCamera).toBeDefined();
131
- });
132
-
133
- it('should set rotation from Matrix4', () => {
134
- expect.assertions(0);
135
- const matrix = {
136
- // prettier-multiline-arrays-next-line-pattern: 4
137
- elements: [
138
- 1, 0, 0, 0,
139
- 0, 1, 0, 0,
140
- 0, 0, 1, 0,
141
- 0, 0, 0, 1,
142
- ],
143
- } as Matrix4;
144
- textAxisCamera.SetFromCameraMatrix(matrix);
145
- });
146
-
147
- it('should dispose', () => {
148
- textAxisCamera.Dispose();
149
- });
150
- });
@@ -1,63 +0,0 @@
1
- import { PerspectiveCamera } from 'three';
2
- import {
3
- DEFAULT_LAYER_MASK,
4
- HELPER_LAYER_MASK,
5
- PRODUCT_LAYER_MASK,
6
- UI_LAYER_MASK,
7
- } from '../constant/VisibilityLayerMask.ts';
8
-
9
- export type DIVEPerspectiveCameraSettings = {
10
- fov: number;
11
- near: number;
12
- far: number;
13
- };
14
-
15
- export const DIVEPerspectiveCameraDefaultSettings: DIVEPerspectiveCameraSettings =
16
- {
17
- fov: 70,
18
- near: 0.1,
19
- far: 1000,
20
- };
21
-
22
- /**
23
- * A Perspective camera. Can change the layer mask to show different objects.
24
- *
25
- * @module
26
- */
27
-
28
- export default class DIVEPerspectiveCamera extends PerspectiveCamera {
29
- public static readonly EDITOR_VIEW_LAYER_MASK =
30
- DEFAULT_LAYER_MASK |
31
- UI_LAYER_MASK |
32
- HELPER_LAYER_MASK |
33
- PRODUCT_LAYER_MASK;
34
- public static readonly LIVE_VIEW_LAYER_MASK = PRODUCT_LAYER_MASK;
35
-
36
- public onSetCameraLayer: (mask: number) => void = () => {};
37
-
38
- constructor(
39
- settings: Partial<DIVEPerspectiveCameraSettings> = DIVEPerspectiveCameraDefaultSettings,
40
- ) {
41
- super(
42
- settings.fov || DIVEPerspectiveCameraDefaultSettings.fov,
43
- 1,
44
- settings.near || DIVEPerspectiveCameraDefaultSettings.near,
45
- settings.far || DIVEPerspectiveCameraDefaultSettings.far,
46
- );
47
-
48
- this.layers.mask = DIVEPerspectiveCamera.EDITOR_VIEW_LAYER_MASK;
49
- }
50
-
51
- public OnResize(width: number, height: number): void {
52
- this.aspect = width / height;
53
- this.updateProjectionMatrix();
54
- }
55
-
56
- public SetCameraLayer(layer: 'LIVE' | 'EDITOR'): void {
57
- this.layers.mask =
58
- layer === 'LIVE'
59
- ? DIVEPerspectiveCamera.LIVE_VIEW_LAYER_MASK
60
- : DIVEPerspectiveCamera.EDITOR_VIEW_LAYER_MASK;
61
- this.onSetCameraLayer(this.layers.mask);
62
- }
63
- }
@@ -1,36 +0,0 @@
1
- import DIVEPerspectiveCamera from '../PerspectiveCamera';
2
-
3
- let cam: DIVEPerspectiveCamera;
4
-
5
- describe('dive/camera/DIVEPerspectiveCamera', () => {
6
- beforeEach(() => {
7
- jest.clearAllMocks();
8
- cam = new DIVEPerspectiveCamera();
9
- });
10
-
11
- it('should instantiate', () => {
12
- cam = new DIVEPerspectiveCamera({});
13
- expect(cam).toBeDefined();
14
- });
15
-
16
- it('should instantiate with settings', () => {
17
- cam = new DIVEPerspectiveCamera({
18
- fov: 45,
19
- near: 0.1,
20
- far: 100,
21
- });
22
- expect(cam).toBeDefined();
23
- });
24
-
25
- it('should resize', () => {
26
- const spy = jest.spyOn(cam, 'updateProjectionMatrix');
27
- expect(() => cam.OnResize(800, 600)).not.toThrow();
28
- expect(cam.aspect).toBe(800 / 600);
29
- expect(spy).toHaveBeenCalledTimes(1);
30
- });
31
-
32
- it('should set camera layer', () => {
33
- expect(() => cam.SetCameraLayer('LIVE')).not.toThrow();
34
- expect(() => cam.SetCameraLayer('EDITOR')).not.toThrow();
35
- });
36
- });