@babylonjs/viewer 5.0.0-rc.4 → 5.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configuration/configuration.d.ts +107 -107
- package/configuration/configuration.js +15 -15
- package/configuration/configuration.js.map +1 -1
- package/configuration/configurationCompatibility.d.ts +8 -8
- package/configuration/configurationCompatibility.js +65 -65
- package/configuration/configurationCompatibility.js.map +1 -1
- package/configuration/configurationContainer.d.ts +10 -10
- package/configuration/configurationContainer.js +9 -9
- package/configuration/configurationContainer.js.map +1 -1
- package/configuration/globals.d.ts +6 -6
- package/configuration/globals.js +17 -17
- package/configuration/globals.js.map +1 -1
- package/configuration/index.d.ts +2 -2
- package/configuration/index.js +3 -2
- package/configuration/index.js.map +1 -1
- package/configuration/interfaces/cameraConfiguration.d.ts +31 -31
- package/configuration/interfaces/cameraConfiguration.js +1 -1
- package/configuration/interfaces/cameraConfiguration.js.map +1 -1
- package/configuration/interfaces/colorGradingConfiguration.d.ts +81 -81
- package/configuration/interfaces/colorGradingConfiguration.js +1 -1
- package/configuration/interfaces/colorGradingConfiguration.js.map +1 -1
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.d.ts +20 -20
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js +1 -1
- package/configuration/interfaces/defaultRenderingPipelineConfiguration.js.map +1 -1
- package/configuration/interfaces/environmentMapConfiguration.d.ts +22 -22
- package/configuration/interfaces/environmentMapConfiguration.js +1 -1
- package/configuration/interfaces/environmentMapConfiguration.js.map +1 -1
- package/configuration/interfaces/groundConfiguration.d.ts +24 -24
- package/configuration/interfaces/groundConfiguration.js +1 -1
- package/configuration/interfaces/groundConfiguration.js.map +1 -1
- package/configuration/interfaces/imageProcessingConfiguration.d.ts +43 -43
- package/configuration/interfaces/imageProcessingConfiguration.js +1 -1
- package/configuration/interfaces/imageProcessingConfiguration.js.map +1 -1
- package/configuration/interfaces/index.d.ts +15 -15
- package/configuration/interfaces/index.js +15 -15
- package/configuration/interfaces/index.js.map +1 -1
- package/configuration/interfaces/lightConfiguration.d.ts +60 -60
- package/configuration/interfaces/lightConfiguration.js +1 -1
- package/configuration/interfaces/lightConfiguration.js.map +1 -1
- package/configuration/interfaces/modelAnimationConfiguration.d.ts +26 -26
- package/configuration/interfaces/modelAnimationConfiguration.js +1 -1
- package/configuration/interfaces/modelAnimationConfiguration.js.map +1 -1
- package/configuration/interfaces/modelConfiguration.d.ts +65 -65
- package/configuration/interfaces/modelConfiguration.js +1 -1
- package/configuration/interfaces/modelConfiguration.js.map +1 -1
- package/configuration/interfaces/observersConfiguration.d.ts +5 -5
- package/configuration/interfaces/observersConfiguration.js +1 -1
- package/configuration/interfaces/observersConfiguration.js.map +1 -1
- package/configuration/interfaces/sceneConfiguration.d.ts +48 -48
- package/configuration/interfaces/sceneConfiguration.js +1 -1
- package/configuration/interfaces/sceneConfiguration.js.map +1 -1
- package/configuration/interfaces/sceneOptimizerConfiguration.d.ts +23 -23
- package/configuration/interfaces/sceneOptimizerConfiguration.js +1 -1
- package/configuration/interfaces/sceneOptimizerConfiguration.js.map +1 -1
- package/configuration/interfaces/skyboxConfiguration.d.ts +21 -21
- package/configuration/interfaces/skyboxConfiguration.js +1 -1
- package/configuration/interfaces/skyboxConfiguration.js.map +1 -1
- package/configuration/interfaces/templateConfiguration.d.ts +67 -67
- package/configuration/interfaces/templateConfiguration.js +1 -1
- package/configuration/interfaces/templateConfiguration.js.map +1 -1
- package/configuration/interfaces/vrConfiguration.d.ts +16 -16
- package/configuration/interfaces/vrConfiguration.js +1 -1
- package/configuration/interfaces/vrConfiguration.js.map +1 -1
- package/configuration/loader.d.ts +4 -4
- package/configuration/loader.js +16 -28
- package/configuration/loader.js.map +1 -1
- package/configuration/mappers.d.ts +42 -42
- package/configuration/mappers.js +190 -189
- package/configuration/mappers.js.map +1 -1
- package/configuration/renderOnlyLoader.d.ts +33 -33
- package/configuration/renderOnlyLoader.js +161 -158
- package/configuration/renderOnlyLoader.js.map +1 -1
- package/configuration/types/default.d.ts +6 -6
- package/configuration/types/default.js +120 -119
- package/configuration/types/default.js.map +1 -1
- package/configuration/types/environmentMap.d.ts +5 -5
- package/configuration/types/environmentMap.js +13 -13
- package/configuration/types/environmentMap.js.map +1 -1
- package/configuration/types/extended.d.ts +6 -6
- package/configuration/types/extended.js +316 -316
- package/configuration/types/extended.js.map +1 -1
- package/configuration/types/index.d.ts +13 -13
- package/configuration/types/index.js +49 -48
- package/configuration/types/index.js.map +1 -1
- package/configuration/types/minimal.d.ts +6 -6
- package/configuration/types/minimal.js +42 -42
- package/configuration/types/minimal.js.map +1 -1
- package/configuration/types/renderOnlyDefault.d.ts +30 -30
- package/configuration/types/renderOnlyDefault.js +30 -30
- package/configuration/types/renderOnlyDefault.js.map +1 -1
- package/configuration/types/shadowLight.d.ts +9 -9
- package/configuration/types/shadowLight.js +63 -63
- package/configuration/types/shadowLight.js.map +1 -1
- package/helper/index.d.ts +26 -26
- package/helper/index.js +62 -56
- package/helper/index.js.map +1 -1
- package/index.d.ts +30 -30
- package/index.js +45 -41
- package/index.js.map +1 -1
- package/initializer.d.ts +11 -11
- package/initializer.js +34 -33
- package/initializer.js.map +1 -1
- package/interfaces.d.ts +5 -5
- package/interfaces.js +1 -1
- package/interfaces.js.map +1 -1
- package/labs/environmentSerializer.d.ts +126 -126
- package/labs/environmentSerializer.js +190 -186
- package/labs/environmentSerializer.js.map +1 -1
- package/labs/texture.d.ts +183 -184
- package/labs/texture.js +300 -297
- package/labs/texture.js.map +1 -1
- package/labs/viewerLabs.d.ts +51 -51
- package/labs/viewerLabs.js +133 -131
- package/labs/viewerLabs.js.map +1 -1
- package/license.md +71 -0
- package/loader/modelLoader.d.ts +47 -44
- package/loader/modelLoader.js +189 -182
- package/loader/modelLoader.js.map +1 -1
- package/loader/plugins/applyMaterialConfig.d.ts +12 -12
- package/loader/plugins/applyMaterialConfig.js +15 -15
- package/loader/plugins/applyMaterialConfig.js.map +1 -1
- package/loader/plugins/extendedMaterialLoaderPlugin.d.ts +9 -9
- package/loader/plugins/extendedMaterialLoaderPlugin.js +15 -15
- package/loader/plugins/extendedMaterialLoaderPlugin.js.map +1 -1
- package/loader/plugins/index.d.ts +18 -17
- package/loader/plugins/index.js +42 -41
- package/loader/plugins/index.js.map +1 -1
- package/loader/plugins/loaderPlugin.d.ts +24 -24
- package/loader/plugins/loaderPlugin.js +1 -1
- package/loader/plugins/loaderPlugin.js.map +1 -1
- package/loader/plugins/msftLodLoaderPlugin.d.ts +12 -12
- package/loader/plugins/msftLodLoaderPlugin.js +20 -19
- package/loader/plugins/msftLodLoaderPlugin.js.map +1 -1
- package/loader/plugins/telemetryLoaderPlugin.d.ts +12 -12
- package/loader/plugins/telemetryLoaderPlugin.js +35 -35
- package/loader/plugins/telemetryLoaderPlugin.js.map +1 -1
- package/managers/observablesManager.d.ts +66 -66
- package/managers/observablesManager.js +34 -34
- package/managers/observablesManager.js.map +1 -1
- package/managers/sceneManager.d.ts +243 -245
- package/managers/sceneManager.js +1388 -1387
- package/managers/sceneManager.js.map +1 -1
- package/managers/telemetryManager.d.ts +57 -57
- package/managers/telemetryManager.js +113 -113
- package/managers/telemetryManager.js.map +1 -1
- package/model/modelAnimation.d.ts +215 -215
- package/model/modelAnimation.js +232 -232
- package/model/modelAnimation.js.map +1 -1
- package/model/viewerModel.d.ts +228 -236
- package/model/viewerModel.js +669 -664
- package/model/viewerModel.js.map +1 -1
- package/optimizer/custom/extended.d.ts +11 -13
- package/optimizer/custom/extended.js +98 -100
- package/optimizer/custom/extended.js.map +1 -1
- package/optimizer/custom/index.d.ts +8 -8
- package/optimizer/custom/index.js +24 -24
- package/optimizer/custom/index.js.map +1 -1
- package/package.json +41 -215
- package/readme.md +12 -8
- package/renderOnlyIndex.d.ts +11 -11
- package/renderOnlyIndex.js +17 -15
- package/renderOnlyIndex.js.map +1 -1
- package/templating/eventManager.d.ts +35 -35
- package/templating/eventManager.js +65 -63
- package/templating/eventManager.js.map +1 -1
- package/templating/plugins/hdButtonPlugin.d.ts +9 -9
- package/templating/plugins/hdButtonPlugin.js +21 -34
- package/templating/plugins/hdButtonPlugin.js.map +1 -1
- package/templating/plugins/printButton.d.ts +9 -10
- package/templating/plugins/printButton.js +40 -53
- package/templating/plugins/printButton.js.map +1 -1
- package/templating/templateManager.d.ts +190 -189
- package/templating/templateManager.js +553 -543
- package/templating/templateManager.js.map +1 -1
- package/templating/viewerTemplatePlugin.d.ts +21 -21
- package/templating/viewerTemplatePlugin.js +68 -68
- package/templating/viewerTemplatePlugin.js.map +1 -1
- package/viewer/defaultViewer.d.ts +122 -116
- package/viewer/defaultViewer.js +665 -670
- package/viewer/defaultViewer.js.map +1 -1
- package/viewer/renderOnlyViewer.d.ts +8 -8
- package/viewer/renderOnlyViewer.js +43 -50
- package/viewer/renderOnlyViewer.js.map +1 -1
- package/viewer/viewer.d.ts +254 -253
- package/viewer/viewer.js +777 -763
- package/viewer/viewer.js.map +1 -1
- package/viewer/viewerManager.d.ts +55 -55
- package/viewer/viewerManager.js +87 -86
- package/viewer/viewerManager.js.map +1 -1
- package/viewer/viewerWithTemplate.d.ts +9 -9
- package/viewer/viewerWithTemplate.js +19 -32
- package/viewer/viewerWithTemplate.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaultViewer.js","sourceRoot":"","sources":["../../../../sourceES6/viewer/src/viewer/defaultViewer.ts"],"names":[],"mappings":"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","sourcesContent":["\r\nimport { Template, EventCallback } from '../templating/templateManager';\r\nimport { FilesInput } from '@babylonjs/core/Misc/filesInput';\r\nimport { SpotLight } from '@babylonjs/core/Lights/spotLight';\r\nimport { Vector3 } from '@babylonjs/core/Maths/math';\r\nimport { TemplateManager } from '../templating/templateManager';\r\nimport { AbstractViewerWithTemplate } from './viewerWithTemplate';\r\nimport { StandardMaterial } from '@babylonjs/core/Materials/standardMaterial';\r\nimport { PBRMaterial } from '@babylonjs/core/Materials/PBR/pbrMaterial';\r\nimport { extendClassWithConfig } from '../helper/index';\r\nimport { ViewerModel } from '../model/viewerModel';\r\nimport { IModelAnimation, AnimationState } from '../model/modelAnimation';\r\nimport { IViewerTemplatePlugin } from '../templating/viewerTemplatePlugin';\r\nimport { HDButtonPlugin } from '../templating/plugins/hdButtonPlugin';\r\nimport { PrintButtonPlugin } from '../templating/plugins/printButton';\r\nimport { ViewerConfiguration } from '../configuration/configuration';\r\nimport { ISceneConfiguration } from '../configuration/interfaces/sceneConfiguration';\r\nimport { IModelConfiguration } from '../configuration/interfaces/modelConfiguration';\r\n\r\n/**\r\n * The Default viewer is the default implementation of the AbstractViewer.\r\n * It uses the templating system to render a new canvas and controls.\r\n */\r\nexport class DefaultViewer extends AbstractViewerWithTemplate {\r\n /**\r\n * The corresponsing template manager of this viewer.\r\n */\r\n public templateManager: TemplateManager;\r\n\r\n public fullscreenElement?: Element;\r\n\r\n /**\r\n * Create a new default viewer\r\n * @param containerElement the element in which the templates will be rendered\r\n * @param initialConfiguration the initial configuration. Defaults to extending the default configuration\r\n */\r\n constructor(public containerElement: Element, initialConfiguration: ViewerConfiguration = { extends: 'default' }) {\r\n super(containerElement, initialConfiguration);\r\n\r\n this.onModelLoadedObservable.add(this._onModelLoaded);\r\n this.onModelRemovedObservable.add(() => {\r\n this._configureTemplate();\r\n });\r\n\r\n this.onEngineInitObservable.add(() => {\r\n this.sceneManager.onLightsConfiguredObservable.add((data) => {\r\n this._configureLights();\r\n });\r\n });\r\n\r\n this.onInitDoneObservable.add(() => {\r\n this.sceneManager.setDefaultMaterial = function (sceneConfig: ISceneConfiguration) {\r\n let conf = sceneConfig.defaultMaterial;\r\n if (!conf) {\r\n return;\r\n }\r\n if ((conf.materialType === 'standard' && this.scene.defaultMaterial.getClassName() !== 'StandardMaterial') ||\r\n (conf.materialType === 'pbr' && this.scene.defaultMaterial.getClassName() !== 'PBRMaterial')) {\r\n this.scene.defaultMaterial.dispose();\r\n if (conf.materialType === 'standard') {\r\n this.scene.defaultMaterial = new StandardMaterial(\"defaultMaterial\", this.scene);\r\n } else {\r\n this.scene.defaultMaterial = new PBRMaterial(\"defaultMaterial\", this.scene);\r\n }\r\n }\r\n extendClassWithConfig(this.scene.defaultMaterial, conf);\r\n }\r\n if (!this.sceneManager.models.length) {\r\n this.hideLoadingScreen();\r\n }\r\n });\r\n }\r\n\r\n private _registeredPlugins: Array<IViewerTemplatePlugin> = [];\r\n\r\n public registerTemplatePlugin(plugin: IViewerTemplatePlugin) {\r\n //validate\r\n if (!plugin.templateName) {\r\n throw new Error(\"No template name provided\");\r\n }\r\n this._registeredPlugins.push(plugin);\r\n let template = this.templateManager.getTemplate(plugin.templateName);\r\n if (!template) {\r\n throw new Error(`Template ${plugin.templateName} not found`);\r\n }\r\n if (plugin.addHTMLTemplate) {\r\n template.onHTMLRendered.add((tmpl) => {\r\n plugin.addHTMLTemplate!(tmpl);\r\n });\r\n template.redraw();\r\n }\r\n\r\n if (plugin.eventsToAttach) {\r\n plugin.eventsToAttach.forEach((eventName) => {\r\n plugin.onEvent && this.templateManager.eventManager.registerCallback(plugin.templateName, (event) => {\r\n if (plugin.onEvent && plugin.interactionPredicate(event)) {\r\n plugin.onEvent(event);\r\n }\r\n }, eventName);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * This will be executed when the templates initialize.\r\n */\r\n protected _onTemplatesLoaded() {\r\n this.showLoadingScreen();\r\n\r\n // navbar\r\n this._initNavbar();\r\n\r\n // close overlay button\r\n let template = this.templateManager.getTemplate('overlay');\r\n if (template) {\r\n\r\n let closeButton = template.parent.querySelector('.close-button');\r\n if (closeButton) {\r\n closeButton.addEventListener('pointerdown', () => {\r\n this.hideOverlayScreen();\r\n });\r\n }\r\n }\r\n\r\n if (this.configuration.templates && this.configuration.templates.viewer) {\r\n if (this.configuration.templates.viewer.params && this.configuration.templates.viewer.params.enableDragAndDrop) {\r\n this.onSceneInitObservable.addOnce(() => {\r\n let filesInput = new FilesInput(this.engine, this.sceneManager.scene, () => {\r\n }, () => {\r\n }, () => {\r\n }, () => {\r\n }, function () {\r\n }, (file: File) => {\r\n this.loadModel(file);\r\n }, () => {\r\n });\r\n filesInput.monitorElementForDragNDrop(this.templateManager.getCanvas()!);\r\n });\r\n }\r\n }\r\n\r\n return super._onTemplatesLoaded();\r\n }\r\n\r\n private _initNavbar() {\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (navbar) {\r\n this.onFrameRenderedObservable.add(this._updateProgressBar);\r\n this.templateManager.eventManager.registerCallback('navBar', this._handlePointerClick, 'click');\r\n // an example how to trigger the help button. publiclly available\r\n this.templateManager.eventManager.registerCallback(\"navBar\", () => {\r\n // do your thing\r\n }, \"pointerdown\", \".help-button\");\r\n\r\n this.templateManager.eventManager.registerCallback(\"navBar\", (event: EventCallback) => {\r\n const evt = event.event;\r\n const element = <HTMLInputElement>(evt.target);\r\n if (!this._currentAnimation) { return; }\r\n const gotoFrame = +element.value / 100 * this._currentAnimation.frames;\r\n if (isNaN(gotoFrame)) { return; }\r\n this._currentAnimation.goToFrame(gotoFrame);\r\n }, \"input\");\r\n\r\n this.templateManager.eventManager.registerCallback(\"navBar\", () => {\r\n if (this._resumePlay) {\r\n this._togglePlayPause(true);\r\n }\r\n this._resumePlay = false;\r\n }, \"pointerup\", \".progress-wrapper\");\r\n\r\n if (window.devicePixelRatio === 1 && navbar.configuration.params && !navbar.configuration.params.hideHdButton) {\r\n navbar.updateParams({\r\n hideHdButton: true\r\n });\r\n }\r\n\r\n this.registerTemplatePlugin(new HDButtonPlugin(this));\r\n this.registerTemplatePlugin(new PrintButtonPlugin(this));\r\n }\r\n }\r\n\r\n private _animationList: string[];\r\n private _currentAnimation: IModelAnimation;\r\n private _isAnimationPaused: boolean;\r\n private _resumePlay: boolean;\r\n\r\n private _handlePointerClick = (event: EventCallback) => {\r\n\r\n let pointerDown = <PointerEvent>event.event;\r\n if (pointerDown.button !== 0) { return; }\r\n var element = (<HTMLElement>event.event.target);\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n let parentClasses = element.parentElement!.classList;\r\n\r\n let elementClasses = element.classList;\r\n\r\n let elementName = \"\";\r\n\r\n for (let i = 0; i < elementClasses.length; ++i) {\r\n let className = elementClasses[i];\r\n if (className.indexOf(\"-button\") !== -1 || className.indexOf(\"-wrapper\") !== -1) {\r\n elementName = className;\r\n break;\r\n }\r\n }\r\n\r\n switch (elementName) {\r\n case \"speed-button\":\r\n case \"types-button\":\r\n if (parentClasses.contains(\"open\")) {\r\n parentClasses.remove(\"open\");\r\n } else {\r\n parentClasses.add(\"open\");\r\n }\r\n break;\r\n case \"play-pause-button\":\r\n this._togglePlayPause();\r\n break;\r\n case \"label-option-button\":\r\n var value = element.dataset[\"value\"];\r\n var label = element.querySelector(\"span.animation-label\");\r\n if (label && value) {\r\n this._updateAnimationType({ value: value.trim(), label: label.innerHTML });\r\n }\r\n break;\r\n case \"speed-option-button\":\r\n if (!this._currentAnimation) {\r\n return;\r\n }\r\n var speed = element.dataset[\"value\"];\r\n if (speed) {\r\n this._updateAnimationSpeed(speed);\r\n }\r\n break;\r\n case \"progress-wrapper\":\r\n this._resumePlay = !this._isAnimationPaused;\r\n if (this._resumePlay) {\r\n this._togglePlayPause(true);\r\n }\r\n break;\r\n case \"fullscreen-button\":\r\n this.toggleFullscreen();\r\n break;\r\n case \"vr-button\":\r\n this.toggleVR();\r\n break;\r\n default:\r\n return;\r\n }\r\n }\r\n\r\n /**\r\n * Plays or Pauses animation\r\n */\r\n private _togglePlayPause = (noUiUpdate?: boolean) => {\r\n if (!this._currentAnimation) {\r\n return;\r\n }\r\n if (this._isAnimationPaused) {\r\n this._currentAnimation.restart();\r\n } else {\r\n this._currentAnimation.pause();\r\n }\r\n\r\n this._isAnimationPaused = !this._isAnimationPaused;\r\n\r\n if (noUiUpdate) { return; }\r\n\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (!navbar) { return; }\r\n\r\n navbar.updateParams({\r\n paused: this._isAnimationPaused,\r\n });\r\n }\r\n\r\n private _oldIdleRotationValue: number;\r\n\r\n /**\r\n * Control progress bar position based on animation current frame\r\n */\r\n private _updateProgressBar = () => {\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (!navbar) { return; }\r\n var progressSlider = <HTMLInputElement>navbar.parent.querySelector(\"input.progress-wrapper\");\r\n if (progressSlider && this._currentAnimation) {\r\n const progress = this._currentAnimation.currentFrame / this._currentAnimation.frames * 100;\r\n var currentValue = progressSlider.valueAsNumber;\r\n if (Math.abs(currentValue - progress) > 0.5) { // Only move if greater than a 1% change\r\n progressSlider.value = '' + progress;\r\n }\r\n\r\n if (this._currentAnimation.state === AnimationState.PLAYING) {\r\n if (this.sceneManager.camera.autoRotationBehavior && !this._oldIdleRotationValue) {\r\n this._oldIdleRotationValue = this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed;\r\n this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed = 0;\r\n }\r\n } else {\r\n if (this.sceneManager.camera.autoRotationBehavior && this._oldIdleRotationValue) {\r\n this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed = this._oldIdleRotationValue;\r\n this._oldIdleRotationValue = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update Current Animation Speed\r\n */\r\n private _updateAnimationSpeed = (speed: string, paramsObject?: any) => {\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (!navbar) { return; }\r\n\r\n if (speed && this._currentAnimation) {\r\n this._currentAnimation.speedRatio = parseFloat(speed);\r\n if (!this._isAnimationPaused) {\r\n this._currentAnimation.restart();\r\n }\r\n\r\n if (paramsObject) {\r\n paramsObject.selectedSpeed = speed + \"x\";\r\n } else {\r\n navbar.updateParams({\r\n selectedSpeed: speed + \"x\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Update Current Animation Type\r\n */\r\n private _updateAnimationType = (data: { label: string, value: string }, paramsObject?: any) => {\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (!navbar) { return; }\r\n\r\n if (data) {\r\n this._currentAnimation = this.sceneManager.models[0].setCurrentAnimationByName(data.value);\r\n }\r\n\r\n if (paramsObject) {\r\n paramsObject.selectedAnimation = (this._animationList.indexOf(data.value) + 1);\r\n paramsObject.selectedAnimationName = data.label;\r\n } else {\r\n navbar.updateParams({\r\n selectedAnimation: (this._animationList.indexOf(data.value) + 1),\r\n selectedAnimationName: data.label\r\n });\r\n }\r\n\r\n this._updateAnimationSpeed(\"1.0\", paramsObject);\r\n }\r\n\r\n protected _initVR() {\r\n this.engine.onVRDisplayChangedObservable.add(() => {\r\n let viewerTemplate = this.templateManager.getTemplate('viewer');\r\n let viewerElement = viewerTemplate && viewerTemplate.parent;\r\n\r\n if (viewerElement) {\r\n if (this.sceneManager.vrHelper!.isInVRMode) {\r\n viewerElement.classList.add(\"in-vr\");\r\n } else {\r\n viewerElement.classList.remove(\"in-vr\");\r\n }\r\n }\r\n });\r\n if (this.sceneManager.vrHelper) {\r\n // due to the way the experience helper is exisintg VR, this must be added.\r\n this.sceneManager.vrHelper.onExitingVR.add(() => {\r\n let viewerTemplate = this.templateManager.getTemplate('viewer');\r\n let viewerElement = viewerTemplate && viewerTemplate.parent;\r\n\r\n if (viewerElement) {\r\n viewerElement.classList.remove(\"in-vr\");\r\n }\r\n });\r\n }\r\n super._initVR();\r\n }\r\n\r\n /**\r\n * Toggle fullscreen of the entire viewer\r\n */\r\n public toggleFullscreen = () => {\r\n let viewerTemplate = this.templateManager.getTemplate('viewer');\r\n let viewerElement = viewerTemplate && viewerTemplate.parent;\r\n let fullscreenElement = this.fullscreenElement || viewerElement;\r\n\r\n if (fullscreenElement) {\r\n let currentElement = (<any>document).fullscreenElement || (<any>document).webkitFullscreenElement || (<any>document).mozFullScreenElement || (<any>document).msFullscreenElement;\r\n if (!currentElement) {\r\n let requestFullScreen = fullscreenElement.requestFullscreen || (<any>fullscreenElement).webkitRequestFullscreen || (<any>fullscreenElement).msRequestFullscreen || (<any>fullscreenElement).mozRequestFullScreen;\r\n requestFullScreen.call(fullscreenElement);\r\n if (viewerElement) {\r\n viewerElement.classList.add(\"in-fullscreen\");\r\n }\r\n } else {\r\n let exitFullscreen = document.exitFullscreen || (<any>document).webkitExitFullscreen || (<any>document).msExitFullscreen || (<any>document).mozCancelFullScreen;\r\n exitFullscreen.call(document);\r\n if (viewerElement) {\r\n viewerElement.classList.remove(\"in-fullscreen\");\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Preparing the container element to present the viewer\r\n */\r\n protected _prepareContainerElement() {\r\n const htmlElement = this.containerElement as HTMLElement;\r\n if (htmlElement.style) {\r\n htmlElement.style.position = 'relative';\r\n htmlElement.style.height = '100%';\r\n htmlElement.style.display = 'flex';\r\n }\r\n }\r\n\r\n /**\r\n * This function will configure the templates and update them after a model was loaded\r\n * It is mainly responsible to changing the title and subtitle etc'.\r\n * @param model the model to be used to configure the templates by\r\n */\r\n protected _configureTemplate(model?: ViewerModel) {\r\n let navbar = this.templateManager.getTemplate('navBar');\r\n if (!navbar) { return; }\r\n\r\n let newParams: any = navbar.configuration.params || {};\r\n\r\n if (!model) {\r\n newParams.animations = null;\r\n } else {\r\n\r\n let animationNames = model.getAnimationNames();\r\n newParams.animations = animationNames.map((a) => { return { label: a, value: a }; });\r\n if (animationNames.length) {\r\n this._isAnimationPaused = (model.configuration.animation && !model.configuration.animation.autoStart) || !model.configuration.animation;\r\n this._animationList = animationNames;\r\n newParams.paused = this._isAnimationPaused;\r\n let animationIndex = 0;\r\n if (model.configuration.animation && typeof model.configuration.animation.autoStart === 'string') {\r\n animationIndex = animationNames.indexOf(model.configuration.animation.autoStart);\r\n if (animationIndex === -1) {\r\n animationIndex = 0;\r\n }\r\n }\r\n this._updateAnimationType(newParams.animations[animationIndex], newParams);\r\n } else {\r\n newParams.animations = null;\r\n }\r\n\r\n if (model.configuration.thumbnail) {\r\n newParams.logoImage = model.configuration.thumbnail;\r\n }\r\n }\r\n navbar.updateParams(newParams, false);\r\n }\r\n\r\n /**\r\n * This will load a new model to the default viewer\r\n * overriding the AbstractViewer's loadModel.\r\n * The scene will automatically be cleared of the old models, if exist.\r\n * @param model the configuration object (or URL) to load.\r\n */\r\n public loadModel(model?: string | File | IModelConfiguration): Promise<ViewerModel> {\r\n if (!model) {\r\n model = this.configuration.model;\r\n }\r\n this.showLoadingScreen();\r\n return super.loadModel(model!, true).catch((error) => {\r\n console.log(error);\r\n this.hideLoadingScreen();\r\n this.showOverlayScreen('error');\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n private _onModelLoaded = (model: ViewerModel) => {\r\n this._configureTemplate(model);\r\n // with a short timeout, making sure everything is there already.\r\n let hideLoadingDelay = 20;\r\n if (this.configuration.lab && this.configuration.lab.hideLoadingDelay !== undefined) {\r\n hideLoadingDelay = this.configuration.lab.hideLoadingDelay;\r\n }\r\n setTimeout(() => {\r\n this.sceneManager.scene.executeWhenReady(() => {\r\n this.hideLoadingScreen();\r\n });\r\n }, hideLoadingDelay);\r\n\r\n return;\r\n }\r\n\r\n /**\r\n * Show the overlay and the defined sub-screen.\r\n * Mainly used for help and errors\r\n * @param subScreen the name of the subScreen. Those can be defined in the configuration object\r\n */\r\n public showOverlayScreen(subScreen: string) {\r\n let template = this.templateManager.getTemplate('overlay');\r\n if (!template) { return Promise.resolve('Overlay template not found'); }\r\n\r\n return template.show(((template) => {\r\n\r\n var canvasRect = this.containerElement.getBoundingClientRect();\r\n\r\n template.parent.style.display = 'flex';\r\n template.parent.style.width = canvasRect.width + \"px\";\r\n template.parent.style.height = canvasRect.height + \"px\";\r\n template.parent.style.opacity = \"1\";\r\n\r\n let subTemplate = this.templateManager.getTemplate(subScreen);\r\n if (!subTemplate) {\r\n return Promise.reject(subScreen + ' template not found');\r\n }\r\n return subTemplate.show(((template) => {\r\n template.parent.style.display = 'flex';\r\n return Promise.resolve(template);\r\n }));\r\n }));\r\n }\r\n\r\n /**\r\n * Hide the overlay screen.\r\n */\r\n public hideOverlayScreen() {\r\n let template = this.templateManager.getTemplate('overlay');\r\n if (!template) { return Promise.resolve('Overlay template not found'); }\r\n\r\n return template.hide(((template) => {\r\n template.parent.style.opacity = \"0\";\r\n let onTransitionEnd = () => {\r\n template.parent.removeEventListener(\"transitionend\", onTransitionEnd);\r\n template.parent.style.display = 'none';\r\n };\r\n template.parent.addEventListener(\"transitionend\", onTransitionEnd);\r\n\r\n let overlays = template.parent.querySelectorAll('.overlay');\r\n if (overlays) {\r\n for (let i = 0; i < overlays.length; ++i) {\r\n let htmlElement = <HTMLElement>overlays.item(i);\r\n htmlElement.style.display = 'none';\r\n }\r\n }\r\n return Promise.resolve(template);\r\n }));\r\n }\r\n\r\n /**\r\n * show the viewer (in case it was hidden)\r\n *\r\n * @param visibilityFunction an optional function to execute in order to show the container\r\n */\r\n public show(visibilityFunction?: ((template: Template) => Promise<Template>)): Promise<Template> {\r\n let template = this.templateManager.getTemplate('main');\r\n //not possible, but yet:\r\n if (!template) { return Promise.reject('Main template not found'); }\r\n return template.show(visibilityFunction);\r\n }\r\n\r\n /**\r\n * hide the viewer (in case it is visible)\r\n *\r\n * @param visibilityFunction an optional function to execute in order to hide the container\r\n */\r\n public hide(visibilityFunction?: ((template: Template) => Promise<Template>)) {\r\n let template = this.templateManager.getTemplate('main');\r\n //not possible, but yet:\r\n if (!template) { return Promise.reject('Main template not found'); }\r\n return template.hide(visibilityFunction);\r\n }\r\n\r\n /**\r\n * Show the loading screen.\r\n * The loading screen can be configured using the configuration object\r\n */\r\n public showLoadingScreen() {\r\n let template = this.templateManager.getTemplate('loadingScreen');\r\n if (!template) { return Promise.resolve('Loading Screen template not found'); }\r\n\r\n return template.show(((template) => {\r\n\r\n var canvasRect = this.containerElement.getBoundingClientRect();\r\n // var canvasPositioning = window.getComputedStyle(this.containerElement).position;\r\n\r\n template.parent.style.display = 'flex';\r\n template.parent.style.width = canvasRect.width + \"px\";\r\n template.parent.style.height = canvasRect.height + \"px\";\r\n template.parent.style.opacity = \"1\";\r\n // from the configuration!!!\r\n let color = \"black\";\r\n if (this.configuration.templates && this.configuration.templates.loadingScreen) {\r\n color = (this.configuration.templates.loadingScreen.params &&\r\n <string>this.configuration.templates.loadingScreen.params.backgroundColor) || color;\r\n }\r\n template.parent.style.backgroundColor = color;\r\n return Promise.resolve(template);\r\n }));\r\n }\r\n\r\n /**\r\n * Hide the loading screen\r\n */\r\n public hideLoadingScreen() {\r\n let template = this.templateManager.getTemplate('loadingScreen');\r\n if (!template) { return Promise.resolve('Loading Screen template not found'); }\r\n\r\n return template.hide(((template) => {\r\n template.parent.style.opacity = \"0\";\r\n let onTransitionEnd = () => {\r\n template.parent.removeEventListener(\"transitionend\", onTransitionEnd);\r\n template.parent.style.display = 'none';\r\n };\r\n template.parent.addEventListener(\"transitionend\", onTransitionEnd);\r\n return Promise.resolve(template);\r\n }));\r\n }\r\n\r\n public dispose() {\r\n this.templateManager.dispose();\r\n super.dispose();\r\n }\r\n\r\n protected _onConfigurationLoaded(configuration: ViewerConfiguration) {\r\n\r\n super._onConfigurationLoaded(configuration);\r\n\r\n this.templateManager = new TemplateManager(this.containerElement);\r\n\r\n // initialize the templates\r\n let templateConfiguration = this.configuration.templates || {};\r\n\r\n this.templateManager.initTemplate(templateConfiguration);\r\n // when done, execute onTemplatesLoaded()\r\n this.templateManager.onAllLoaded.add(() => {\r\n let canvas = this.templateManager.getCanvas();\r\n if (canvas) {\r\n this._canvas = canvas;\r\n }\r\n this._onTemplateLoaded();\r\n });\r\n }\r\n\r\n /**\r\n * An extension of the light configuration of the abstract viewer.\r\n * @param lightsConfiguration the light configuration to use\r\n * @param model the model that will be used to configure the lights (if the lights are model-dependant)\r\n */\r\n private _configureLights() {\r\n // labs feature - flashlight\r\n if (this.configuration.lab && this.configuration.lab.flashlight) {\r\n let lightTarget;\r\n let angle = 0.5;\r\n let exponent = Math.PI / 2;\r\n if (typeof this.configuration.lab.flashlight === \"object\") {\r\n exponent = this.configuration.lab.flashlight.exponent || exponent;\r\n angle = this.configuration.lab.flashlight.angle || angle;\r\n }\r\n var flashlight = new SpotLight(\"flashlight\", Vector3.Zero(),\r\n Vector3.Zero(), exponent, angle, this.sceneManager.scene);\r\n if (typeof this.configuration.lab.flashlight === \"object\") {\r\n flashlight.intensity = this.configuration.lab.flashlight.intensity || flashlight.intensity;\r\n if (this.configuration.lab.flashlight.diffuse) {\r\n flashlight.diffuse.r = this.configuration.lab.flashlight.diffuse.r;\r\n flashlight.diffuse.g = this.configuration.lab.flashlight.diffuse.g;\r\n flashlight.diffuse.b = this.configuration.lab.flashlight.diffuse.b;\r\n }\r\n if (this.configuration.lab.flashlight.specular) {\r\n flashlight.specular.r = this.configuration.lab.flashlight.specular.r;\r\n flashlight.specular.g = this.configuration.lab.flashlight.specular.g;\r\n flashlight.specular.b = this.configuration.lab.flashlight.specular.b;\r\n }\r\n\r\n }\r\n this.sceneManager.scene.constantlyUpdateMeshUnderPointer = true;\r\n this.sceneManager.scene.onPointerObservable.add((eventData) => {\r\n if (eventData.type === 4 && eventData.pickInfo) {\r\n lightTarget = (eventData.pickInfo.pickedPoint);\r\n } else {\r\n lightTarget = undefined;\r\n }\r\n });\r\n let updateFlashlightFunction = () => {\r\n if (this.sceneManager.camera && flashlight) {\r\n flashlight.position.copyFrom(this.sceneManager.camera.position);\r\n if (lightTarget) {\r\n lightTarget.subtractToRef(flashlight.position, flashlight.direction);\r\n }\r\n }\r\n };\r\n this.sceneManager.scene.registerBeforeRender(updateFlashlightFunction);\r\n this._registeredOnBeforeRenderFunctions.push(updateFlashlightFunction);\r\n }\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"defaultViewer.js","sourceRoot":"","sources":["../../../../../tools/viewer/src/viewer/defaultViewer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Template, EventCallback } from \"../templating/templateManager\";\r\nimport { TemplateManager } from \"../templating/templateManager\";\r\nimport { FilesInput } from \"core/Misc/filesInput\";\r\nimport { SpotLight } from \"core/Lights/spotLight\";\r\nimport { Vector3 } from \"core/Maths/math\";\r\n\r\nimport { AbstractViewerWithTemplate } from \"./viewerWithTemplate\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport { PBRMaterial } from \"core/Materials/PBR/pbrMaterial\";\r\n// eslint-disable-next-line import/no-internal-modules\r\nimport { extendClassWithConfig } from \"../helper/index\";\r\nimport type { ViewerModel } from \"../model/viewerModel\";\r\nimport type { IModelAnimation } from \"../model/modelAnimation\";\r\nimport { AnimationState } from \"../model/modelAnimation\";\r\nimport type { IViewerTemplatePlugin } from \"../templating/viewerTemplatePlugin\";\r\nimport { HDButtonPlugin } from \"../templating/plugins/hdButtonPlugin\";\r\nimport { PrintButtonPlugin } from \"../templating/plugins/printButton\";\r\nimport type { ViewerConfiguration } from \"../configuration/configuration\";\r\nimport type { ISceneConfiguration } from \"../configuration/interfaces/sceneConfiguration\";\r\nimport type { IModelConfiguration } from \"../configuration/interfaces/modelConfiguration\";\r\nimport type { Nullable } from \"core/types\";\r\n\r\nimport \"core/Lights/Shadows/shadowGeneratorSceneComponent\";\r\n\r\n/**\r\n * The Default viewer is the default implementation of the AbstractViewer.\r\n * It uses the templating system to render a new canvas and controls.\r\n */\r\nexport class DefaultViewer extends AbstractViewerWithTemplate {\r\n /**\r\n * The corresponsing template manager of this viewer.\r\n */\r\n public templateManager: TemplateManager;\r\n\r\n public fullscreenElement?: Element;\r\n\r\n /**\r\n * Create a new default viewer\r\n * @param containerElement the element in which the templates will be rendered\r\n * @param initialConfiguration the initial configuration. Defaults to extending the default configuration\r\n */\r\n constructor(public containerElement: Element, initialConfiguration: ViewerConfiguration = { extends: \"default\" }) {\r\n super(containerElement, initialConfiguration);\r\n\r\n this.onModelLoadedObservable.add(this._onModelLoaded);\r\n this.onModelRemovedObservable.add(() => {\r\n this._configureTemplate();\r\n });\r\n\r\n this.onEngineInitObservable.add(() => {\r\n this.sceneManager.onLightsConfiguredObservable.add(() => {\r\n this._configureLights();\r\n });\r\n });\r\n\r\n this.onInitDoneObservable.add(() => {\r\n this.sceneManager.setDefaultMaterial = function (sceneConfig: ISceneConfiguration) {\r\n const conf = sceneConfig.defaultMaterial;\r\n if (!conf) {\r\n return;\r\n }\r\n if (\r\n (conf.materialType === \"standard\" && this.scene.defaultMaterial.getClassName() !== \"StandardMaterial\") ||\r\n (conf.materialType === \"pbr\" && this.scene.defaultMaterial.getClassName() !== \"PBRMaterial\")\r\n ) {\r\n this.scene.defaultMaterial.dispose();\r\n if (conf.materialType === \"standard\") {\r\n this.scene.defaultMaterial = new StandardMaterial(\"defaultMaterial\", this.scene);\r\n } else {\r\n this.scene.defaultMaterial = new PBRMaterial(\"defaultMaterial\", this.scene);\r\n }\r\n }\r\n extendClassWithConfig(this.scene.defaultMaterial, conf);\r\n };\r\n if (!this.sceneManager.models.length) {\r\n this.hideLoadingScreen();\r\n }\r\n });\r\n }\r\n\r\n private _registeredPlugins: Array<IViewerTemplatePlugin> = [];\r\n\r\n public registerTemplatePlugin(plugin: IViewerTemplatePlugin) {\r\n //validate\r\n if (!plugin.templateName) {\r\n throw new Error(\"No template name provided\");\r\n }\r\n this._registeredPlugins.push(plugin);\r\n const template = this.templateManager.getTemplate(plugin.templateName);\r\n if (!template) {\r\n throw new Error(`Template ${plugin.templateName} not found`);\r\n }\r\n if (plugin.addHTMLTemplate) {\r\n template.onHTMLRendered.add((tmpl) => {\r\n plugin.addHTMLTemplate!(tmpl);\r\n });\r\n template.redraw();\r\n }\r\n\r\n if (plugin.eventsToAttach) {\r\n plugin.eventsToAttach.forEach((eventName) => {\r\n plugin.onEvent &&\r\n this.templateManager.eventManager.registerCallback(\r\n plugin.templateName,\r\n (event) => {\r\n if (plugin.onEvent && plugin.interactionPredicate(event)) {\r\n plugin.onEvent(event);\r\n }\r\n },\r\n eventName\r\n );\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * This will be executed when the templates initialize.\r\n */\r\n protected _onTemplatesLoaded() {\r\n this.showLoadingScreen();\r\n\r\n // navbar\r\n this._initNavbar();\r\n\r\n // close overlay button\r\n const template = this.templateManager.getTemplate(\"overlay\");\r\n if (template) {\r\n const closeButton = template.parent.querySelector(\".close-button\");\r\n if (closeButton) {\r\n closeButton.addEventListener(\"pointerdown\", () => {\r\n this.hideOverlayScreen();\r\n });\r\n }\r\n }\r\n\r\n if (this.configuration.templates && this.configuration.templates.viewer) {\r\n if (this.configuration.templates.viewer.params && this.configuration.templates.viewer.params.enableDragAndDrop) {\r\n this.onSceneInitObservable.addOnce(() => {\r\n const filesInput = new FilesInput(\r\n this.engine,\r\n this.sceneManager.scene,\r\n () => {},\r\n () => {},\r\n () => {},\r\n () => {},\r\n function () {},\r\n (file: File) => {\r\n this.loadModel(file);\r\n },\r\n () => {}\r\n );\r\n filesInput.monitorElementForDragNDrop(this.templateManager.getCanvas()!);\r\n });\r\n }\r\n }\r\n\r\n return super._onTemplatesLoaded();\r\n }\r\n\r\n private _initNavbar() {\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (navbar) {\r\n this.onFrameRenderedObservable.add(this._updateProgressBar);\r\n this.templateManager.eventManager.registerCallback(\"navBar\", this._handlePointerClick, \"click\");\r\n // an example how to trigger the help button. publiclly available\r\n this.templateManager.eventManager.registerCallback(\r\n \"navBar\",\r\n () => {\r\n // do your thing\r\n },\r\n \"pointerdown\",\r\n \".help-button\"\r\n );\r\n\r\n this.templateManager.eventManager.registerCallback(\r\n \"navBar\",\r\n (event: EventCallback) => {\r\n const evt = event.event;\r\n const element = <HTMLInputElement>evt.target;\r\n if (!this._currentAnimation) {\r\n return;\r\n }\r\n const gotoFrame = (+element.value / 100) * this._currentAnimation.frames;\r\n if (isNaN(gotoFrame)) {\r\n return;\r\n }\r\n this._currentAnimation.goToFrame(gotoFrame);\r\n },\r\n \"input\"\r\n );\r\n\r\n this.templateManager.eventManager.registerCallback(\r\n \"navBar\",\r\n () => {\r\n if (this._resumePlay) {\r\n this._togglePlayPause(true);\r\n }\r\n this._resumePlay = false;\r\n },\r\n \"pointerup\",\r\n \".progress-wrapper\"\r\n );\r\n\r\n if (window.devicePixelRatio === 1 && navbar.configuration.params && !navbar.configuration.params.hideHdButton) {\r\n navbar.updateParams({\r\n hideHdButton: true,\r\n });\r\n }\r\n\r\n this.registerTemplatePlugin(new HDButtonPlugin(this));\r\n this.registerTemplatePlugin(new PrintButtonPlugin(this));\r\n }\r\n }\r\n\r\n private _animationList: string[];\r\n private _currentAnimation: IModelAnimation;\r\n private _isAnimationPaused: boolean;\r\n private _resumePlay: boolean;\r\n\r\n private _handlePointerClick = (event: EventCallback) => {\r\n const pointerDown = <PointerEvent>event.event;\r\n if (pointerDown.button !== 0) {\r\n return;\r\n }\r\n const element = <HTMLElement>event.event.target;\r\n\r\n if (!element) {\r\n return;\r\n }\r\n\r\n const parentClasses = element.parentElement!.classList;\r\n\r\n const elementClasses = element.classList;\r\n\r\n let elementName = \"\";\r\n\r\n for (let i = 0; i < elementClasses.length; ++i) {\r\n const className = elementClasses[i];\r\n if (className.indexOf(\"-button\") !== -1 || className.indexOf(\"-wrapper\") !== -1) {\r\n elementName = className;\r\n break;\r\n }\r\n }\r\n\r\n switch (elementName) {\r\n case \"speed-button\":\r\n case \"types-button\":\r\n if (parentClasses.contains(\"open\")) {\r\n parentClasses.remove(\"open\");\r\n } else {\r\n parentClasses.add(\"open\");\r\n }\r\n break;\r\n case \"play-pause-button\":\r\n this._togglePlayPause();\r\n break;\r\n case \"label-option-button\": {\r\n const value = element.dataset[\"value\"];\r\n const label = element.querySelector(\"span.animation-label\");\r\n if (label && value) {\r\n this._updateAnimationType({ value: value.trim(), label: label.innerHTML });\r\n }\r\n break;\r\n }\r\n case \"speed-option-button\": {\r\n if (!this._currentAnimation) {\r\n return;\r\n }\r\n const speed = element.dataset[\"value\"];\r\n if (speed) {\r\n this._updateAnimationSpeed(speed);\r\n }\r\n break;\r\n }\r\n case \"progress-wrapper\":\r\n this._resumePlay = !this._isAnimationPaused;\r\n if (this._resumePlay) {\r\n this._togglePlayPause(true);\r\n }\r\n break;\r\n case \"fullscreen-button\":\r\n this.toggleFullscreen();\r\n break;\r\n case \"vr-button\":\r\n this.toggleVR();\r\n break;\r\n default:\r\n return;\r\n }\r\n };\r\n\r\n /**\r\n * Plays or Pauses animation\r\n * @param noUiUpdate\r\n */\r\n private _togglePlayPause = (noUiUpdate?: boolean) => {\r\n if (!this._currentAnimation) {\r\n return;\r\n }\r\n if (this._isAnimationPaused) {\r\n this._currentAnimation.restart();\r\n } else {\r\n this._currentAnimation.pause();\r\n }\r\n\r\n this._isAnimationPaused = !this._isAnimationPaused;\r\n\r\n if (noUiUpdate) {\r\n return;\r\n }\r\n\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (!navbar) {\r\n return;\r\n }\r\n\r\n navbar.updateParams({\r\n paused: this._isAnimationPaused,\r\n });\r\n };\r\n\r\n private _oldIdleRotationValue: number;\r\n\r\n /**\r\n * Control progress bar position based on animation current frame\r\n */\r\n private _updateProgressBar = () => {\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (!navbar) {\r\n return;\r\n }\r\n const progressSlider = <HTMLInputElement>navbar.parent.querySelector(\"input.progress-wrapper\");\r\n if (progressSlider && this._currentAnimation) {\r\n const progress = (this._currentAnimation.currentFrame / this._currentAnimation.frames) * 100;\r\n const currentValue = progressSlider.valueAsNumber;\r\n if (Math.abs(currentValue - progress) > 0.5) {\r\n // Only move if greater than a 1% change\r\n progressSlider.value = \"\" + progress;\r\n }\r\n\r\n if (this._currentAnimation.state === AnimationState.PLAYING) {\r\n if (this.sceneManager.camera.autoRotationBehavior && !this._oldIdleRotationValue) {\r\n this._oldIdleRotationValue = this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed;\r\n this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed = 0;\r\n }\r\n } else {\r\n if (this.sceneManager.camera.autoRotationBehavior && this._oldIdleRotationValue) {\r\n this.sceneManager.camera.autoRotationBehavior.idleRotationSpeed = this._oldIdleRotationValue;\r\n this._oldIdleRotationValue = 0;\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Update Current Animation Speed\r\n * @param speed\r\n * @param paramsObject\r\n */\r\n private _updateAnimationSpeed = (speed: string, paramsObject?: any) => {\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (!navbar) {\r\n return;\r\n }\r\n\r\n if (speed && this._currentAnimation) {\r\n this._currentAnimation.speedRatio = parseFloat(speed);\r\n if (!this._isAnimationPaused) {\r\n this._currentAnimation.restart();\r\n }\r\n\r\n if (paramsObject) {\r\n paramsObject.selectedSpeed = speed + \"x\";\r\n } else {\r\n navbar.updateParams({\r\n selectedSpeed: speed + \"x\",\r\n });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Update Current Animation Type\r\n * @param data\r\n * @param data.label\r\n * @param data.value\r\n * @param paramsObject\r\n */\r\n private _updateAnimationType = (data: { label: string; value: string }, paramsObject?: any) => {\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (!navbar) {\r\n return;\r\n }\r\n\r\n if (data) {\r\n this._currentAnimation = this.sceneManager.models[0].setCurrentAnimationByName(data.value);\r\n }\r\n\r\n if (paramsObject) {\r\n paramsObject.selectedAnimation = this._animationList.indexOf(data.value) + 1;\r\n paramsObject.selectedAnimationName = data.label;\r\n } else {\r\n navbar.updateParams({\r\n selectedAnimation: this._animationList.indexOf(data.value) + 1,\r\n selectedAnimationName: data.label,\r\n });\r\n }\r\n\r\n this._updateAnimationSpeed(\"1.0\", paramsObject);\r\n };\r\n\r\n protected _initVR() {\r\n this.engine.onVRDisplayChangedObservable.add(() => {\r\n const viewerTemplate = this.templateManager.getTemplate(\"viewer\");\r\n const viewerElement = viewerTemplate && viewerTemplate.parent;\r\n\r\n if (viewerElement) {\r\n if (this.sceneManager.vrHelper!.isInVRMode) {\r\n viewerElement.classList.add(\"in-vr\");\r\n } else {\r\n viewerElement.classList.remove(\"in-vr\");\r\n }\r\n }\r\n });\r\n if (this.sceneManager.vrHelper) {\r\n // due to the way the experience helper is exisintg VR, this must be added.\r\n this.sceneManager.vrHelper.onExitingVR.add(() => {\r\n const viewerTemplate = this.templateManager.getTemplate(\"viewer\");\r\n const viewerElement = viewerTemplate && viewerTemplate.parent;\r\n\r\n if (viewerElement) {\r\n viewerElement.classList.remove(\"in-vr\");\r\n }\r\n });\r\n }\r\n super._initVR();\r\n }\r\n\r\n /**\r\n * Toggle fullscreen of the entire viewer\r\n */\r\n public toggleFullscreen = () => {\r\n const viewerTemplate = this.templateManager.getTemplate(\"viewer\");\r\n const viewerElement = viewerTemplate && viewerTemplate.parent;\r\n const fullscreenElement = this.fullscreenElement || viewerElement;\r\n\r\n if (fullscreenElement) {\r\n const currentElement =\r\n (<any>document).fullscreenElement || (<any>document).webkitFullscreenElement || (<any>document).mozFullScreenElement || (<any>document).msFullscreenElement;\r\n if (!currentElement) {\r\n const requestFullScreen =\r\n fullscreenElement.requestFullscreen ||\r\n (<any>fullscreenElement).webkitRequestFullscreen ||\r\n (<any>fullscreenElement).msRequestFullscreen ||\r\n (<any>fullscreenElement).mozRequestFullScreen;\r\n requestFullScreen.call(fullscreenElement);\r\n if (viewerElement) {\r\n viewerElement.classList.add(\"in-fullscreen\");\r\n }\r\n } else {\r\n const exitFullscreen = document.exitFullscreen || (<any>document).webkitExitFullscreen || (<any>document).msExitFullscreen || (<any>document).mozCancelFullScreen;\r\n exitFullscreen.call(document);\r\n if (viewerElement) {\r\n viewerElement.classList.remove(\"in-fullscreen\");\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Preparing the container element to present the viewer\r\n */\r\n protected _prepareContainerElement() {\r\n const htmlElement = this.containerElement as HTMLElement;\r\n if (htmlElement.style) {\r\n htmlElement.style.position = \"relative\";\r\n htmlElement.style.height = \"100%\";\r\n htmlElement.style.display = \"flex\";\r\n }\r\n }\r\n\r\n /**\r\n * This function will configure the templates and update them after a model was loaded\r\n * It is mainly responsible to changing the title and subtitle etc'.\r\n * @param model the model to be used to configure the templates by\r\n */\r\n protected _configureTemplate(model?: ViewerModel) {\r\n const navbar = this.templateManager.getTemplate(\"navBar\");\r\n if (!navbar) {\r\n return;\r\n }\r\n\r\n const newParams: any = navbar.configuration.params || {};\r\n\r\n if (!model) {\r\n newParams.animations = null;\r\n } else {\r\n const animationNames = model.getAnimationNames();\r\n newParams.animations = animationNames.map((a) => {\r\n return { label: a, value: a };\r\n });\r\n if (animationNames.length) {\r\n this._isAnimationPaused = (model.configuration.animation && !model.configuration.animation.autoStart) || !model.configuration.animation;\r\n this._animationList = animationNames;\r\n newParams.paused = this._isAnimationPaused;\r\n let animationIndex = 0;\r\n if (model.configuration.animation && typeof model.configuration.animation.autoStart === \"string\") {\r\n animationIndex = animationNames.indexOf(model.configuration.animation.autoStart);\r\n if (animationIndex === -1) {\r\n animationIndex = 0;\r\n }\r\n }\r\n this._updateAnimationType(newParams.animations[animationIndex], newParams);\r\n } else {\r\n newParams.animations = null;\r\n }\r\n\r\n if (model.configuration.thumbnail) {\r\n newParams.logoImage = model.configuration.thumbnail;\r\n }\r\n }\r\n navbar.updateParams(newParams, false);\r\n }\r\n\r\n /**\r\n * This will load a new model to the default viewer\r\n * overriding the AbstractViewer's loadModel.\r\n * The scene will automatically be cleared of the old models, if exist.\r\n * @param model the configuration object (or URL) to load.\r\n */\r\n public loadModel(model?: string | File | IModelConfiguration): Promise<ViewerModel> {\r\n if (!model) {\r\n model = this.configuration.model;\r\n }\r\n this.showLoadingScreen();\r\n return super.loadModel(model!, true).catch((error) => {\r\n console.log(error);\r\n this.hideLoadingScreen();\r\n this.showOverlayScreen(\"error\");\r\n return Promise.reject(error);\r\n });\r\n }\r\n\r\n private _onModelLoaded = (model: ViewerModel) => {\r\n this._configureTemplate(model);\r\n // with a short timeout, making sure everything is there already.\r\n let hideLoadingDelay = 20;\r\n if (this.configuration.lab && this.configuration.lab.hideLoadingDelay !== undefined) {\r\n hideLoadingDelay = this.configuration.lab.hideLoadingDelay;\r\n }\r\n setTimeout(() => {\r\n this.sceneManager.scene.executeWhenReady(() => {\r\n this.hideLoadingScreen();\r\n });\r\n }, hideLoadingDelay);\r\n\r\n return;\r\n };\r\n\r\n /**\r\n * Show the overlay and the defined sub-screen.\r\n * Mainly used for help and errors\r\n * @param subScreen the name of the subScreen. Those can be defined in the configuration object\r\n */\r\n public showOverlayScreen(subScreen: string) {\r\n const template = this.templateManager.getTemplate(\"overlay\");\r\n if (!template) {\r\n return Promise.resolve(\"Overlay template not found\");\r\n }\r\n\r\n return template.show((template) => {\r\n const canvasRect = this.containerElement.getBoundingClientRect();\r\n\r\n template.parent.style.display = \"flex\";\r\n template.parent.style.width = canvasRect.width + \"px\";\r\n template.parent.style.height = canvasRect.height + \"px\";\r\n template.parent.style.opacity = \"1\";\r\n\r\n const subTemplate = this.templateManager.getTemplate(subScreen);\r\n if (!subTemplate) {\r\n return Promise.reject(subScreen + \" template not found\");\r\n }\r\n return subTemplate.show((template) => {\r\n template.parent.style.display = \"flex\";\r\n return Promise.resolve(template);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Hide the overlay screen.\r\n */\r\n public hideOverlayScreen() {\r\n const template = this.templateManager.getTemplate(\"overlay\");\r\n if (!template) {\r\n return Promise.resolve(\"Overlay template not found\");\r\n }\r\n\r\n return template.hide((template) => {\r\n template.parent.style.opacity = \"0\";\r\n const onTransitionEnd = () => {\r\n template.parent.removeEventListener(\"transitionend\", onTransitionEnd);\r\n template.parent.style.display = \"none\";\r\n };\r\n template.parent.addEventListener(\"transitionend\", onTransitionEnd);\r\n\r\n const overlays = template.parent.querySelectorAll(\".overlay\");\r\n if (overlays) {\r\n for (let i = 0; i < overlays.length; ++i) {\r\n const htmlElement = <HTMLElement>overlays.item(i);\r\n htmlElement.style.display = \"none\";\r\n }\r\n }\r\n return Promise.resolve(template);\r\n });\r\n }\r\n\r\n /**\r\n * show the viewer (in case it was hidden)\r\n *\r\n * @param visibilityFunction an optional function to execute in order to show the container\r\n */\r\n public show(visibilityFunction?: (template: Template) => Promise<Template>): Promise<Template> {\r\n const template = this.templateManager.getTemplate(\"main\");\r\n //not possible, but yet:\r\n if (!template) {\r\n return Promise.reject(\"Main template not found\");\r\n }\r\n return template.show(visibilityFunction);\r\n }\r\n\r\n /**\r\n * hide the viewer (in case it is visible)\r\n *\r\n * @param visibilityFunction an optional function to execute in order to hide the container\r\n */\r\n public hide(visibilityFunction?: (template: Template) => Promise<Template>) {\r\n const template = this.templateManager.getTemplate(\"main\");\r\n //not possible, but yet:\r\n if (!template) {\r\n return Promise.reject(\"Main template not found\");\r\n }\r\n return template.hide(visibilityFunction);\r\n }\r\n\r\n /**\r\n * Show the loading screen.\r\n * The loading screen can be configured using the configuration object\r\n */\r\n public showLoadingScreen() {\r\n const template = this.templateManager.getTemplate(\"loadingScreen\");\r\n if (!template) {\r\n return Promise.resolve(\"Loading Screen template not found\");\r\n }\r\n\r\n return template.show((template) => {\r\n const canvasRect = this.containerElement.getBoundingClientRect();\r\n // var canvasPositioning = window.getComputedStyle(this.containerElement).position;\r\n\r\n template.parent.style.display = \"flex\";\r\n template.parent.style.width = canvasRect.width + \"px\";\r\n template.parent.style.height = canvasRect.height + \"px\";\r\n template.parent.style.opacity = \"1\";\r\n // from the configuration!!!\r\n let color = \"black\";\r\n if (this.configuration.templates && this.configuration.templates.loadingScreen) {\r\n color = (this.configuration.templates.loadingScreen.params && <string>this.configuration.templates.loadingScreen.params.backgroundColor) || color;\r\n }\r\n template.parent.style.backgroundColor = color;\r\n return Promise.resolve(template);\r\n });\r\n }\r\n\r\n /**\r\n * Hide the loading screen\r\n */\r\n public hideLoadingScreen() {\r\n const template = this.templateManager.getTemplate(\"loadingScreen\");\r\n if (!template) {\r\n return Promise.resolve(\"Loading Screen template not found\");\r\n }\r\n\r\n return template.hide((template) => {\r\n template.parent.style.opacity = \"0\";\r\n const onTransitionEnd = () => {\r\n template.parent.removeEventListener(\"transitionend\", onTransitionEnd);\r\n template.parent.style.display = \"none\";\r\n };\r\n template.parent.addEventListener(\"transitionend\", onTransitionEnd);\r\n return Promise.resolve(template);\r\n });\r\n }\r\n\r\n public dispose() {\r\n this.templateManager.dispose();\r\n super.dispose();\r\n }\r\n\r\n protected _onConfigurationLoaded(configuration: ViewerConfiguration) {\r\n super._onConfigurationLoaded(configuration);\r\n\r\n this.templateManager = new TemplateManager(this.containerElement);\r\n\r\n // initialize the templates\r\n const templateConfiguration = this.configuration.templates || {};\r\n\r\n this.templateManager.initTemplate(templateConfiguration);\r\n // when done, execute onTemplatesLoaded()\r\n this.templateManager.onAllLoaded.add(() => {\r\n const canvas = this.templateManager.getCanvas();\r\n if (canvas) {\r\n this._canvas = canvas;\r\n }\r\n this._onTemplateLoaded();\r\n });\r\n }\r\n\r\n /**\r\n * An extension of the light configuration of the abstract viewer.\r\n */\r\n private _configureLights() {\r\n // labs feature - flashlight\r\n if (this.configuration.lab && this.configuration.lab.flashlight) {\r\n let lightTarget: Nullable<Vector3> | undefined;\r\n let angle = 0.5;\r\n let exponent = Math.PI / 2;\r\n if (typeof this.configuration.lab.flashlight === \"object\") {\r\n exponent = this.configuration.lab.flashlight.exponent || exponent;\r\n angle = this.configuration.lab.flashlight.angle || angle;\r\n }\r\n const flashlight = new SpotLight(\"flashlight\", Vector3.Zero(), Vector3.Zero(), exponent, angle, this.sceneManager.scene);\r\n if (typeof this.configuration.lab.flashlight === \"object\") {\r\n flashlight.intensity = this.configuration.lab.flashlight.intensity || flashlight.intensity;\r\n if (this.configuration.lab.flashlight.diffuse) {\r\n flashlight.diffuse.r = this.configuration.lab.flashlight.diffuse.r;\r\n flashlight.diffuse.g = this.configuration.lab.flashlight.diffuse.g;\r\n flashlight.diffuse.b = this.configuration.lab.flashlight.diffuse.b;\r\n }\r\n if (this.configuration.lab.flashlight.specular) {\r\n flashlight.specular.r = this.configuration.lab.flashlight.specular.r;\r\n flashlight.specular.g = this.configuration.lab.flashlight.specular.g;\r\n flashlight.specular.b = this.configuration.lab.flashlight.specular.b;\r\n }\r\n }\r\n this.sceneManager.scene.constantlyUpdateMeshUnderPointer = true;\r\n this.sceneManager.scene.onPointerObservable.add((eventData) => {\r\n if (eventData.type === 4 && eventData.pickInfo) {\r\n lightTarget = eventData.pickInfo.pickedPoint;\r\n } else {\r\n lightTarget = undefined;\r\n }\r\n });\r\n const updateFlashlightFunction = () => {\r\n if (this.sceneManager.camera && flashlight) {\r\n flashlight.position.copyFrom(this.sceneManager.camera.position);\r\n if (lightTarget) {\r\n lightTarget.subtractToRef(flashlight.position, flashlight.direction);\r\n }\r\n }\r\n };\r\n this.sceneManager.scene.registerBeforeRender(updateFlashlightFunction);\r\n this._registeredOnBeforeRenderFunctions.push(updateFlashlightFunction);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { ViewerConfiguration } from
|
|
2
|
-
import { AbstractViewer } from
|
|
3
|
-
export declare class RenderOnlyViewer extends AbstractViewer {
|
|
4
|
-
containerElement: Element;
|
|
5
|
-
constructor(containerElement: Element, initialConfiguration?: ViewerConfiguration);
|
|
6
|
-
initialize(): Promise<AbstractViewer | this>;
|
|
7
|
-
protected _prepareContainerElement(): void;
|
|
8
|
-
}
|
|
1
|
+
import type { ViewerConfiguration } from "../configuration/configuration";
|
|
2
|
+
import { AbstractViewer } from "./viewer";
|
|
3
|
+
export declare class RenderOnlyViewer extends AbstractViewer {
|
|
4
|
+
containerElement: Element;
|
|
5
|
+
constructor(containerElement: Element, initialConfiguration?: ViewerConfiguration);
|
|
6
|
+
initialize(): Promise<AbstractViewer | this>;
|
|
7
|
+
protected _prepareContainerElement(): void;
|
|
8
|
+
}
|
|
@@ -1,51 +1,44 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
})
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
RenderOnlyViewer.prototype._prepareContainerElement = function () {
|
|
47
|
-
};
|
|
48
|
-
return RenderOnlyViewer;
|
|
49
|
-
}(AbstractViewer));
|
|
50
|
-
export { RenderOnlyViewer };
|
|
1
|
+
import { __extends } from "tslib";
|
|
2
|
+
import { AbstractViewer } from "./viewer.js";
|
|
3
|
+
var RenderOnlyViewer = /** @class */ (function (_super) {
|
|
4
|
+
__extends(RenderOnlyViewer, _super);
|
|
5
|
+
function RenderOnlyViewer(containerElement, initialConfiguration) {
|
|
6
|
+
if (initialConfiguration === void 0) { initialConfiguration = {}; }
|
|
7
|
+
var _this = _super.call(this, containerElement, initialConfiguration) || this;
|
|
8
|
+
_this.containerElement = containerElement;
|
|
9
|
+
_this._canvas = containerElement;
|
|
10
|
+
return _this;
|
|
11
|
+
}
|
|
12
|
+
RenderOnlyViewer.prototype.initialize = function () {
|
|
13
|
+
var _this = this;
|
|
14
|
+
var autoLoad = typeof this.configuration.model === "string" || (this.configuration.model && this.configuration.model.url);
|
|
15
|
+
return this._initEngine()
|
|
16
|
+
.then(function (engine) {
|
|
17
|
+
return _this.onEngineInitObservable.notifyObserversWithPromise(engine);
|
|
18
|
+
})
|
|
19
|
+
.then(function () {
|
|
20
|
+
_this._initTelemetryEvents();
|
|
21
|
+
if (autoLoad) {
|
|
22
|
+
return _this.loadModel(_this.configuration.model)
|
|
23
|
+
.catch(function () { })
|
|
24
|
+
.then(function () {
|
|
25
|
+
return _this.sceneManager.scene;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return _this.sceneManager.scene || _this.sceneManager.initScene(_this.configuration.scene);
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.then(function () {
|
|
33
|
+
return _this.onInitDoneObservable.notifyObserversWithPromise(_this);
|
|
34
|
+
})
|
|
35
|
+
.catch(function (e) {
|
|
36
|
+
console.log(e.toString());
|
|
37
|
+
return _this;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
RenderOnlyViewer.prototype._prepareContainerElement = function () { };
|
|
41
|
+
return RenderOnlyViewer;
|
|
42
|
+
}(AbstractViewer));
|
|
43
|
+
export { RenderOnlyViewer };
|
|
51
44
|
//# sourceMappingURL=renderOnlyViewer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderOnlyViewer.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"renderOnlyViewer.js","sourceRoot":"","sources":["../../../../../tools/viewer/src/viewer/renderOnlyViewer.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;IAAsC,oCAAc;IAChD,0BAAmB,gBAAyB,EAAE,oBAA8C;QAA9C,qCAAA,EAAA,yBAA8C;QAA5F,YACI,kBAAM,gBAAgB,EAAE,oBAAoB,CAAC,SAEhD;QAHkB,sBAAgB,GAAhB,gBAAgB,CAAS;QAExC,KAAI,CAAC,OAAO,GAAG,gBAAqC,CAAC;;IACzD,CAAC;IACM,qCAAU,GAAjB;QAAA,iBAyBC;QAxBG,IAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5H,OAAO,IAAI,CAAC,WAAW,EAAE;aACpB,IAAI,CAAC,UAAC,MAAM;YACT,OAAO,KAAI,CAAC,sBAAsB,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC1E,CAAC,CAAC;aACD,IAAI,CAAC;YACF,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,QAAQ,EAAE;gBACV,OAAO,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,aAAa,CAAC,KAAM,CAAC;qBAC3C,KAAK,CAAC,cAAO,CAAC,CAAC;qBACf,IAAI,CAAC;oBACF,OAAO,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBACnC,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,OAAO,KAAI,CAAC,YAAY,CAAC,KAAK,IAAI,KAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAC3F;QACL,CAAC,CAAC;aACD,IAAI,CAAC;YACF,OAAO,KAAI,CAAC,oBAAoB,CAAC,0BAA0B,CAAC,KAAI,CAAC,CAAC;QACtE,CAAC,CAAC;aACD,KAAK,CAAC,UAAC,CAAC;YACL,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1B,OAAO,KAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IACX,CAAC;IACS,mDAAwB,GAAlC,cAAsC,CAAC;IAC3C,uBAAC;AAAD,CAAC,AAhCD,CAAsC,cAAc,GAgCnD","sourcesContent":["import type { ViewerConfiguration } from \"../configuration/configuration\";\r\nimport { AbstractViewer } from \"./viewer\";\r\n\r\nexport class RenderOnlyViewer extends AbstractViewer {\r\n constructor(public containerElement: Element, initialConfiguration: ViewerConfiguration = {}) {\r\n super(containerElement, initialConfiguration);\r\n this._canvas = containerElement as HTMLCanvasElement;\r\n }\r\n public initialize() {\r\n const autoLoad = typeof this.configuration.model === \"string\" || (this.configuration.model && this.configuration.model.url);\r\n return this._initEngine()\r\n .then((engine) => {\r\n return this.onEngineInitObservable.notifyObserversWithPromise(engine);\r\n })\r\n .then(() => {\r\n this._initTelemetryEvents();\r\n if (autoLoad) {\r\n return this.loadModel(this.configuration.model!)\r\n .catch(() => {})\r\n .then(() => {\r\n return this.sceneManager.scene;\r\n });\r\n } else {\r\n return this.sceneManager.scene || this.sceneManager.initScene(this.configuration.scene);\r\n }\r\n })\r\n .then(() => {\r\n return this.onInitDoneObservable.notifyObserversWithPromise(this);\r\n })\r\n .catch((e) => {\r\n console.log(e.toString());\r\n return this;\r\n });\r\n }\r\n protected _prepareContainerElement() {}\r\n}\r\n"]}
|