@babylonjs/gui 5.0.0-beta.8 → 5.0.0-beta.8-snapshot
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/2D/adtInstrumentation.d.ts +2 -2
- package/2D/adtInstrumentation.js.map +1 -1
- package/2D/advancedDynamicTexture.d.ts +9 -9
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +6 -6
- package/2D/controls/button.js +4 -4
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/checkbox.d.ts +6 -6
- package/2D/controls/checkbox.js +2 -2
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/colorpicker.d.ts +5 -5
- package/2D/controls/colorpicker.js +93 -85
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/container.d.ts +7 -7
- package/2D/controls/container.js +7 -7
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/control.d.ts +7 -7
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/displayGrid.d.ts +3 -3
- package/2D/controls/displayGrid.js +2 -2
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/ellipse.d.ts +1 -1
- package/2D/controls/ellipse.js +2 -2
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/focusableButton.d.ts +5 -5
- package/2D/controls/focusableButton.js +2 -2
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableControl.d.ts +11 -11
- package/2D/controls/focusableControl.js.map +1 -1
- package/2D/controls/grid.d.ts +2 -2
- package/2D/controls/grid.js +2 -2
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/image.d.ts +5 -5
- package/2D/controls/image.js +17 -17
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/index.js.map +1 -1
- package/2D/controls/inputPassword.d.ts +1 -1
- package/2D/controls/inputPassword.js +2 -2
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputText.d.ts +8 -8
- package/2D/controls/inputText.js +19 -17
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/line.d.ts +3 -3
- package/2D/controls/line.js +4 -4
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/multiLine.d.ts +5 -5
- package/2D/controls/multiLine.js +2 -2
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/radioButton.d.ts +4 -4
- package/2D/controls/radioButton.js +2 -2
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/rectangle.d.ts +1 -1
- package/2D/controls/rectangle.js +2 -2
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.d.ts +6 -6
- package/2D/controls/scrollViewers/scrollViewer.js +5 -5
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +5 -5
- package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.d.ts +11 -11
- package/2D/controls/selector.js +19 -14
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +3 -3
- package/2D/controls/sliders/baseSlider.js +5 -5
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +5 -5
- package/2D/controls/sliders/imageBasedSlider.js +4 -4
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageScrollBar.d.ts +3 -3
- package/2D/controls/sliders/imageScrollBar.js +5 -2
- package/2D/controls/sliders/imageScrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.d.ts +3 -3
- package/2D/controls/sliders/scrollBar.js +5 -2
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/slider.d.ts +3 -3
- package/2D/controls/sliders/slider.js +5 -5
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/stackPanel.d.ts +1 -1
- package/2D/controls/stackPanel.js +6 -4
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/textBlock.d.ts +3 -3
- package/2D/controls/textBlock.js +5 -3
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textWrapper.js.map +1 -1
- package/2D/controls/toggleButton.d.ts +3 -3
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/virtualKeyboard.d.ts +2 -2
- package/2D/controls/virtualKeyboard.js +6 -6
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/index.js.map +1 -1
- package/2D/math2D.d.ts +2 -2
- package/2D/math2D.js +2 -2
- package/2D/math2D.js.map +1 -1
- package/2D/measure.d.ts +4 -4
- package/2D/measure.js +6 -16
- package/2D/measure.js.map +1 -1
- package/2D/multiLinePoint.d.ts +3 -3
- package/2D/multiLinePoint.js +3 -3
- package/2D/multiLinePoint.js.map +1 -1
- package/2D/style.d.ts +2 -2
- package/2D/style.js.map +1 -1
- package/2D/valueAndUnit.d.ts +1 -1
- package/2D/valueAndUnit.js +4 -2
- package/2D/valueAndUnit.js.map +1 -1
- package/2D/xmlLoader.d.ts +10 -10
- package/2D/xmlLoader.js +17 -17
- package/2D/xmlLoader.js.map +1 -1
- package/3D/behaviors/defaultBehavior.d.ts +7 -7
- package/3D/behaviors/defaultBehavior.js.map +1 -1
- package/3D/controls/abstractButton3D.d.ts +2 -2
- package/3D/controls/abstractButton3D.js.map +1 -1
- package/3D/controls/button3D.d.ts +4 -4
- package/3D/controls/button3D.js.map +1 -1
- package/3D/controls/container3D.d.ts +3 -3
- package/3D/controls/container3D.js +1 -2
- package/3D/controls/container3D.js.map +1 -1
- package/3D/controls/contentDisplay3D.js.map +1 -1
- package/3D/controls/control3D.d.ts +7 -7
- package/3D/controls/control3D.js.map +1 -1
- package/3D/controls/cylinderPanel.d.ts +2 -2
- package/3D/controls/cylinderPanel.js +2 -2
- package/3D/controls/cylinderPanel.js.map +1 -1
- package/3D/controls/handMenu.d.ts +5 -5
- package/3D/controls/handMenu.js.map +1 -1
- package/3D/controls/holographicBackplate.d.ts +3 -3
- package/3D/controls/holographicBackplate.js +3 -4
- package/3D/controls/holographicBackplate.js.map +1 -1
- package/3D/controls/holographicButton.d.ts +5 -5
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.d.ts +5 -5
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/index.js.map +1 -1
- package/3D/controls/meshButton3D.d.ts +4 -4
- package/3D/controls/meshButton3D.js +1 -2
- package/3D/controls/meshButton3D.js.map +1 -1
- package/3D/controls/nearMenu.d.ts +3 -3
- package/3D/controls/nearMenu.js +3 -1
- package/3D/controls/nearMenu.js.map +1 -1
- package/3D/controls/planePanel.d.ts +1 -1
- package/3D/controls/planePanel.js.map +1 -1
- package/3D/controls/scatterPanel.d.ts +2 -2
- package/3D/controls/scatterPanel.js +1 -1
- package/3D/controls/scatterPanel.js.map +1 -1
- package/3D/controls/slider3D.d.ts +5 -5
- package/3D/controls/slider3D.js +7 -8
- package/3D/controls/slider3D.js.map +1 -1
- package/3D/controls/spherePanel.d.ts +2 -2
- package/3D/controls/spherePanel.js +2 -2
- package/3D/controls/spherePanel.js.map +1 -1
- package/3D/controls/stackPanel3D.js +3 -3
- package/3D/controls/stackPanel3D.js.map +1 -1
- package/3D/controls/touchButton3D.d.ts +5 -5
- package/3D/controls/touchButton3D.js +4 -3
- package/3D/controls/touchButton3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +5 -5
- package/3D/controls/touchHolographicButton.js +6 -7
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.d.ts +6 -6
- package/3D/controls/touchHolographicMenu.js.map +1 -1
- package/3D/controls/touchMeshButton3D.d.ts +4 -4
- package/3D/controls/touchMeshButton3D.js +1 -2
- package/3D/controls/touchMeshButton3D.js.map +1 -1
- package/3D/controls/volumeBasedPanel.d.ts +9 -9
- package/3D/controls/volumeBasedPanel.js +12 -13
- package/3D/controls/volumeBasedPanel.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +4 -4
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/3D/gizmos/index.js.map +1 -1
- package/3D/gizmos/slateGizmo.d.ts +4 -4
- package/3D/gizmos/slateGizmo.js.map +1 -1
- package/3D/gui3DManager.d.ts +7 -7
- package/3D/gui3DManager.js.map +1 -1
- package/3D/index.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.d.ts +10 -10
- package/3D/materials/fluent/fluentMaterial.js +15 -4
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluent/index.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.d.ts +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.js +4 -2
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +1 -1
- package/3D/materials/fluent/shaders/fluent.vertex.js +4 -2
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +10 -10
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +46 -11
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/index.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +4 -2
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +4 -2
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +10 -10
- package/3D/materials/fluentButton/fluentButtonMaterial.js +6 -4
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/fluentButton/index.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +4 -2
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +4 -2
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
- package/3D/materials/fluentMaterial.d.ts +1 -1
- package/3D/materials/fluentMaterial.js +1 -1
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +4 -4
- package/3D/materials/handle/handleMaterial.js.map +1 -1
- package/3D/materials/handle/index.js.map +1 -1
- package/3D/materials/handle/shaders/handle.fragment.d.ts +1 -1
- package/3D/materials/handle/shaders/handle.fragment.js +3 -1
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
- package/3D/materials/handle/shaders/handle.vertex.d.ts +1 -1
- package/3D/materials/handle/shaders/handle.vertex.js +4 -2
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
- package/3D/materials/index.js.map +1 -1
- package/3D/materials/mrdl/index.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +14 -14
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +41 -14
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +15 -15
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +87 -22
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +15 -15
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +87 -22
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +1 -1
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +4 -2
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
- package/3D/vector3WithInfo.d.ts +1 -1
- package/3D/vector3WithInfo.js.map +1 -1
- package/index.js.map +1 -1
- package/legacy/legacy.d.ts +1 -1
- package/legacy/legacy.js +3 -3
- package/legacy/legacy.js.map +1 -1
- package/package.json +21 -329
- package/readme.md +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"holographicButton.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/holographicButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { Button3D } from \"./button3D\";\r\n\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { CreatePlane } from \"@babylonjs/core/Meshes/Builders/planeBuilder\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { FadeInOutBehavior } from \"@babylonjs/core/Behaviors/Meshes/fadeInOutBehavior\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { FluentMaterial } from \"../materials/fluent/fluentMaterial\";\r\nimport { StackPanel } from \"../../2D/controls/stackPanel\";\r\nimport { Image } from \"../../2D/controls/image\";\r\nimport { TextBlock } from \"../../2D/controls/textBlock\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\nimport { DomManagement } from \"@babylonjs/core/Misc/domManagement\";\r\n\r\n/**\r\n * Class used to create a holographic button in 3D\r\n */\r\nexport class HolographicButton extends Button3D {\r\n private _backPlate: Mesh;\r\n private _textPlate: Mesh;\r\n private _frontPlate: Mesh;\r\n private _text: string;\r\n private _imageUrl: string;\r\n private _shareMaterials = true;\r\n private _frontMaterial: FluentMaterial;\r\n private _backMaterial: FluentMaterial;\r\n private _plateMaterial: StandardMaterial;\r\n private _pickedPointObserver: Nullable<Observer<Nullable<Vector3>>>;\r\n\r\n // Tooltip\r\n private _tooltipFade: Nullable<FadeInOutBehavior>;\r\n private _tooltipTextBlock: Nullable<TextBlock>;\r\n private _tooltipTexture: Nullable<AdvancedDynamicTexture>;\r\n private _tooltipMesh: Nullable<Mesh>;\r\n private _tooltipHoverObserver: Nullable<Observer<Control3D>>;\r\n private _tooltipOutObserver: Nullable<Observer<Control3D>>;\r\n\r\n private _disposeTooltip() {\r\n this._tooltipFade = null;\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.dispose();\r\n }\r\n if (this._tooltipTexture) {\r\n this._tooltipTexture.dispose();\r\n }\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.dispose();\r\n }\r\n this.onPointerEnterObservable.remove(this._tooltipHoverObserver);\r\n this.onPointerOutObservable.remove(this._tooltipOutObserver);\r\n }\r\n\r\n /**\r\n * Rendering ground id of all the mesh in the button\r\n */\r\n public set renderingGroupId(id: number) {\r\n this._backPlate.renderingGroupId = id;\r\n this._textPlate.renderingGroupId = id;\r\n this._frontPlate.renderingGroupId = id;\r\n\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.renderingGroupId = id;\r\n }\r\n }\r\n public get renderingGroupId(): number {\r\n return this._backPlate.renderingGroupId;\r\n }\r\n\r\n /**\r\n * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)\r\n */\r\n public set tooltipText(text: Nullable<string>) {\r\n if (!text) {\r\n this._disposeTooltip();\r\n return;\r\n }\r\n if (!this._tooltipFade) {\r\n const rightHandedScene = this._backPlate._scene.useRightHandedSystem;\r\n // Create tooltip with mesh and text\r\n this._tooltipMesh = CreatePlane(\"\", { size: 1 }, this._backPlate._scene);\r\n var tooltipBackground = CreatePlane(\"\", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);\r\n var mat = new StandardMaterial(\"\", this._backPlate._scene);\r\n mat.diffuseColor = Color3.FromHexString(\"#212121\");\r\n tooltipBackground.material = mat;\r\n tooltipBackground.isPickable = false;\r\n this._tooltipMesh.addChild(tooltipBackground);\r\n tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);\r\n this._tooltipMesh.scaling.y = 1 / 3;\r\n this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));\r\n this._tooltipMesh.isPickable = false;\r\n this._tooltipMesh.parent = this._backPlate;\r\n\r\n // Create text texture for the tooltip\r\n this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);\r\n this._tooltipTextBlock = new TextBlock();\r\n this._tooltipTextBlock.scaleY = 3;\r\n this._tooltipTextBlock.color = \"white\";\r\n this._tooltipTextBlock.fontSize = 130;\r\n this._tooltipTexture.addControl(this._tooltipTextBlock);\r\n\r\n // Add hover action to tooltip\r\n this._tooltipFade = new FadeInOutBehavior();\r\n this._tooltipFade.delay = 500;\r\n this._tooltipMesh.addBehavior(this._tooltipFade);\r\n this._tooltipHoverObserver = this.onPointerEnterObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(true);\r\n }\r\n });\r\n this._tooltipOutObserver = this.onPointerOutObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(false);\r\n }\r\n });\r\n }\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.text = text;\r\n }\r\n }\r\n\r\n public get tooltipText() {\r\n if (this._tooltipTextBlock) {\r\n return this._tooltipTextBlock.text;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets or sets text for the button\r\n */\r\n public get text(): string {\r\n return this._text;\r\n }\r\n\r\n public set text(value: string) {\r\n if (this._text === value) {\r\n return;\r\n }\r\n\r\n this._text = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets or sets the image url for the button\r\n */\r\n public get imageUrl(): string {\r\n return this._imageUrl;\r\n }\r\n\r\n public set imageUrl(value: string) {\r\n if (this._imageUrl === value) {\r\n return;\r\n }\r\n\r\n this._imageUrl = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets the back material used by this button\r\n */\r\n public get backMaterial(): FluentMaterial {\r\n return this._backMaterial;\r\n }\r\n\r\n /**\r\n * Gets the front material used by this button\r\n */\r\n public get frontMaterial(): FluentMaterial {\r\n return this._frontMaterial;\r\n }\r\n\r\n /**\r\n * Gets the plate material used by this button\r\n */\r\n public get plateMaterial(): StandardMaterial {\r\n return this._plateMaterial;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this button shares its material with other HolographicButtons\r\n */\r\n public get shareMaterials(): boolean {\r\n return this._shareMaterials;\r\n }\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string, shareMaterials = true) {\r\n super(name);\r\n\r\n this._shareMaterials = shareMaterials;\r\n\r\n // Default animations\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this._frontPlate.setEnabled(true);\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this._frontPlate.setEnabled(false);\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"HolographicButton\";\r\n }\r\n\r\n private _rebuildContent(): void {\r\n this._disposeFacadeTexture();\r\n\r\n let panel = new StackPanel();\r\n panel.isVertical = true;\r\n\r\n if (DomManagement.IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n let image = new Image();\r\n image.source = this._imageUrl;\r\n image.paddingTop = \"40px\";\r\n image.height = \"180px\";\r\n image.width = \"100px\";\r\n image.paddingBottom = \"40px\";\r\n panel.addControl(image);\r\n }\r\n }\r\n\r\n if (this._text) {\r\n let text = new TextBlock();\r\n text.text = this._text;\r\n text.color = \"white\";\r\n text.height = \"30px\";\r\n text.fontSize = 24;\r\n panel.addControl(text);\r\n }\r\n\r\n if (this._frontPlate) {\r\n this.content = panel;\r\n }\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n this._backPlate = CreateBox(\r\n this.name + \"BackMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n },\r\n scene\r\n );\r\n\r\n this._frontPlate = CreateBox(\r\n this.name + \"FrontMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n },\r\n scene\r\n );\r\n\r\n this._frontPlate.parent = this._backPlate;\r\n this._frontPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);\r\n this._frontPlate.isPickable = false;\r\n this._frontPlate.setEnabled(false);\r\n\r\n this._textPlate = <Mesh>super._createNode(scene);\r\n this._textPlate.parent = this._backPlate;\r\n this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);\r\n this._textPlate.isPickable = false;\r\n\r\n return this._backPlate;\r\n }\r\n\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n this._plateMaterial.emissiveTexture = facadeTexture;\r\n this._plateMaterial.opacityTexture = facadeTexture;\r\n }\r\n\r\n private _createBackMaterial(mesh: Mesh) {\r\n this._backMaterial = new FluentMaterial(this.name + \"Back Material\", mesh.getScene());\r\n this._backMaterial.renderHoverLight = true;\r\n this._pickedPointObserver = this._host.onPickedPointChangedObservable.add((pickedPoint) => {\r\n if (pickedPoint) {\r\n this._backMaterial.hoverPosition = pickedPoint;\r\n this._backMaterial.hoverColor.a = 1.0;\r\n } else {\r\n this._backMaterial.hoverColor.a = 0;\r\n }\r\n });\r\n }\r\n\r\n private _createFrontMaterial(mesh: Mesh) {\r\n this._frontMaterial = new FluentMaterial(this.name + \"Front Material\", mesh.getScene());\r\n this._frontMaterial.innerGlowColorIntensity = 0; // No inner glow\r\n this._frontMaterial.alpha = 0.5; // Additive\r\n this._frontMaterial.renderBorders = true;\r\n }\r\n\r\n private _createPlateMaterial(mesh: Mesh) {\r\n this._plateMaterial = new StandardMaterial(this.name + \"Plate Material\", mesh.getScene());\r\n this._plateMaterial.specularColor = Color3.Black();\r\n }\r\n\r\n protected _affectMaterial(mesh: Mesh) {\r\n // Back\r\n if (this._shareMaterials) {\r\n if (!this._host._sharedMaterials[\"backFluentMaterial\"]) {\r\n this._createBackMaterial(mesh);\r\n this._host._sharedMaterials[\"backFluentMaterial\"] = this._backMaterial;\r\n } else {\r\n this._backMaterial = this._host._sharedMaterials[\"backFluentMaterial\"] as FluentMaterial;\r\n }\r\n\r\n // Front\r\n if (!this._host._sharedMaterials[\"frontFluentMaterial\"]) {\r\n this._createFrontMaterial(mesh);\r\n this._host._sharedMaterials[\"frontFluentMaterial\"] = this._frontMaterial;\r\n } else {\r\n this._frontMaterial = this._host._sharedMaterials[\"frontFluentMaterial\"] as FluentMaterial;\r\n }\r\n } else {\r\n this._createBackMaterial(mesh);\r\n this._createFrontMaterial(mesh);\r\n }\r\n\r\n this._createPlateMaterial(mesh);\r\n this._backPlate.material = this._backMaterial;\r\n this._frontPlate.material = this._frontMaterial;\r\n this._textPlate.material = this._plateMaterial;\r\n\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose(); // will dispose main mesh ie. back plate\r\n\r\n this._disposeTooltip();\r\n\r\n if (!this.shareMaterials) {\r\n this._backMaterial.dispose();\r\n this._frontMaterial.dispose();\r\n this._plateMaterial.dispose();\r\n\r\n if (this._pickedPointObserver) {\r\n this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);\r\n this._pickedPointObserver = null;\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"holographicButton.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/holographicButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { Button3D } from \"./button3D\";\r\n\r\nimport { Nullable } from \"core/types\";\r\nimport { Observer } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { StandardMaterial } from \"core/Materials/standardMaterial\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport { CreatePlane } from \"core/Meshes/Builders/planeBuilder\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { FadeInOutBehavior } from \"core/Behaviors/Meshes/fadeInOutBehavior\";\r\nimport { Scene } from \"core/scene\";\r\n\r\nimport { FluentMaterial } from \"../materials/fluent/fluentMaterial\";\r\nimport { StackPanel } from \"../../2D/controls/stackPanel\";\r\nimport { Image } from \"../../2D/controls/image\";\r\nimport { TextBlock } from \"../../2D/controls/textBlock\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Color3 } from \"core/Maths/math.color\";\r\nimport { DomManagement } from \"core/Misc/domManagement\";\r\n\r\n/**\r\n * Class used to create a holographic button in 3D\r\n */\r\nexport class HolographicButton extends Button3D {\r\n private _backPlate: Mesh;\r\n private _textPlate: Mesh;\r\n private _frontPlate: Mesh;\r\n private _text: string;\r\n private _imageUrl: string;\r\n private _shareMaterials = true;\r\n private _frontMaterial: FluentMaterial;\r\n private _backMaterial: FluentMaterial;\r\n private _plateMaterial: StandardMaterial;\r\n private _pickedPointObserver: Nullable<Observer<Nullable<Vector3>>>;\r\n\r\n // Tooltip\r\n private _tooltipFade: Nullable<FadeInOutBehavior>;\r\n private _tooltipTextBlock: Nullable<TextBlock>;\r\n private _tooltipTexture: Nullable<AdvancedDynamicTexture>;\r\n private _tooltipMesh: Nullable<Mesh>;\r\n private _tooltipHoverObserver: Nullable<Observer<Control3D>>;\r\n private _tooltipOutObserver: Nullable<Observer<Control3D>>;\r\n\r\n private _disposeTooltip() {\r\n this._tooltipFade = null;\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.dispose();\r\n }\r\n if (this._tooltipTexture) {\r\n this._tooltipTexture.dispose();\r\n }\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.dispose();\r\n }\r\n this.onPointerEnterObservable.remove(this._tooltipHoverObserver);\r\n this.onPointerOutObservable.remove(this._tooltipOutObserver);\r\n }\r\n\r\n /**\r\n * Rendering ground id of all the mesh in the button\r\n */\r\n public set renderingGroupId(id: number) {\r\n this._backPlate.renderingGroupId = id;\r\n this._textPlate.renderingGroupId = id;\r\n this._frontPlate.renderingGroupId = id;\r\n\r\n if (this._tooltipMesh) {\r\n this._tooltipMesh.renderingGroupId = id;\r\n }\r\n }\r\n public get renderingGroupId(): number {\r\n return this._backPlate.renderingGroupId;\r\n }\r\n\r\n /**\r\n * Text to be displayed on the tooltip shown when hovering on the button. When set to null tooltip is disabled. (Default: null)\r\n */\r\n public set tooltipText(text: Nullable<string>) {\r\n if (!text) {\r\n this._disposeTooltip();\r\n return;\r\n }\r\n if (!this._tooltipFade) {\r\n const rightHandedScene = this._backPlate._scene.useRightHandedSystem;\r\n // Create tooltip with mesh and text\r\n this._tooltipMesh = CreatePlane(\"\", { size: 1 }, this._backPlate._scene);\r\n const tooltipBackground = CreatePlane(\"\", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);\r\n const mat = new StandardMaterial(\"\", this._backPlate._scene);\r\n mat.diffuseColor = Color3.FromHexString(\"#212121\");\r\n tooltipBackground.material = mat;\r\n tooltipBackground.isPickable = false;\r\n this._tooltipMesh.addChild(tooltipBackground);\r\n tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);\r\n this._tooltipMesh.scaling.y = 1 / 3;\r\n this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));\r\n this._tooltipMesh.isPickable = false;\r\n this._tooltipMesh.parent = this._backPlate;\r\n\r\n // Create text texture for the tooltip\r\n this._tooltipTexture = AdvancedDynamicTexture.CreateForMesh(this._tooltipMesh);\r\n this._tooltipTextBlock = new TextBlock();\r\n this._tooltipTextBlock.scaleY = 3;\r\n this._tooltipTextBlock.color = \"white\";\r\n this._tooltipTextBlock.fontSize = 130;\r\n this._tooltipTexture.addControl(this._tooltipTextBlock);\r\n\r\n // Add hover action to tooltip\r\n this._tooltipFade = new FadeInOutBehavior();\r\n this._tooltipFade.delay = 500;\r\n this._tooltipMesh.addBehavior(this._tooltipFade);\r\n this._tooltipHoverObserver = this.onPointerEnterObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(true);\r\n }\r\n });\r\n this._tooltipOutObserver = this.onPointerOutObservable.add(() => {\r\n if (this._tooltipFade) {\r\n this._tooltipFade.fadeIn(false);\r\n }\r\n });\r\n }\r\n if (this._tooltipTextBlock) {\r\n this._tooltipTextBlock.text = text;\r\n }\r\n }\r\n\r\n public get tooltipText() {\r\n if (this._tooltipTextBlock) {\r\n return this._tooltipTextBlock.text;\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets or sets text for the button\r\n */\r\n public get text(): string {\r\n return this._text;\r\n }\r\n\r\n public set text(value: string) {\r\n if (this._text === value) {\r\n return;\r\n }\r\n\r\n this._text = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets or sets the image url for the button\r\n */\r\n public get imageUrl(): string {\r\n return this._imageUrl;\r\n }\r\n\r\n public set imageUrl(value: string) {\r\n if (this._imageUrl === value) {\r\n return;\r\n }\r\n\r\n this._imageUrl = value;\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Gets the back material used by this button\r\n */\r\n public get backMaterial(): FluentMaterial {\r\n return this._backMaterial;\r\n }\r\n\r\n /**\r\n * Gets the front material used by this button\r\n */\r\n public get frontMaterial(): FluentMaterial {\r\n return this._frontMaterial;\r\n }\r\n\r\n /**\r\n * Gets the plate material used by this button\r\n */\r\n public get plateMaterial(): StandardMaterial {\r\n return this._plateMaterial;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if this button shares its material with other HolographicButtons\r\n */\r\n public get shareMaterials(): boolean {\r\n return this._shareMaterials;\r\n }\r\n\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string, shareMaterials = true) {\r\n super(name);\r\n\r\n this._shareMaterials = shareMaterials;\r\n\r\n // Default animations\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this._frontPlate.setEnabled(true);\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this._frontPlate.setEnabled(false);\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"HolographicButton\";\r\n }\r\n\r\n private _rebuildContent(): void {\r\n this._disposeFacadeTexture();\r\n\r\n const panel = new StackPanel();\r\n panel.isVertical = true;\r\n\r\n if (DomManagement.IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n const image = new Image();\r\n image.source = this._imageUrl;\r\n image.paddingTop = \"40px\";\r\n image.height = \"180px\";\r\n image.width = \"100px\";\r\n image.paddingBottom = \"40px\";\r\n panel.addControl(image);\r\n }\r\n }\r\n\r\n if (this._text) {\r\n const text = new TextBlock();\r\n text.text = this._text;\r\n text.color = \"white\";\r\n text.height = \"30px\";\r\n text.fontSize = 24;\r\n panel.addControl(text);\r\n }\r\n\r\n if (this._frontPlate) {\r\n this.content = panel;\r\n }\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n this._backPlate = CreateBox(\r\n this.name + \"BackMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n },\r\n scene\r\n );\r\n\r\n this._frontPlate = CreateBox(\r\n this.name + \"FrontMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n },\r\n scene\r\n );\r\n\r\n this._frontPlate.parent = this._backPlate;\r\n this._frontPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);\r\n this._frontPlate.isPickable = false;\r\n this._frontPlate.setEnabled(false);\r\n\r\n this._textPlate = <Mesh>super._createNode(scene);\r\n this._textPlate.parent = this._backPlate;\r\n this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);\r\n this._textPlate.isPickable = false;\r\n\r\n return this._backPlate;\r\n }\r\n\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n this._plateMaterial.emissiveTexture = facadeTexture;\r\n this._plateMaterial.opacityTexture = facadeTexture;\r\n }\r\n\r\n private _createBackMaterial(mesh: Mesh) {\r\n this._backMaterial = new FluentMaterial(this.name + \"Back Material\", mesh.getScene());\r\n this._backMaterial.renderHoverLight = true;\r\n this._pickedPointObserver = this._host.onPickedPointChangedObservable.add((pickedPoint) => {\r\n if (pickedPoint) {\r\n this._backMaterial.hoverPosition = pickedPoint;\r\n this._backMaterial.hoverColor.a = 1.0;\r\n } else {\r\n this._backMaterial.hoverColor.a = 0;\r\n }\r\n });\r\n }\r\n\r\n private _createFrontMaterial(mesh: Mesh) {\r\n this._frontMaterial = new FluentMaterial(this.name + \"Front Material\", mesh.getScene());\r\n this._frontMaterial.innerGlowColorIntensity = 0; // No inner glow\r\n this._frontMaterial.alpha = 0.5; // Additive\r\n this._frontMaterial.renderBorders = true;\r\n }\r\n\r\n private _createPlateMaterial(mesh: Mesh) {\r\n this._plateMaterial = new StandardMaterial(this.name + \"Plate Material\", mesh.getScene());\r\n this._plateMaterial.specularColor = Color3.Black();\r\n }\r\n\r\n protected _affectMaterial(mesh: Mesh) {\r\n // Back\r\n if (this._shareMaterials) {\r\n if (!this._host._sharedMaterials[\"backFluentMaterial\"]) {\r\n this._createBackMaterial(mesh);\r\n this._host._sharedMaterials[\"backFluentMaterial\"] = this._backMaterial;\r\n } else {\r\n this._backMaterial = this._host._sharedMaterials[\"backFluentMaterial\"] as FluentMaterial;\r\n }\r\n\r\n // Front\r\n if (!this._host._sharedMaterials[\"frontFluentMaterial\"]) {\r\n this._createFrontMaterial(mesh);\r\n this._host._sharedMaterials[\"frontFluentMaterial\"] = this._frontMaterial;\r\n } else {\r\n this._frontMaterial = this._host._sharedMaterials[\"frontFluentMaterial\"] as FluentMaterial;\r\n }\r\n } else {\r\n this._createBackMaterial(mesh);\r\n this._createFrontMaterial(mesh);\r\n }\r\n\r\n this._createPlateMaterial(mesh);\r\n this._backPlate.material = this._backMaterial;\r\n this._frontPlate.material = this._frontMaterial;\r\n this._textPlate.material = this._plateMaterial;\r\n\r\n this._rebuildContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose(); // will dispose main mesh ie. back plate\r\n\r\n this._disposeTooltip();\r\n\r\n if (!this.shareMaterials) {\r\n this._backMaterial.dispose();\r\n this._frontMaterial.dispose();\r\n this._plateMaterial.dispose();\r\n\r\n if (this._pickedPointObserver) {\r\n this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);\r\n this._pickedPointObserver = null;\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
2
|
-
import { Scene } from "@babylonjs/core/scene";
|
|
3
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
4
|
-
import { Mesh } from "@babylonjs/core/Meshes/mesh";
|
|
1
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
2
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
|
3
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
4
|
+
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
5
5
|
import { TouchHolographicButton } from "./touchHolographicButton";
|
|
6
|
-
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
6
|
+
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
7
7
|
import { ContentDisplay3D } from "./contentDisplay3D";
|
|
8
8
|
import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
|
|
9
9
|
import { SlateGizmo } from "../gizmos/slateGizmo";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"holographicSlate.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/holographicSlate.ts"],"names":[],"mappings":"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","sourcesContent":["import { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { FluentMaterial } from \"../materials/fluent/fluentMaterial\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Matrix, Quaternion, Vector2, Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { ContentDisplay3D } from \"./contentDisplay3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Image } from \"../../2D/controls/image\";\r\nimport { SlateGizmo } from \"../gizmos/slateGizmo\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { Viewport } from \"@babylonjs/core/Maths/math.viewport\";\r\nimport { PointerDragBehavior } from \"@babylonjs/core/Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Scalar } from \"@babylonjs/core/Maths/math.scalar\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\nimport { FluentBackplateMaterial } from \"../materials/fluentBackplate/fluentBackplateMaterial\";\r\nimport { DomManagement } from \"@babylonjs/core/Misc/domManagement\";\r\nimport { Vector4 } from \"@babylonjs/core/Maths/math\";\r\n\r\n/**\r\n * Class used to create a holographic slate\r\n * @since 5.0.0\r\n */\r\nexport class HolographicSlate extends ContentDisplay3D {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n public static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n public static CLOSE_ICON_FILENAME: string = \"IconClose.png\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n public static FOLLOW_ICON_FILENAME: string = \"IconFollowMe.png\";\r\n\r\n /**\r\n * Dimensions of the slate\r\n */\r\n public dimensions = new Vector3(21.875, 12.5, 0.001);\r\n\r\n /**\r\n * Minimum dimensions of the slate\r\n */\r\n public minDimensions = new Vector3(15.625, 6.25, 0.001);\r\n\r\n /**\r\n * Default dimensions of the slate\r\n */\r\n public readonly defaultDimensions = this.dimensions.clone();\r\n\r\n /**\r\n * Dimensions of the backplate\r\n */\r\n public backplateDimensions = new Vector3(21.875, 0.625, 0.001);\r\n\r\n /**\r\n * Margin between backplate and contentplate\r\n */\r\n public backPlateMargin = 0.005;\r\n\r\n /**\r\n * Origin in local coordinates (top left corner)\r\n */\r\n public origin = new Vector3(0, 0, 0);\r\n\r\n private _backPlateMaterial: FluentBackplateMaterial;\r\n private _contentMaterial: FluentMaterial;\r\n private _pickedPointObserver: Nullable<Observer<Nullable<Vector3>>>;\r\n private _positionChangedObserver: Nullable<Observer<{ position: Vector3 }>>;\r\n private _imageUrl: string;\r\n\r\n private _contentViewport: Viewport;\r\n private _contentDragBehavior: PointerDragBehavior;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the slate\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n /** @hidden */\r\n public _gizmo: SlateGizmo;\r\n\r\n protected _backPlate: Mesh;\r\n protected _contentPlate: Mesh;\r\n protected _followButton: TouchHolographicButton;\r\n protected _closeButton: TouchHolographicButton;\r\n protected _contentScaleRatio = 1;\r\n\r\n /**\r\n * Rendering ground id of all the mesh in the button\r\n */\r\n public set renderingGroupId(id: number) {\r\n this._backPlate.renderingGroupId = id;\r\n this._contentPlate.renderingGroupId = id;\r\n }\r\n public get renderingGroupId(): number {\r\n return this._backPlate.renderingGroupId;\r\n }\r\n\r\n /**\r\n * Gets or sets the image url for the button\r\n */\r\n public get imageUrl(): string {\r\n return this._imageUrl;\r\n }\r\n\r\n public set imageUrl(value: string) {\r\n if (this._imageUrl === value) {\r\n return;\r\n }\r\n\r\n this._imageUrl = value;\r\n this._rebuildContent();\r\n this._resetContentPositionAndZoom();\r\n this._applyContentViewport();\r\n }\r\n\r\n /**\r\n * Creates a new slate\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._followButton = new TouchHolographicButton(\"followButton\" + this.name);\r\n this._closeButton = new TouchHolographicButton(\"closeButton\" + this.name);\r\n\r\n this._contentViewport = new Viewport(0, 0, 1, 1);\r\n this._contentDragBehavior = new PointerDragBehavior({\r\n dragPlaneNormal: new Vector3(0, 0, -1),\r\n });\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n this._contentMaterial.albedoTexture = facadeTexture;\r\n\r\n // We should have a content plate by this point, but check for safety\r\n if (this._contentPlate) {\r\n facadeTexture.attachToMesh(this._contentPlate, true);\r\n }\r\n }\r\n\r\n private _rebuildContent(): void {\r\n this._disposeFacadeTexture();\r\n\r\n if (DomManagement.IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n let image = new Image();\r\n image.source = this._imageUrl;\r\n\r\n if (this._contentPlate) {\r\n this.content = image;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _addControl(control: Control3D): void {\r\n control._host = this._host;\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n }\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"HolographicSlate\";\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n public _positionElements() {\r\n const followButtonMesh = this._followButton.mesh;\r\n const closeButtonMesh = this._closeButton.mesh;\r\n const backPlate = this._backPlate;\r\n const contentPlate = this._contentPlate;\r\n\r\n if (followButtonMesh && closeButtonMesh && backPlate) {\r\n // World size of a button with 1 scaling\r\n const buttonBaseSize = 1;\r\n\r\n // Buttons take full backPlate on Y axis\r\n const backPlateYScale = this.backplateDimensions.y / buttonBaseSize;\r\n\r\n closeButtonMesh.scaling.setAll(backPlateYScale);\r\n followButtonMesh.scaling.setAll(backPlateYScale);\r\n closeButtonMesh.position\r\n .copyFromFloats(\r\n this.backplateDimensions.x - backPlateYScale / 2,\r\n -this.backplateDimensions.y / 2,\r\n (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1)\r\n )\r\n .addInPlace(this.origin);\r\n followButtonMesh.position\r\n .copyFromFloats(\r\n this.backplateDimensions.x - (3 * backPlateYScale) / 2,\r\n -this.backplateDimensions.y / 2,\r\n (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1)\r\n )\r\n .addInPlace(this.origin);\r\n\r\n const contentPlateHeight = this.dimensions.y - this.backplateDimensions.y - this.backPlateMargin;\r\n backPlate.scaling.copyFrom(this.backplateDimensions);\r\n contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, this.dimensions.z);\r\n backPlate.position.copyFromFloats(this.backplateDimensions.x / 2, -(this.backplateDimensions.y / 2), 0).addInPlace(this.origin);\r\n contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.backplateDimensions.y + this.backPlateMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);\r\n\r\n const aspectRatio = this.dimensions.x / contentPlateHeight;\r\n this._contentViewport.width = this._contentScaleRatio;\r\n this._contentViewport.height = this._contentScaleRatio / aspectRatio;\r\n\r\n this._applyContentViewport();\r\n }\r\n }\r\n\r\n private _applyContentViewport() {\r\n if (this._contentPlate?.material && (this._contentPlate.material as FluentMaterial).albedoTexture) {\r\n const tex = (this._contentPlate.material as FluentMaterial).albedoTexture as Texture;\r\n tex.uScale = this._contentScaleRatio;\r\n tex.vScale = (this._contentScaleRatio / this._contentViewport.width) * this._contentViewport.height;\r\n tex.uOffset = this._contentViewport.x;\r\n tex.vOffset = this._contentViewport.y;\r\n }\r\n }\r\n\r\n private _resetContentPositionAndZoom() {\r\n this._contentViewport.x = 0;\r\n this._contentViewport.y = 1 - this._contentViewport.height / this._contentViewport.width;\r\n this._contentScaleRatio = 1;\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n public _updatePivot() {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n // Update pivot point so it is at the center of geometry\r\n const center = this.dimensions.scale(0.5);\r\n // As origin is topleft corner in 2D, dimensions are calculated towards bottom right corner, thus y axis is downwards\r\n center.y *= -1;\r\n center.addInPlace(this.origin);\r\n center.z = 0;\r\n\r\n const origin = new Vector3(0, 0, 0);\r\n Vector3.TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);\r\n this.mesh.setPivotPoint(center);\r\n const origin2 = new Vector3(0, 0, 0);\r\n Vector3.TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);\r\n this.mesh.position.addInPlace(origin).subtractInPlace(origin2);\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n const node = new Mesh(\"slate\" + this.name, scene);\r\n\r\n this._backPlate = CreateBox(\"backPlate\" + this.name, { size: 1 }, scene);\r\n const faceUV = new Array(6).fill(new Vector4(0, 0, 1, 1));\r\n if (scene.useRightHandedSystem) {\r\n faceUV[0].copyFromFloats(0, 1, 1, 0);\r\n }\r\n this._contentPlate = CreateBox(\"contentPlate\" + this.name, { size: 1, faceUV }, scene);\r\n\r\n this._backPlate.parent = node;\r\n this._backPlate.isNearGrabbable = true;\r\n this._contentPlate.parent = node;\r\n this._attachContentPlateBehavior();\r\n\r\n this._addControl(this._followButton);\r\n this._addControl(this._closeButton);\r\n\r\n const followButtonMesh = this._followButton.mesh!;\r\n const closeButtonMesh = this._closeButton.mesh!;\r\n followButtonMesh.parent = node;\r\n closeButtonMesh.parent = node;\r\n\r\n this._positionElements();\r\n\r\n this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;\r\n this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;\r\n\r\n this._followButton.isBackplateVisible = false;\r\n this._closeButton.isBackplateVisible = false;\r\n\r\n this._followButton.onPointerClickObservable.add(() => {\r\n this._defaultBehavior.followBehaviorEnabled = !this._defaultBehavior.followBehaviorEnabled;\r\n if (this._defaultBehavior.followBehaviorEnabled) {\r\n this._defaultBehavior.followBehavior.recenter();\r\n }\r\n });\r\n\r\n this._closeButton.onPointerClickObservable.add(() => {\r\n this.dispose();\r\n });\r\n\r\n node.rotationQuaternion = Quaternion.Identity();\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n private _attachContentPlateBehavior() {\r\n this._contentDragBehavior.attach(this._contentPlate);\r\n this._contentDragBehavior.moveAttached = false;\r\n this._contentDragBehavior.useObjectOrientationForDragging = true;\r\n this._contentDragBehavior.updateDragPlane = false;\r\n\r\n const origin = new Vector3();\r\n const worldDimensions = new Vector3();\r\n const upWorld = new Vector3();\r\n const rightWorld = new Vector3();\r\n const projectedOffset = new Vector2();\r\n let startViewport: Viewport;\r\n let worldMatrix: Matrix;\r\n\r\n this._contentDragBehavior.onDragStartObservable.add((event) => {\r\n if (!this.node) {\r\n return;\r\n }\r\n startViewport = this._contentViewport.clone();\r\n worldMatrix = this.node.computeWorldMatrix(true);\r\n\r\n origin.copyFrom(event.dragPlanePoint);\r\n worldDimensions.copyFrom(this.dimensions);\r\n worldDimensions.y -= this.backplateDimensions.y + this.backPlateMargin;\r\n Vector3.TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);\r\n upWorld.copyFromFloats(0, 1, 0);\r\n Vector3.TransformNormalToRef(upWorld, worldMatrix, upWorld);\r\n rightWorld.copyFromFloats(1, 0, 0);\r\n Vector3.TransformNormalToRef(rightWorld, worldMatrix, rightWorld);\r\n upWorld.normalize();\r\n upWorld.scaleInPlace(1 / Vector3.Dot(upWorld, worldDimensions));\r\n rightWorld.normalize();\r\n rightWorld.scaleInPlace(1 / Vector3.Dot(rightWorld, worldDimensions));\r\n });\r\n\r\n const offset = new Vector3();\r\n this._contentDragBehavior.onDragObservable.add((event) => {\r\n offset.copyFrom(event.dragPlanePoint);\r\n offset.subtractInPlace(origin);\r\n projectedOffset.copyFromFloats(Vector3.Dot(offset, rightWorld), Vector3.Dot(offset, upWorld));\r\n\r\n // By default, content takes full width available and height is cropped to keep aspect ratio\r\n this._contentViewport.x = Scalar.Clamp(startViewport.x - offset.x, 0, 1 - this._contentViewport.width * this._contentScaleRatio);\r\n this._contentViewport.y = Scalar.Clamp(startViewport.y - offset.y, 0, 1 - this._contentViewport.height * this._contentScaleRatio);\r\n this._applyContentViewport();\r\n });\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n // TODO share materials\r\n this._backPlateMaterial = new FluentBackplateMaterial(`${this.name} plateMaterial`, mesh.getScene());\r\n\r\n this._pickedPointObserver = this._host.onPickedPointChangedObservable.add((pickedPoint) => {\r\n // if (pickedPoint) {\r\n // this._backPlateMaterial. = pickedPoint;\r\n // this._backPlateMaterial.hoverColor.a = 1.0;\r\n // } else {\r\n // this._backPlateMaterial.hoverColor.a = 0;\r\n // }\r\n });\r\n\r\n this._contentMaterial = new FluentMaterial(this.name + \"contentMaterial\", mesh.getScene());\r\n this._contentMaterial.renderBorders = true;\r\n\r\n this._backPlate.material = this._backPlateMaterial;\r\n this._contentPlate.material = this._contentMaterial;\r\n\r\n this._rebuildContent();\r\n this._applyContentViewport();\r\n }\r\n\r\n /** @hidden **/\r\n public _prepareNode(scene: Scene): void {\r\n super._prepareNode(scene);\r\n this._gizmo = new SlateGizmo(this._host.utilityLayer!);\r\n this._gizmo.attachedSlate = this;\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._defaultBehavior.attach(this.node as Mesh, [this._backPlate]);\r\n\r\n this._positionChangedObserver = this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.add(() => {\r\n this._gizmo.updateBoundingBox();\r\n });\r\n\r\n this._updatePivot();\r\n this.resetDefaultAspectAndPose();\r\n }\r\n\r\n /**\r\n * Resets the aspect and pose of the slate so it is right in front of the active camera, facing towards it.\r\n */\r\n public resetDefaultAspectAndPose() {\r\n if (!this._host || !this._host.utilityLayer || !this.node) {\r\n return;\r\n }\r\n const scene = this._host.utilityLayer.utilityLayerScene;\r\n const camera = scene.activeCamera;\r\n if (camera) {\r\n const worldMatrix = camera.getWorldMatrix();\r\n const backward = Vector3.TransformNormal(Vector3.Backward(scene.useRightHandedSystem), worldMatrix);\r\n this.dimensions.copyFrom(this.defaultDimensions);\r\n this.origin.setAll(0);\r\n this._gizmo.updateBoundingBox();\r\n const pivot = this.node.getAbsolutePivotPoint();\r\n this.node.position.copyFrom(camera.position).subtractInPlace(backward).subtractInPlace(pivot);\r\n this.node.rotationQuaternion = Quaternion.FromLookDirectionLH(backward, new Vector3(0, 1, 0));\r\n }\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this._backPlateMaterial.dispose();\r\n this._contentMaterial.dispose();\r\n\r\n this._backPlate.dispose();\r\n this._contentPlate.dispose();\r\n\r\n this._followButton.dispose();\r\n this._closeButton.dispose();\r\n\r\n this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);\r\n this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.remove(this._positionChangedObserver);\r\n\r\n this._defaultBehavior.detach();\r\n this._gizmo.dispose();\r\n this._contentDragBehavior.detach();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"holographicSlate.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/holographicSlate.ts"],"names":[],"mappings":"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","sourcesContent":["import { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { Scene } from \"core/scene\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport { FluentMaterial } from \"../materials/fluent/fluentMaterial\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { Nullable } from \"core/types\";\r\nimport { Observer } from \"core/Misc/observable\";\r\nimport { Matrix, Quaternion, Vector2, Vector3 } from \"core/Maths/math.vector\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { ContentDisplay3D } from \"./contentDisplay3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Image } from \"../../2D/controls/image\";\r\nimport { SlateGizmo } from \"../gizmos/slateGizmo\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { Viewport } from \"core/Maths/math.viewport\";\r\nimport { PointerDragBehavior } from \"core/Behaviors/Meshes/pointerDragBehavior\";\r\nimport { Scalar } from \"core/Maths/math.scalar\";\r\nimport { Texture } from \"core/Materials/Textures/texture\";\r\nimport { FluentBackplateMaterial } from \"../materials/fluentBackplate/fluentBackplateMaterial\";\r\nimport { DomManagement } from \"core/Misc/domManagement\";\r\nimport { Vector4 } from \"core/Maths/math\";\r\n\r\n/**\r\n * Class used to create a holographic slate\r\n * @since 5.0.0\r\n */\r\nexport class HolographicSlate extends ContentDisplay3D {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n public static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n public static CLOSE_ICON_FILENAME: string = \"IconClose.png\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n public static FOLLOW_ICON_FILENAME: string = \"IconFollowMe.png\";\r\n\r\n /**\r\n * Dimensions of the slate\r\n */\r\n public dimensions = new Vector3(21.875, 12.5, 0.001);\r\n\r\n /**\r\n * Minimum dimensions of the slate\r\n */\r\n public minDimensions = new Vector3(15.625, 6.25, 0.001);\r\n\r\n /**\r\n * Default dimensions of the slate\r\n */\r\n public readonly defaultDimensions = this.dimensions.clone();\r\n\r\n /**\r\n * Dimensions of the backplate\r\n */\r\n public backplateDimensions = new Vector3(21.875, 0.625, 0.001);\r\n\r\n /**\r\n * Margin between backplate and contentplate\r\n */\r\n public backPlateMargin = 0.005;\r\n\r\n /**\r\n * Origin in local coordinates (top left corner)\r\n */\r\n public origin = new Vector3(0, 0, 0);\r\n\r\n private _backPlateMaterial: FluentBackplateMaterial;\r\n private _contentMaterial: FluentMaterial;\r\n private _pickedPointObserver: Nullable<Observer<Nullable<Vector3>>>;\r\n private _positionChangedObserver: Nullable<Observer<{ position: Vector3 }>>;\r\n private _imageUrl: string;\r\n\r\n private _contentViewport: Viewport;\r\n private _contentDragBehavior: PointerDragBehavior;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the slate\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n /** @hidden */\r\n public _gizmo: SlateGizmo;\r\n\r\n protected _backPlate: Mesh;\r\n protected _contentPlate: Mesh;\r\n protected _followButton: TouchHolographicButton;\r\n protected _closeButton: TouchHolographicButton;\r\n protected _contentScaleRatio = 1;\r\n\r\n /**\r\n * Rendering ground id of all the mesh in the button\r\n */\r\n public set renderingGroupId(id: number) {\r\n this._backPlate.renderingGroupId = id;\r\n this._contentPlate.renderingGroupId = id;\r\n }\r\n public get renderingGroupId(): number {\r\n return this._backPlate.renderingGroupId;\r\n }\r\n\r\n /**\r\n * Gets or sets the image url for the button\r\n */\r\n public get imageUrl(): string {\r\n return this._imageUrl;\r\n }\r\n\r\n public set imageUrl(value: string) {\r\n if (this._imageUrl === value) {\r\n return;\r\n }\r\n\r\n this._imageUrl = value;\r\n this._rebuildContent();\r\n this._resetContentPositionAndZoom();\r\n this._applyContentViewport();\r\n }\r\n\r\n /**\r\n * Creates a new slate\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._followButton = new TouchHolographicButton(\"followButton\" + this.name);\r\n this._closeButton = new TouchHolographicButton(\"closeButton\" + this.name);\r\n\r\n this._contentViewport = new Viewport(0, 0, 1, 1);\r\n this._contentDragBehavior = new PointerDragBehavior({\r\n dragPlaneNormal: new Vector3(0, 0, -1),\r\n });\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n this._contentMaterial.albedoTexture = facadeTexture;\r\n\r\n // We should have a content plate by this point, but check for safety\r\n if (this._contentPlate) {\r\n facadeTexture.attachToMesh(this._contentPlate, true);\r\n }\r\n }\r\n\r\n private _rebuildContent(): void {\r\n this._disposeFacadeTexture();\r\n\r\n if (DomManagement.IsDocumentAvailable() && !!document.createElement) {\r\n if (this._imageUrl) {\r\n const image = new Image();\r\n image.source = this._imageUrl;\r\n\r\n if (this._contentPlate) {\r\n this.content = image;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private _addControl(control: Control3D): void {\r\n control._host = this._host;\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n }\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"HolographicSlate\";\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n public _positionElements() {\r\n const followButtonMesh = this._followButton.mesh;\r\n const closeButtonMesh = this._closeButton.mesh;\r\n const backPlate = this._backPlate;\r\n const contentPlate = this._contentPlate;\r\n\r\n if (followButtonMesh && closeButtonMesh && backPlate) {\r\n // World size of a button with 1 scaling\r\n const buttonBaseSize = 1;\r\n\r\n // Buttons take full backPlate on Y axis\r\n const backPlateYScale = this.backplateDimensions.y / buttonBaseSize;\r\n\r\n closeButtonMesh.scaling.setAll(backPlateYScale);\r\n followButtonMesh.scaling.setAll(backPlateYScale);\r\n closeButtonMesh.position\r\n .copyFromFloats(\r\n this.backplateDimensions.x - backPlateYScale / 2,\r\n -this.backplateDimensions.y / 2,\r\n (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1)\r\n )\r\n .addInPlace(this.origin);\r\n followButtonMesh.position\r\n .copyFromFloats(\r\n this.backplateDimensions.x - (3 * backPlateYScale) / 2,\r\n -this.backplateDimensions.y / 2,\r\n (-this.backplateDimensions.z / 2) * (this._host.scene.useRightHandedSystem ? -1 : 1)\r\n )\r\n .addInPlace(this.origin);\r\n\r\n const contentPlateHeight = this.dimensions.y - this.backplateDimensions.y - this.backPlateMargin;\r\n backPlate.scaling.copyFrom(this.backplateDimensions);\r\n contentPlate.scaling.copyFromFloats(this.dimensions.x, contentPlateHeight, this.dimensions.z);\r\n backPlate.position.copyFromFloats(this.backplateDimensions.x / 2, -(this.backplateDimensions.y / 2), 0).addInPlace(this.origin);\r\n contentPlate.position.copyFromFloats(this.dimensions.x / 2, -(this.backplateDimensions.y + this.backPlateMargin + contentPlateHeight / 2), 0).addInPlace(this.origin);\r\n\r\n const aspectRatio = this.dimensions.x / contentPlateHeight;\r\n this._contentViewport.width = this._contentScaleRatio;\r\n this._contentViewport.height = this._contentScaleRatio / aspectRatio;\r\n\r\n this._applyContentViewport();\r\n }\r\n }\r\n\r\n private _applyContentViewport() {\r\n if (this._contentPlate?.material && (this._contentPlate.material as FluentMaterial).albedoTexture) {\r\n const tex = (this._contentPlate.material as FluentMaterial).albedoTexture as Texture;\r\n tex.uScale = this._contentScaleRatio;\r\n tex.vScale = (this._contentScaleRatio / this._contentViewport.width) * this._contentViewport.height;\r\n tex.uOffset = this._contentViewport.x;\r\n tex.vOffset = this._contentViewport.y;\r\n }\r\n }\r\n\r\n private _resetContentPositionAndZoom() {\r\n this._contentViewport.x = 0;\r\n this._contentViewport.y = 1 - this._contentViewport.height / this._contentViewport.width;\r\n this._contentScaleRatio = 1;\r\n }\r\n\r\n /**\r\n * @hidden\r\n */\r\n public _updatePivot() {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n // Update pivot point so it is at the center of geometry\r\n const center = this.dimensions.scale(0.5);\r\n // As origin is topleft corner in 2D, dimensions are calculated towards bottom right corner, thus y axis is downwards\r\n center.y *= -1;\r\n center.addInPlace(this.origin);\r\n center.z = 0;\r\n\r\n const origin = new Vector3(0, 0, 0);\r\n Vector3.TransformCoordinatesToRef(origin, this.mesh.computeWorldMatrix(true), origin);\r\n this.mesh.setPivotPoint(center);\r\n const origin2 = new Vector3(0, 0, 0);\r\n Vector3.TransformCoordinatesToRef(origin2, this.mesh.computeWorldMatrix(true), origin2);\r\n this.mesh.position.addInPlace(origin).subtractInPlace(origin2);\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n const node = new Mesh(\"slate\" + this.name, scene);\r\n\r\n this._backPlate = CreateBox(\"backPlate\" + this.name, { size: 1 }, scene);\r\n const faceUV = new Array(6).fill(new Vector4(0, 0, 1, 1));\r\n if (scene.useRightHandedSystem) {\r\n faceUV[0].copyFromFloats(0, 1, 1, 0);\r\n }\r\n this._contentPlate = CreateBox(\"contentPlate\" + this.name, { size: 1, faceUV }, scene);\r\n\r\n this._backPlate.parent = node;\r\n this._backPlate.isNearGrabbable = true;\r\n this._contentPlate.parent = node;\r\n this._attachContentPlateBehavior();\r\n\r\n this._addControl(this._followButton);\r\n this._addControl(this._closeButton);\r\n\r\n const followButtonMesh = this._followButton.mesh!;\r\n const closeButtonMesh = this._closeButton.mesh!;\r\n followButtonMesh.parent = node;\r\n closeButtonMesh.parent = node;\r\n\r\n this._positionElements();\r\n\r\n this._followButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.FOLLOW_ICON_FILENAME;\r\n this._closeButton.imageUrl = HolographicSlate.ASSETS_BASE_URL + HolographicSlate.CLOSE_ICON_FILENAME;\r\n\r\n this._followButton.isBackplateVisible = false;\r\n this._closeButton.isBackplateVisible = false;\r\n\r\n this._followButton.onPointerClickObservable.add(() => {\r\n this._defaultBehavior.followBehaviorEnabled = !this._defaultBehavior.followBehaviorEnabled;\r\n if (this._defaultBehavior.followBehaviorEnabled) {\r\n this._defaultBehavior.followBehavior.recenter();\r\n }\r\n });\r\n\r\n this._closeButton.onPointerClickObservable.add(() => {\r\n this.dispose();\r\n });\r\n\r\n node.rotationQuaternion = Quaternion.Identity();\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n private _attachContentPlateBehavior() {\r\n this._contentDragBehavior.attach(this._contentPlate);\r\n this._contentDragBehavior.moveAttached = false;\r\n this._contentDragBehavior.useObjectOrientationForDragging = true;\r\n this._contentDragBehavior.updateDragPlane = false;\r\n\r\n const origin = new Vector3();\r\n const worldDimensions = new Vector3();\r\n const upWorld = new Vector3();\r\n const rightWorld = new Vector3();\r\n const projectedOffset = new Vector2();\r\n let startViewport: Viewport;\r\n let worldMatrix: Matrix;\r\n\r\n this._contentDragBehavior.onDragStartObservable.add((event) => {\r\n if (!this.node) {\r\n return;\r\n }\r\n startViewport = this._contentViewport.clone();\r\n worldMatrix = this.node.computeWorldMatrix(true);\r\n\r\n origin.copyFrom(event.dragPlanePoint);\r\n worldDimensions.copyFrom(this.dimensions);\r\n worldDimensions.y -= this.backplateDimensions.y + this.backPlateMargin;\r\n Vector3.TransformNormalToRef(worldDimensions, worldMatrix, worldDimensions);\r\n upWorld.copyFromFloats(0, 1, 0);\r\n Vector3.TransformNormalToRef(upWorld, worldMatrix, upWorld);\r\n rightWorld.copyFromFloats(1, 0, 0);\r\n Vector3.TransformNormalToRef(rightWorld, worldMatrix, rightWorld);\r\n upWorld.normalize();\r\n upWorld.scaleInPlace(1 / Vector3.Dot(upWorld, worldDimensions));\r\n rightWorld.normalize();\r\n rightWorld.scaleInPlace(1 / Vector3.Dot(rightWorld, worldDimensions));\r\n });\r\n\r\n const offset = new Vector3();\r\n this._contentDragBehavior.onDragObservable.add((event) => {\r\n offset.copyFrom(event.dragPlanePoint);\r\n offset.subtractInPlace(origin);\r\n projectedOffset.copyFromFloats(Vector3.Dot(offset, rightWorld), Vector3.Dot(offset, upWorld));\r\n\r\n // By default, content takes full width available and height is cropped to keep aspect ratio\r\n this._contentViewport.x = Scalar.Clamp(startViewport.x - offset.x, 0, 1 - this._contentViewport.width * this._contentScaleRatio);\r\n this._contentViewport.y = Scalar.Clamp(startViewport.y - offset.y, 0, 1 - this._contentViewport.height * this._contentScaleRatio);\r\n this._applyContentViewport();\r\n });\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n // TODO share materials\r\n this._backPlateMaterial = new FluentBackplateMaterial(`${this.name} plateMaterial`, mesh.getScene());\r\n\r\n this._pickedPointObserver = this._host.onPickedPointChangedObservable.add((pickedPoint) => {\r\n // if (pickedPoint) {\r\n // this._backPlateMaterial. = pickedPoint;\r\n // this._backPlateMaterial.hoverColor.a = 1.0;\r\n // } else {\r\n // this._backPlateMaterial.hoverColor.a = 0;\r\n // }\r\n });\r\n\r\n this._contentMaterial = new FluentMaterial(this.name + \"contentMaterial\", mesh.getScene());\r\n this._contentMaterial.renderBorders = true;\r\n\r\n this._backPlate.material = this._backPlateMaterial;\r\n this._contentPlate.material = this._contentMaterial;\r\n\r\n this._rebuildContent();\r\n this._applyContentViewport();\r\n }\r\n\r\n /** @hidden **/\r\n public _prepareNode(scene: Scene): void {\r\n super._prepareNode(scene);\r\n this._gizmo = new SlateGizmo(this._host.utilityLayer!);\r\n this._gizmo.attachedSlate = this;\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._defaultBehavior.attach(this.node as Mesh, [this._backPlate]);\r\n\r\n this._positionChangedObserver = this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.add(() => {\r\n this._gizmo.updateBoundingBox();\r\n });\r\n\r\n this._updatePivot();\r\n this.resetDefaultAspectAndPose();\r\n }\r\n\r\n /**\r\n * Resets the aspect and pose of the slate so it is right in front of the active camera, facing towards it.\r\n */\r\n public resetDefaultAspectAndPose() {\r\n if (!this._host || !this._host.utilityLayer || !this.node) {\r\n return;\r\n }\r\n const scene = this._host.utilityLayer.utilityLayerScene;\r\n const camera = scene.activeCamera;\r\n if (camera) {\r\n const worldMatrix = camera.getWorldMatrix();\r\n const backward = Vector3.TransformNormal(Vector3.Backward(scene.useRightHandedSystem), worldMatrix);\r\n this.dimensions.copyFrom(this.defaultDimensions);\r\n this.origin.setAll(0);\r\n this._gizmo.updateBoundingBox();\r\n const pivot = this.node.getAbsolutePivotPoint();\r\n this.node.position.copyFrom(camera.position).subtractInPlace(backward).subtractInPlace(pivot);\r\n this.node.rotationQuaternion = Quaternion.FromLookDirectionLH(backward, new Vector3(0, 1, 0));\r\n }\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this._backPlateMaterial.dispose();\r\n this._contentMaterial.dispose();\r\n\r\n this._backPlate.dispose();\r\n this._contentPlate.dispose();\r\n\r\n this._followButton.dispose();\r\n this._closeButton.dispose();\r\n\r\n this._host.onPickedPointChangedObservable.remove(this._pickedPointObserver);\r\n this._defaultBehavior.sixDofDragBehavior.onPositionChangedObservable.remove(this._positionChangedObserver);\r\n\r\n this._defaultBehavior.detach();\r\n this._gizmo.dispose();\r\n this._contentDragBehavior.detach();\r\n }\r\n}\r\n"]}
|
package/3D/controls/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from \"./abstractButton3D\";\r\nexport * from \"./button3D\";\r\nexport * from \"./container3D\";\r\nexport * from \"./control3D\";\r\nexport * from \"./cylinderPanel\";\r\nexport * from \"./holographicButton\";\r\nexport * from \"./holographicSlate\";\r\nexport * from \"./handMenu\";\r\nexport * from \"./meshButton3D\";\r\nexport * from \"./nearMenu\";\r\nexport * from \"./planePanel\";\r\nexport * from \"./scatterPanel\";\r\nexport * from \"./slider3D\";\r\nexport * from \"./spherePanel\";\r\nexport * from \"./stackPanel3D\";\r\nexport * from \"./touchButton3D\";\r\nexport * from \"./touchMeshButton3D\";\r\nexport * from \"./touchHolographicButton\";\r\nexport * from \"./touchHolographicMenu\";\r\nexport * from \"./volumeBasedPanel\";\r\nexport * from \"./holographicBackplate\";\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
2
|
-
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
3
|
-
import { Mesh } from "@babylonjs/core/Meshes/mesh";
|
|
4
|
-
import { Scene } from "@babylonjs/core/scene";
|
|
1
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
2
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
3
|
+
import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
|
|
4
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
|
5
5
|
import { Button3D } from "./button3D";
|
|
6
6
|
/**
|
|
7
7
|
* Class used to create an interactable object. It's a 3D button using a mesh coming from the current scene
|
|
@@ -54,8 +54,7 @@ var MeshButton3D = /** @class */ (function (_super) {
|
|
|
54
54
|
});
|
|
55
55
|
return this._currentMesh;
|
|
56
56
|
};
|
|
57
|
-
MeshButton3D.prototype._affectMaterial = function (mesh) {
|
|
58
|
-
};
|
|
57
|
+
MeshButton3D.prototype._affectMaterial = function (mesh) { };
|
|
59
58
|
return MeshButton3D;
|
|
60
59
|
}(Button3D));
|
|
61
60
|
export { MeshButton3D };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meshButton3D.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"meshButton3D.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/meshButton3D.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;GAEG;AACH;IAAkC,gCAAQ;IAItC;;;;OAIG;IACH,sBAAY,IAAU,EAAE,IAAa;QAArC,YACI,kBAAM,IAAI,CAAC,SAkCd;QAjCG,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB;;;WAGG;QACH,KAAI,CAAC,qBAAqB,GAAG;YACzB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YACD,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,KAAI,CAAC,mBAAmB,GAAG;YACvB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YACD,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,KAAI,CAAC,oBAAoB,GAAG;YACxB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YACD,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,KAAI,CAAC,kBAAkB,GAAG;YACtB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YACD,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC;;IACN,CAAC;IAES,mCAAY,GAAtB;QACI,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,mBAAmB;IACT,kCAAW,GAArB,UAAsB,KAAY;QAAlC,iBAKC;QAJG,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,IAAI;YAC5C,KAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,OAAO,GAAG,KAAI,CAAC;QAC5D,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAES,sCAAe,GAAzB,UAA0B,IAAkB,IAAG,CAAC;IACpD,mBAAC;AAAD,CAAC,AA3DD,CAAkC,QAAQ,GA2DzC","sourcesContent":["import { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport { Scene } from \"core/scene\";\r\n\r\nimport { Button3D } from \"./button3D\";\r\n\r\n/**\r\n * Class used to create an interactable object. It's a 3D button using a mesh coming from the current scene\r\n */\r\nexport class MeshButton3D extends Button3D {\r\n /** @hidden */\r\n protected _currentMesh: Mesh;\r\n\r\n /**\r\n * Creates a new 3D button based on a mesh\r\n * @param mesh mesh to become a 3D button\r\n * @param name defines the control name\r\n */\r\n constructor(mesh: Mesh, name?: string) {\r\n super(name);\r\n this._currentMesh = mesh;\r\n\r\n /**\r\n * Provides a default behavior on hover/out & up/down\r\n * Override those function to create your own desired behavior specific to your mesh\r\n */\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this.mesh.scaling.scaleInPlace(1.1);\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this.mesh.scaling.scaleInPlace(1.0 / 1.1);\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"MeshButton3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n this._currentMesh.getChildMeshes().forEach((mesh) => {\r\n this._injectGUI3DReservedDataStore(mesh).control = this;\r\n });\r\n return this._currentMesh;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {}\r\n}\r\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Scene } from "@babylonjs/core/scene";
|
|
2
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
3
|
-
import { Nullable } from "@babylonjs/core/types";
|
|
1
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
|
2
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
3
|
+
import { Nullable } from "@babylonjs/core/types.js";
|
|
4
4
|
import { DefaultBehavior } from "../behaviors/defaultBehavior";
|
|
5
5
|
import { TouchHolographicMenu } from "./touchHolographicMenu";
|
|
6
6
|
/**
|
package/3D/controls/nearMenu.js
CHANGED
|
@@ -63,7 +63,9 @@ var NearMenu = /** @class */ (function (_super) {
|
|
|
63
63
|
control.parent = this;
|
|
64
64
|
control._host = this._host;
|
|
65
65
|
control.isToggleButton = true;
|
|
66
|
-
control.onToggleObservable.add(function (newState) {
|
|
66
|
+
control.onToggleObservable.add(function (newState) {
|
|
67
|
+
_this.isPinned = newState;
|
|
68
|
+
});
|
|
67
69
|
if (this._host.utilityLayer) {
|
|
68
70
|
control._prepareNode(this._host.utilityLayer.utilityLayerScene);
|
|
69
71
|
control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/nearMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scene } from \"core/scene\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Nullable } from \"core/types\";\r\nimport { Mesh } from \"core/Meshes/mesh\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { TouchHolographicMenu } from \"./touchHolographicMenu\";\r\nimport { Observer } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { PickingInfo } from \"core/Collisions/pickingInfo\";\r\n\r\n/**\r\n * NearMenu that displays buttons and follows the camera\r\n * @since 5.0.0\r\n */\r\nexport class NearMenu extends TouchHolographicMenu {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n private static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n private static PIN_ICON_FILENAME: string = \"IconPin.png\";\r\n\r\n private _pinButton: TouchHolographicButton;\r\n private _dragObserver: Nullable<\r\n Observer<{\r\n delta: Vector3;\r\n position: Vector3;\r\n pickInfo: PickingInfo;\r\n }>\r\n >;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the near menu\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n private _isPinned: boolean = false;\r\n /**\r\n * Indicates if the near menu is world-pinned\r\n */\r\n public get isPinned(): boolean {\r\n return this._isPinned;\r\n }\r\n\r\n public set isPinned(value: boolean) {\r\n // Tell the pin button to toggle if this was called manually, for clean state control\r\n if (this._pinButton.isToggled !== value) {\r\n this._pinButton.isToggled = value;\r\n return;\r\n }\r\n\r\n this._isPinned = value;\r\n\r\n if (value) {\r\n this._defaultBehavior.followBehaviorEnabled = false;\r\n } else {\r\n this._defaultBehavior.followBehaviorEnabled = true;\r\n }\r\n }\r\n\r\n private _createPinButton(parent: TransformNode) {\r\n const control = new TouchHolographicButton(\"pin\" + this.name, false);\r\n control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;\r\n control.parent = this;\r\n control._host = this._host;\r\n control.isToggleButton = true;\r\n control.onToggleObservable.add((newState) => {\r\n this.isPinned = newState;\r\n });\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);\r\n\r\n if (control.node) {\r\n control.node.parent = parent;\r\n }\r\n }\r\n\r\n return control;\r\n }\r\n\r\n protected _createNode(scene: Scene): Nullable<TransformNode> {\r\n const node = super._createNode(scene)! as Mesh;\r\n\r\n this._pinButton = this._createPinButton(node);\r\n this.isPinned = false;\r\n\r\n this._defaultBehavior.attach(node, [this._backPlate]);\r\n this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;\r\n this._defaultBehavior.followBehavior.pitchOffset = -15;\r\n this._defaultBehavior.followBehavior.minimumDistance = 0.3;\r\n this._defaultBehavior.followBehavior.defaultDistance = 0.4;\r\n this._defaultBehavior.followBehavior.maximumDistance = 0.6;\r\n\r\n this._backPlate.isNearGrabbable = true;\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n protected _finalProcessing() {\r\n super._finalProcessing();\r\n\r\n this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);\r\n }\r\n\r\n /**\r\n * Creates a near menu GUI 3D control\r\n * @param name name of the near menu\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._dragObserver = this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(() => {\r\n this.isPinned = true;\r\n });\r\n\r\n this.backPlateMargin = 1;\r\n }\r\n\r\n /**\r\n * Disposes the near menu\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);\r\n this._defaultBehavior.detach();\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"planePanel.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"planePanel.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/planePanel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,6CAA+B;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH;IAAgC,8BAAgB;IAAhD;;IA0BA,CAAC;IAzBa,iCAAY,GAAtB,UAAuB,OAAkB,EAAE,YAAqB;QAC5D,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,CAAC,IAAI,EAAE;YACP,OAAO;SACV;QAED,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;QACxC,IAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE9B,QAAQ,IAAI,CAAC,WAAW,EAAE;YACtB,KAAK,WAAW,CAAC,sBAAsB,CAAC;YACxC,KAAK,WAAW,CAAC,uBAAuB;gBACpC,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;YACV,KAAK,WAAW,CAAC,+BAA+B,CAAC;YACjD,KAAK,WAAW,CAAC,8BAA8B;gBAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM;SACb;IACL,CAAC;IACL,iBAAC;AAAD,CAAC,AA1BD,CAAgC,gBAAgB,GA0B/C","sourcesContent":["import { TmpVectors, Vector3 } from \"core/Maths/math.vector\";\r\n\r\nimport { Container3D } from \"./container3D\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { VolumeBasedPanel } from \"./volumeBasedPanel\";\r\n\r\n/**\r\n * Class used to create a container panel deployed on the surface of a plane\r\n */\r\nexport class PlanePanel extends VolumeBasedPanel {\r\n protected _mapGridNode(control: Control3D, nodePosition: Vector3) {\r\n const mesh = control.mesh;\r\n\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n control.position = nodePosition.clone();\r\n const target = TmpVectors.Vector3[0];\r\n\r\n target.copyFrom(nodePosition);\r\n\r\n switch (this.orientation) {\r\n case Container3D.FACEORIGIN_ORIENTATION:\r\n case Container3D.FACEFORWARD_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, 1));\r\n mesh.lookAt(target);\r\n break;\r\n case Container3D.FACEFORWARDREVERSED_ORIENTATION:\r\n case Container3D.FACEORIGINREVERSED_ORIENTATION:\r\n target.addInPlace(new Vector3(0, 0, -1));\r\n mesh.lookAt(target);\r\n break;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Vector3 } from "@babylonjs/core/Maths/math.vector";
|
|
2
|
-
import { float } from "@babylonjs/core/types";
|
|
1
|
+
import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
|
|
2
|
+
import { float } from "@babylonjs/core/types.js";
|
|
3
3
|
import { VolumeBasedPanel } from "./volumeBasedPanel";
|
|
4
4
|
import { Control3D } from "./control3D";
|
|
5
5
|
/**
|
|
@@ -92,7 +92,7 @@ var ScatterPanel = /** @class */ (function (_super) {
|
|
|
92
92
|
var distance = difference2D.lengthSquared() - radiusPaddingSquared;
|
|
93
93
|
var minSeparation = Math.min(distance, radiusPaddingSquared);
|
|
94
94
|
distance -= minSeparation;
|
|
95
|
-
if (distance <
|
|
95
|
+
if (distance < Math.pow(combinedRadius, 2.0)) {
|
|
96
96
|
difference2D.normalize();
|
|
97
97
|
difference.scaleInPlace((combinedRadius - Math.sqrt(distance)) * 0.5);
|
|
98
98
|
meshes[j].position.addInPlace(difference);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scatterPanel.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"scatterPanel.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/controls/scatterPanel.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tools } from \"core/Misc/tools\";\r\nimport { TmpVectors, Vector3 } from \"core/Maths/math.vector\";\r\nimport { float } from \"core/types\";\r\n\r\nimport { VolumeBasedPanel } from \"./volumeBasedPanel\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Container3D } from \"./container3D\";\r\n\r\n/**\r\n * Class used to create a container panel where items get randomized planar mapping\r\n */\r\nexport class ScatterPanel extends VolumeBasedPanel {\r\n private _iteration = 100.0;\r\n\r\n /**\r\n * Gets or sets the number of iteration to use to scatter the controls (100 by default)\r\n */\r\n public get iteration(): float {\r\n return this._iteration;\r\n }\r\n\r\n public set iteration(value: float) {\r\n if (this._iteration === value) {\r\n return;\r\n }\r\n\r\n this._iteration = value;\r\n\r\n Tools.SetImmediate(() => {\r\n this._arrangeChildren();\r\n });\r\n }\r\n\r\n protected _mapGridNode(control: Control3D, nodePosition: Vector3) {\r\n const mesh = control.mesh;\r\n const newPos = this._scatterMapping(nodePosition);\r\n\r\n if (!mesh) {\r\n return;\r\n }\r\n\r\n switch (this.orientation) {\r\n case Container3D.FACEORIGIN_ORIENTATION:\r\n case Container3D.FACEFORWARD_ORIENTATION:\r\n mesh.lookAt(new Vector3(0, 0, 1));\r\n break;\r\n case Container3D.FACEFORWARDREVERSED_ORIENTATION:\r\n case Container3D.FACEORIGINREVERSED_ORIENTATION:\r\n mesh.lookAt(new Vector3(0, 0, -1));\r\n break;\r\n }\r\n\r\n control.position = newPos;\r\n }\r\n\r\n private _scatterMapping(source: Vector3): Vector3 {\r\n source.x = (1.0 - Math.random() * 2.0) * this._cellWidth;\r\n source.y = (1.0 - Math.random() * 2.0) * this._cellHeight;\r\n\r\n return source;\r\n }\r\n\r\n protected _finalProcessing() {\r\n const meshes = [];\r\n for (const child of this._children) {\r\n if (!child.mesh) {\r\n continue;\r\n }\r\n\r\n meshes.push(child.mesh);\r\n }\r\n\r\n for (let count = 0; count < this._iteration; count++) {\r\n meshes.sort((a, b) => {\r\n const distance1 = a.position.lengthSquared();\r\n const distance2 = b.position.lengthSquared();\r\n\r\n if (distance1 < distance2) {\r\n return 1;\r\n } else if (distance1 > distance2) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n const radiusPaddingSquared = Math.pow(this.margin, 2.0);\r\n const cellSize = Math.max(this._cellWidth, this._cellHeight);\r\n const difference2D = TmpVectors.Vector2[0];\r\n const difference = TmpVectors.Vector3[0];\r\n\r\n for (let i = 0; i < meshes.length - 1; i++) {\r\n for (let j = i + 1; j < meshes.length; j++) {\r\n if (i != j) {\r\n meshes[j].position.subtractToRef(meshes[i].position, difference);\r\n\r\n // Ignore Z axis\r\n difference2D.x = difference.x;\r\n difference2D.y = difference.y;\r\n const combinedRadius = cellSize;\r\n let distance = difference2D.lengthSquared() - radiusPaddingSquared;\r\n const minSeparation = Math.min(distance, radiusPaddingSquared);\r\n distance -= minSeparation;\r\n\r\n if (distance < Math.pow(combinedRadius, 2.0)) {\r\n difference2D.normalize();\r\n difference.scaleInPlace((combinedRadius - Math.sqrt(distance)) * 0.5);\r\n meshes[j].position.addInPlace(difference);\r\n meshes[i].position.subtractInPlace(difference);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Nullable } from "@babylonjs/core/types";
|
|
2
|
-
import { Observable } from "@babylonjs/core/Misc/observable";
|
|
3
|
-
import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
|
|
4
|
-
import { Scene } from "@babylonjs/core/scene";
|
|
1
|
+
import { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
+
import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
|
|
4
|
+
import { Scene } from "@babylonjs/core/scene.js";
|
|
5
5
|
import { Control3D } from "./control3D";
|
|
6
|
-
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
|
|
6
|
+
import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
|
|
7
7
|
import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial";
|
|
8
8
|
import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial";
|
|
9
9
|
import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial";
|
package/3D/controls/slider3D.js
CHANGED
|
@@ -168,8 +168,7 @@ var Slider3D = /** @class */ (function (_super) {
|
|
|
168
168
|
sliderBackplate.isPickable = false;
|
|
169
169
|
sliderBackplate.visibility = 0;
|
|
170
170
|
sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);
|
|
171
|
-
SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene)
|
|
172
|
-
.then(function (result) {
|
|
171
|
+
SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene).then(function (result) {
|
|
173
172
|
var sliderBackplateModel = result.meshes[1];
|
|
174
173
|
var sliderBarModel = result.meshes[1].clone("".concat(_this.name, "_sliderbar"), sliderBackplate);
|
|
175
174
|
var sliderThumbModel = result.meshes[1].clone("".concat(_this.name, "_sliderthumb"), sliderBackplate);
|
|
@@ -181,29 +180,29 @@ var Slider3D = /** @class */ (function (_super) {
|
|
|
181
180
|
sliderBackplateModel.scaling.x = 1;
|
|
182
181
|
sliderBackplateModel.scaling.z = 0.2;
|
|
183
182
|
sliderBackplateModel.parent = sliderBackplate;
|
|
184
|
-
if (
|
|
183
|
+
if (_this._sliderBackplateMaterial) {
|
|
185
184
|
sliderBackplateModel.material = _this._sliderBackplateMaterial;
|
|
186
185
|
}
|
|
187
186
|
_this._sliderBackplate = sliderBackplateModel;
|
|
188
187
|
}
|
|
189
|
-
if (
|
|
188
|
+
if (sliderBarModel) {
|
|
190
189
|
sliderBarModel.parent = sliderBackplate;
|
|
191
190
|
sliderBarModel.position.z = -0.1;
|
|
192
191
|
sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);
|
|
193
192
|
sliderBarModel.isPickable = false;
|
|
194
|
-
if (
|
|
193
|
+
if (_this._sliderBarMaterial) {
|
|
195
194
|
sliderBarModel.material = _this._sliderBarMaterial;
|
|
196
195
|
}
|
|
197
196
|
_this._sliderBar = sliderBarModel;
|
|
198
197
|
}
|
|
199
|
-
if (
|
|
198
|
+
if (sliderThumbModel) {
|
|
200
199
|
sliderThumbModel.parent = sliderBackplate;
|
|
201
200
|
sliderThumbModel.isPickable = true;
|
|
202
201
|
sliderThumbModel.position.z = -0.115;
|
|
203
202
|
sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);
|
|
204
203
|
sliderThumbModel.position.x = _this._convertToPosition(_this.value);
|
|
205
204
|
sliderThumbModel.addBehavior(_this._createBehavior());
|
|
206
|
-
if (
|
|
205
|
+
if (_this._sliderThumbMaterial) {
|
|
207
206
|
sliderThumbModel.material = _this._sliderThumbMaterial;
|
|
208
207
|
}
|
|
209
208
|
_this._sliderThumb = sliderThumbModel;
|
|
@@ -261,7 +260,7 @@ var Slider3D = /** @class */ (function (_super) {
|
|
|
261
260
|
/**
|
|
262
261
|
* File name for the 8x4 model.
|
|
263
262
|
*/
|
|
264
|
-
Slider3D.MODEL_FILENAME =
|
|
263
|
+
Slider3D.MODEL_FILENAME = "mrtk-fluent-backplate.glb";
|
|
265
264
|
return Slider3D;
|
|
266
265
|
}(Control3D));
|
|
267
266
|
export { Slider3D };
|