@shapediver/viewer.rendering-engine.camera-engine 2.0.10 → 2.1.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.
@@ -29,6 +29,7 @@ export declare class CameraEngine implements ICameraEngine {
29
29
  applySettings(settingsEngine: SettingsEngine): void;
30
30
  assignCamera(id: string): boolean;
31
31
  createCamera(type: CAMERA_TYPE, id?: string): ICamera;
32
+ createDefaultCameras(): void;
32
33
  deactivateCameraEvents(): void;
33
34
  removeCamera(id: string): boolean;
34
35
  saveSettings(settingsEngine: SettingsEngine): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CameraEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/CameraEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EAIf,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAA;AAMpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAOxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,qBAAa,YAAa,YAAW,aAAa;IA0BlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAoB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvBzF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAElB;IACP,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAEvC;IACP,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqE;IACrG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;IACzF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkE;IAEjG,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAE1C,SAAS,CAAC,YAAY,EAAE,GAAG,CAAa;IACxC,OAAO,CAAC,OAAO,CAAC,CAAa;gBAMA,gBAAgB,EAAE,gBAAgB,EAAmB,OAAO,EAAE,iBAAiB;IAwB5G,IAAW,MAAM,IAAI,OAAO,GAAG,IAAI,CAElC;IAED,IAAW,OAAO,IAAI;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACzB,CAEA;IAED,IAAW,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAE5C;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EAEhD;IAMM,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAAC,cAAc,EAAE,cAAc;IAqC5C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAOjC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAsBrD,sBAAsB,IAAI,IAAI;IAM9B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAcjC,YAAY,CAAC,cAAc,EAAE,cAAc;IAiHlD,OAAO,CAAC,mBAAmB;CAiB9B"}
1
+ {"version":3,"file":"CameraEngine.d.ts","sourceRoot":"","sources":["../../src/implementation/CameraEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EAIf,MAAM,oCAAoC,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,MAAM,gCAAgC,CAAA;AAMpD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAOxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sDAAsD,CAAA;AACvF,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAEtD,qBAAa,YAAa,YAAW,aAAa;IA0BlC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAAoB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAvBzF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAElB;IACP,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAEvC;IACP,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;IACzF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;IACrE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqE;IACrG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4D;IACzF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkE;IAEjG,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAE1C,SAAS,CAAC,YAAY,EAAE,GAAG,CAAa;IACxC,OAAO,CAAC,OAAO,CAAC,CAAa;gBAMA,gBAAgB,EAAE,gBAAgB,EAAmB,OAAO,EAAE,iBAAiB;IAwB5G,IAAW,MAAM,IAAI,OAAO,GAAG,IAAI,CAElC;IAED,IAAW,OAAO,IAAI;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KACzB,CAEA;IAED,IAAW,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAE5C;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,EAEhD;IAMM,oBAAoB,IAAI,IAAI;IAM5B,aAAa,CAAC,cAAc,EAAE,cAAc;IAoC5C,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAOjC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAsBrD,oBAAoB,IAAI,IAAI;IAiB5B,sBAAsB,IAAI,IAAI;IAM9B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAcjC,YAAY,CAAC,cAAc,EAAE,cAAc;IA8GlD,OAAO,CAAC,mBAAmB;CAiB9B"}
@@ -10,6 +10,7 @@ const ICameraEngine_1 = require("../interfaces/ICameraEngine");
10
10
  const AbstractCamera_1 = require("./camera/AbstractCamera");
11
11
  const PerspectiveCamera_1 = require("./camera/PerspectiveCamera");
12
12
  const OrthographicCamera_1 = require("./camera/OrthographicCamera");
13
+ const IOrthographicCamera_1 = require("../interfaces/camera/IOrthographicCamera");
13
14
  class CameraEngine {
14
15
  // #endregion Properties (10)
15
16
  // #region Constructors (1)
@@ -92,9 +93,8 @@ class CameraEngine {
92
93
  }
93
94
  }
94
95
  else {
95
- const camera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.PERSPECTIVE, 'standard');
96
- this.assignCamera(camera.id);
97
- camera.applySettings(settingsEngine);
96
+ this.createDefaultCameras();
97
+ this.camera.applySettings(settingsEngine);
98
98
  }
99
99
  this._settingsApplied = true;
100
100
  if (this._update)
@@ -127,6 +127,22 @@ class CameraEngine {
127
127
  this._update();
128
128
  return camera;
129
129
  }
130
+ createDefaultCameras() {
131
+ const topCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'top');
132
+ topCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.TOP;
133
+ const bottomCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'bottom');
134
+ bottomCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.BOTTOM;
135
+ const leftCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'left');
136
+ leftCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.LEFT;
137
+ const rightCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'right');
138
+ rightCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.RIGHT;
139
+ const frontCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'front');
140
+ frontCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.FRONT;
141
+ const backCamera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.ORTHOGRAPHIC, 'back');
142
+ backCamera.direction = IOrthographicCamera_1.ORTHOGRAPHIC_CAMERA_DIRECTION.BACK;
143
+ const camera = this.createCamera(ICameraEngine_1.CAMERA_TYPE.PERSPECTIVE, 'perspective');
144
+ this.assignCamera(camera.id);
145
+ }
130
146
  deactivateCameraEvents() {
131
147
  const cameras = this.cameras;
132
148
  for (let c in cameras)
@@ -147,104 +163,102 @@ class CameraEngine {
147
163
  return true;
148
164
  }
149
165
  saveSettings(settingsEngine) {
150
- settingsEngine.settings.camera.cameraId = this._camera ? this._camera.id : 'standard';
166
+ settingsEngine.settings.camera.cameraId = this._camera ? this._camera.id : 'perspective';
151
167
  settingsEngine.settings.camera.cameras = {};
152
- // TODO: once the platform is ready for it, save all cameras
153
- // for (let c in this.cameras) {
154
- if (!this._camera)
155
- return;
156
- const camera = this._camera;
157
- if (camera.type === ICameraEngine_1.CAMERA_TYPE.PERSPECTIVE) {
158
- const controls = camera.controls;
159
- settingsEngine.camera.cameras[camera.id] = {
160
- autoAdjust: camera.autoAdjust,
161
- cameraMovementDuration: camera.cameraMovementDuration,
162
- enableCameraControls: camera.enableCameraControls,
163
- revertAtMouseUp: camera.revertAtMouseUp,
164
- revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
165
- zoomExtentsFactor: camera.zoomExtentsFactor,
166
- position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
167
- target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
168
- type: camera.type,
169
- fov: camera.fov,
170
- controls: {
171
- autoRotationSpeed: controls.autoRotationSpeed,
172
- damping: controls.damping,
173
- enableAutoRotation: controls.enableAutoRotation,
174
- enableKeyPan: controls.enableKeyPan,
175
- enablePan: controls.enablePan,
176
- enableRotation: controls.enableRotation,
177
- enableZoom: controls.enableZoom,
178
- input: controls.input,
179
- keyPanSpeed: controls.keyPanSpeed,
180
- movementSmoothness: controls.movementSmoothness,
181
- rotationSpeed: controls.rotationSpeed,
182
- panSpeed: controls.panSpeed,
183
- zoomSpeed: controls.zoomSpeed,
184
- restrictions: {
185
- position: {
186
- cube: {
187
- min: { x: controls.cubePositionRestriction.min[0], y: controls.cubePositionRestriction.min[1], z: controls.cubePositionRestriction.min[2] },
188
- max: { x: controls.cubePositionRestriction.max[0], y: controls.cubePositionRestriction.max[1], z: controls.cubePositionRestriction.max[2] },
189
- },
190
- sphere: {
191
- center: { x: controls.spherePositionRestriction.center[0], y: controls.spherePositionRestriction.center[1], z: controls.spherePositionRestriction.center[2] },
192
- radius: controls.spherePositionRestriction.radius,
193
- },
194
- },
195
- target: {
196
- cube: {
197
- min: { x: controls.cubeTargetRestriction.min[0], y: controls.cubeTargetRestriction.min[1], z: controls.cubeTargetRestriction.min[2] },
198
- max: { x: controls.cubeTargetRestriction.max[0], y: controls.cubeTargetRestriction.max[1], z: controls.cubeTargetRestriction.max[2] },
168
+ for (let c in this.cameras) {
169
+ const camera = this.cameras[c];
170
+ if (camera.type === ICameraEngine_1.CAMERA_TYPE.PERSPECTIVE) {
171
+ const controls = camera.controls;
172
+ settingsEngine.camera.cameras[camera.id] = {
173
+ autoAdjust: camera.autoAdjust,
174
+ cameraMovementDuration: camera.cameraMovementDuration,
175
+ enableCameraControls: camera.enableCameraControls,
176
+ revertAtMouseUp: camera.revertAtMouseUp,
177
+ revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
178
+ zoomExtentsFactor: camera.zoomExtentsFactor,
179
+ position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
180
+ target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
181
+ type: camera.type,
182
+ fov: camera.fov,
183
+ controls: {
184
+ autoRotationSpeed: controls.autoRotationSpeed,
185
+ damping: controls.damping,
186
+ enableAutoRotation: controls.enableAutoRotation,
187
+ enableKeyPan: controls.enableKeyPan,
188
+ enablePan: controls.enablePan,
189
+ enableRotation: controls.enableRotation,
190
+ enableZoom: controls.enableZoom,
191
+ input: controls.input,
192
+ keyPanSpeed: controls.keyPanSpeed,
193
+ movementSmoothness: controls.movementSmoothness,
194
+ rotationSpeed: controls.rotationSpeed,
195
+ panSpeed: controls.panSpeed,
196
+ zoomSpeed: controls.zoomSpeed,
197
+ restrictions: {
198
+ position: {
199
+ cube: {
200
+ min: { x: controls.cubePositionRestriction.min[0], y: controls.cubePositionRestriction.min[1], z: controls.cubePositionRestriction.min[2] },
201
+ max: { x: controls.cubePositionRestriction.max[0], y: controls.cubePositionRestriction.max[1], z: controls.cubePositionRestriction.max[2] },
202
+ },
203
+ sphere: {
204
+ center: { x: controls.spherePositionRestriction.center[0], y: controls.spherePositionRestriction.center[1], z: controls.spherePositionRestriction.center[2] },
205
+ radius: controls.spherePositionRestriction.radius,
206
+ },
199
207
  },
200
- sphere: {
201
- center: { x: controls.sphereTargetRestriction.center[0], y: controls.sphereTargetRestriction.center[1], z: controls.sphereTargetRestriction.center[2] },
202
- radius: controls.sphereTargetRestriction.radius,
208
+ target: {
209
+ cube: {
210
+ min: { x: controls.cubeTargetRestriction.min[0], y: controls.cubeTargetRestriction.min[1], z: controls.cubeTargetRestriction.min[2] },
211
+ max: { x: controls.cubeTargetRestriction.max[0], y: controls.cubeTargetRestriction.max[1], z: controls.cubeTargetRestriction.max[2] },
212
+ },
213
+ sphere: {
214
+ center: { x: controls.sphereTargetRestriction.center[0], y: controls.sphereTargetRestriction.center[1], z: controls.sphereTargetRestriction.center[2] },
215
+ radius: controls.sphereTargetRestriction.radius,
216
+ },
203
217
  },
204
- },
205
- rotation: controls.rotationRestriction,
206
- zoom: controls.zoomRestriction,
218
+ rotation: controls.rotationRestriction,
219
+ zoom: controls.zoomRestriction,
220
+ }
207
221
  }
208
- }
209
- };
210
- }
211
- else {
212
- if (settingsEngine.camera.cameras[camera.id]) {
213
- const previousDirection = settingsEngine.camera.cameras[camera.id].type;
214
- // if the direction changed, but the default position & target did not, there is an issue
215
- if (previousDirection !== camera.type && (settingsEngine.camera.cameras[camera.id].position.x === camera.defaultPosition[0] &&
216
- settingsEngine.camera.cameras[camera.id].position.y === camera.defaultPosition[1] &&
217
- settingsEngine.camera.cameras[camera.id].position.z === camera.defaultPosition[2] &&
218
- settingsEngine.camera.cameras[camera.id].target.x === camera.defaultTarget[0] &&
219
- settingsEngine.camera.cameras[camera.id].target.y === camera.defaultTarget[1] &&
220
- settingsEngine.camera.cameras[camera.id].target.z === camera.defaultTarget[2])) {
221
- camera.defaultPosition = gl_matrix_1.vec3.clone(camera.position);
222
- camera.defaultTarget = gl_matrix_1.vec3.clone(camera.target);
223
- }
222
+ };
224
223
  }
225
- const controls = camera.controls;
226
- settingsEngine.camera.cameras[camera.id] = {
227
- autoAdjust: camera.autoAdjust,
228
- cameraMovementDuration: camera.cameraMovementDuration,
229
- enableCameraControls: camera.enableCameraControls,
230
- revertAtMouseUp: camera.revertAtMouseUp,
231
- revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
232
- zoomExtentsFactor: camera.zoomExtentsFactor,
233
- position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
234
- target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
235
- type: camera.direction,
236
- controls: {
237
- damping: controls.damping,
238
- enableKeyPan: controls.enableKeyPan,
239
- enablePan: controls.enablePan,
240
- enableZoom: controls.enableZoom,
241
- input: controls.input,
242
- keyPanSpeed: controls.keyPanSpeed,
243
- movementSmoothness: controls.movementSmoothness,
244
- panSpeed: controls.panSpeed,
245
- zoomSpeed: controls.zoomSpeed,
224
+ else {
225
+ if (settingsEngine.camera.cameras[camera.id]) {
226
+ const previousDirection = settingsEngine.camera.cameras[camera.id].type;
227
+ // if the direction changed, but the default position & target did not, there is an issue
228
+ if (previousDirection !== camera.type && (settingsEngine.camera.cameras[camera.id].position.x === camera.defaultPosition[0] &&
229
+ settingsEngine.camera.cameras[camera.id].position.y === camera.defaultPosition[1] &&
230
+ settingsEngine.camera.cameras[camera.id].position.z === camera.defaultPosition[2] &&
231
+ settingsEngine.camera.cameras[camera.id].target.x === camera.defaultTarget[0] &&
232
+ settingsEngine.camera.cameras[camera.id].target.y === camera.defaultTarget[1] &&
233
+ settingsEngine.camera.cameras[camera.id].target.z === camera.defaultTarget[2])) {
234
+ camera.defaultPosition = gl_matrix_1.vec3.clone(camera.position);
235
+ camera.defaultTarget = gl_matrix_1.vec3.clone(camera.target);
236
+ }
246
237
  }
247
- };
238
+ const controls = camera.controls;
239
+ settingsEngine.camera.cameras[camera.id] = {
240
+ autoAdjust: camera.autoAdjust,
241
+ cameraMovementDuration: camera.cameraMovementDuration,
242
+ enableCameraControls: camera.enableCameraControls,
243
+ revertAtMouseUp: camera.revertAtMouseUp,
244
+ revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
245
+ zoomExtentsFactor: camera.zoomExtentsFactor,
246
+ position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
247
+ target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
248
+ type: camera.direction,
249
+ controls: {
250
+ damping: controls.damping,
251
+ enableKeyPan: controls.enableKeyPan,
252
+ enablePan: controls.enablePan,
253
+ enableZoom: controls.enableZoom,
254
+ input: controls.input,
255
+ keyPanSpeed: controls.keyPanSpeed,
256
+ movementSmoothness: controls.movementSmoothness,
257
+ panSpeed: controls.panSpeed,
258
+ zoomSpeed: controls.zoomSpeed,
259
+ }
260
+ };
261
+ }
248
262
  }
249
263
  }
250
264
  // #endregion Public Methods (7)
@@ -1 +1 @@
1
- {"version":3,"file":"CameraEngine.js","sourceRoot":"","sources":["../../src/implementation/CameraEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CameraEngine.js","sourceRoot":"","sources":["../../src/implementation/CameraEngine.ts"],"names":[],"mappings":";;;AAAA,+EAW2C;AAC3C,uCAA+C;AAC/C,uEAAoD;AACpD,yCAAgC;AAGhC,iFAAsF;AAEtF,+DAAwE;AACxE,4DAAwD;AAExD,kEAA8D;AAC9D,oEAAgE;AAEhE,kFAAwF;AAIxF,MAAa,YAAY;IAsBrB,6BAA6B;IAE7B,2BAA2B;IAE3B,YAA6B,gBAAkC,EAAmB,OAA0B;QAA/E,qBAAgB,GAAhB,gBAAgB,CAAkB;QAAmB,YAAO,GAAP,OAAO,CAAmB;QAzB5G,0BAA0B;QAET,aAAQ,GAErB,EAAE,CAAC;QACU,kCAA6B,GAE1C,EAAE,CAAC;QACU,iBAAY,GAA6B,oBAAS,CAAC,OAAO,CAAC,oCAAW,CAAC,CAAC;QACxE,YAAO,GAAmB,oBAAS,CAAC,OAAO,CAAC,+BAAM,CAAC,CAAC;QACpD,oBAAe,GAAmC,oBAAS,CAAC,OAAO,CAAC,uCAAc,CAAC,CAAC;QACpF,iBAAY,GAA6B,oBAAS,CAAC,OAAO,CAAC,oCAAW,CAAC,CAAC;QACxE,UAAK,GAAiB,oBAAS,CAAC,OAAO,CAAC,8BAAI,CAAC,CAAC;QAC9C,mBAAc,GAAiC,oBAAS,CAAC,OAAO,CAAC,sCAAa,CAAC,CAAC;QAEzF,YAAO,GAAmB,IAAI,CAAC;QAC/B,qBAAgB,GAAY,KAAK,CAAC;QAEhC,iBAAY,GAAQ,IAAI,wBAAG,EAAE,CAAC;QAQpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,kCAAS,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAS,EAAE,EAAE;YACnF,MAAM,WAAW,GAAgB,CAAC,CAAC;YACnC,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE;gBACrD,IAAI,CAAC,YAAY,GAAG,IAAI,wBAAG,CAAC,WAAW,CAAC,WAAY,CAAC,GAAG,EAAE,WAAW,CAAC,WAAY,CAAC,GAAG,CAAC,CAAC;gBAExF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC7B,KAAK,IAAI,CAAC,IAAI,OAAO;oBACjB,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;aAC1D;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,kCAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAS,EAAE,EAAE;YAC7E,MAAM,WAAW,GAAgB,CAAC,CAAC;YACnC,IAAI,WAAW,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE;gBACrD,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,8BAA8B;IAE9B,+BAA+B;IAE/B,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,OAAO;QAGd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,MAAM;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,IAAW,MAAM,CAAC,KAA+B;QAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAED,kCAAkC;IAElC,6BAA6B;IAEtB,oBAAoB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAI,IAAI,CAAC,IAAI,OAAO;YACyC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAS,CAAC,+BAA+B,CAAC,oBAAoB,EAAE,CAAC;IAC7I,CAAC;IAEM,aAAa,CAAC,cAA8B;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,OAAO;YACjB,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEzB,KAAI,IAAI,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE;YAClD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjE,IAAG,aAAa,CAAC,IAAI,KAAK,aAAa,EAAE;gBACrC,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;aAClD;iBAAM;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC1C,MAAO,CAAC,SAAS,GAAkC,aAAa,CAAC,IAAI,CAAC;aAC9F;SACJ;QAED,IAAG,CAAC,IAAI,CAAC,gBAAgB;YACrB,KAAK,IAAI,CAAC,IAAI,OAAO;gBACjB,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvE,IAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,IAAG,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACzC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC;iBAAM;gBACH,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;aAC9D;SACJ;aAAM;YACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;SAC9C;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAG,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAEM,YAAY,CAAC,EAAU;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,IAAiB,EAAE,EAAW;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,QAAQ,GAAG,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACnB,MAAM,KAAK,GAAG,IAAI,oDAA2B,CAAC,sCAAsC,IAAI,mBAAmB,QAAQ,mBAAmB,CAAC,CAAC;YACxI,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,sCAAa,CAAC,MAAM,EAAE,2BAA2B,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;SACnG;QAED,MAAM,MAAM,GAAG,2BAAW,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,qCAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,uCAAkB,CAAC,QAAQ,CAAC,CAAC;QACrH,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAE9C,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QAC3B,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE;YAC/D,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;SAC9D;aAAM;YACH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;SAC7C;QAED,IAAG,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC;IAClB,CAAC;IAEM,oBAAoB;QACvB,MAAM,SAAS,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACzF,SAAS,CAAC,SAAS,GAAG,mDAA6B,CAAC,GAAG,CAAC;QACxD,MAAM,YAAY,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC/F,YAAY,CAAC,SAAS,GAAG,mDAA6B,CAAC,MAAM,CAAC;QAC9D,MAAM,UAAU,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3F,UAAU,CAAC,SAAS,GAAG,mDAA6B,CAAC,IAAI,CAAC;QAC1D,MAAM,WAAW,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7F,WAAW,CAAC,SAAS,GAAG,mDAA6B,CAAC,KAAK,CAAC;QAC5D,MAAM,WAAW,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7F,WAAW,CAAC,SAAS,GAAG,mDAA6B,CAAC,KAAK,CAAC;QAC5D,MAAM,UAAU,GAAuB,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QAC3F,UAAU,CAAC,SAAS,GAAG,mDAA6B,CAAC,IAAI,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,2BAAW,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,sBAAsB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,IAAI,CAAC,IAAI,OAAO;YACwC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAS,CAAC,+BAA+B,CAAC,sBAAsB,EAAE,CAAC;IAC/I,CAAC;IAEM,YAAY,CAAC,EAAU;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAA;QACnG,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE;YACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAExB,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAG,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,YAAY,CAAC,cAA8B;QAC9C,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;QACzF,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAE5C,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YACxB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,MAAM,CAAC,IAAI,KAAK,2BAAW,CAAC,WAAW,EAAE;gBACzC,MAAM,QAAQ,GAAkD,MAAO,CAAC,QAAQ,CAAC;gBACjF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;oBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;oBACrD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;oBACvD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;oBACtG,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;oBAC9F,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAsB,MAAO,CAAC,GAAG;oBACpC,QAAQ,EAAE;wBACN,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;wBAC7C,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;wBAC/C,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,cAAc,EAAE,QAAQ,CAAC,cAAc;wBACvC,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;wBAC/C,aAAa,EAAE,QAAQ,CAAC,aAAa;wBACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,YAAY,EAAE;4BACV,QAAQ,EAAE;gCACN,IAAI,EAAE;oCACF,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oCAC3I,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;iCAC9I;gCACD,MAAM,EAAE;oCACJ,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oCAC7J,MAAM,EAAE,QAAQ,CAAC,yBAAyB,CAAC,MAAM;iCACpD;6BACJ;4BACD,MAAM,EAAE;gCACJ,IAAI,EAAE;oCACF,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oCACrI,GAAG,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;iCACxI;gCACD,MAAM,EAAE;oCACJ,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oCACvJ,MAAM,EAAE,QAAQ,CAAC,uBAAuB,CAAC,MAAM;iCAClD;6BACJ;4BACD,QAAQ,EAAE,QAAQ,CAAC,mBAAmB;4BACtC,IAAI,EAAE,QAAQ,CAAC,eAAe;yBACjC;qBACJ;iBACJ,CAAA;aAEJ;iBAAM;gBACH,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBAC1C,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC;oBAExE,yFAAyF;oBACzF,IAAI,iBAAiB,KAAK,MAAM,CAAC,IAAI,IAAI,CACrC,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;wBACjF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;wBACjF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;wBACjF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;wBAC7E,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;wBAC7E,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAChF,EAAE;wBACC,MAAM,CAAC,eAAe,GAAG,gBAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;wBACrD,MAAM,CAAC,aAAa,GAAG,gBAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACpD;iBACJ;gBACD,MAAM,QAAQ,GAAoD,MAAO,CAAC,QAAQ,CAAC;gBAEnF,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG;oBACvC,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;oBACrD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;oBACjD,eAAe,EAAE,MAAM,CAAC,eAAe;oBACvC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;oBACvD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,QAAQ,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;oBACtG,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;oBAC9F,IAAI,EAAuB,MAAO,CAAC,SAAS;oBAC5C,QAAQ,EAAE;wBACN,OAAO,EAAE,QAAQ,CAAC,OAAO;wBACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;wBACnC,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,UAAU,EAAE,QAAQ,CAAC,UAAU;wBAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;wBAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;qBAChC;iBACJ,CAAA;aACJ;SACJ;IACL,CAAC;IAED,gCAAgC;IAEhC,8BAA8B;IAEtB,mBAAmB;QACvB,MAAM,aAAa,GAAG,CAAC,IAAe,EAAE,EAAE;YACtC,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;gBACpC,IAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,+BAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;oBAC5E,MAAM,MAAM,GAAmB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAG,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB,CAAC,EAAE;wBAC7C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;iBACzC;YAEL,KAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;gBACxC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC;QACF,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAG,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;CAGJ;AAnTD,oCAmTC"}
@@ -10,5 +10,6 @@ export interface ICameraEngine {
10
10
  removeCamera(id: string): boolean;
11
11
  activateCameraEvents(): void;
12
12
  deactivateCameraEvents(): void;
13
+ createDefaultCameras(): void;
13
14
  }
14
15
  //# sourceMappingURL=ICameraEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ICameraEngine.d.ts","sourceRoot":"","sources":["../../src/interfaces/ICameraEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,oBAAY,WAAW;IACnB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,sBAAsB,IAAI,IAAI,CAAC;CAClC"}
1
+ {"version":3,"file":"ICameraEngine.d.ts","sourceRoot":"","sources":["../../src/interfaces/ICameraEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAE1C,oBAAY,WAAW;IACnB,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;CAChC;AAED,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IAEpB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACtD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAElC,oBAAoB,IAAI,IAAI,CAAC;IAC7B,sBAAsB,IAAI,IAAI,CAAC;IAC/B,oBAAoB,IAAI,IAAI,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shapediver/viewer.rendering-engine.camera-engine",
3
- "version": "2.0.10",
3
+ "version": "2.1.0",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "author": "Michael Oppitz <michael@shapediver.com>",
@@ -39,16 +39,16 @@
39
39
  "testEnvironment": "node"
40
40
  },
41
41
  "dependencies": {
42
- "@shapediver/viewer.rendering-engine.rendering-engine": "2.0.10",
42
+ "@shapediver/viewer.rendering-engine.rendering-engine": "2.1.0",
43
43
  "@shapediver/viewer.settings": "0.1.36",
44
- "@shapediver/viewer.shared.math": "2.0.10",
45
- "@shapediver/viewer.shared.node-tree": "2.0.10",
46
- "@shapediver/viewer.shared.services": "2.0.10",
47
- "@shapediver/viewer.shared.types": "2.0.10",
44
+ "@shapediver/viewer.shared.math": "2.1.0",
45
+ "@shapediver/viewer.shared.node-tree": "2.1.0",
46
+ "@shapediver/viewer.shared.services": "2.1.0",
47
+ "@shapediver/viewer.shared.types": "2.1.0",
48
48
  "@tweenjs/tween.js": "^18.6.4",
49
49
  "detect-it": "4.0.1",
50
50
  "gl-matrix": "3.3.0",
51
51
  "tsyringe": "^4.5.0"
52
52
  },
53
- "gitHead": "2d5375b60f8c80081541ce4355e4da8a782bbc87"
53
+ "gitHead": "3f40516bce9dc11152b48b46f776c55dc9c14867"
54
54
  }
@@ -133,9 +133,8 @@ export class CameraEngine implements ICameraEngine {
133
133
  this.assignCamera(settingsEngine.settings.camera.cameraId);
134
134
  }
135
135
  } else {
136
- const camera = this.createCamera(CAMERA_TYPE.PERSPECTIVE, 'standard');
137
- this.assignCamera(camera.id);
138
- camera.applySettings(settingsEngine);
136
+ this.createDefaultCameras();
137
+ this.camera!.applySettings(settingsEngine);
139
138
  }
140
139
 
141
140
  this._settingsApplied = true;
@@ -171,6 +170,23 @@ export class CameraEngine implements ICameraEngine {
171
170
  return camera;
172
171
  }
173
172
 
173
+ public createDefaultCameras(): void {
174
+ const topCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'top');
175
+ topCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.TOP;
176
+ const bottomCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'bottom');
177
+ bottomCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.BOTTOM;
178
+ const leftCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'left');
179
+ leftCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.LEFT;
180
+ const rightCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'right');
181
+ rightCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.RIGHT;
182
+ const frontCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'front');
183
+ frontCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.FRONT;
184
+ const backCamera = <OrthographicCamera>this.createCamera(CAMERA_TYPE.ORTHOGRAPHIC, 'back');
185
+ backCamera.direction = ORTHOGRAPHIC_CAMERA_DIRECTION.BACK;
186
+ const camera = this.createCamera(CAMERA_TYPE.PERSPECTIVE, 'perspective');
187
+ this.assignCamera(camera.id);
188
+ }
189
+
174
190
  public deactivateCameraEvents(): void {
175
191
  const cameras = this.cameras;
176
192
  for (let c in cameras)
@@ -192,109 +208,106 @@ export class CameraEngine implements ICameraEngine {
192
208
  }
193
209
 
194
210
  public saveSettings(settingsEngine: SettingsEngine) {
195
- settingsEngine.settings.camera.cameraId = this._camera ? this._camera.id : 'standard';
211
+ settingsEngine.settings.camera.cameraId = this._camera ? this._camera.id : 'perspective';
196
212
  settingsEngine.settings.camera.cameras = {};
197
213
 
198
- // TODO: once the platform is ready for it, save all cameras
199
- // for (let c in this.cameras) {
200
- if(!this._camera)
201
- return;
202
-
203
- const camera = this._camera;
204
-
205
- if (camera.type === CAMERA_TYPE.PERSPECTIVE) {
206
- const controls = <PerspectiveCameraControls>(<PerspectiveCamera>camera).controls;
207
- settingsEngine.camera.cameras[camera.id] = {
208
- autoAdjust: camera.autoAdjust,
209
- cameraMovementDuration: camera.cameraMovementDuration,
210
- enableCameraControls: camera.enableCameraControls,
211
- revertAtMouseUp: camera.revertAtMouseUp,
212
- revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
213
- zoomExtentsFactor: camera.zoomExtentsFactor,
214
- position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
215
- target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
216
- type: camera.type,
217
- fov: (<PerspectiveCamera>camera).fov,
218
- controls: {
219
- autoRotationSpeed: controls.autoRotationSpeed,
220
- damping: controls.damping,
221
- enableAutoRotation: controls.enableAutoRotation,
222
- enableKeyPan: controls.enableKeyPan,
223
- enablePan: controls.enablePan,
224
- enableRotation: controls.enableRotation,
225
- enableZoom: controls.enableZoom,
226
- input: controls.input,
227
- keyPanSpeed: controls.keyPanSpeed,
228
- movementSmoothness: controls.movementSmoothness,
229
- rotationSpeed: controls.rotationSpeed,
230
- panSpeed: controls.panSpeed,
231
- zoomSpeed: controls.zoomSpeed,
232
- restrictions: {
233
- position: {
234
- cube: {
235
- min: { x: controls.cubePositionRestriction.min[0], y: controls.cubePositionRestriction.min[1], z: controls.cubePositionRestriction.min[2] },
236
- max: { x: controls.cubePositionRestriction.max[0], y: controls.cubePositionRestriction.max[1], z: controls.cubePositionRestriction.max[2] },
237
- },
238
- sphere: {
239
- center: { x: controls.spherePositionRestriction.center[0], y: controls.spherePositionRestriction.center[1], z: controls.spherePositionRestriction.center[2] },
240
- radius: controls.spherePositionRestriction.radius,
241
- },
242
- },
243
- target: {
244
- cube: {
245
- min: { x: controls.cubeTargetRestriction.min[0], y: controls.cubeTargetRestriction.min[1], z: controls.cubeTargetRestriction.min[2] },
246
- max: { x: controls.cubeTargetRestriction.max[0], y: controls.cubeTargetRestriction.max[1], z: controls.cubeTargetRestriction.max[2] },
214
+ for (let c in this.cameras) {
215
+ const camera = this.cameras[c];
216
+
217
+ if (camera.type === CAMERA_TYPE.PERSPECTIVE) {
218
+ const controls = <PerspectiveCameraControls>(<PerspectiveCamera>camera).controls;
219
+ settingsEngine.camera.cameras[camera.id] = {
220
+ autoAdjust: camera.autoAdjust,
221
+ cameraMovementDuration: camera.cameraMovementDuration,
222
+ enableCameraControls: camera.enableCameraControls,
223
+ revertAtMouseUp: camera.revertAtMouseUp,
224
+ revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
225
+ zoomExtentsFactor: camera.zoomExtentsFactor,
226
+ position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
227
+ target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
228
+ type: camera.type,
229
+ fov: (<PerspectiveCamera>camera).fov,
230
+ controls: {
231
+ autoRotationSpeed: controls.autoRotationSpeed,
232
+ damping: controls.damping,
233
+ enableAutoRotation: controls.enableAutoRotation,
234
+ enableKeyPan: controls.enableKeyPan,
235
+ enablePan: controls.enablePan,
236
+ enableRotation: controls.enableRotation,
237
+ enableZoom: controls.enableZoom,
238
+ input: controls.input,
239
+ keyPanSpeed: controls.keyPanSpeed,
240
+ movementSmoothness: controls.movementSmoothness,
241
+ rotationSpeed: controls.rotationSpeed,
242
+ panSpeed: controls.panSpeed,
243
+ zoomSpeed: controls.zoomSpeed,
244
+ restrictions: {
245
+ position: {
246
+ cube: {
247
+ min: { x: controls.cubePositionRestriction.min[0], y: controls.cubePositionRestriction.min[1], z: controls.cubePositionRestriction.min[2] },
248
+ max: { x: controls.cubePositionRestriction.max[0], y: controls.cubePositionRestriction.max[1], z: controls.cubePositionRestriction.max[2] },
249
+ },
250
+ sphere: {
251
+ center: { x: controls.spherePositionRestriction.center[0], y: controls.spherePositionRestriction.center[1], z: controls.spherePositionRestriction.center[2] },
252
+ radius: controls.spherePositionRestriction.radius,
253
+ },
247
254
  },
248
- sphere: {
249
- center: { x: controls.sphereTargetRestriction.center[0], y: controls.sphereTargetRestriction.center[1], z: controls.sphereTargetRestriction.center[2] },
250
- radius: controls.sphereTargetRestriction.radius,
255
+ target: {
256
+ cube: {
257
+ min: { x: controls.cubeTargetRestriction.min[0], y: controls.cubeTargetRestriction.min[1], z: controls.cubeTargetRestriction.min[2] },
258
+ max: { x: controls.cubeTargetRestriction.max[0], y: controls.cubeTargetRestriction.max[1], z: controls.cubeTargetRestriction.max[2] },
259
+ },
260
+ sphere: {
261
+ center: { x: controls.sphereTargetRestriction.center[0], y: controls.sphereTargetRestriction.center[1], z: controls.sphereTargetRestriction.center[2] },
262
+ radius: controls.sphereTargetRestriction.radius,
263
+ },
251
264
  },
252
- },
253
- rotation: controls.rotationRestriction,
254
- zoom: controls.zoomRestriction,
265
+ rotation: controls.rotationRestriction,
266
+ zoom: controls.zoomRestriction,
267
+ }
255
268
  }
256
269
  }
257
- }
258
-
259
- } else {
260
- if (settingsEngine.camera.cameras[camera.id]) {
261
- const previousDirection = settingsEngine.camera.cameras[camera.id].type;
262
-
263
- // if the direction changed, but the default position & target did not, there is an issue
264
- if (previousDirection !== camera.type && (
265
- settingsEngine.camera.cameras[camera.id].position.x === camera.defaultPosition[0] &&
266
- settingsEngine.camera.cameras[camera.id].position.y === camera.defaultPosition[1] &&
267
- settingsEngine.camera.cameras[camera.id].position.z === camera.defaultPosition[2] &&
268
- settingsEngine.camera.cameras[camera.id].target.x === camera.defaultTarget[0] &&
269
- settingsEngine.camera.cameras[camera.id].target.y === camera.defaultTarget[1] &&
270
- settingsEngine.camera.cameras[camera.id].target.z === camera.defaultTarget[2]
271
- )) {
272
- camera.defaultPosition = vec3.clone(camera.position);
273
- camera.defaultTarget = vec3.clone(camera.target);
270
+
271
+ } else {
272
+ if (settingsEngine.camera.cameras[camera.id]) {
273
+ const previousDirection = settingsEngine.camera.cameras[camera.id].type;
274
+
275
+ // if the direction changed, but the default position & target did not, there is an issue
276
+ if (previousDirection !== camera.type && (
277
+ settingsEngine.camera.cameras[camera.id].position.x === camera.defaultPosition[0] &&
278
+ settingsEngine.camera.cameras[camera.id].position.y === camera.defaultPosition[1] &&
279
+ settingsEngine.camera.cameras[camera.id].position.z === camera.defaultPosition[2] &&
280
+ settingsEngine.camera.cameras[camera.id].target.x === camera.defaultTarget[0] &&
281
+ settingsEngine.camera.cameras[camera.id].target.y === camera.defaultTarget[1] &&
282
+ settingsEngine.camera.cameras[camera.id].target.z === camera.defaultTarget[2]
283
+ )) {
284
+ camera.defaultPosition = vec3.clone(camera.position);
285
+ camera.defaultTarget = vec3.clone(camera.target);
286
+ }
274
287
  }
275
- }
276
- const controls = <OrthographicCameraControls>(<OrthographicCamera>camera).controls;
277
-
278
- settingsEngine.camera.cameras[camera.id] = {
279
- autoAdjust: camera.autoAdjust,
280
- cameraMovementDuration: camera.cameraMovementDuration,
281
- enableCameraControls: camera.enableCameraControls,
282
- revertAtMouseUp: camera.revertAtMouseUp,
283
- revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
284
- zoomExtentsFactor: camera.zoomExtentsFactor,
285
- position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
286
- target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
287
- type: (<OrthographicCamera>camera).direction,
288
- controls: {
289
- damping: controls.damping,
290
- enableKeyPan: controls.enableKeyPan,
291
- enablePan: controls.enablePan,
292
- enableZoom: controls.enableZoom,
293
- input: controls.input,
294
- keyPanSpeed: controls.keyPanSpeed,
295
- movementSmoothness: controls.movementSmoothness,
296
- panSpeed: controls.panSpeed,
297
- zoomSpeed: controls.zoomSpeed,
288
+ const controls = <OrthographicCameraControls>(<OrthographicCamera>camera).controls;
289
+
290
+ settingsEngine.camera.cameras[camera.id] = {
291
+ autoAdjust: camera.autoAdjust,
292
+ cameraMovementDuration: camera.cameraMovementDuration,
293
+ enableCameraControls: camera.enableCameraControls,
294
+ revertAtMouseUp: camera.revertAtMouseUp,
295
+ revertAtMouseUpDuration: camera.revertAtMouseUpDuration,
296
+ zoomExtentsFactor: camera.zoomExtentsFactor,
297
+ position: { x: camera.defaultPosition[0], y: camera.defaultPosition[1], z: camera.defaultPosition[2] },
298
+ target: { x: camera.defaultTarget[0], y: camera.defaultTarget[1], z: camera.defaultTarget[2] },
299
+ type: (<OrthographicCamera>camera).direction,
300
+ controls: {
301
+ damping: controls.damping,
302
+ enableKeyPan: controls.enableKeyPan,
303
+ enablePan: controls.enablePan,
304
+ enableZoom: controls.enableZoom,
305
+ input: controls.input,
306
+ keyPanSpeed: controls.keyPanSpeed,
307
+ movementSmoothness: controls.movementSmoothness,
308
+ panSpeed: controls.panSpeed,
309
+ zoomSpeed: controls.zoomSpeed,
310
+ }
298
311
  }
299
312
  }
300
313
  }
@@ -16,4 +16,5 @@ export interface ICameraEngine {
16
16
 
17
17
  activateCameraEvents(): void;
18
18
  deactivateCameraEvents(): void;
19
+ createDefaultCameras(): void;
19
20
  }