@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,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
Color,
|
|
3
|
+
ColorRepresentation,
|
|
4
|
+
Mesh,
|
|
5
|
+
MeshStandardMaterial,
|
|
6
|
+
PlaneGeometry,
|
|
7
|
+
} from 'three';
|
|
8
|
+
import { PRODUCT_LAYER_MASK } from '../../constant/VisibilityLayerMask.ts';
|
|
3
9
|
|
|
4
10
|
/**
|
|
5
11
|
* A basic floor geometry.
|
|
@@ -13,7 +19,12 @@ export class DIVEFloor extends Mesh {
|
|
|
13
19
|
public isFloor: true = true;
|
|
14
20
|
|
|
15
21
|
constructor() {
|
|
16
|
-
super(
|
|
22
|
+
super(
|
|
23
|
+
new PlaneGeometry(10000, 10000),
|
|
24
|
+
new MeshStandardMaterial({
|
|
25
|
+
color: new Color(150 / 255, 150 / 255, 150 / 255),
|
|
26
|
+
}),
|
|
27
|
+
);
|
|
17
28
|
|
|
18
29
|
this.name = 'Floor';
|
|
19
30
|
|
|
@@ -9,13 +9,19 @@ describe('dive/primitive/floor/DIVEFloor', () => {
|
|
|
9
9
|
|
|
10
10
|
it('should set visibility', () => {
|
|
11
11
|
const floor = new DIVEFloor();
|
|
12
|
-
expect(() => {
|
|
12
|
+
expect(() => {
|
|
13
|
+
floor.SetVisibility(false);
|
|
14
|
+
}).not.toThrow();
|
|
13
15
|
expect(floor.visible).toBe(false);
|
|
14
16
|
});
|
|
15
17
|
|
|
16
18
|
it('should set color', () => {
|
|
17
19
|
const floor = new DIVEFloor();
|
|
18
|
-
expect(() => {
|
|
19
|
-
|
|
20
|
+
expect(() => {
|
|
21
|
+
floor.SetColor('#ff00ff');
|
|
22
|
+
}).not.toThrow();
|
|
23
|
+
expect(
|
|
24
|
+
'#' + (floor.material as MeshStandardMaterial).color.getHexString(),
|
|
25
|
+
).toBe('#ff00ff');
|
|
20
26
|
});
|
|
21
|
-
});
|
|
27
|
+
});
|
package/src/renderer/Renderer.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Camera,
|
|
3
|
+
MathUtils,
|
|
4
|
+
NoToneMapping,
|
|
5
|
+
PCFSoftShadowMap,
|
|
6
|
+
Scene,
|
|
7
|
+
ShadowMapType,
|
|
8
|
+
ToneMapping,
|
|
9
|
+
WebGLRenderer,
|
|
10
|
+
} from 'three';
|
|
2
11
|
|
|
3
12
|
export type DIVERendererSettings = {
|
|
4
13
|
antialias: boolean;
|
|
@@ -8,7 +17,7 @@ export type DIVERendererSettings = {
|
|
|
8
17
|
shadowMapType: ShadowMapType;
|
|
9
18
|
toneMapping: ToneMapping;
|
|
10
19
|
canvas?: HTMLCanvasElement;
|
|
11
|
-
}
|
|
20
|
+
};
|
|
12
21
|
|
|
13
22
|
export const DIVERendererDefaultSettings: DIVERendererSettings = {
|
|
14
23
|
antialias: true,
|
|
@@ -18,7 +27,7 @@ export const DIVERendererDefaultSettings: DIVERendererSettings = {
|
|
|
18
27
|
shadowMapType: PCFSoftShadowMap,
|
|
19
28
|
toneMapping: NoToneMapping,
|
|
20
29
|
canvas: undefined,
|
|
21
|
-
}
|
|
30
|
+
};
|
|
22
31
|
|
|
23
32
|
/**
|
|
24
33
|
* A changed version of the WebGLRenderer.
|
|
@@ -35,22 +44,38 @@ export class DIVERenderer extends WebGLRenderer {
|
|
|
35
44
|
private force: boolean = false;
|
|
36
45
|
|
|
37
46
|
// pre- and post-render callbacks
|
|
38
|
-
private preRenderCallbacks: Map<string, () => void> = new Map<
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
private preRenderCallbacks: Map<string, () => void> = new Map<
|
|
48
|
+
string,
|
|
49
|
+
() => void
|
|
50
|
+
>();
|
|
51
|
+
private postRenderCallbacks: Map<string, () => void> = new Map<
|
|
52
|
+
string,
|
|
53
|
+
() => void
|
|
54
|
+
>();
|
|
55
|
+
|
|
56
|
+
constructor(
|
|
57
|
+
rendererSettings: Partial<DIVERendererSettings> = DIVERendererDefaultSettings,
|
|
58
|
+
) {
|
|
42
59
|
super({
|
|
43
|
-
antialias:
|
|
60
|
+
antialias:
|
|
61
|
+
rendererSettings.antialias ||
|
|
62
|
+
DIVERendererDefaultSettings.antialias,
|
|
44
63
|
alpha: rendererSettings.alpha || DIVERendererDefaultSettings.alpha,
|
|
45
64
|
preserveDrawingBuffer: true,
|
|
46
65
|
canvas: rendererSettings.canvas,
|
|
47
66
|
});
|
|
48
67
|
this.setPixelRatio(window.devicePixelRatio);
|
|
49
68
|
|
|
50
|
-
this.shadowMap.enabled =
|
|
51
|
-
|
|
69
|
+
this.shadowMap.enabled =
|
|
70
|
+
rendererSettings.shadowMapEnabled ||
|
|
71
|
+
DIVERendererDefaultSettings.shadowMapEnabled;
|
|
72
|
+
this.shadowMap.type =
|
|
73
|
+
rendererSettings.shadowMapType ||
|
|
74
|
+
DIVERendererDefaultSettings.shadowMapType;
|
|
52
75
|
|
|
53
|
-
this.toneMapping =
|
|
76
|
+
this.toneMapping =
|
|
77
|
+
rendererSettings.toneMapping ||
|
|
78
|
+
DIVERendererDefaultSettings.toneMapping;
|
|
54
79
|
|
|
55
80
|
this.debug.checkShaderErrors = false;
|
|
56
81
|
}
|
|
@@ -63,7 +88,9 @@ export class DIVERenderer extends WebGLRenderer {
|
|
|
63
88
|
|
|
64
89
|
// Starts the renderer with the given scene and camera.
|
|
65
90
|
public StartRenderer(scene: Scene, cam: Camera): void {
|
|
66
|
-
this.setAnimationLoop(() => {
|
|
91
|
+
this.setAnimationLoop(() => {
|
|
92
|
+
this.internal_render(scene, cam);
|
|
93
|
+
});
|
|
67
94
|
this.running = true;
|
|
68
95
|
}
|
|
69
96
|
|
|
@@ -163,12 +190,16 @@ export class DIVERenderer extends WebGLRenderer {
|
|
|
163
190
|
if ((this.paused || !this.running) && !this.force) return;
|
|
164
191
|
|
|
165
192
|
// execute render loop callbacks
|
|
166
|
-
this.preRenderCallbacks.forEach((callback) => {
|
|
193
|
+
this.preRenderCallbacks.forEach((callback) => {
|
|
194
|
+
callback();
|
|
195
|
+
});
|
|
167
196
|
|
|
168
197
|
this.render(scene, cam);
|
|
169
198
|
|
|
170
|
-
this.postRenderCallbacks.forEach((callback) => {
|
|
199
|
+
this.postRenderCallbacks.forEach((callback) => {
|
|
200
|
+
callback();
|
|
201
|
+
});
|
|
171
202
|
|
|
172
203
|
this.force = false;
|
|
173
204
|
}
|
|
174
|
-
}
|
|
205
|
+
}
|
|
@@ -34,9 +34,11 @@ jest.mock('three', () => {
|
|
|
34
34
|
return this;
|
|
35
35
|
}),
|
|
36
36
|
MathUtils: {
|
|
37
|
-
generateUUID: () => {
|
|
37
|
+
generateUUID: () => {
|
|
38
|
+
return test_uuid;
|
|
39
|
+
},
|
|
38
40
|
},
|
|
39
|
-
}
|
|
41
|
+
};
|
|
40
42
|
});
|
|
41
43
|
|
|
42
44
|
let renderer: DIVERenderer;
|
|
@@ -72,30 +74,43 @@ describe('dive/renderer/DIVERenderer', () => {
|
|
|
72
74
|
});
|
|
73
75
|
|
|
74
76
|
it('should start render', () => {
|
|
75
|
-
expect(() => {
|
|
77
|
+
expect(() => {
|
|
78
|
+
renderer.StartRenderer(
|
|
79
|
+
{} as DIVEScene,
|
|
80
|
+
{} as DIVEPerspectiveCamera,
|
|
81
|
+
);
|
|
82
|
+
}).not.toThrow();
|
|
76
83
|
expect(renderer['running']).toBe(true);
|
|
77
84
|
});
|
|
78
85
|
|
|
79
86
|
it('should pause render', () => {
|
|
80
87
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
81
|
-
expect(() => {
|
|
88
|
+
expect(() => {
|
|
89
|
+
renderer.PauseRenderer();
|
|
90
|
+
}).not.toThrow();
|
|
82
91
|
expect(renderer['paused']).toBe(true);
|
|
83
92
|
});
|
|
84
93
|
|
|
85
94
|
it('should resume render', () => {
|
|
86
95
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
87
96
|
renderer.PauseRenderer();
|
|
88
|
-
expect(() => {
|
|
97
|
+
expect(() => {
|
|
98
|
+
renderer.ResumeRenderer();
|
|
99
|
+
}).not.toThrow();
|
|
89
100
|
expect(renderer['paused']).toBe(false);
|
|
90
101
|
});
|
|
91
102
|
|
|
92
103
|
it('should stop render', () => {
|
|
93
|
-
expect(() => {
|
|
104
|
+
expect(() => {
|
|
105
|
+
renderer.StopRenderer();
|
|
106
|
+
}).not.toThrow();
|
|
94
107
|
expect(renderer['running']).toBe(false);
|
|
95
108
|
});
|
|
96
109
|
|
|
97
110
|
it('should resize renderer', () => {
|
|
98
|
-
expect(() => {
|
|
111
|
+
expect(() => {
|
|
112
|
+
renderer.OnResize(500, 500);
|
|
113
|
+
}).not.toThrow();
|
|
99
114
|
expect(mock_setSize).toHaveBeenCalledTimes(1);
|
|
100
115
|
});
|
|
101
116
|
|
|
@@ -103,77 +118,109 @@ describe('dive/renderer/DIVERenderer', () => {
|
|
|
103
118
|
expect(mock_render).toHaveBeenCalledTimes(0);
|
|
104
119
|
|
|
105
120
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
106
|
-
expect(() => {
|
|
121
|
+
expect(() => {
|
|
122
|
+
renderer['internal_render'](
|
|
123
|
+
{} as DIVEScene,
|
|
124
|
+
{} as DIVEPerspectiveCamera,
|
|
125
|
+
);
|
|
126
|
+
}).not.toThrow();
|
|
107
127
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
108
128
|
});
|
|
109
129
|
|
|
110
130
|
it('should force render', () => {
|
|
111
|
-
expect(() => {
|
|
131
|
+
expect(() => {
|
|
132
|
+
renderer.ForceRendering();
|
|
133
|
+
}).not.toThrow();
|
|
112
134
|
});
|
|
113
135
|
|
|
114
136
|
it('should not render when not started', () => {
|
|
115
137
|
expect(mock_render).toHaveBeenCalledTimes(0);
|
|
116
|
-
renderer['internal_render'](
|
|
138
|
+
renderer['internal_render'](
|
|
139
|
+
{} as DIVEScene,
|
|
140
|
+
{} as DIVEPerspectiveCamera,
|
|
141
|
+
);
|
|
117
142
|
expect(mock_render).toHaveBeenCalledTimes(0);
|
|
118
143
|
});
|
|
119
144
|
|
|
120
145
|
it('should not render when stopped', () => {
|
|
121
146
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
122
|
-
renderer['internal_render'](
|
|
147
|
+
renderer['internal_render'](
|
|
148
|
+
{} as DIVEScene,
|
|
149
|
+
{} as DIVEPerspectiveCamera,
|
|
150
|
+
);
|
|
123
151
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
124
152
|
|
|
125
153
|
renderer.StopRenderer();
|
|
126
|
-
renderer['internal_render'](
|
|
154
|
+
renderer['internal_render'](
|
|
155
|
+
{} as DIVEScene,
|
|
156
|
+
{} as DIVEPerspectiveCamera,
|
|
157
|
+
);
|
|
127
158
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
128
159
|
});
|
|
129
160
|
|
|
130
161
|
it('should not render when paused', () => {
|
|
131
162
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
132
|
-
renderer['internal_render'](
|
|
163
|
+
renderer['internal_render'](
|
|
164
|
+
{} as DIVEScene,
|
|
165
|
+
{} as DIVEPerspectiveCamera,
|
|
166
|
+
);
|
|
133
167
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
134
168
|
|
|
135
169
|
renderer.PauseRenderer();
|
|
136
|
-
renderer['internal_render'](
|
|
170
|
+
renderer['internal_render'](
|
|
171
|
+
{} as DIVEScene,
|
|
172
|
+
{} as DIVEPerspectiveCamera,
|
|
173
|
+
);
|
|
137
174
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
138
175
|
});
|
|
139
176
|
|
|
140
177
|
it('should resume render when running', () => {
|
|
141
178
|
renderer.StartRenderer({} as DIVEScene, {} as DIVEPerspectiveCamera);
|
|
142
179
|
renderer.PauseRenderer();
|
|
143
|
-
renderer['internal_render'](
|
|
180
|
+
renderer['internal_render'](
|
|
181
|
+
{} as DIVEScene,
|
|
182
|
+
{} as DIVEPerspectiveCamera,
|
|
183
|
+
);
|
|
144
184
|
expect(mock_render).toHaveBeenCalledTimes(0);
|
|
145
185
|
|
|
146
186
|
renderer.ResumeRenderer();
|
|
147
|
-
renderer['internal_render'](
|
|
187
|
+
renderer['internal_render'](
|
|
188
|
+
{} as DIVEScene,
|
|
189
|
+
{} as DIVEPerspectiveCamera,
|
|
190
|
+
);
|
|
148
191
|
expect(mock_render).toHaveBeenCalledTimes(1);
|
|
149
192
|
});
|
|
150
193
|
|
|
151
194
|
it('should add pre render callback', () => {
|
|
152
|
-
expect(renderer.AddPreRenderCallback(() => {
|
|
195
|
+
expect(renderer.AddPreRenderCallback(() => {})).toBe(test_uuid);
|
|
153
196
|
expect(renderer['preRenderCallbacks'].size).toBe(1);
|
|
154
197
|
});
|
|
155
198
|
|
|
156
199
|
it('should remove pre render callback', () => {
|
|
157
|
-
const uuid = renderer.AddPreRenderCallback(() => {
|
|
200
|
+
const uuid = renderer.AddPreRenderCallback(() => {});
|
|
158
201
|
expect(renderer.RemovePreRenderCallback(uuid)).toBe(true);
|
|
159
202
|
});
|
|
160
203
|
|
|
161
204
|
it('should not crash while removing non-existing pre render callback', () => {
|
|
162
|
-
expect(() => {
|
|
205
|
+
expect(() => {
|
|
206
|
+
renderer.RemovePreRenderCallback(test_uuid);
|
|
207
|
+
}).not.toThrow();
|
|
163
208
|
});
|
|
164
209
|
|
|
165
210
|
it('should add post render callback', () => {
|
|
166
|
-
expect(renderer.AddPostRenderCallback(() => {
|
|
211
|
+
expect(renderer.AddPostRenderCallback(() => {})).toBe(test_uuid);
|
|
167
212
|
expect(renderer['postRenderCallbacks'].size).toBe(1);
|
|
168
213
|
});
|
|
169
214
|
|
|
170
215
|
it('should remove post render callback', () => {
|
|
171
|
-
const uuid = renderer.AddPostRenderCallback(() => {
|
|
216
|
+
const uuid = renderer.AddPostRenderCallback(() => {});
|
|
172
217
|
expect(renderer.RemovePostRenderCallback(uuid)).toBe(true);
|
|
173
218
|
});
|
|
174
219
|
|
|
175
220
|
it('should not crash while removing non-existing post render callback', () => {
|
|
176
|
-
expect(() => {
|
|
221
|
+
expect(() => {
|
|
222
|
+
renderer.RemovePostRenderCallback(test_uuid);
|
|
223
|
+
}).not.toThrow();
|
|
177
224
|
});
|
|
178
225
|
|
|
179
226
|
it('should execute pre and post render callbacks', () => {
|
|
@@ -182,8 +229,11 @@ describe('dive/renderer/DIVERenderer', () => {
|
|
|
182
229
|
const postcallback = jest.fn();
|
|
183
230
|
renderer.AddPreRenderCallback(precallback);
|
|
184
231
|
renderer.AddPostRenderCallback(postcallback);
|
|
185
|
-
renderer['internal_render'](
|
|
232
|
+
renderer['internal_render'](
|
|
233
|
+
{} as DIVEScene,
|
|
234
|
+
{} as DIVEPerspectiveCamera,
|
|
235
|
+
);
|
|
186
236
|
expect(precallback).toHaveBeenCalledTimes(1);
|
|
187
237
|
expect(postcallback).toHaveBeenCalledTimes(1);
|
|
188
238
|
});
|
|
189
|
-
});
|
|
239
|
+
});
|
package/src/scene/Scene.ts
CHANGED
|
@@ -53,7 +53,9 @@ export class DIVEScene extends Scene {
|
|
|
53
53
|
return this.Root.ComputeSceneBB();
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
public GetSceneObject<T extends DIVESceneObject>(
|
|
56
|
+
public GetSceneObject<T extends DIVESceneObject>(
|
|
57
|
+
object: Partial<COMEntity> & { id: string },
|
|
58
|
+
): T | undefined {
|
|
57
59
|
return this.Root.GetSceneObject<T>(object);
|
|
58
60
|
}
|
|
59
61
|
|
|
@@ -61,11 +63,15 @@ export class DIVEScene extends Scene {
|
|
|
61
63
|
this.Root.AddSceneObject(object);
|
|
62
64
|
}
|
|
63
65
|
|
|
64
|
-
public UpdateSceneObject(
|
|
66
|
+
public UpdateSceneObject(
|
|
67
|
+
object: Partial<COMEntity> & { id: string },
|
|
68
|
+
): void {
|
|
65
69
|
this.Root.UpdateSceneObject(object);
|
|
66
70
|
}
|
|
67
71
|
|
|
68
|
-
public DeleteSceneObject(
|
|
72
|
+
public DeleteSceneObject(
|
|
73
|
+
object: Partial<COMEntity> & { id: string },
|
|
74
|
+
): void {
|
|
69
75
|
this.Root.DeleteSceneObject(object);
|
|
70
76
|
}
|
|
71
77
|
|
|
@@ -22,7 +22,7 @@ jest.mock('../root/Root', () => {
|
|
|
22
22
|
this.removeFromParent = jest.fn();
|
|
23
23
|
this.ComputeSceneBB = jest.fn();
|
|
24
24
|
return this;
|
|
25
|
-
})
|
|
25
|
+
}),
|
|
26
26
|
};
|
|
27
27
|
});
|
|
28
28
|
|
|
@@ -87,4 +87,4 @@ describe('dive/scene/DIVEScene', () => {
|
|
|
87
87
|
scene.GetSceneObject({} as COMEntity);
|
|
88
88
|
expect(mock_GetSceneObject).toHaveBeenCalledTimes(1);
|
|
89
89
|
});
|
|
90
|
-
});
|
|
90
|
+
});
|