@shapediver/viewer.creation-control-center.viewport 3.0.0
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/LICENSE +73 -0
- package/README.md +3 -0
- package/dist/implementation/CreationControlCenterViewport.d.ts +21 -0
- package/dist/implementation/CreationControlCenterViewport.d.ts.map +1 -0
- package/dist/implementation/CreationControlCenterViewport.js +213 -0
- package/dist/implementation/CreationControlCenterViewport.js.map +1 -0
- package/dist/implementation/ViewportGlobalAccessObject.d.ts +30 -0
- package/dist/implementation/ViewportGlobalAccessObject.d.ts.map +1 -0
- package/dist/implementation/ViewportGlobalAccessObject.js +82 -0
- package/dist/implementation/ViewportGlobalAccessObject.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/ICreationControlCenterViewport.d.ts +59 -0
- package/dist/interfaces/ICreationControlCenterViewport.d.ts.map +1 -0
- package/dist/interfaces/ICreationControlCenterViewport.js +4 -0
- package/dist/interfaces/ICreationControlCenterViewport.js.map +1 -0
- package/package.json +48 -0
- package/src/implementation/CreationControlCenterViewport.ts +230 -0
- package/src/implementation/ViewportGlobalAccessObject.ts +92 -0
- package/src/index.ts +7 -0
- package/src/interfaces/ICreationControlCenterViewport.ts +74 -0
- package/tsconfig.json +17 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
Required Notice: Copyright 2023 ShapeDiver GmbH (https://www.shapediver.com)
|
|
2
|
+
|
|
3
|
+
https://polyformproject.org/licenses/noncommercial/1.0.0
|
|
4
|
+
|
|
5
|
+
Acceptance
|
|
6
|
+
|
|
7
|
+
In order to get any license under these terms, you must agree to them as both strict obligations and conditions to all your licenses.
|
|
8
|
+
|
|
9
|
+
Copyright License
|
|
10
|
+
|
|
11
|
+
The licensor grants you a copyright license for the software to do everything you might do with the software that would otherwise infringe the licensor’s copyright in it for any permitted purpose. However, you may only distribute the software according to Distribution License and make changes or new works based on the software according to Changes and New Works License.
|
|
12
|
+
|
|
13
|
+
Distribution License
|
|
14
|
+
|
|
15
|
+
The licensor grants you an additional copyright license to distribute copies of the software. Your license to distribute covers distributing the software with changes and new works permitted by Changes and New Works License.
|
|
16
|
+
|
|
17
|
+
Notices
|
|
18
|
+
|
|
19
|
+
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms or the URL for them above, as well as copies of any plain-text lines beginning with Required Notice: that the licensor provided with the software. For example:
|
|
20
|
+
|
|
21
|
+
Required Notice: Copyright 2023 ShapeDiver GmbH (https://www.shapediver.com)
|
|
22
|
+
|
|
23
|
+
Changes and New Works License
|
|
24
|
+
|
|
25
|
+
The licensor grants you an additional copyright license to make changes and new works based on the software for any permitted purpose.
|
|
26
|
+
|
|
27
|
+
Patent License
|
|
28
|
+
|
|
29
|
+
The licensor grants you a patent license for the software that covers patent claims the licensor can license, or becomes able to license, that you would infringe by using the software.
|
|
30
|
+
|
|
31
|
+
Noncommercial Purposes
|
|
32
|
+
|
|
33
|
+
Any noncommercial purpose is a permitted purpose.
|
|
34
|
+
|
|
35
|
+
Personal Uses
|
|
36
|
+
|
|
37
|
+
Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, is use for a permitted purpose.
|
|
38
|
+
|
|
39
|
+
Noncommercial Organizations
|
|
40
|
+
|
|
41
|
+
Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution is use for a permitted purpose regardless of the source of funding or obligations resulting from the funding.
|
|
42
|
+
|
|
43
|
+
Fair Use
|
|
44
|
+
|
|
45
|
+
You may have “fair use” rights for the software under the law. These terms do not limit them.
|
|
46
|
+
|
|
47
|
+
No Other Rights
|
|
48
|
+
|
|
49
|
+
These terms do not allow you to sublicense or transfer any of your licenses to anyone else, or prevent the licensor from granting licenses to anyone else. These terms do not imply any other licenses.
|
|
50
|
+
|
|
51
|
+
Patent Defense
|
|
52
|
+
|
|
53
|
+
If you make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.
|
|
54
|
+
|
|
55
|
+
Violations
|
|
56
|
+
|
|
57
|
+
The first time you are notified in writing that you have violated any of these terms, or done anything with the software not covered by your licenses, your licenses can nonetheless continue if you come into full compliance with these terms, and take practical steps to correct past violations, within 32 days of receiving notice. Otherwise, all your licenses end immediately.
|
|
58
|
+
|
|
59
|
+
No Liability
|
|
60
|
+
|
|
61
|
+
As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.
|
|
62
|
+
|
|
63
|
+
Definitions
|
|
64
|
+
|
|
65
|
+
The licensor is the individual or entity offering these terms, and the software is the software the licensor makes available under these terms.
|
|
66
|
+
|
|
67
|
+
You refers to the individual or entity agreeing to these terms.
|
|
68
|
+
|
|
69
|
+
Your company is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. Control means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.
|
|
70
|
+
|
|
71
|
+
Your licenses are all the licenses granted to you for the software under these terms.
|
|
72
|
+
|
|
73
|
+
Use means anything you do with the software requiring one of your licenses.
|
package/README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ICreationControlCenterViewport, ViewportCreationDefinition } from '../interfaces/ICreationControlCenterViewport';
|
|
2
|
+
import { IViewportSettingsSections } from '@shapediver/viewer.shared.types';
|
|
3
|
+
import { ISettings } from '@shapediver/viewer.settings';
|
|
4
|
+
import { RenderingEngine as RenderingEngineThreeJs } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
5
|
+
export declare class CreationControlCenterViewport implements ICreationControlCenterViewport {
|
|
6
|
+
#private;
|
|
7
|
+
private static _instance;
|
|
8
|
+
readonly viewportEngines: {
|
|
9
|
+
[key: string]: RenderingEngineThreeJs;
|
|
10
|
+
};
|
|
11
|
+
updateViewport?: (viewportEngines: {
|
|
12
|
+
[key: string]: RenderingEngineThreeJs;
|
|
13
|
+
}) => void;
|
|
14
|
+
static get instance(): CreationControlCenterViewport;
|
|
15
|
+
applyViewportSettings(viewportId: string, settings: ISettings, sections?: IViewportSettingsSections): Promise<void>;
|
|
16
|
+
closeViewportEngine(id: string): Promise<void>;
|
|
17
|
+
createViewportEngine(properties: ViewportCreationDefinition): Promise<RenderingEngineThreeJs>;
|
|
18
|
+
getViewportSettings(viewportId: string): ISettings;
|
|
19
|
+
private assignSettings;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=CreationControlCenterViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreationControlCenterViewport.d.ts","sourceRoot":"","sources":["../../src/implementation/CreationControlCenterViewport.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1H,OAAO,EAGH,yBAAyB,EAE5B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AAIzH,qBAAa,6BAA8B,YAAW,8BAA8B;;IAShF,OAAO,CAAC,MAAM,CAAC,SAAS,CAAgC;IAExD,SAAgB,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;KAAE,CAAM;IAEzE,cAAc,CAAC,EAAE,CACpB,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAC;KAAE,KAC1D,IAAI,CAAC;IAMV,WAAkB,QAAQ,kCAEzB;IAMM,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,GAAE,yBAAwH,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3M,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9C,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAsGnG,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS;YAc3C,cAAc;CAmB/B"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
14
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
15
|
+
};
|
|
16
|
+
var _CreationControlCenterViewport_eventEngine, _CreationControlCenterViewport_logger, _CreationControlCenterViewport_sceneTree, _CreationControlCenterViewport_stateEngine, _CreationControlCenterViewport_uuidGenerator;
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.CreationControlCenterViewport = void 0;
|
|
19
|
+
const viewer_shared_math_1 = require("@shapediver/viewer.shared.math");
|
|
20
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
21
|
+
const viewer_shared_types_1 = require("@shapediver/viewer.shared.types");
|
|
22
|
+
const viewer_shared_node_tree_1 = require("@shapediver/viewer.shared.node-tree");
|
|
23
|
+
const viewer_rendering_engine_rendering_engine_threejs_1 = require("@shapediver/viewer.rendering-engine.rendering-engine-threejs");
|
|
24
|
+
const ViewportGlobalAccessObject_1 = require("./ViewportGlobalAccessObject");
|
|
25
|
+
const viewer_rendering_engine_rendering_engine_1 = require("@shapediver/viewer.rendering-engine.rendering-engine");
|
|
26
|
+
class CreationControlCenterViewport {
|
|
27
|
+
constructor() {
|
|
28
|
+
// #region Properties (8)
|
|
29
|
+
_CreationControlCenterViewport_eventEngine.set(this, viewer_shared_services_1.EventEngine.instance);
|
|
30
|
+
_CreationControlCenterViewport_logger.set(this, viewer_shared_services_1.Logger.instance);
|
|
31
|
+
_CreationControlCenterViewport_sceneTree.set(this, viewer_shared_node_tree_1.Tree.instance);
|
|
32
|
+
_CreationControlCenterViewport_stateEngine.set(this, viewer_shared_services_1.StateEngine.instance);
|
|
33
|
+
_CreationControlCenterViewport_uuidGenerator.set(this, viewer_shared_services_1.UuidGenerator.instance);
|
|
34
|
+
this.viewportEngines = {};
|
|
35
|
+
// #endregion Private Methods (1)
|
|
36
|
+
}
|
|
37
|
+
// #endregion Properties (8)
|
|
38
|
+
// #region Public Static Getters And Setters (1)
|
|
39
|
+
static get instance() {
|
|
40
|
+
return this._instance || (this._instance = new this());
|
|
41
|
+
}
|
|
42
|
+
// #endregion Public Static Getters And Setters (1)
|
|
43
|
+
// #region Public Methods (4)
|
|
44
|
+
applyViewportSettings(viewportId, settings, sections = { ar: false, scene: false, camera: false, light: false, environment: false, general: false }) {
|
|
45
|
+
sections = sections || {};
|
|
46
|
+
const settingsEngine = new viewer_shared_services_1.SettingsEngine();
|
|
47
|
+
settingsEngine.loadSettings(settings);
|
|
48
|
+
const promises = [];
|
|
49
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportId].settingsAssigned.reset();
|
|
50
|
+
promises.push(new Promise(resolve => {
|
|
51
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportId].settingsAssigned.then(() => {
|
|
52
|
+
resolve();
|
|
53
|
+
});
|
|
54
|
+
}));
|
|
55
|
+
this.viewportEngines[viewportId].applySettings(sections, settingsEngine);
|
|
56
|
+
return new Promise(resolve => Promise.all(promises).then(() => resolve()));
|
|
57
|
+
}
|
|
58
|
+
closeViewportEngine(id) {
|
|
59
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
if (!this.viewportEngines[id])
|
|
61
|
+
return;
|
|
62
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_logger, "f").debugLow(`CreationControlCenter.closeViewportEngine: Closing viewport ${id}.`);
|
|
63
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id].initialized.resolved === false)
|
|
64
|
+
yield new Promise(resolve => { __classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id].initialized.then(() => resolve()); });
|
|
65
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id].settingsAssigned.reset();
|
|
66
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id].environmentMapLoaded.reset();
|
|
67
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id].initialized.reset();
|
|
68
|
+
yield this.viewportEngines[id].close();
|
|
69
|
+
this.viewportEngines[id] = undefined;
|
|
70
|
+
delete this.viewportEngines[id];
|
|
71
|
+
delete __classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[id];
|
|
72
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_logger, "f").debug('CreationControlCenter.closeViewportEngine: Viewport closed.');
|
|
73
|
+
if (this.updateViewport)
|
|
74
|
+
this.updateViewport(this.viewportEngines);
|
|
75
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.VIEWPORT.VIEWPORT_CLOSED, { viewportId: id });
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
createViewportEngine(properties) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const eventId = __classPrivateFieldGet(this, _CreationControlCenterViewport_uuidGenerator, "f").create();
|
|
81
|
+
const viewportEngineId = properties.id || __classPrivateFieldGet(this, _CreationControlCenterViewport_uuidGenerator, "f").create();
|
|
82
|
+
properties.id = viewportEngineId;
|
|
83
|
+
try {
|
|
84
|
+
const eventStart = { type: viewer_shared_types_1.TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0, status: 'Creating viewport', data: { viewportId: viewportEngineId } };
|
|
85
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_START, eventStart);
|
|
86
|
+
// check if the given id is valid
|
|
87
|
+
if (this.viewportEngines[viewportEngineId]) {
|
|
88
|
+
const eventClose = { type: viewer_shared_types_1.TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0.1, status: 'Closing viewport with same id', data: { viewportId: viewportEngineId } };
|
|
89
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_PROCESS, eventClose);
|
|
90
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_logger, "f").warn(`CreationControlCenter.createViewport: Viewer with this id (${viewportEngineId}) already exists. Closing initial instance.`);
|
|
91
|
+
yield this.closeViewportEngine(viewportEngineId);
|
|
92
|
+
}
|
|
93
|
+
const viewportEngine = new viewer_rendering_engine_rendering_engine_threejs_1.RenderingEngine(properties);
|
|
94
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId] = new ViewportGlobalAccessObject_1.ViewportGlobalAccessObject(viewportEngine);
|
|
95
|
+
this.viewportEngines[viewportEngineId] = viewportEngine;
|
|
96
|
+
viewportEngine.start();
|
|
97
|
+
viewportEngine.cameraEngine.createDefaultCameras();
|
|
98
|
+
if (properties.sessionSettingsMode === viewer_shared_services_1.SESSION_SETTINGS_MODE.MANUAL) {
|
|
99
|
+
if (!properties.sessionSettingsId)
|
|
100
|
+
throw new viewer_shared_services_1.ShapeDiverViewerViewportError('Session with sessionSettingsMode MANUAL needs to have a sessionSettingsId.');
|
|
101
|
+
const sessionSettingsId = properties.sessionSettingsId;
|
|
102
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines[sessionSettingsId]) {
|
|
103
|
+
yield this.assignSettings(viewportEngine.id, sessionSettingsId, true);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// in createSession
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (properties.sessionSettingsMode === viewer_shared_services_1.SESSION_SETTINGS_MODE.FIRST) {
|
|
110
|
+
const firstSessionEngine = Object.values(__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines).find(sessionEngine => sessionEngine.isFirstSession === true);
|
|
111
|
+
if (firstSessionEngine) {
|
|
112
|
+
yield this.assignSettings(viewportEngine.id, firstSessionEngine.id, true);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// in createSession
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (viewportEngine.sessionSettingsMode === viewer_shared_services_1.SESSION_SETTINGS_MODE.NONE &&
|
|
119
|
+
viewportEngine.visibility === viewer_rendering_engine_rendering_engine_1.VISIBILITY_MODE.SESSION) {
|
|
120
|
+
viewportEngine.show = true;
|
|
121
|
+
}
|
|
122
|
+
else if (viewportEngine.visibility === viewer_rendering_engine_rendering_engine_1.VISIBILITY_MODE.INSTANT) {
|
|
123
|
+
viewportEngine.show = true;
|
|
124
|
+
}
|
|
125
|
+
else if (viewportEngine.visibility === viewer_rendering_engine_rendering_engine_1.VISIBILITY_MODE.SESSION) {
|
|
126
|
+
// wait for settings to load before showing the scene
|
|
127
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_sceneTree, "f").root.boundingBox.isEmpty()) {
|
|
128
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").addListener(viewer_shared_services_1.EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_CHANGE, (e) => {
|
|
129
|
+
const event = e;
|
|
130
|
+
if (event.viewportId === viewportEngine.id) {
|
|
131
|
+
const boundingBox = new viewer_shared_math_1.Box(event.boundingBox.min, event.boundingBox.max);
|
|
132
|
+
if (boundingBox.isEmpty()) {
|
|
133
|
+
viewportEngine.show = false;
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId].settingsAssigned.resolved) {
|
|
137
|
+
viewportEngine.show = true;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId].settingsAssigned.then(() => {
|
|
141
|
+
viewportEngine.show = true;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId].settingsAssigned.resolved) {
|
|
150
|
+
viewportEngine.show = true;
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId].settingsAssigned.then(() => {
|
|
154
|
+
viewportEngine.show = true;
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId].initialized.resolve(true);
|
|
160
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_logger, "f").debug(`CreationControlCenter.createViewport: Viewport(${viewportEngineId}) created.`);
|
|
161
|
+
const eventEnd = { type: viewer_shared_types_1.TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 1, status: 'Viewport created', data: { viewportId: viewportEngineId } };
|
|
162
|
+
if (this.updateViewport)
|
|
163
|
+
this.updateViewport(this.viewportEngines);
|
|
164
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.VIEWPORT.VIEWPORT_CREATED, { viewportId: viewportEngineId });
|
|
165
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_END, eventEnd);
|
|
166
|
+
return this.viewportEngines[viewportEngineId];
|
|
167
|
+
}
|
|
168
|
+
catch (e) {
|
|
169
|
+
const eventCancel1 = { type: viewer_shared_types_1.TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0.9, status: 'Viewport created failed, closing viewport', data: { viewportId: viewportEngineId } };
|
|
170
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_PROCESS, eventCancel1);
|
|
171
|
+
try {
|
|
172
|
+
yield this.closeViewportEngine(viewportEngineId);
|
|
173
|
+
}
|
|
174
|
+
catch ( /* empty */_a) { /* empty */ }
|
|
175
|
+
const eventCancel2 = { type: viewer_shared_types_1.TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 1, status: 'Viewport created failed, exiting', data: { viewportId: viewportEngineId } };
|
|
176
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_eventEngine, "f").emitEvent(viewer_shared_services_1.EVENTTYPE.TASK.TASK_CANCEL, eventCancel2);
|
|
177
|
+
throw e;
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
getViewportSettings(viewportId) {
|
|
182
|
+
const viewportEngine = this.viewportEngines[viewportId];
|
|
183
|
+
if (!viewportEngine)
|
|
184
|
+
throw new viewer_shared_services_1.ShapeDiverViewerViewportError('Viewport with id ' + viewportId + ' could not be found.');
|
|
185
|
+
const settingsEngine = new viewer_shared_services_1.SettingsEngine();
|
|
186
|
+
viewportEngine.saveSettings(settingsEngine);
|
|
187
|
+
return settingsEngine.settings;
|
|
188
|
+
}
|
|
189
|
+
// #endregion Public Methods (4)
|
|
190
|
+
// #region Private Methods (1)
|
|
191
|
+
assignSettings(viewportEngineId, sessionEngineId, updateViewport = false) {
|
|
192
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
193
|
+
const viewportEngine = __classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").viewportEngines[viewportEngineId];
|
|
194
|
+
if (__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines[sessionEngineId].initialized.resolved === true) {
|
|
195
|
+
// immediate
|
|
196
|
+
viewportEngine.assignSettingsEngine(__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines[sessionEngineId].settingsEngine);
|
|
197
|
+
yield viewportEngine.applySettings(undefined, undefined, updateViewport);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
yield new Promise(resolve => {
|
|
201
|
+
__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines[sessionEngineId].initialized.then(() => __awaiter(this, void 0, void 0, function* () {
|
|
202
|
+
viewportEngine.assignSettingsEngine(__classPrivateFieldGet(this, _CreationControlCenterViewport_stateEngine, "f").sessionEngines[sessionEngineId].settingsEngine);
|
|
203
|
+
yield viewportEngine.applySettings(undefined, undefined, updateViewport);
|
|
204
|
+
resolve();
|
|
205
|
+
}));
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
exports.CreationControlCenterViewport = CreationControlCenterViewport;
|
|
212
|
+
_CreationControlCenterViewport_eventEngine = new WeakMap(), _CreationControlCenterViewport_logger = new WeakMap(), _CreationControlCenterViewport_sceneTree = new WeakMap(), _CreationControlCenterViewport_stateEngine = new WeakMap(), _CreationControlCenterViewport_uuidGenerator = new WeakMap();
|
|
213
|
+
//# sourceMappingURL=CreationControlCenterViewport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreationControlCenterViewport.js","sourceRoot":"","sources":["../../src/implementation/CreationControlCenterViewport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { RenderingEngine } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
2
|
+
import { IViewportGlobalAccessObjectDefinition, SettingsEngine, StatePromise } from '@shapediver/viewer.shared.services';
|
|
3
|
+
export declare class ViewportGlobalAccessObject implements IViewportGlobalAccessObjectDefinition {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(viewportEngine: RenderingEngine);
|
|
6
|
+
get boundingBoxCreated(): StatePromise<boolean>;
|
|
7
|
+
get busy(): string[];
|
|
8
|
+
get environmentMapLoaded(): StatePromise<boolean>;
|
|
9
|
+
set environmentMapLoaded(value: StatePromise<boolean>);
|
|
10
|
+
get id(): string;
|
|
11
|
+
get initialized(): StatePromise<boolean>;
|
|
12
|
+
get sessionSettingsId(): string | undefined;
|
|
13
|
+
get sessionSettingsMode(): import("@shapediver/viewer.shared.services").SESSION_SETTINGS_MODE;
|
|
14
|
+
get settingsAssigned(): StatePromise<boolean>;
|
|
15
|
+
applySettings(sections?: {
|
|
16
|
+
ar?: boolean | undefined;
|
|
17
|
+
scene?: boolean | undefined;
|
|
18
|
+
camera?: boolean | undefined;
|
|
19
|
+
light?: boolean | undefined;
|
|
20
|
+
environment?: boolean | undefined;
|
|
21
|
+
general?: boolean | undefined;
|
|
22
|
+
postprocessing?: boolean | undefined;
|
|
23
|
+
} | undefined, settingsEngine?: SettingsEngine | undefined, updateViewport?: boolean | undefined): Promise<void>;
|
|
24
|
+
assignSettingsEngine(settingsEngine: SettingsEngine): void;
|
|
25
|
+
displayErrorMessage(message: string): void;
|
|
26
|
+
reset(): void;
|
|
27
|
+
saveSettings(): void;
|
|
28
|
+
update(id: string): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ViewportGlobalAccessObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewportGlobalAccessObject.d.ts","sourceRoot":"","sources":["../../src/implementation/ViewportGlobalAccessObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAC;AAC/F,OAAO,EAAE,qCAAqC,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEzH,qBAAa,0BAA2B,YAAW,qCAAqC;;gBAexE,cAAc,EAAE,eAAe;IAQ3C,IAAW,kBAAkB,IAAI,YAAY,CAAC,OAAO,CAAC,CAErD;IAED,IAAW,IAAI,IAAI,MAAM,EAAE,CAE1B;IAED,IAAW,oBAAoB,IAAI,YAAY,CAAC,OAAO,CAAC,CAEvD;IAED,IAAW,oBAAoB,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,EAE3D;IAED,IAAW,EAAE,IAAI,MAAM,CAEtB;IAED,IAAW,WAAW,IAAI,YAAY,CAAC,OAAO,CAAC,CAE9C;IAED,IAAW,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEjD;IAED,IAAW,mBAAmB,uEAE7B;IAED,IAAW,gBAAgB,IAAI,YAAY,CAAC,OAAO,CAAC,CAEnD;IAMM,aAAa,CAAC,QAAQ,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAAE,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,EAAE,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrW,oBAAoB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAI1D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI1C,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,IAAI;IAIpB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAKlC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
+
};
|
|
8
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
+
};
|
|
13
|
+
var _ViewportGlobalAccessObject_boundingBoxCreated, _ViewportGlobalAccessObject_initialized, _ViewportGlobalAccessObject_settingsAssigned, _ViewportGlobalAccessObject_viewportEngine, _ViewportGlobalAccessObject_busy, _ViewportGlobalAccessObject_environmentMapLoaded;
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ViewportGlobalAccessObject = void 0;
|
|
16
|
+
const viewer_shared_services_1 = require("@shapediver/viewer.shared.services");
|
|
17
|
+
class ViewportGlobalAccessObject {
|
|
18
|
+
// #endregion Properties (6)
|
|
19
|
+
// #region Constructors (1)
|
|
20
|
+
constructor(viewportEngine) {
|
|
21
|
+
// #region Properties (6)
|
|
22
|
+
_ViewportGlobalAccessObject_boundingBoxCreated.set(this, new viewer_shared_services_1.StatePromise());
|
|
23
|
+
_ViewportGlobalAccessObject_initialized.set(this, new viewer_shared_services_1.StatePromise());
|
|
24
|
+
_ViewportGlobalAccessObject_settingsAssigned.set(this, new viewer_shared_services_1.StatePromise());
|
|
25
|
+
_ViewportGlobalAccessObject_viewportEngine.set(this, void 0);
|
|
26
|
+
_ViewportGlobalAccessObject_busy.set(this, []);
|
|
27
|
+
_ViewportGlobalAccessObject_environmentMapLoaded.set(this, new viewer_shared_services_1.StatePromise());
|
|
28
|
+
__classPrivateFieldSet(this, _ViewportGlobalAccessObject_viewportEngine, viewportEngine, "f");
|
|
29
|
+
}
|
|
30
|
+
// #endregion Constructors (1)
|
|
31
|
+
// #region Public Getters And Setters (9)
|
|
32
|
+
get boundingBoxCreated() {
|
|
33
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_boundingBoxCreated, "f");
|
|
34
|
+
}
|
|
35
|
+
get busy() {
|
|
36
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_busy, "f");
|
|
37
|
+
}
|
|
38
|
+
get environmentMapLoaded() {
|
|
39
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_environmentMapLoaded, "f");
|
|
40
|
+
}
|
|
41
|
+
set environmentMapLoaded(value) {
|
|
42
|
+
__classPrivateFieldSet(this, _ViewportGlobalAccessObject_environmentMapLoaded, value, "f");
|
|
43
|
+
}
|
|
44
|
+
get id() {
|
|
45
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").id;
|
|
46
|
+
}
|
|
47
|
+
get initialized() {
|
|
48
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_initialized, "f");
|
|
49
|
+
}
|
|
50
|
+
get sessionSettingsId() {
|
|
51
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").sessionSettingsId;
|
|
52
|
+
}
|
|
53
|
+
get sessionSettingsMode() {
|
|
54
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").sessionSettingsMode;
|
|
55
|
+
}
|
|
56
|
+
get settingsAssigned() {
|
|
57
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_settingsAssigned, "f");
|
|
58
|
+
}
|
|
59
|
+
// #endregion Public Getters And Setters (9)
|
|
60
|
+
// #region Public Methods (6)
|
|
61
|
+
applySettings(sections, settingsEngine, updateViewport) {
|
|
62
|
+
return __classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").applySettings(sections, settingsEngine, updateViewport);
|
|
63
|
+
}
|
|
64
|
+
assignSettingsEngine(settingsEngine) {
|
|
65
|
+
__classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").assignSettingsEngine(settingsEngine);
|
|
66
|
+
}
|
|
67
|
+
displayErrorMessage(message) {
|
|
68
|
+
__classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").displayErrorMessage(message);
|
|
69
|
+
}
|
|
70
|
+
reset() {
|
|
71
|
+
__classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").reset();
|
|
72
|
+
}
|
|
73
|
+
saveSettings() {
|
|
74
|
+
__classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").saveSettings();
|
|
75
|
+
}
|
|
76
|
+
update(id) {
|
|
77
|
+
__classPrivateFieldGet(this, _ViewportGlobalAccessObject_viewportEngine, "f").update(id);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ViewportGlobalAccessObject = ViewportGlobalAccessObject;
|
|
81
|
+
_ViewportGlobalAccessObject_boundingBoxCreated = new WeakMap(), _ViewportGlobalAccessObject_initialized = new WeakMap(), _ViewportGlobalAccessObject_settingsAssigned = new WeakMap(), _ViewportGlobalAccessObject_viewportEngine = new WeakMap(), _ViewportGlobalAccessObject_busy = new WeakMap(), _ViewportGlobalAccessObject_environmentMapLoaded = new WeakMap();
|
|
82
|
+
//# sourceMappingURL=ViewportGlobalAccessObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewportGlobalAccessObject.js","sourceRoot":"","sources":["../../src/implementation/ViewportGlobalAccessObject.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,+EAAyH;AAEzH,MAAa,0BAA0B;IAWnC,4BAA4B;IAE5B,2BAA2B;IAE3B,YAAY,cAA+B;QAd3C,yBAAyB;QAEzB,yDAAsD,IAAI,qCAAY,EAAE,EAAC;QACzE,kDAA+C,IAAI,qCAAY,EAAE,EAAC;QAClE,uDAAoD,IAAI,qCAAY,EAAE,EAAC;QACvE,6DAA0C;QAE1C,2CAAkB,EAAE,EAAC;QACrB,2DAA+C,IAAI,qCAAY,EAAE,EAAC;QAO9D,uBAAA,IAAI,8CAAmB,cAAc,MAAA,CAAC;IAC1C,CAAC;IAED,8BAA8B;IAE9B,yCAAyC;IAEzC,IAAW,kBAAkB;QACzB,OAAO,uBAAA,IAAI,sDAAoB,CAAC;IACpC,CAAC;IAED,IAAW,IAAI;QACX,OAAO,uBAAA,IAAI,wCAAM,CAAC;IACtB,CAAC;IAED,IAAW,oBAAoB;QAC3B,OAAO,uBAAA,IAAI,wDAAsB,CAAC;IACtC,CAAC;IAED,IAAW,oBAAoB,CAAC,KAA4B;QACxD,uBAAA,IAAI,oDAAyB,KAAK,MAAA,CAAC;IACvC,CAAC;IAED,IAAW,EAAE;QACT,OAAO,uBAAA,IAAI,kDAAgB,CAAC,EAAE,CAAC;IACnC,CAAC;IAED,IAAW,WAAW;QAClB,OAAO,uBAAA,IAAI,+CAAa,CAAC;IAC7B,CAAC;IAED,IAAW,iBAAiB;QACxB,OAAO,uBAAA,IAAI,kDAAgB,CAAC,iBAAiB,CAAC;IAClD,CAAC;IAED,IAAW,mBAAmB;QAC1B,OAAO,uBAAA,IAAI,kDAAgB,CAAC,mBAAmB,CAAC;IACpD,CAAC;IAED,IAAW,gBAAgB;QACvB,OAAO,uBAAA,IAAI,oDAAkB,CAAC;IAClC,CAAC;IAED,4CAA4C;IAE5C,6BAA6B;IAEtB,aAAa,CAAC,QAAoP,EAAE,cAA2C,EAAE,cAAoC;QACxV,OAAO,uBAAA,IAAI,kDAAgB,CAAC,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACxF,CAAC;IAEM,oBAAoB,CAAC,cAA8B;QACtD,uBAAA,IAAI,kDAAgB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;IAC9D,CAAC;IAEM,mBAAmB,CAAC,OAAe;QACtC,uBAAA,IAAI,kDAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;IAEM,KAAK;QACR,uBAAA,IAAI,kDAAgB,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAEM,YAAY;QACf,uBAAA,IAAI,kDAAgB,CAAC,YAAY,EAAE,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,EAAU;QACpB,uBAAA,IAAI,kDAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;CAGJ;AAxFD,gEAwFC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CreationControlCenterViewport } from './implementation/CreationControlCenterViewport';
|
|
2
|
+
import { ICreationControlCenterViewport, ViewportCreationDefinition } from './interfaces/ICreationControlCenterViewport';
|
|
3
|
+
export { ICreationControlCenterViewport, CreationControlCenterViewport, ViewportCreationDefinition };
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAC/F,OAAO,EAAE,8BAA8B,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzH,OAAO,EACH,8BAA8B,EAAE,6BAA6B,EAC7D,0BAA0B,EAC7B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreationControlCenterViewport = void 0;
|
|
4
|
+
const CreationControlCenterViewport_1 = require("./implementation/CreationControlCenterViewport");
|
|
5
|
+
Object.defineProperty(exports, "CreationControlCenterViewport", { enumerable: true, get: function () { return CreationControlCenterViewport_1.CreationControlCenterViewport; } });
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,kGAA+F;AAI3D,8GAJ3B,6DAA6B,OAI2B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { BUSY_MODE_DISPLAY, SPINNER_POSITIONING, VISIBILITY_MODE } from '@shapediver/viewer.rendering-engine.rendering-engine';
|
|
2
|
+
import { ISettings } from '@shapediver/viewer.settings';
|
|
3
|
+
import { IViewportSettingsSections } from '@shapediver/viewer.shared.types';
|
|
4
|
+
import { RenderingEngine as RenderingEngineThreeJs } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
5
|
+
import { SESSION_SETTINGS_MODE } from '@shapediver/viewer.shared.services';
|
|
6
|
+
export declare type ViewportCreationDefinition = {
|
|
7
|
+
/** The canvas element in which the viewport should be created, it is encourage to provide one. If none was provided, a canvas will be created. */
|
|
8
|
+
canvas?: HTMLCanvasElement;
|
|
9
|
+
/** The unique identifier of the session that was specified or automatically chosen on creation of the viewport. */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** The branding options of the viewport. */
|
|
12
|
+
branding?: {
|
|
13
|
+
/**
|
|
14
|
+
* Optional URL to a logo to be displayed while the viewport is hidden.
|
|
15
|
+
* A default logo will be used if none is provided.
|
|
16
|
+
* Supply null to display no logo at all.
|
|
17
|
+
*/
|
|
18
|
+
logo?: string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Optional background color to show while the viewport is hidden, can include alpha channel.
|
|
21
|
+
* A default color will be used if none is provided.
|
|
22
|
+
*/
|
|
23
|
+
backgroundColor?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Optional URL to a logo to be displayed while the viewport is in busy mode.
|
|
26
|
+
* A default logo will be used if none is provided.
|
|
27
|
+
* The positioning of the spinner can be influenced via {@link SPINNER_POSITIONING}.
|
|
28
|
+
*/
|
|
29
|
+
busyModeSpinner?: string;
|
|
30
|
+
/**
|
|
31
|
+
* The mode used to indicate that the viewport is busy. (default: BUSY_MODE_DISPLAY.SPINNER)
|
|
32
|
+
* Whenever the busy mode gets toggled, the events {@link EVENTTYPE_VIEWPORT.BUSY_MODE_ON} and {@link EVENTTYPE_VIEWPORT.BUSY_MODE_OFF} will be emitted.
|
|
33
|
+
*/
|
|
34
|
+
busyModeDisplay?: BUSY_MODE_DISPLAY;
|
|
35
|
+
/**
|
|
36
|
+
* Where the spinner that is specified by {@link BUSY_MODE_DISPLAY} is displayed on the screen. (default: BUSY_MODE_DISPLAY.BOTTOM_RIGHT)
|
|
37
|
+
*/
|
|
38
|
+
spinnerPositioning?: SPINNER_POSITIONING;
|
|
39
|
+
};
|
|
40
|
+
/** The id of the session of which the settings should be used. Only works when {@link sessionSettingsMode} is set to {@link SESSION_SETTINGS_MODE.SESSION}. */
|
|
41
|
+
sessionSettingsId?: string;
|
|
42
|
+
/** The mode in which settings should be applied. (default: SESSION_SETTINGS_MODE.FIRST) */
|
|
43
|
+
sessionSettingsMode?: SESSION_SETTINGS_MODE;
|
|
44
|
+
/** The initial visibility of the viewport. (default: VISIBILITY_MODE.SESSION) */
|
|
45
|
+
visibility?: VISIBILITY_MODE;
|
|
46
|
+
};
|
|
47
|
+
export interface ICreationControlCenterViewport {
|
|
48
|
+
updateViewports?: (viewportEngines: {
|
|
49
|
+
[key: string]: RenderingEngineThreeJs;
|
|
50
|
+
}) => void;
|
|
51
|
+
viewportEngines: {
|
|
52
|
+
[key: string]: RenderingEngineThreeJs;
|
|
53
|
+
};
|
|
54
|
+
applyViewportSettings(viewportId: string, settings: ISettings, sections?: IViewportSettingsSections): Promise<void>;
|
|
55
|
+
closeViewportEngine(id: string): Promise<void>;
|
|
56
|
+
createViewportEngine(properties: ViewportCreationDefinition): Promise<RenderingEngineThreeJs>;
|
|
57
|
+
getViewportSettings(viewportId: string): ISettings;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ICreationControlCenterViewport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICreationControlCenterViewport.d.ts","sourceRoot":"","sources":["../../src/interfaces/ICreationControlCenterViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sDAAsD,CAAC;AAC/H,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,8DAA8D,CAAC;AACzH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,oBAAY,0BAA0B,GAAG;IACrC,kJAAkJ;IAClJ,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,mHAAmH;IACnH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,QAAQ,CAAC,EAAE;QACP;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;;WAIG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB;;;WAGG;QACH,eAAe,CAAC,EAAE,iBAAiB,CAAC;QACpC;;WAEG;QACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAA;KAE3C,CAAC;IACF,+JAA+J;IAC/J,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2FAA2F;IAC3F,mBAAmB,CAAC,EAAE,qBAAqB,CAAC;IAC5C,iFAAiF;IACjF,UAAU,CAAC,EAAE,eAAe,CAAC;CAChC,CAAA;AAMD,MAAM,WAAW,8BAA8B;IAG3C,eAAe,CAAC,EAAE,CAAC,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAC;KAAE,KAAK,IAAI,CAAC;IACxF,eAAe,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAC;KAAE,CAAC;IAM5D,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpH,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,oBAAoB,CAAC,UAAU,EAAE,0BAA0B,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC9F,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAGtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ICreationControlCenterViewport.js","sourceRoot":"","sources":["../../src/interfaces/ICreationControlCenterViewport.ts"],"names":[],"mappings":";;AAyEA,4BAA4B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@shapediver/viewer.creation-control-center.viewport",
|
|
3
|
+
"version": "3.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"keywords": [],
|
|
6
|
+
"author": "Michael Oppitz <michael@shapediver.com>",
|
|
7
|
+
"license": "polyform-noncommercial-1.0.0",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"directories": {
|
|
10
|
+
"test": "__tests__"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"src",
|
|
15
|
+
"package.json",
|
|
16
|
+
"README.md",
|
|
17
|
+
"tsconfig.json"
|
|
18
|
+
],
|
|
19
|
+
"publishConfig": {
|
|
20
|
+
"access": "public"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/shapediver/Viewer.git"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"check": "tsc --noEmit",
|
|
28
|
+
"build": "bash ../../scripts/building/build.sh",
|
|
29
|
+
"build-watch": "bash ../../scripts/building/build-watch.sh",
|
|
30
|
+
"build-dep": "bash ../../scripts/building/build-dep.sh"
|
|
31
|
+
},
|
|
32
|
+
"bugs": {
|
|
33
|
+
"url": "https://github.com/shapediver/Viewer/issues"
|
|
34
|
+
},
|
|
35
|
+
"homepage": "https://github.com/shapediver/Viewer#readme",
|
|
36
|
+
"typings": "dist/index.d.ts",
|
|
37
|
+
"jest": {
|
|
38
|
+
"preset": "ts-jest",
|
|
39
|
+
"testEnvironment": "node"
|
|
40
|
+
},
|
|
41
|
+
"dependencies": {
|
|
42
|
+
"@shapediver/viewer.rendering-engine.rendering-engine": "3.0.0",
|
|
43
|
+
"@shapediver/viewer.rendering-engine.rendering-engine-threejs": "3.0.0",
|
|
44
|
+
"@shapediver/viewer.settings": "1.0.1",
|
|
45
|
+
"@shapediver/viewer.shared.services": "3.0.0"
|
|
46
|
+
},
|
|
47
|
+
"gitHead": "b6b0010bf5d5652aa338df8016405d97f33fcabb"
|
|
48
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { Box } from '@shapediver/viewer.shared.math';
|
|
2
|
+
import {
|
|
3
|
+
EventEngine,
|
|
4
|
+
EVENTTYPE,
|
|
5
|
+
Logger,
|
|
6
|
+
SESSION_SETTINGS_MODE,
|
|
7
|
+
SettingsEngine,
|
|
8
|
+
ShapeDiverViewerViewportError,
|
|
9
|
+
StateEngine,
|
|
10
|
+
UuidGenerator
|
|
11
|
+
} from '@shapediver/viewer.shared.services';
|
|
12
|
+
import { ICreationControlCenterViewport, ViewportCreationDefinition } from '../interfaces/ICreationControlCenterViewport';
|
|
13
|
+
import {
|
|
14
|
+
ISceneEvent,
|
|
15
|
+
ITaskEvent,
|
|
16
|
+
IViewportSettingsSections,
|
|
17
|
+
TASK_TYPE
|
|
18
|
+
} from '@shapediver/viewer.shared.types';
|
|
19
|
+
import { ISettings } from '@shapediver/viewer.settings';
|
|
20
|
+
import { ITree, Tree } from '@shapediver/viewer.shared.node-tree';
|
|
21
|
+
import { RenderingEngine as RenderingEngineThreeJs } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
22
|
+
import { ViewportGlobalAccessObject } from './ViewportGlobalAccessObject';
|
|
23
|
+
import { VISIBILITY_MODE } from '@shapediver/viewer.rendering-engine.rendering-engine';
|
|
24
|
+
|
|
25
|
+
export class CreationControlCenterViewport implements ICreationControlCenterViewport {
|
|
26
|
+
// #region Properties (8)
|
|
27
|
+
|
|
28
|
+
readonly #eventEngine: EventEngine = EventEngine.instance;
|
|
29
|
+
readonly #logger: Logger = Logger.instance;
|
|
30
|
+
readonly #sceneTree: ITree = Tree.instance;
|
|
31
|
+
readonly #stateEngine: StateEngine = StateEngine.instance;
|
|
32
|
+
readonly #uuidGenerator: UuidGenerator = UuidGenerator.instance;
|
|
33
|
+
|
|
34
|
+
private static _instance: CreationControlCenterViewport;
|
|
35
|
+
|
|
36
|
+
public readonly viewportEngines: { [key: string]: RenderingEngineThreeJs } = {};
|
|
37
|
+
|
|
38
|
+
public updateViewport?: (
|
|
39
|
+
viewportEngines: { [key: string]: RenderingEngineThreeJs; },
|
|
40
|
+
) => void;
|
|
41
|
+
|
|
42
|
+
// #endregion Properties (8)
|
|
43
|
+
|
|
44
|
+
// #region Public Static Getters And Setters (1)
|
|
45
|
+
|
|
46
|
+
public static get instance() {
|
|
47
|
+
return this._instance || (this._instance = new this());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// #endregion Public Static Getters And Setters (1)
|
|
51
|
+
|
|
52
|
+
// #region Public Methods (4)
|
|
53
|
+
|
|
54
|
+
public applyViewportSettings(viewportId: string, settings: ISettings, sections: IViewportSettingsSections = { ar: false, scene: false, camera: false, light: false, environment: false, general: false }): Promise<void> {
|
|
55
|
+
sections = sections || {};
|
|
56
|
+
|
|
57
|
+
const settingsEngine: SettingsEngine = new SettingsEngine();
|
|
58
|
+
settingsEngine.loadSettings(settings);
|
|
59
|
+
|
|
60
|
+
const promises: Promise<unknown>[] = [];
|
|
61
|
+
this.#stateEngine.viewportEngines[viewportId].settingsAssigned.reset();
|
|
62
|
+
promises.push(new Promise<void>(resolve => {
|
|
63
|
+
this.#stateEngine.viewportEngines[viewportId].settingsAssigned.then(() => {
|
|
64
|
+
resolve();
|
|
65
|
+
});
|
|
66
|
+
}));
|
|
67
|
+
|
|
68
|
+
this.viewportEngines[viewportId].applySettings(sections, settingsEngine);
|
|
69
|
+
return new Promise(resolve => Promise.all(promises).then(() => resolve()));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
public async closeViewportEngine(id: string): Promise<void> {
|
|
73
|
+
if (!this.viewportEngines[id]) return;
|
|
74
|
+
|
|
75
|
+
this.#logger.debugLow(`CreationControlCenter.closeViewportEngine: Closing viewport ${id}.`);
|
|
76
|
+
if (this.#stateEngine.viewportEngines[id].initialized.resolved === false)
|
|
77
|
+
await new Promise<void>(resolve => { this.#stateEngine.viewportEngines[id].initialized.then(() => resolve()); });
|
|
78
|
+
|
|
79
|
+
this.#stateEngine.viewportEngines[id].settingsAssigned.reset();
|
|
80
|
+
this.#stateEngine.viewportEngines[id].environmentMapLoaded.reset();
|
|
81
|
+
this.#stateEngine.viewportEngines[id].initialized.reset();
|
|
82
|
+
|
|
83
|
+
await this.viewportEngines[id].close();
|
|
84
|
+
|
|
85
|
+
(<unknown>this.viewportEngines[id]) = undefined;
|
|
86
|
+
delete this.viewportEngines[id];
|
|
87
|
+
delete this.#stateEngine.viewportEngines[id];
|
|
88
|
+
|
|
89
|
+
this.#logger.debug('CreationControlCenter.closeViewportEngine: Viewport closed.');
|
|
90
|
+
if (this.updateViewport) this.updateViewport(this.viewportEngines);
|
|
91
|
+
|
|
92
|
+
this.#eventEngine.emitEvent(EVENTTYPE.VIEWPORT.VIEWPORT_CLOSED, { viewportId: id });
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
public async createViewportEngine(properties: ViewportCreationDefinition): Promise<RenderingEngineThreeJs> {
|
|
96
|
+
const eventId = this.#uuidGenerator.create();
|
|
97
|
+
const viewportEngineId = properties.id || this.#uuidGenerator.create();
|
|
98
|
+
properties.id = viewportEngineId;
|
|
99
|
+
try {
|
|
100
|
+
const eventStart: ITaskEvent = { type: TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0, status: 'Creating viewport', data: { viewportId: viewportEngineId } };
|
|
101
|
+
this.#eventEngine.emitEvent(EVENTTYPE.TASK.TASK_START, eventStart);
|
|
102
|
+
|
|
103
|
+
// check if the given id is valid
|
|
104
|
+
if (this.viewportEngines[viewportEngineId]) {
|
|
105
|
+
const eventClose: ITaskEvent = { type: TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0.1, status: 'Closing viewport with same id', data: { viewportId: viewportEngineId } };
|
|
106
|
+
this.#eventEngine.emitEvent(EVENTTYPE.TASK.TASK_PROCESS, eventClose);
|
|
107
|
+
|
|
108
|
+
this.#logger.warn(`CreationControlCenter.createViewport: Viewer with this id (${viewportEngineId}) already exists. Closing initial instance.`);
|
|
109
|
+
await this.closeViewportEngine(viewportEngineId);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const viewportEngine = new RenderingEngineThreeJs(properties);
|
|
113
|
+
this.#stateEngine.viewportEngines[viewportEngineId] = new ViewportGlobalAccessObject(viewportEngine);
|
|
114
|
+
this.viewportEngines[viewportEngineId] = viewportEngine;
|
|
115
|
+
viewportEngine.start();
|
|
116
|
+
|
|
117
|
+
viewportEngine.cameraEngine.createDefaultCameras();
|
|
118
|
+
|
|
119
|
+
if (properties.sessionSettingsMode === SESSION_SETTINGS_MODE.MANUAL) {
|
|
120
|
+
if (!properties.sessionSettingsId)
|
|
121
|
+
throw new ShapeDiverViewerViewportError('Session with sessionSettingsMode MANUAL needs to have a sessionSettingsId.');
|
|
122
|
+
const sessionSettingsId = properties.sessionSettingsId;
|
|
123
|
+
if (this.#stateEngine.sessionEngines[sessionSettingsId]) {
|
|
124
|
+
await this.assignSettings(viewportEngine.id, sessionSettingsId, true);
|
|
125
|
+
} else {
|
|
126
|
+
// in createSession
|
|
127
|
+
}
|
|
128
|
+
} else if (properties.sessionSettingsMode === SESSION_SETTINGS_MODE.FIRST) {
|
|
129
|
+
const firstSessionEngine = Object.values(this.#stateEngine.sessionEngines).find(sessionEngine => sessionEngine.isFirstSession === true);
|
|
130
|
+
if (firstSessionEngine) {
|
|
131
|
+
await this.assignSettings(viewportEngine.id, firstSessionEngine.id, true);
|
|
132
|
+
} else {
|
|
133
|
+
// in createSession
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (viewportEngine.sessionSettingsMode === SESSION_SETTINGS_MODE.NONE &&
|
|
138
|
+
viewportEngine.visibility === VISIBILITY_MODE.SESSION) {
|
|
139
|
+
viewportEngine.show = true;
|
|
140
|
+
} else if (viewportEngine.visibility === VISIBILITY_MODE.INSTANT) {
|
|
141
|
+
viewportEngine.show = true;
|
|
142
|
+
} else if (viewportEngine.visibility === VISIBILITY_MODE.SESSION) {
|
|
143
|
+
// wait for settings to load before showing the scene
|
|
144
|
+
if (this.#sceneTree.root.boundingBox.isEmpty()) {
|
|
145
|
+
this.#eventEngine.addListener(EVENTTYPE.SCENE.SCENE_BOUNDING_BOX_CHANGE, (e) => {
|
|
146
|
+
const event = e as ISceneEvent;
|
|
147
|
+
if (event.viewportId === viewportEngine.id) {
|
|
148
|
+
const boundingBox = new Box(event.boundingBox!.min, event.boundingBox!.max);
|
|
149
|
+
if (boundingBox.isEmpty()) {
|
|
150
|
+
viewportEngine.show = false;
|
|
151
|
+
} else {
|
|
152
|
+
if (this.#stateEngine.viewportEngines[viewportEngineId].settingsAssigned.resolved) {
|
|
153
|
+
viewportEngine.show = true;
|
|
154
|
+
} else {
|
|
155
|
+
this.#stateEngine.viewportEngines[viewportEngineId].settingsAssigned.then(() => {
|
|
156
|
+
viewportEngine.show = true;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
} else {
|
|
163
|
+
if (this.#stateEngine.viewportEngines[viewportEngineId].settingsAssigned.resolved) {
|
|
164
|
+
viewportEngine.show = true;
|
|
165
|
+
} else {
|
|
166
|
+
this.#stateEngine.viewportEngines[viewportEngineId].settingsAssigned.then(() => {
|
|
167
|
+
viewportEngine.show = true;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
this.#stateEngine.viewportEngines[viewportEngineId].initialized.resolve(true);
|
|
174
|
+
|
|
175
|
+
this.#logger.debug(`CreationControlCenter.createViewport: Viewport(${viewportEngineId}) created.`);
|
|
176
|
+
|
|
177
|
+
const eventEnd: ITaskEvent = { type: TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 1, status: 'Viewport created', data: { viewportId: viewportEngineId } };
|
|
178
|
+
|
|
179
|
+
if (this.updateViewport) this.updateViewport(this.viewportEngines);
|
|
180
|
+
|
|
181
|
+
this.#eventEngine.emitEvent(EVENTTYPE.VIEWPORT.VIEWPORT_CREATED, { viewportId: viewportEngineId });
|
|
182
|
+
this.#eventEngine.emitEvent(EVENTTYPE.TASK.TASK_END, eventEnd);
|
|
183
|
+
return <RenderingEngineThreeJs>this.viewportEngines[viewportEngineId];
|
|
184
|
+
} catch (e) {
|
|
185
|
+
const eventCancel1: ITaskEvent = { type: TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 0.9, status: 'Viewport created failed, closing viewport', data: { viewportId: viewportEngineId } };
|
|
186
|
+
this.#eventEngine.emitEvent(EVENTTYPE.TASK.TASK_PROCESS, eventCancel1);
|
|
187
|
+
|
|
188
|
+
try { await this.closeViewportEngine(viewportEngineId); } catch { /* empty */ }
|
|
189
|
+
|
|
190
|
+
const eventCancel2: ITaskEvent = { type: TASK_TYPE.VIEWPORT_CREATION, id: eventId, progress: 1, status: 'Viewport created failed, exiting', data: { viewportId: viewportEngineId } };
|
|
191
|
+
this.#eventEngine.emitEvent(EVENTTYPE.TASK.TASK_CANCEL, eventCancel2);
|
|
192
|
+
|
|
193
|
+
throw e;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
public getViewportSettings(viewportId: string): ISettings {
|
|
198
|
+
const viewportEngine = this.viewportEngines[viewportId];
|
|
199
|
+
if (!viewportEngine)
|
|
200
|
+
throw new ShapeDiverViewerViewportError('Viewport with id ' + viewportId + ' could not be found.');
|
|
201
|
+
|
|
202
|
+
const settingsEngine: SettingsEngine = new SettingsEngine();
|
|
203
|
+
viewportEngine.saveSettings(settingsEngine);
|
|
204
|
+
return settingsEngine.settings;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// #endregion Public Methods (4)
|
|
208
|
+
|
|
209
|
+
// #region Private Methods (1)
|
|
210
|
+
|
|
211
|
+
private async assignSettings(viewportEngineId: string, sessionEngineId: string, updateViewport: boolean = false) {
|
|
212
|
+
const viewportEngine = this.#stateEngine.viewportEngines[viewportEngineId];
|
|
213
|
+
|
|
214
|
+
if (this.#stateEngine.sessionEngines[sessionEngineId].initialized.resolved === true) {
|
|
215
|
+
// immediate
|
|
216
|
+
viewportEngine.assignSettingsEngine(this.#stateEngine.sessionEngines[sessionEngineId].settingsEngine);
|
|
217
|
+
await viewportEngine.applySettings(undefined, undefined, updateViewport);
|
|
218
|
+
} else {
|
|
219
|
+
await new Promise<void>(resolve => {
|
|
220
|
+
this.#stateEngine.sessionEngines[sessionEngineId].initialized.then(async () => {
|
|
221
|
+
viewportEngine.assignSettingsEngine(this.#stateEngine.sessionEngines[sessionEngineId].settingsEngine);
|
|
222
|
+
await viewportEngine.applySettings(undefined, undefined, updateViewport);
|
|
223
|
+
resolve();
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// #endregion Private Methods (1)
|
|
230
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { RenderingEngine } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
2
|
+
import { IViewportGlobalAccessObjectDefinition, SettingsEngine, StatePromise } from '@shapediver/viewer.shared.services';
|
|
3
|
+
|
|
4
|
+
export class ViewportGlobalAccessObject implements IViewportGlobalAccessObjectDefinition {
|
|
5
|
+
// #region Properties (6)
|
|
6
|
+
|
|
7
|
+
readonly #boundingBoxCreated: StatePromise<boolean> = new StatePromise();
|
|
8
|
+
readonly #initialized: StatePromise<boolean> = new StatePromise();
|
|
9
|
+
readonly #settingsAssigned: StatePromise<boolean> = new StatePromise();
|
|
10
|
+
readonly #viewportEngine: RenderingEngine;
|
|
11
|
+
|
|
12
|
+
#busy: string[] = [];
|
|
13
|
+
#environmentMapLoaded: StatePromise<boolean> = new StatePromise();
|
|
14
|
+
|
|
15
|
+
// #endregion Properties (6)
|
|
16
|
+
|
|
17
|
+
// #region Constructors (1)
|
|
18
|
+
|
|
19
|
+
constructor(viewportEngine: RenderingEngine) {
|
|
20
|
+
this.#viewportEngine = viewportEngine;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// #endregion Constructors (1)
|
|
24
|
+
|
|
25
|
+
// #region Public Getters And Setters (9)
|
|
26
|
+
|
|
27
|
+
public get boundingBoxCreated(): StatePromise<boolean> {
|
|
28
|
+
return this.#boundingBoxCreated;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public get busy(): string[] {
|
|
32
|
+
return this.#busy;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
public get environmentMapLoaded(): StatePromise<boolean> {
|
|
36
|
+
return this.#environmentMapLoaded;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
public set environmentMapLoaded(value: StatePromise<boolean>) {
|
|
40
|
+
this.#environmentMapLoaded = value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public get id(): string {
|
|
44
|
+
return this.#viewportEngine.id;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public get initialized(): StatePromise<boolean> {
|
|
48
|
+
return this.#initialized;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
public get sessionSettingsId(): string | undefined {
|
|
52
|
+
return this.#viewportEngine.sessionSettingsId;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public get sessionSettingsMode() {
|
|
56
|
+
return this.#viewportEngine.sessionSettingsMode;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public get settingsAssigned(): StatePromise<boolean> {
|
|
60
|
+
return this.#settingsAssigned;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// #endregion Public Getters And Setters (9)
|
|
64
|
+
|
|
65
|
+
// #region Public Methods (6)
|
|
66
|
+
|
|
67
|
+
public applySettings(sections?: { ar?: boolean | undefined; scene?: boolean | undefined; camera?: boolean | undefined; light?: boolean | undefined; environment?: boolean | undefined; general?: boolean | undefined; postprocessing?: boolean | undefined; } | undefined, settingsEngine?: SettingsEngine | undefined, updateViewport?: boolean | undefined): Promise<void> {
|
|
68
|
+
return this.#viewportEngine.applySettings(sections, settingsEngine, updateViewport);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public assignSettingsEngine(settingsEngine: SettingsEngine): void {
|
|
72
|
+
this.#viewportEngine.assignSettingsEngine(settingsEngine);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
public displayErrorMessage(message: string): void {
|
|
76
|
+
this.#viewportEngine.displayErrorMessage(message);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
public reset(): void {
|
|
80
|
+
this.#viewportEngine.reset();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
public saveSettings(): void {
|
|
84
|
+
this.#viewportEngine.saveSettings();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public update(id: string): void {
|
|
88
|
+
this.#viewportEngine.update(id);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// #endregion Public Methods (6)
|
|
92
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CreationControlCenterViewport } from './implementation/CreationControlCenterViewport';
|
|
2
|
+
import { ICreationControlCenterViewport, ViewportCreationDefinition } from './interfaces/ICreationControlCenterViewport';
|
|
3
|
+
|
|
4
|
+
export {
|
|
5
|
+
ICreationControlCenterViewport, CreationControlCenterViewport,
|
|
6
|
+
ViewportCreationDefinition
|
|
7
|
+
};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BUSY_MODE_DISPLAY, SPINNER_POSITIONING, VISIBILITY_MODE } from '@shapediver/viewer.rendering-engine.rendering-engine';
|
|
2
|
+
import { ISettings } from '@shapediver/viewer.settings';
|
|
3
|
+
import { IViewportSettingsSections } from '@shapediver/viewer.shared.types';
|
|
4
|
+
import { RenderingEngine as RenderingEngineThreeJs } from '@shapediver/viewer.rendering-engine.rendering-engine-threejs';
|
|
5
|
+
import { SESSION_SETTINGS_MODE } from '@shapediver/viewer.shared.services';
|
|
6
|
+
|
|
7
|
+
// #region Type aliases (1)
|
|
8
|
+
|
|
9
|
+
export type ViewportCreationDefinition = {
|
|
10
|
+
/** The canvas element in which the viewport should be created, it is encourage to provide one. If none was provided, a canvas will be created. */
|
|
11
|
+
canvas?: HTMLCanvasElement,
|
|
12
|
+
/** The unique identifier of the session that was specified or automatically chosen on creation of the viewport. */
|
|
13
|
+
id?: string,
|
|
14
|
+
/** The branding options of the viewport. */
|
|
15
|
+
branding?: {
|
|
16
|
+
/**
|
|
17
|
+
* Optional URL to a logo to be displayed while the viewport is hidden.
|
|
18
|
+
* A default logo will be used if none is provided.
|
|
19
|
+
* Supply null to display no logo at all.
|
|
20
|
+
*/
|
|
21
|
+
logo?: string | null,
|
|
22
|
+
/**
|
|
23
|
+
* Optional background color to show while the viewport is hidden, can include alpha channel.
|
|
24
|
+
* A default color will be used if none is provided.
|
|
25
|
+
*/
|
|
26
|
+
backgroundColor?: string,
|
|
27
|
+
/**
|
|
28
|
+
* Optional URL to a logo to be displayed while the viewport is in busy mode.
|
|
29
|
+
* A default logo will be used if none is provided.
|
|
30
|
+
* The positioning of the spinner can be influenced via {@link SPINNER_POSITIONING}.
|
|
31
|
+
*/
|
|
32
|
+
busyModeSpinner?: string,
|
|
33
|
+
/**
|
|
34
|
+
* The mode used to indicate that the viewport is busy. (default: BUSY_MODE_DISPLAY.SPINNER)
|
|
35
|
+
* Whenever the busy mode gets toggled, the events {@link EVENTTYPE_VIEWPORT.BUSY_MODE_ON} and {@link EVENTTYPE_VIEWPORT.BUSY_MODE_OFF} will be emitted.
|
|
36
|
+
*/
|
|
37
|
+
busyModeDisplay?: BUSY_MODE_DISPLAY,
|
|
38
|
+
/**
|
|
39
|
+
* Where the spinner that is specified by {@link BUSY_MODE_DISPLAY} is displayed on the screen. (default: BUSY_MODE_DISPLAY.BOTTOM_RIGHT)
|
|
40
|
+
*/
|
|
41
|
+
spinnerPositioning?: SPINNER_POSITIONING
|
|
42
|
+
|
|
43
|
+
},
|
|
44
|
+
/** The id of the session of which the settings should be used. Only works when {@link sessionSettingsMode} is set to {@link SESSION_SETTINGS_MODE.SESSION}. */
|
|
45
|
+
sessionSettingsId?: string,
|
|
46
|
+
/** The mode in which settings should be applied. (default: SESSION_SETTINGS_MODE.FIRST) */
|
|
47
|
+
sessionSettingsMode?: SESSION_SETTINGS_MODE,
|
|
48
|
+
/** The initial visibility of the viewport. (default: VISIBILITY_MODE.SESSION) */
|
|
49
|
+
visibility?: VISIBILITY_MODE,
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// #endregion Type aliases (1)
|
|
53
|
+
|
|
54
|
+
// #region Interfaces (1)
|
|
55
|
+
|
|
56
|
+
export interface ICreationControlCenterViewport {
|
|
57
|
+
// #region Properties (2)
|
|
58
|
+
|
|
59
|
+
updateViewports?: (viewportEngines: { [key: string]: RenderingEngineThreeJs; }) => void;
|
|
60
|
+
viewportEngines: { [key: string]: RenderingEngineThreeJs; };
|
|
61
|
+
|
|
62
|
+
// #endregion Properties (2)
|
|
63
|
+
|
|
64
|
+
// #region Public Methods (4)
|
|
65
|
+
|
|
66
|
+
applyViewportSettings(viewportId: string, settings: ISettings, sections?: IViewportSettingsSections): Promise<void>;
|
|
67
|
+
closeViewportEngine(id: string): Promise<void>;
|
|
68
|
+
createViewportEngine(properties: ViewportCreationDefinition): Promise<RenderingEngineThreeJs>;
|
|
69
|
+
getViewportSettings(viewportId: string): ISettings;
|
|
70
|
+
|
|
71
|
+
// #endregion Public Methods (4)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// #endregion Interfaces (1)
|
package/tsconfig.json
ADDED