@babylonjs/gui 5.23.0 → 5.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/2D/advancedDynamicTexture.d.ts +21 -30
  2. package/2D/advancedDynamicTexture.js +18 -27
  3. package/2D/advancedDynamicTexture.js.map +1 -1
  4. package/2D/controls/button.d.ts +6 -32
  5. package/2D/controls/button.js +6 -32
  6. package/2D/controls/button.js.map +1 -1
  7. package/2D/controls/checkbox.d.ts +2 -8
  8. package/2D/controls/checkbox.js +2 -8
  9. package/2D/controls/checkbox.js.map +1 -1
  10. package/2D/controls/colorpicker.d.ts +2 -4
  11. package/2D/controls/colorpicker.js +2 -4
  12. package/2D/controls/colorpicker.js.map +1 -1
  13. package/2D/controls/container.d.ts +20 -43
  14. package/2D/controls/container.js +20 -43
  15. package/2D/controls/container.js.map +1 -1
  16. package/2D/controls/control.d.ts +72 -145
  17. package/2D/controls/control.js +68 -141
  18. package/2D/controls/control.js.map +1 -1
  19. package/2D/controls/focusableButton.d.ts +4 -9
  20. package/2D/controls/focusableButton.js +4 -9
  21. package/2D/controls/focusableButton.js.map +1 -1
  22. package/2D/controls/grid.d.ts +1 -3
  23. package/2D/controls/grid.js +1 -3
  24. package/2D/controls/grid.js.map +1 -1
  25. package/2D/controls/image.d.ts +1 -3
  26. package/2D/controls/image.js +1 -3
  27. package/2D/controls/image.js.map +1 -1
  28. package/2D/controls/inputText.d.ts +10 -18
  29. package/2D/controls/inputText.js +9 -17
  30. package/2D/controls/inputText.js.map +1 -1
  31. package/2D/controls/inputTextArea.d.ts +10 -10
  32. package/2D/controls/inputTextArea.js +9 -9
  33. package/2D/controls/inputTextArea.js.map +1 -1
  34. package/2D/controls/rectangle.d.ts +2 -2
  35. package/2D/controls/rectangle.js +2 -2
  36. package/2D/controls/rectangle.js.map +1 -1
  37. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -7
  38. package/2D/controls/scrollViewers/scrollViewer.js +3 -7
  39. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  40. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -10
  41. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -10
  42. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  43. package/2D/controls/selector.d.ts +14 -40
  44. package/2D/controls/selector.js +14 -40
  45. package/2D/controls/selector.js.map +1 -1
  46. package/2D/controls/sliders/baseSlider.d.ts +1 -3
  47. package/2D/controls/sliders/baseSlider.js +1 -3
  48. package/2D/controls/sliders/baseSlider.js.map +1 -1
  49. package/2D/controls/sliders/imageBasedSlider.d.ts +1 -3
  50. package/2D/controls/sliders/imageBasedSlider.js +1 -3
  51. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  52. package/2D/controls/sliders/imageScrollBar.d.ts +1 -3
  53. package/2D/controls/sliders/imageScrollBar.js +1 -3
  54. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  55. package/2D/controls/sliders/scrollBar.d.ts +1 -3
  56. package/2D/controls/sliders/scrollBar.js +1 -3
  57. package/2D/controls/sliders/scrollBar.js.map +1 -1
  58. package/2D/controls/stackPanel.d.ts +2 -6
  59. package/2D/controls/stackPanel.js +2 -6
  60. package/2D/controls/stackPanel.js.map +1 -1
  61. package/2D/controls/statics.d.ts +1 -1
  62. package/2D/controls/statics.js +1 -1
  63. package/2D/controls/statics.js.map +1 -1
  64. package/2D/controls/textBlock.d.ts +1 -2
  65. package/2D/controls/textBlock.js +1 -2
  66. package/2D/controls/textBlock.js.map +1 -1
  67. package/2D/controls/textWrapper.d.ts +1 -1
  68. package/2D/controls/textWrapper.js +1 -1
  69. package/2D/controls/textWrapper.js.map +1 -1
  70. package/2D/controls/toggleButton.d.ts +5 -29
  71. package/2D/controls/toggleButton.js +5 -29
  72. package/2D/controls/toggleButton.js.map +1 -1
  73. package/2D/controls/virtualKeyboard.d.ts +1 -3
  74. package/2D/controls/virtualKeyboard.js +1 -3
  75. package/2D/controls/virtualKeyboard.js.map +1 -1
  76. package/2D/multiLinePoint.d.ts +1 -1
  77. package/2D/multiLinePoint.js.map +1 -1
  78. package/2D/style.d.ts +2 -2
  79. package/2D/style.js +1 -1
  80. package/2D/style.js.map +1 -1
  81. package/3D/controls/button3D.d.ts +1 -1
  82. package/3D/controls/button3D.js.map +1 -1
  83. package/3D/controls/control3D.d.ts +11 -31
  84. package/3D/controls/control3D.js +10 -30
  85. package/3D/controls/control3D.js.map +1 -1
  86. package/3D/controls/holographicSlate.d.ts +5 -6
  87. package/3D/controls/holographicSlate.js +3 -4
  88. package/3D/controls/holographicSlate.js.map +1 -1
  89. package/3D/controls/meshButton3D.d.ts +1 -1
  90. package/3D/controls/meshButton3D.js.map +1 -1
  91. package/3D/controls/touchButton3D.d.ts +1 -4
  92. package/3D/controls/touchButton3D.js +1 -4
  93. package/3D/controls/touchButton3D.js.map +1 -1
  94. package/3D/controls/touchMeshButton3D.d.ts +1 -1
  95. package/3D/controls/touchMeshButton3D.js.map +1 -1
  96. package/3D/gizmos/gizmoHandle.d.ts +1 -1
  97. package/3D/gizmos/gizmoHandle.js.map +1 -1
  98. package/3D/gui3DManager.d.ts +5 -5
  99. package/3D/gui3DManager.js +4 -4
  100. package/3D/gui3DManager.js.map +1 -1
  101. package/3D/materials/fluent/fluentMaterial.d.ts +1 -1
  102. package/3D/materials/fluent/fluentMaterial.js +1 -1
  103. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  104. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +1 -1
  105. package/3D/materials/fluent/shaders/fluent.fragment.js +1 -1
  106. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
  107. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +1 -1
  108. package/3D/materials/fluent/shaders/fluent.vertex.js +1 -1
  109. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
  110. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +8 -8
  111. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +9 -9
  112. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  113. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +1 -1
  114. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +1 -1
  115. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
  116. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +1 -1
  117. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +1 -1
  118. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
  119. package/3D/materials/fluentButton/fluentButtonMaterial.js +1 -1
  120. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  121. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +1 -1
  122. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +1 -1
  123. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
  124. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +1 -1
  125. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +1 -1
  126. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
  127. package/3D/materials/handle/handleMaterial.d.ts +1 -1
  128. package/3D/materials/handle/handleMaterial.js +1 -1
  129. package/3D/materials/handle/handleMaterial.js.map +1 -1
  130. package/3D/materials/handle/shaders/handle.fragment.d.ts +1 -1
  131. package/3D/materials/handle/shaders/handle.fragment.js +1 -1
  132. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
  133. package/3D/materials/handle/shaders/handle.vertex.d.ts +1 -1
  134. package/3D/materials/handle/shaders/handle.vertex.js +1 -1
  135. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
  136. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +8 -8
  137. package/3D/materials/mrdl/mrdlBackplateMaterial.js +9 -9
  138. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  139. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +10 -10
  140. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +11 -11
  141. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  142. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +10 -10
  143. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +11 -11
  144. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  145. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +1 -1
  146. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +1 -1
  147. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
  148. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +1 -1
  149. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +1 -1
  150. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
  151. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +1 -1
  152. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +1 -1
  153. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
  154. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +1 -1
  155. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +1 -1
  156. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
  157. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +1 -1
  158. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +1 -1
  159. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
  160. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +1 -1
  161. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +1 -1
  162. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
  163. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"gizmoHandle.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/gizmos/gizmoHandle.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { HandleMaterial } from \"../materials/handle/handleMaterial\";\r\nimport type { SlateGizmo } from \"./slateGizmo\";\r\nimport { BaseSixDofDragBehavior } from \"core/Behaviors/Meshes/baseSixDofDragBehavior\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\n\r\n/**\r\n * State of the handle regarding user interaction\r\n */\r\nexport enum HandleState {\r\n /**\r\n * Handle is idle\r\n */\r\n IDLE = 0,\r\n /**\r\n * Handle is hovered\r\n */\r\n HOVER = 1,\r\n /**\r\n * Handle is dragged\r\n */\r\n DRAG = 2,\r\n}\r\n\r\n/**\r\n * Base class for SlateGizmo handles\r\n */\r\nexport abstract class GizmoHandle {\r\n protected _scene: Scene;\r\n protected _state: HandleState = HandleState.IDLE;\r\n protected _materials: HandleMaterial[] = [];\r\n\r\n private _dragStartObserver: Nullable<Observer<any>>;\r\n private _draggingObserver: Nullable<Observer<any>>;\r\n private _dragEndObserver: Nullable<Observer<any>>;\r\n /**\r\n * @hidden\r\n */\r\n public _dragBehavior: BaseSixDofDragBehavior;\r\n\r\n /**\r\n * The current state of the handle\r\n */\r\n public get state(): HandleState {\r\n return this._state;\r\n }\r\n\r\n private _gizmo: SlateGizmo;\r\n\r\n /**\r\n * Returns the gizmo carrying this handle\r\n */\r\n public get gizmo() {\r\n return this._gizmo;\r\n }\r\n\r\n /**\r\n * Sets hover state\r\n */\r\n public set hover(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.HOVER;\r\n } else {\r\n this._state &= ~HandleState.HOVER;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n /**\r\n * Sets drag state\r\n */\r\n public set drag(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.DRAG;\r\n } else {\r\n this._state &= ~HandleState.DRAG;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n\r\n /**\r\n * Node of this handle\r\n */\r\n public node: TransformNode;\r\n\r\n /**\r\n * Creates a handle for a SlateGizmo\r\n * @param gizmo associated SlateGizmo\r\n * @param scene scene\r\n */\r\n constructor(gizmo: SlateGizmo, scene: Scene) {\r\n this._scene = scene;\r\n this._gizmo = gizmo;\r\n\r\n this.node = this.createNode();\r\n this.node.reservedDataStore = {\r\n handle: this,\r\n };\r\n }\r\n\r\n protected _createMaterial(positionOffset?: Vector3) {\r\n const mat = new HandleMaterial(\"handle\", this._scene);\r\n if (positionOffset) {\r\n mat._positionOffset = positionOffset;\r\n }\r\n return mat;\r\n }\r\n\r\n private _updateMaterial() {\r\n const state = this._state;\r\n for (const mat of this._materials) {\r\n mat.hover = false;\r\n mat.drag = false;\r\n }\r\n\r\n if (state & HandleState.DRAG) {\r\n for (const mat of this._materials) {\r\n mat.drag = true;\r\n }\r\n } else if (state & HandleState.HOVER) {\r\n for (const mat of this._materials) {\r\n mat.hover = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds callbacks from dragging interaction\r\n * @param dragStartFn Function to call on drag start\r\n * @param dragFn Function to call on drag\r\n * @param dragEndFn Function to call on drag end\r\n */\r\n public setDragBehavior(dragStartFn: (event: { position: Vector3 }) => void, dragFn: (event: { position: Vector3 }) => void, dragEndFn: () => void) {\r\n const dragBehavior = new BaseSixDofDragBehavior();\r\n\r\n this._dragBehavior = dragBehavior;\r\n\r\n this._dragStartObserver = dragBehavior.onDragStartObservable.add(dragStartFn);\r\n this._draggingObserver = dragBehavior.onDragObservable.add(dragFn);\r\n this._dragEndObserver = dragBehavior.onDragEndObservable.add(dragEndFn);\r\n\r\n this._dragBehavior.attach(this.node);\r\n }\r\n\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * Should be overridden by child classes\r\n * @returns created node\r\n */\r\n public abstract createNode(): TransformNode;\r\n\r\n /**\r\n * Disposes the handle\r\n */\r\n public dispose() {\r\n this._dragBehavior.onDragStartObservable.remove(this._dragStartObserver);\r\n this._dragBehavior.onDragObservable.remove(this._draggingObserver);\r\n this._dragBehavior.onDragEndObservable.remove(this._dragEndObserver);\r\n\r\n this._dragBehavior.detach();\r\n\r\n for (const material of this._materials) {\r\n material.dispose();\r\n }\r\n this.node.dispose();\r\n }\r\n}\r\n\r\n/**\r\n * Side handle class that rotates the slate\r\n */\r\nexport class SideHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create a simple vertical rectangle\r\n const verticalBox = CreateBox(\"sideVert\", { width: 1, height: 10, depth: 0.1 }, this._scene);\r\n const sideNode = new TransformNode(\"side\", this._scene);\r\n verticalBox.parent = sideNode;\r\n\r\n const mat = this._createMaterial();\r\n verticalBox.material = mat;\r\n verticalBox.isNearGrabbable = true;\r\n this._materials.push(mat);\r\n\r\n return sideNode;\r\n }\r\n}\r\n\r\n/**\r\n * Corner handle that resizes the slate\r\n */\r\nexport class CornerHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create 2 boxes making a bottom left corner\r\n const horizontalBox = CreateBox(\"angleHor\", { width: 3, height: 1, depth: 0.1 }, this._scene);\r\n const verticalBox = CreateBox(\"angleVert\", { width: 1, height: 3, depth: 0.1 }, this._scene);\r\n\r\n const angleNode = new TransformNode(\"angle\", this._scene);\r\n horizontalBox.parent = angleNode;\r\n verticalBox.parent = angleNode;\r\n\r\n horizontalBox.material = this._createMaterial(new Vector3(1, 0, 0));\r\n verticalBox.material = this._createMaterial(new Vector3(0, 1, 0));\r\n verticalBox.isNearGrabbable = true;\r\n horizontalBox.isNearGrabbable = true;\r\n\r\n this._materials.push(horizontalBox.material as HandleMaterial);\r\n this._materials.push(verticalBox.material as HandleMaterial);\r\n return angleNode;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"gizmoHandle.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/3D/gizmos/gizmoHandle.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Scene } from \"core/scene\";\r\nimport { CreateBox } from \"core/Meshes/Builders/boxBuilder\";\r\nimport { TransformNode } from \"core/Meshes/transformNode\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport { HandleMaterial } from \"../materials/handle/handleMaterial\";\r\nimport type { SlateGizmo } from \"./slateGizmo\";\r\nimport { BaseSixDofDragBehavior } from \"core/Behaviors/Meshes/baseSixDofDragBehavior\";\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\n\r\n/**\r\n * State of the handle regarding user interaction\r\n */\r\nexport enum HandleState {\r\n /**\r\n * Handle is idle\r\n */\r\n IDLE = 0,\r\n /**\r\n * Handle is hovered\r\n */\r\n HOVER = 1,\r\n /**\r\n * Handle is dragged\r\n */\r\n DRAG = 2,\r\n}\r\n\r\n/**\r\n * Base class for SlateGizmo handles\r\n */\r\nexport abstract class GizmoHandle {\r\n protected _scene: Scene;\r\n protected _state: HandleState = HandleState.IDLE;\r\n protected _materials: HandleMaterial[] = [];\r\n\r\n private _dragStartObserver: Nullable<Observer<any>>;\r\n private _draggingObserver: Nullable<Observer<any>>;\r\n private _dragEndObserver: Nullable<Observer<any>>;\r\n /**\r\n * @internal\r\n */\r\n public _dragBehavior: BaseSixDofDragBehavior;\r\n\r\n /**\r\n * The current state of the handle\r\n */\r\n public get state(): HandleState {\r\n return this._state;\r\n }\r\n\r\n private _gizmo: SlateGizmo;\r\n\r\n /**\r\n * Returns the gizmo carrying this handle\r\n */\r\n public get gizmo() {\r\n return this._gizmo;\r\n }\r\n\r\n /**\r\n * Sets hover state\r\n */\r\n public set hover(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.HOVER;\r\n } else {\r\n this._state &= ~HandleState.HOVER;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n /**\r\n * Sets drag state\r\n */\r\n public set drag(value: boolean) {\r\n if (value) {\r\n this._state |= HandleState.DRAG;\r\n } else {\r\n this._state &= ~HandleState.DRAG;\r\n }\r\n\r\n this._updateMaterial();\r\n }\r\n\r\n /**\r\n * Node of this handle\r\n */\r\n public node: TransformNode;\r\n\r\n /**\r\n * Creates a handle for a SlateGizmo\r\n * @param gizmo associated SlateGizmo\r\n * @param scene scene\r\n */\r\n constructor(gizmo: SlateGizmo, scene: Scene) {\r\n this._scene = scene;\r\n this._gizmo = gizmo;\r\n\r\n this.node = this.createNode();\r\n this.node.reservedDataStore = {\r\n handle: this,\r\n };\r\n }\r\n\r\n protected _createMaterial(positionOffset?: Vector3) {\r\n const mat = new HandleMaterial(\"handle\", this._scene);\r\n if (positionOffset) {\r\n mat._positionOffset = positionOffset;\r\n }\r\n return mat;\r\n }\r\n\r\n private _updateMaterial() {\r\n const state = this._state;\r\n for (const mat of this._materials) {\r\n mat.hover = false;\r\n mat.drag = false;\r\n }\r\n\r\n if (state & HandleState.DRAG) {\r\n for (const mat of this._materials) {\r\n mat.drag = true;\r\n }\r\n } else if (state & HandleState.HOVER) {\r\n for (const mat of this._materials) {\r\n mat.hover = true;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Binds callbacks from dragging interaction\r\n * @param dragStartFn Function to call on drag start\r\n * @param dragFn Function to call on drag\r\n * @param dragEndFn Function to call on drag end\r\n */\r\n public setDragBehavior(dragStartFn: (event: { position: Vector3 }) => void, dragFn: (event: { position: Vector3 }) => void, dragEndFn: () => void) {\r\n const dragBehavior = new BaseSixDofDragBehavior();\r\n\r\n this._dragBehavior = dragBehavior;\r\n\r\n this._dragStartObserver = dragBehavior.onDragStartObservable.add(dragStartFn);\r\n this._draggingObserver = dragBehavior.onDragObservable.add(dragFn);\r\n this._dragEndObserver = dragBehavior.onDragEndObservable.add(dragEndFn);\r\n\r\n this._dragBehavior.attach(this.node);\r\n }\r\n\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * Should be overridden by child classes\r\n * @returns created node\r\n */\r\n public abstract createNode(): TransformNode;\r\n\r\n /**\r\n * Disposes the handle\r\n */\r\n public dispose() {\r\n this._dragBehavior.onDragStartObservable.remove(this._dragStartObserver);\r\n this._dragBehavior.onDragObservable.remove(this._draggingObserver);\r\n this._dragBehavior.onDragEndObservable.remove(this._dragEndObserver);\r\n\r\n this._dragBehavior.detach();\r\n\r\n for (const material of this._materials) {\r\n material.dispose();\r\n }\r\n this.node.dispose();\r\n }\r\n}\r\n\r\n/**\r\n * Side handle class that rotates the slate\r\n */\r\nexport class SideHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create a simple vertical rectangle\r\n const verticalBox = CreateBox(\"sideVert\", { width: 1, height: 10, depth: 0.1 }, this._scene);\r\n const sideNode = new TransformNode(\"side\", this._scene);\r\n verticalBox.parent = sideNode;\r\n\r\n const mat = this._createMaterial();\r\n verticalBox.material = mat;\r\n verticalBox.isNearGrabbable = true;\r\n this._materials.push(mat);\r\n\r\n return sideNode;\r\n }\r\n}\r\n\r\n/**\r\n * Corner handle that resizes the slate\r\n */\r\nexport class CornerHandle extends GizmoHandle {\r\n /**\r\n * Creates the meshes and parent node of the handle\r\n * @returns created node\r\n */\r\n public createNode() {\r\n // Create 2 boxes making a bottom left corner\r\n const horizontalBox = CreateBox(\"angleHor\", { width: 3, height: 1, depth: 0.1 }, this._scene);\r\n const verticalBox = CreateBox(\"angleVert\", { width: 1, height: 3, depth: 0.1 }, this._scene);\r\n\r\n const angleNode = new TransformNode(\"angle\", this._scene);\r\n horizontalBox.parent = angleNode;\r\n verticalBox.parent = angleNode;\r\n\r\n horizontalBox.material = this._createMaterial(new Vector3(1, 0, 0));\r\n verticalBox.material = this._createMaterial(new Vector3(0, 1, 0));\r\n verticalBox.isNearGrabbable = true;\r\n horizontalBox.isNearGrabbable = true;\r\n\r\n this._materials.push(horizontalBox.material as HandleMaterial);\r\n this._materials.push(verticalBox.material as HandleMaterial);\r\n return angleNode;\r\n }\r\n}\r\n"]}
@@ -19,13 +19,13 @@ export declare class GUI3DManager implements IDisposable {
19
19
  private _pointerObserver;
20
20
  private _pointerOutObserver;
21
21
  private _customControlScaling;
22
- /** @hidden */
22
+ /** @internal */
23
23
  _lastPickedControl: Control3D;
24
- /** @hidden */
24
+ /** @internal */
25
25
  _lastControlOver: {
26
26
  [pointerId: number]: Control3D;
27
27
  };
28
- /** @hidden */
28
+ /** @internal */
29
29
  _lastControlDown: {
30
30
  [pointerId: number]: Control3D;
31
31
  };
@@ -38,11 +38,11 @@ export declare class GUI3DManager implements IDisposable {
38
38
  * Observable raised when a picking happens
39
39
  */
40
40
  onPickingObservable: Observable<Nullable<AbstractMesh>>;
41
- /** @hidden */
41
+ /** @internal */
42
42
  _sharedMaterials: {
43
43
  [key: string]: Material;
44
44
  };
45
- /** @hidden */
45
+ /** @internal */
46
46
  _touchSharedMaterials: {
47
47
  [key: string]: Material;
48
48
  };
@@ -16,9 +16,9 @@ export class GUI3DManager {
16
16
  */
17
17
  constructor(scene) {
18
18
  this._customControlScaling = 1.0;
19
- /** @hidden */
19
+ /** @internal */
20
20
  this._lastControlOver = {};
21
- /** @hidden */
21
+ /** @internal */
22
22
  this._lastControlDown = {};
23
23
  /**
24
24
  * Observable raised when the point picked by the pointer events changed
@@ -29,9 +29,9 @@ export class GUI3DManager {
29
29
  */
30
30
  this.onPickingObservable = new Observable();
31
31
  // Shared resources
32
- /** @hidden */
32
+ /** @internal */
33
33
  this._sharedMaterials = {};
34
- /** @hidden */
34
+ /** @internal */
35
35
  this._touchSharedMaterials = {};
36
36
  this._scene = scene || EngineStore.LastCreatedScene;
37
37
  this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/gui3DManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,2CAA6B;AAClD,OAAO,EAAE,OAAO,EAAE,6CAA+B;AAEjD,OAAO,EAAE,iBAAiB,EAAE,gDAAkC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,mDAAqC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,0DAA4C;AAC3E,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAIrD;;;GAGG;AACH,MAAM,OAAO,YAAY;IA2ErB;;;OAGG;IACH,YAAmB,KAAa;QAxExB,0BAAqB,GAAG,GAAG,CAAC;QAGpC,cAAc;QACP,qBAAgB,GAAuC,EAAE,CAAC;QACjE,cAAc;QACP,qBAAgB,GAAuC,EAAE,CAAC;QAIjE;;WAEG;QACI,mCAA8B,GAAG,IAAI,UAAU,EAAqB,CAAC;QAE5E;;WAEG;QACI,wBAAmB,GAAG,IAAI,UAAU,EAA0B,CAAC;QAEtE,mBAAmB;QACnB,cAAc;QACP,qBAAgB,GAAgC,EAAE,CAAC;QAE1D,cAAc;QACP,0BAAqB,GAAgC,EAAE,CAAC;QAgD3D,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,WAAW,CAAC,gBAAiB,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,EAAE;YAClE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3F,IAAI,CAAC,aAAa,CAAC,0BAA0B,GAAG,KAAK,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACjD,IAAI,CAAC,aAAa,CAAC,yBAAyB,GAAG,CAAC,IAA4B,EAAE,EAAE;YAC5E,OAAO,IAAI,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC;QACjE,CAAC,CAAC;QAEF,OAAO;QACP,IAAI,CAAC,cAAc,GAAG,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC;QAE/D,SAAS;QACT,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACnF,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,gBAAgB,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YACrE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,QAAQ;QACR,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtE,IAAI,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACrF,CAAC;IA9ED,6BAA6B;IAC7B,IAAW,KAAK;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAED,oCAAoC;IACpC,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,iEAAiE;IACjE,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,4EAA4E;IAC5E,IAAW,cAAc,CAAC,QAAgB;QACtC,IAAI,IAAI,CAAC,qBAAqB,KAAK,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;YACzD,MAAM,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACzD,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;YAEtC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAkB,EAAE,EAAE;gBACxD,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;gBAEzC,IAAI,QAAQ,KAAK,CAAC,EAAE;oBAChB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;iBACrC;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,yHAAyH;IACzH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,cAAc,KAAK,YAAY,CAAC,sBAAsB,CAAC;IACvE,CAAC;IAED,yHAAyH;IACzH,IAAW,mBAAmB,CAAC,QAAiB;QAC5C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAyCO,iBAAiB,CAAC,SAAiB,EAAE,WAAoB;QAC7D,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,mBAAmB,EAAE;YACrB,mBAAmB,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;SAC3C;QAED,IAAI,WAAW,EAAE;YACb,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;gBAClC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;gBAClD,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAEO,UAAU,CAAC,EAAe;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,YAAY,EAAE;YAC/G,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,YAAY,GAAkB,EAAE,CAAC,KAAK,CAAC;QAE7C,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;QAExC,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC;QAChC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SACpE;QAED,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC3E,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,WAAW,CAAC,WAAW,EAAE;YACzB,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;SAChF;QAED,MAAM,OAAO,GAAc,WAAW,CAAC,UAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC;QACrF,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,WAAY,EAAE,WAAW,CAAC,UAAU,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE;YAChJ,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,WAAW,EAAE;gBAC3C,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;oBAClC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;iBACpF;gBAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;aAC3C;SACJ;QAED,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB,CAAC,SAAS,EAAE;YACzC,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;gBAC/C,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAC;gBAC/D,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;aACxD;YAED,IAAI,YAAY,CAAC,WAAW,KAAK,OAAO,EAAE;gBACtC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC5C;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,OAAkB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,OAAkB;QAChC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,qBAAqB,KAAK,CAAC,EAAE;YAClC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,aAAa,CAAC,OAAkB;QACnC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,kBAAkB,EAAE;YAC5B,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAC7D,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACtC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,OAAO;QACV,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAE9B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,gBAAgB,EAAE;YAC9C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE;gBAC5E,SAAS;aACZ;YAED,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;SACjD;QAED,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAE3B,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACnD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,YAAY,CAAC,EAAE;gBACjF,SAAS;aACZ;YAED,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;SACtD;QAED,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC;QAEhC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,EAAE;YAChD,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YAC3E,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACnC;QAED,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC5C,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC;QAE3F,IAAI,iBAAiB,EAAE;YACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,iBAAiB,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACpE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;SACJ;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;gBACnE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;SACJ;QAED,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;SAChC;IACL,CAAC;;AArQgB,mCAAsB,GAAW,KAAK,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport type { PointerInfo } from \"core/Events/pointerEvents\";\r\nimport { PointerEventTypes } from \"core/Events/pointerEvents\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\nimport type { IDisposable, Scene } from \"core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport type { Control3D } from \"./controls/control3D\";\r\nimport type { IPointerEvent } from \"core/Events/deviceInputEvents\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @hidden */\r\n public _lastPickedControl: Control3D;\r\n /** @hidden */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @hidden */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @hidden */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @hidden */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n const scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n const utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n const previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n const pointerEvent = <IPointerEvent>pi.event;\r\n\r\n const pointerId = pointerEvent.pointerId || 0;\r\n const buttonIndex = pointerEvent.button;\r\n\r\n const pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (const materialName in this._sharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (const materialName in this._touchSharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n const utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"gui3DManager.js","sourceRoot":"","sources":["../../../../../lts/gui/generated/3D/gui3DManager.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { Vector3 } from \"core/Maths/math.vector\";\r\nimport type { PointerInfo } from \"core/Events/pointerEvents\";\r\nimport { PointerEventTypes } from \"core/Events/pointerEvents\";\r\nimport type { Material } from \"core/Materials/material\";\r\nimport { HemisphericLight } from \"core/Lights/hemisphericLight\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport { UtilityLayerRenderer } from \"core/Rendering/utilityLayerRenderer\";\r\nimport { EngineStore } from \"core/Engines/engineStore\";\r\nimport type { IDisposable, Scene } from \"core/scene\";\r\n\r\nimport { Container3D } from \"./controls/container3D\";\r\nimport type { Control3D } from \"./controls/control3D\";\r\nimport type { IPointerEvent } from \"core/Events/deviceInputEvents\";\r\n\r\n/**\r\n * Class used to manage 3D user interface\r\n * @see https://doc.babylonjs.com/how_to/gui3d\r\n */\r\nexport class GUI3DManager implements IDisposable {\r\n private _scene: Scene;\r\n private _sceneDisposeObserver: Nullable<Observer<Scene>>;\r\n private _utilityLayer: Nullable<UtilityLayerRenderer>;\r\n private _rootContainer: Container3D;\r\n private _pointerObserver: Nullable<Observer<PointerInfo>>;\r\n private _pointerOutObserver: Nullable<Observer<number>>;\r\n private _customControlScaling = 1.0;\r\n /** @internal */\r\n public _lastPickedControl: Control3D;\r\n /** @internal */\r\n public _lastControlOver: { [pointerId: number]: Control3D } = {};\r\n /** @internal */\r\n public _lastControlDown: { [pointerId: number]: Control3D } = {};\r\n\r\n protected static MRTK_REALISTIC_SCALING: number = 0.032;\r\n\r\n /**\r\n * Observable raised when the point picked by the pointer events changed\r\n */\r\n public onPickedPointChangedObservable = new Observable<Nullable<Vector3>>();\r\n\r\n /**\r\n * Observable raised when a picking happens\r\n */\r\n public onPickingObservable = new Observable<Nullable<AbstractMesh>>();\r\n\r\n // Shared resources\r\n /** @internal */\r\n public _sharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** @internal */\r\n public _touchSharedMaterials: { [key: string]: Material } = {};\r\n\r\n /** Gets the hosting scene */\r\n public get scene(): Scene {\r\n return this._scene;\r\n }\r\n\r\n /** Gets associated utility layer */\r\n public get utilityLayer(): Nullable<UtilityLayerRenderer> {\r\n return this._utilityLayer;\r\n }\r\n\r\n /** Gets the scaling for all UI elements owned by this manager */\r\n public get controlScaling() {\r\n return this._customControlScaling;\r\n }\r\n\r\n /** Sets the scaling adjustment for all UI elements owned by this manager */\r\n public set controlScaling(newScale: number) {\r\n if (this._customControlScaling !== newScale && newScale > 0) {\r\n const scaleRatio = newScale / this._customControlScaling;\r\n this._customControlScaling = newScale;\r\n\r\n this._rootContainer.children.forEach((control: Control3D) => {\r\n control.scaling.scaleInPlace(scaleRatio);\r\n\r\n if (newScale !== 1) {\r\n control._isScaledByManager = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** Gets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public get useRealisticScaling() {\r\n return this.controlScaling === GUI3DManager.MRTK_REALISTIC_SCALING;\r\n }\r\n\r\n /** Sets if controls attached to this manager are realistically sized, based on the fact that 1 unit length is 1 meter */\r\n public set useRealisticScaling(newValue: boolean) {\r\n this.controlScaling = newValue ? GUI3DManager.MRTK_REALISTIC_SCALING : 1;\r\n }\r\n\r\n /**\r\n * Creates a new GUI3DManager\r\n * @param scene\r\n */\r\n public constructor(scene?: Scene) {\r\n this._scene = scene || EngineStore.LastCreatedScene!;\r\n this._sceneDisposeObserver = this._scene.onDisposeObservable.add(() => {\r\n this._sceneDisposeObserver = null;\r\n this._utilityLayer = null;\r\n this.dispose();\r\n });\r\n\r\n this._utilityLayer = UtilityLayerRenderer._CreateDefaultUtilityLayerFromScene(this._scene);\r\n this._utilityLayer.onlyCheckPointerDownEvents = false;\r\n this._utilityLayer.pickUtilitySceneFirst = false;\r\n this._utilityLayer.mainSceneTrackerPredicate = (mesh: Nullable<AbstractMesh>) => {\r\n return mesh && mesh.reservedDataStore?.GUI3D?.control?._node;\r\n };\r\n\r\n // Root\r\n this._rootContainer = new Container3D(\"RootContainer\");\r\n this._rootContainer._host = this;\r\n const utilityLayerScene = this._utilityLayer.utilityLayerScene;\r\n\r\n // Events\r\n this._pointerOutObserver = this._utilityLayer.onPointerOutObservable.add((pointerId) => {\r\n this._handlePointerOut(pointerId, true);\r\n });\r\n\r\n this._pointerObserver = utilityLayerScene.onPointerObservable.add((pi) => {\r\n this._doPicking(pi);\r\n });\r\n\r\n // Scene\r\n this._utilityLayer.utilityLayerScene.autoClear = false;\r\n this._utilityLayer.utilityLayerScene.autoClearDepthAndStencil = false;\r\n new HemisphericLight(\"hemi\", Vector3.Up(), this._utilityLayer.utilityLayerScene);\r\n }\r\n\r\n private _handlePointerOut(pointerId: number, isPointerUp: boolean) {\r\n const previousControlOver = this._lastControlOver[pointerId];\r\n if (previousControlOver) {\r\n previousControlOver._onPointerOut(previousControlOver);\r\n delete this._lastControlOver[pointerId];\r\n }\r\n\r\n if (isPointerUp) {\r\n if (this._lastControlDown[pointerId]) {\r\n this._lastControlDown[pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerId];\r\n }\r\n }\r\n\r\n this.onPickedPointChangedObservable.notifyObservers(null);\r\n }\r\n\r\n private _doPicking(pi: PointerInfo): boolean {\r\n if (!this._utilityLayer || !this._utilityLayer.shouldRender || !this._utilityLayer.utilityLayerScene.activeCamera) {\r\n return false;\r\n }\r\n\r\n const pointerEvent = <IPointerEvent>pi.event;\r\n\r\n const pointerId = pointerEvent.pointerId || 0;\r\n const buttonIndex = pointerEvent.button;\r\n\r\n const pickingInfo = pi.pickInfo;\r\n if (pickingInfo) {\r\n this.onPickingObservable.notifyObservers(pickingInfo.pickedMesh);\r\n }\r\n\r\n if (!pickingInfo || !pickingInfo.hit) {\r\n this._handlePointerOut(pointerId, pi.type === PointerEventTypes.POINTERUP);\r\n return false;\r\n }\r\n\r\n if (pickingInfo.pickedPoint) {\r\n this.onPickedPointChangedObservable.notifyObservers(pickingInfo.pickedPoint);\r\n }\r\n\r\n const control = <Control3D>pickingInfo.pickedMesh!.reservedDataStore?.GUI3D?.control;\r\n if (!!control && !control._processObservables(pi.type, pickingInfo.pickedPoint!, pickingInfo.originMesh?.position || null, pointerId, buttonIndex)) {\r\n if (pi.type === PointerEventTypes.POINTERMOVE) {\r\n if (this._lastControlOver[pointerId]) {\r\n this._lastControlOver[pointerId]._onPointerOut(this._lastControlOver[pointerId]);\r\n }\r\n\r\n delete this._lastControlOver[pointerId];\r\n }\r\n }\r\n\r\n if (pi.type === PointerEventTypes.POINTERUP) {\r\n if (this._lastControlDown[pointerEvent.pointerId]) {\r\n this._lastControlDown[pointerEvent.pointerId].forcePointerUp();\r\n delete this._lastControlDown[pointerEvent.pointerId];\r\n }\r\n\r\n if (pointerEvent.pointerType === \"touch\") {\r\n this._handlePointerOut(pointerId, false);\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the root container\r\n */\r\n public get rootContainer(): Container3D {\r\n return this._rootContainer;\r\n }\r\n\r\n /**\r\n * Gets a boolean indicating if the given control is in the root child list\r\n * @param control defines the control to check\r\n * @returns true if the control is in the root child list\r\n */\r\n public containsControl(control: Control3D): boolean {\r\n return this._rootContainer.containsControl(control);\r\n }\r\n\r\n /**\r\n * Adds a control to the root child list\r\n * @param control defines the control to add\r\n * @returns the current manager\r\n */\r\n public addControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.addControl(control);\r\n if (this._customControlScaling !== 1) {\r\n control.scaling.scaleInPlace(this._customControlScaling);\r\n control._isScaledByManager = true;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes a control from the root child list\r\n * @param control defines the control to remove\r\n * @returns the current container\r\n */\r\n public removeControl(control: Control3D): GUI3DManager {\r\n this._rootContainer.removeControl(control);\r\n if (control._isScaledByManager) {\r\n control.scaling.scaleInPlace(1 / this._customControlScaling);\r\n control._isScaledByManager = false;\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n this._rootContainer.dispose();\r\n\r\n for (const materialName in this._sharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._sharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._sharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._sharedMaterials = {};\r\n\r\n for (const materialName in this._touchSharedMaterials) {\r\n if (!Object.prototype.hasOwnProperty.call(this._touchSharedMaterials, materialName)) {\r\n continue;\r\n }\r\n\r\n this._touchSharedMaterials[materialName].dispose();\r\n }\r\n\r\n this._touchSharedMaterials = {};\r\n\r\n if (this._pointerOutObserver && this._utilityLayer) {\r\n this._utilityLayer.onPointerOutObservable.remove(this._pointerOutObserver);\r\n this._pointerOutObserver = null;\r\n }\r\n\r\n this.onPickedPointChangedObservable.clear();\r\n this.onPickingObservable.clear();\r\n\r\n const utilityLayerScene = this._utilityLayer ? this._utilityLayer.utilityLayerScene : null;\r\n\r\n if (utilityLayerScene) {\r\n if (this._pointerObserver) {\r\n utilityLayerScene.onPointerObservable.remove(this._pointerObserver);\r\n this._pointerObserver = null;\r\n }\r\n }\r\n if (this._scene) {\r\n if (this._sceneDisposeObserver) {\r\n this._scene.onDisposeObservable.remove(this._sceneDisposeObserver);\r\n this._sceneDisposeObserver = null;\r\n }\r\n }\r\n\r\n if (this._utilityLayer) {\r\n this._utilityLayer.dispose();\r\n }\r\n }\r\n}\r\n"]}
@@ -11,7 +11,7 @@ import type { Scene } from "@babylonjs/core/scene.js";
11
11
  import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
12
12
  import "./shaders/fluent.vertex";
13
13
  import "./shaders/fluent.fragment";
14
- /** @hidden */
14
+ /** @internal */
15
15
  export declare class FluentMaterialDefines extends MaterialDefines {
16
16
  INNERGLOW: boolean;
17
17
  BORDER: boolean;
@@ -9,7 +9,7 @@ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
9
9
  import { Color3, Color4 } from "@babylonjs/core/Maths/math.color.js";
10
10
  import "./shaders/fluent.vertex.js";
11
11
  import "./shaders/fluent.fragment.js";
12
- /** @hidden */
12
+ /** @internal */
13
13
  export class FluentMaterialDefines extends MaterialDefines {
14
14
  constructor() {
15
15
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"fluentMaterial.js","sourceRoot":"","sources":["../../../../../../../lts/gui/generated/3D/materials/fluent/fluentMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serializeAsColor4, serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"core/Misc/decorators\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3, TmpVectors } from \"core/Maths/math.vector\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialHelper } from \"core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\n\r\nimport \"./shaders/fluent.vertex\";\r\nimport \"./shaders/fluent.fragment\";\r\n\r\n/** @hidden */\r\nexport class FluentMaterialDefines extends MaterialDefines {\r\n public INNERGLOW = false;\r\n public BORDER = false;\r\n public HOVERLIGHT = false;\r\n public TEXTURE = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render controls with fluent design\r\n */\r\nexport class FluentMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public innerGlowColorIntensity = 0.5;\r\n\r\n /**\r\n * Gets or sets the inner glow color (white by default)\r\n */\r\n @serializeAsColor3()\r\n public innerGlowColor = new Color3(1.0, 1.0, 1.0);\r\n\r\n /**\r\n * Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))\r\n */\r\n @serializeAsColor3()\r\n public albedoColor = new Color3(0.3, 0.35, 0.4);\r\n\r\n /**\r\n * Gets or sets a boolean indicating if borders must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderBorders = false;\r\n\r\n /**\r\n * Gets or sets border width (default is 0.5)\r\n */\r\n @serialize()\r\n public borderWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)\r\n */\r\n @serialize()\r\n public edgeSmoothingValue = 0.02;\r\n\r\n /**\r\n * Gets or sets the minimum value that can be applied to border width (default is 0.1)\r\n */\r\n @serialize()\r\n public borderMinValue = 0.1;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if hover light must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderHoverLight = false;\r\n\r\n /**\r\n * Gets or sets the radius used to render the hover light (default is 0.01)\r\n */\r\n @serialize()\r\n public hoverRadius = 0.01;\r\n\r\n /**\r\n * Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))\r\n */\r\n @serializeAsColor4()\r\n public hoverColor = new Color4(0.3, 0.3, 0.3, 1.0);\r\n\r\n /**\r\n * Gets or sets the hover light position in world space (default is Vector3.Zero())\r\n */\r\n @serializeAsVector3()\r\n public hoverPosition = Vector3.Zero();\r\n\r\n @serializeAsTexture(\"albedoTexture\")\r\n private _albedoTexture: Nullable<BaseTexture>;\r\n\r\n /** Gets or sets the texture to use for albedo color */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public albedoTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Creates a new Fluent material\r\n * @param name defines the name of the material\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return this.alpha !== 1.0;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FluentMaterialDefines();\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!this.checkReadyOnEveryCall && subMesh.effect) {\r\n if (defines._renderId === scene.getRenderId()) {\r\n return true;\r\n }\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n defines.INNERGLOW = this.innerGlowColorIntensity > 0;\r\n defines.BORDER = this.renderBorders;\r\n defines.HOVERLIGHT = this.renderHoverLight;\r\n\r\n if (this._albedoTexture) {\r\n if (!this._albedoTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n defines.TEXTURE = true;\r\n }\r\n } else {\r\n defines.TEXTURE = false;\r\n }\r\n }\r\n\r\n const engine = scene.getEngine();\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n attribs.push(VertexBuffer.NormalKind);\r\n attribs.push(VertexBuffer.UVKind);\r\n\r\n const shaderName = \"fluent\";\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"innerGlowColor\",\r\n \"albedoColor\",\r\n \"borderWidth\",\r\n \"edgeSmoothingValue\",\r\n \"scaleFactor\",\r\n \"borderMinValue\",\r\n \"hoverColor\",\r\n \"hoverPosition\",\r\n \"hoverRadius\",\r\n \"textureMatrix\",\r\n ];\r\n\r\n const samplers = [\"albedoSampler\"];\r\n const uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n const join = defines.toString();\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n this._activeEffect.setColor4(\"albedoColor\", this.albedoColor, this.alpha);\r\n\r\n if (defines.INNERGLOW) {\r\n this._activeEffect.setColor4(\"innerGlowColor\", this.innerGlowColor, this.innerGlowColorIntensity);\r\n }\r\n\r\n if (defines.BORDER) {\r\n this._activeEffect.setFloat(\"borderWidth\", this.borderWidth);\r\n this._activeEffect.setFloat(\"edgeSmoothingValue\", this.edgeSmoothingValue);\r\n this._activeEffect.setFloat(\"borderMinValue\", this.borderMinValue);\r\n\r\n mesh.getBoundingInfo().boundingBox.extendSize.multiplyToRef(mesh.scaling, TmpVectors.Vector3[0]);\r\n this._activeEffect.setVector3(\"scaleFactor\", TmpVectors.Vector3[0]);\r\n }\r\n\r\n if (defines.HOVERLIGHT) {\r\n this._activeEffect.setDirectColor4(\"hoverColor\", this.hoverColor);\r\n this._activeEffect.setFloat(\"hoverRadius\", this.hoverRadius);\r\n this._activeEffect.setVector3(\"hoverPosition\", this.hoverPosition);\r\n }\r\n\r\n if (defines.TEXTURE && this._albedoTexture) {\r\n this._activeEffect.setTexture(\"albedoSampler\", this._albedoTexture);\r\n const matrix = this._albedoTexture.getTextureMatrix();\r\n this._activeEffect.setMatrix(\"textureMatrix\", matrix);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n return activeTextures;\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): FluentMaterial {\r\n return SerializationHelper.Clone(() => new FluentMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GUI.FluentMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FluentMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial {\r\n return SerializationHelper.Parse(() => new FluentMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentMaterial\", FluentMaterial);\r\n"]}
1
+ {"version":3,"file":"fluentMaterial.js","sourceRoot":"","sources":["../../../../../../../lts/gui/generated/3D/materials/fluent/fluentMaterial.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\r\nimport type { Nullable } from \"core/types\";\r\nimport { serializeAsColor4, serializeAsVector3, serializeAsTexture, serialize, expandToProperty, serializeAsColor3, SerializationHelper } from \"core/Misc/decorators\";\r\nimport type { Matrix } from \"core/Maths/math.vector\";\r\nimport { Vector3, TmpVectors } from \"core/Maths/math.vector\";\r\nimport type { BaseTexture } from \"core/Materials/Textures/baseTexture\";\r\nimport { MaterialDefines } from \"core/Materials/materialDefines\";\r\nimport type { IEffectCreationOptions } from \"core/Materials/effect\";\r\nimport { MaterialHelper } from \"core/Materials/materialHelper\";\r\nimport { PushMaterial } from \"core/Materials/pushMaterial\";\r\nimport { VertexBuffer } from \"core/Buffers/buffer\";\r\nimport type { AbstractMesh } from \"core/Meshes/abstractMesh\";\r\nimport type { SubMesh } from \"core/Meshes/subMesh\";\r\nimport type { Mesh } from \"core/Meshes/mesh\";\r\nimport type { Scene } from \"core/scene\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { Color3, Color4 } from \"core/Maths/math.color\";\r\n\r\nimport \"./shaders/fluent.vertex\";\r\nimport \"./shaders/fluent.fragment\";\r\n\r\n/** @internal */\r\nexport class FluentMaterialDefines extends MaterialDefines {\r\n public INNERGLOW = false;\r\n public BORDER = false;\r\n public HOVERLIGHT = false;\r\n public TEXTURE = false;\r\n\r\n constructor() {\r\n super();\r\n this.rebuild();\r\n }\r\n}\r\n\r\n/**\r\n * Class used to render controls with fluent design\r\n */\r\nexport class FluentMaterial extends PushMaterial {\r\n /**\r\n * Gets or sets inner glow intensity. A value of 0 means no glow (default is 0.5)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public innerGlowColorIntensity = 0.5;\r\n\r\n /**\r\n * Gets or sets the inner glow color (white by default)\r\n */\r\n @serializeAsColor3()\r\n public innerGlowColor = new Color3(1.0, 1.0, 1.0);\r\n\r\n /**\r\n * Gets or sets the albedo color (Default is Color3(0.3, 0.35, 0.4))\r\n */\r\n @serializeAsColor3()\r\n public albedoColor = new Color3(0.3, 0.35, 0.4);\r\n\r\n /**\r\n * Gets or sets a boolean indicating if borders must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderBorders = false;\r\n\r\n /**\r\n * Gets or sets border width (default is 0.5)\r\n */\r\n @serialize()\r\n public borderWidth = 0.5;\r\n\r\n /**\r\n * Gets or sets a value indicating the smoothing value applied to border edges (0.02 by default)\r\n */\r\n @serialize()\r\n public edgeSmoothingValue = 0.02;\r\n\r\n /**\r\n * Gets or sets the minimum value that can be applied to border width (default is 0.1)\r\n */\r\n @serialize()\r\n public borderMinValue = 0.1;\r\n\r\n /**\r\n * Gets or sets a boolean indicating if hover light must be rendered (default is false)\r\n */\r\n @serialize()\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesDirty\")\r\n public renderHoverLight = false;\r\n\r\n /**\r\n * Gets or sets the radius used to render the hover light (default is 0.01)\r\n */\r\n @serialize()\r\n public hoverRadius = 0.01;\r\n\r\n /**\r\n * Gets or sets the color used to render the hover light (default is Color4(0.3, 0.3, 0.3, 1.0))\r\n */\r\n @serializeAsColor4()\r\n public hoverColor = new Color4(0.3, 0.3, 0.3, 1.0);\r\n\r\n /**\r\n * Gets or sets the hover light position in world space (default is Vector3.Zero())\r\n */\r\n @serializeAsVector3()\r\n public hoverPosition = Vector3.Zero();\r\n\r\n @serializeAsTexture(\"albedoTexture\")\r\n private _albedoTexture: Nullable<BaseTexture>;\r\n\r\n /** Gets or sets the texture to use for albedo color */\r\n @expandToProperty(\"_markAllSubMeshesAsTexturesAndMiscDirty\")\r\n public albedoTexture: Nullable<BaseTexture>;\r\n\r\n /**\r\n * Creates a new Fluent material\r\n * @param name defines the name of the material\r\n * @param scene defines the hosting scene\r\n */\r\n constructor(name: string, scene?: Scene) {\r\n super(name, scene);\r\n }\r\n\r\n public needAlphaBlending(): boolean {\r\n return this.alpha !== 1.0;\r\n }\r\n\r\n public needAlphaTesting(): boolean {\r\n return false;\r\n }\r\n\r\n public getAlphaTestTexture(): Nullable<BaseTexture> {\r\n return null;\r\n }\r\n\r\n public isReadyForSubMesh(mesh: AbstractMesh, subMesh: SubMesh): boolean {\r\n if (this.isFrozen) {\r\n if (subMesh.effect && subMesh.effect._wasPreviouslyReady) {\r\n return true;\r\n }\r\n }\r\n\r\n if (!subMesh.materialDefines) {\r\n subMesh.materialDefines = new FluentMaterialDefines();\r\n }\r\n\r\n const scene = this.getScene();\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!this.checkReadyOnEveryCall && subMesh.effect) {\r\n if (defines._renderId === scene.getRenderId()) {\r\n return true;\r\n }\r\n }\r\n\r\n if (defines._areTexturesDirty) {\r\n defines.INNERGLOW = this.innerGlowColorIntensity > 0;\r\n defines.BORDER = this.renderBorders;\r\n defines.HOVERLIGHT = this.renderHoverLight;\r\n\r\n if (this._albedoTexture) {\r\n if (!this._albedoTexture.isReadyOrNotBlocking()) {\r\n return false;\r\n } else {\r\n defines.TEXTURE = true;\r\n }\r\n } else {\r\n defines.TEXTURE = false;\r\n }\r\n }\r\n\r\n const engine = scene.getEngine();\r\n // Get correct effect\r\n if (defines.isDirty) {\r\n defines.markAsProcessed();\r\n scene.resetCachedMaterial();\r\n\r\n //Attributes\r\n const attribs = [VertexBuffer.PositionKind];\r\n attribs.push(VertexBuffer.NormalKind);\r\n attribs.push(VertexBuffer.UVKind);\r\n\r\n const shaderName = \"fluent\";\r\n\r\n const uniforms = [\r\n \"world\",\r\n \"viewProjection\",\r\n \"innerGlowColor\",\r\n \"albedoColor\",\r\n \"borderWidth\",\r\n \"edgeSmoothingValue\",\r\n \"scaleFactor\",\r\n \"borderMinValue\",\r\n \"hoverColor\",\r\n \"hoverPosition\",\r\n \"hoverRadius\",\r\n \"textureMatrix\",\r\n ];\r\n\r\n const samplers = [\"albedoSampler\"];\r\n const uniformBuffers = new Array<string>();\r\n\r\n MaterialHelper.PrepareUniformsAndSamplersList(<IEffectCreationOptions>{\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: defines,\r\n maxSimultaneousLights: 4,\r\n });\r\n\r\n const join = defines.toString();\r\n subMesh.setEffect(\r\n scene.getEngine().createEffect(\r\n shaderName,\r\n <IEffectCreationOptions>{\r\n attributes: attribs,\r\n uniformsNames: uniforms,\r\n uniformBuffersNames: uniformBuffers,\r\n samplers: samplers,\r\n defines: join,\r\n fallbacks: null,\r\n onCompiled: this.onCompiled,\r\n onError: this.onError,\r\n indexParameters: { maxSimultaneousLights: 4 },\r\n },\r\n engine\r\n ),\r\n defines,\r\n this._materialContext\r\n );\r\n }\r\n\r\n if (!subMesh.effect || !subMesh.effect.isReady()) {\r\n return false;\r\n }\r\n\r\n defines._renderId = scene.getRenderId();\r\n subMesh.effect._wasPreviouslyReady = true;\r\n\r\n return true;\r\n }\r\n\r\n public bindForSubMesh(world: Matrix, mesh: Mesh, subMesh: SubMesh): void {\r\n const scene = this.getScene();\r\n\r\n const defines = <FluentMaterialDefines>subMesh.materialDefines;\r\n if (!defines) {\r\n return;\r\n }\r\n\r\n const effect = subMesh.effect;\r\n if (!effect) {\r\n return;\r\n }\r\n this._activeEffect = effect;\r\n\r\n // Matrices\r\n this.bindOnlyWorldMatrix(world);\r\n this._activeEffect.setMatrix(\"viewProjection\", scene.getTransformMatrix());\r\n\r\n if (this._mustRebind(scene, effect)) {\r\n this._activeEffect.setColor4(\"albedoColor\", this.albedoColor, this.alpha);\r\n\r\n if (defines.INNERGLOW) {\r\n this._activeEffect.setColor4(\"innerGlowColor\", this.innerGlowColor, this.innerGlowColorIntensity);\r\n }\r\n\r\n if (defines.BORDER) {\r\n this._activeEffect.setFloat(\"borderWidth\", this.borderWidth);\r\n this._activeEffect.setFloat(\"edgeSmoothingValue\", this.edgeSmoothingValue);\r\n this._activeEffect.setFloat(\"borderMinValue\", this.borderMinValue);\r\n\r\n mesh.getBoundingInfo().boundingBox.extendSize.multiplyToRef(mesh.scaling, TmpVectors.Vector3[0]);\r\n this._activeEffect.setVector3(\"scaleFactor\", TmpVectors.Vector3[0]);\r\n }\r\n\r\n if (defines.HOVERLIGHT) {\r\n this._activeEffect.setDirectColor4(\"hoverColor\", this.hoverColor);\r\n this._activeEffect.setFloat(\"hoverRadius\", this.hoverRadius);\r\n this._activeEffect.setVector3(\"hoverPosition\", this.hoverPosition);\r\n }\r\n\r\n if (defines.TEXTURE && this._albedoTexture) {\r\n this._activeEffect.setTexture(\"albedoSampler\", this._albedoTexture);\r\n const matrix = this._albedoTexture.getTextureMatrix();\r\n this._activeEffect.setMatrix(\"textureMatrix\", matrix);\r\n }\r\n }\r\n\r\n this._afterBind(mesh, this._activeEffect);\r\n }\r\n\r\n public getActiveTextures(): BaseTexture[] {\r\n const activeTextures = super.getActiveTextures();\r\n\r\n return activeTextures;\r\n }\r\n\r\n public hasTexture(texture: BaseTexture): boolean {\r\n if (super.hasTexture(texture)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public dispose(forceDisposeEffect?: boolean): void {\r\n super.dispose(forceDisposeEffect);\r\n }\r\n\r\n public clone(name: string): FluentMaterial {\r\n return SerializationHelper.Clone(() => new FluentMaterial(name, this.getScene()), this);\r\n }\r\n\r\n public serialize(): any {\r\n const serializationObject = super.serialize();\r\n serializationObject.customType = \"BABYLON.GUI.FluentMaterial\";\r\n return serializationObject;\r\n }\r\n\r\n public getClassName(): string {\r\n return \"FluentMaterial\";\r\n }\r\n\r\n // Statics\r\n public static Parse(source: any, scene: Scene, rootUrl: string): FluentMaterial {\r\n return SerializationHelper.Parse(() => new FluentMaterial(source.name, scene), source, scene, rootUrl);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.FluentMaterial\", FluentMaterial);\r\n"]}
@@ -1,4 +1,4 @@
1
- /** @hidden */
1
+ /** @internal */
2
2
  export declare const fluentPixelShader: {
3
3
  name: string;
4
4
  shader: string;
@@ -21,6 +21,6 @@ vec2 uvGlow=(vUV-vec2(0.5,0.5))*(innerGlowColor.a*2.0);
21
21
  gl_FragColor=vec4(albedo,alpha);
22
22
  // Sideeffect
23
23
  ShaderStore.ShadersStore[name] = shader;
24
- /** @hidden */
24
+ /** @internal */
25
25
  export const fluentPixelShader = { name, shader };
26
26
  //# sourceMappingURL=fluent.fragment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fluent.fragment.js","sourceRoot":"","sources":["../../../../../../../../lts/gui/generated/3D/materials/fluent/shaders/fluent.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDb,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentPixelShader\";\nconst shader = `precision highp float;\rvarying vec2 vUV;\runiform vec4 albedoColor;\r#ifdef INNERGLOW\nuniform vec4 innerGlowColor;\r#endif\n#ifdef BORDER\nvarying vec2 scaleInfo;\runiform float edgeSmoothingValue;\runiform float borderMinValue;\r#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;\runiform vec3 hoverPosition;\runiform vec4 hoverColor;\runiform float hoverRadius;\r#endif\n#ifdef TEXTURE\nuniform sampler2D albedoSampler;\runiform mat4 textureMatrix;\rvec2 finalUV;\r#endif\nvoid main(void) {\rvec3 albedo=albedoColor.rgb;\rfloat alpha=albedoColor.a;\r#ifdef TEXTURE\nfinalUV=vec2(textureMatrix*vec4(vUV,1.0,0.0));\ralbedo=texture2D(albedoSampler,finalUV).rgb;\r#endif\n#ifdef HOVERLIGHT\nfloat pointToHover=(1.0-clamp(length(hoverPosition-worldPosition)/hoverRadius,0.,1.))*hoverColor.a;\ralbedo=clamp(albedo+hoverColor.rgb*pointToHover,0.,1.);\r#else\nfloat pointToHover=1.0;\r#endif\n#ifdef BORDER \nfloat borderPower=10.0;\rfloat inverseBorderPower=1.0/borderPower;\rvec3 borderColor=albedo*borderPower;\rvec2 distanceToEdge;\rdistanceToEdge.x=abs(vUV.x-0.5)*2.0;\rdistanceToEdge.y=abs(vUV.y-0.5)*2.0;\rfloat borderValue=max(smoothstep(scaleInfo.x-edgeSmoothingValue,scaleInfo.x+edgeSmoothingValue,distanceToEdge.x),\rsmoothstep(scaleInfo.y-edgeSmoothingValue,scaleInfo.y+edgeSmoothingValue,distanceToEdge.y));\rborderColor=borderColor*borderValue*max(borderMinValue*inverseBorderPower,pointToHover); \ralbedo+=borderColor;\ralpha=max(alpha,borderValue);\r#endif\n#ifdef INNERGLOW\nvec2 uvGlow=(vUV-vec2(0.5,0.5))*(innerGlowColor.a*2.0);\ruvGlow=uvGlow*uvGlow;\ruvGlow=uvGlow*uvGlow;\ralbedo+=mix(vec3(0.0,0.0,0.0),innerGlowColor.rgb,uvGlow.x+uvGlow.y); \r#endif\ngl_FragColor=vec4(albedo,alpha);\r}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const fluentPixelShader = { name, shader };\n"]}
1
+ {"version":3,"file":"fluent.fragment.js","sourceRoot":"","sources":["../../../../../../../../lts/gui/generated/3D/materials/fluent/shaders/fluent.fragment.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,mBAAmB,CAAC;AACjC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuDb,CAAC;AACH,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentPixelShader\";\nconst shader = `precision highp float;\rvarying vec2 vUV;\runiform vec4 albedoColor;\r#ifdef INNERGLOW\nuniform vec4 innerGlowColor;\r#endif\n#ifdef BORDER\nvarying vec2 scaleInfo;\runiform float edgeSmoothingValue;\runiform float borderMinValue;\r#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;\runiform vec3 hoverPosition;\runiform vec4 hoverColor;\runiform float hoverRadius;\r#endif\n#ifdef TEXTURE\nuniform sampler2D albedoSampler;\runiform mat4 textureMatrix;\rvec2 finalUV;\r#endif\nvoid main(void) {\rvec3 albedo=albedoColor.rgb;\rfloat alpha=albedoColor.a;\r#ifdef TEXTURE\nfinalUV=vec2(textureMatrix*vec4(vUV,1.0,0.0));\ralbedo=texture2D(albedoSampler,finalUV).rgb;\r#endif\n#ifdef HOVERLIGHT\nfloat pointToHover=(1.0-clamp(length(hoverPosition-worldPosition)/hoverRadius,0.,1.))*hoverColor.a;\ralbedo=clamp(albedo+hoverColor.rgb*pointToHover,0.,1.);\r#else\nfloat pointToHover=1.0;\r#endif\n#ifdef BORDER \nfloat borderPower=10.0;\rfloat inverseBorderPower=1.0/borderPower;\rvec3 borderColor=albedo*borderPower;\rvec2 distanceToEdge;\rdistanceToEdge.x=abs(vUV.x-0.5)*2.0;\rdistanceToEdge.y=abs(vUV.y-0.5)*2.0;\rfloat borderValue=max(smoothstep(scaleInfo.x-edgeSmoothingValue,scaleInfo.x+edgeSmoothingValue,distanceToEdge.x),\rsmoothstep(scaleInfo.y-edgeSmoothingValue,scaleInfo.y+edgeSmoothingValue,distanceToEdge.y));\rborderColor=borderColor*borderValue*max(borderMinValue*inverseBorderPower,pointToHover); \ralbedo+=borderColor;\ralpha=max(alpha,borderValue);\r#endif\n#ifdef INNERGLOW\nvec2 uvGlow=(vUV-vec2(0.5,0.5))*(innerGlowColor.a*2.0);\ruvGlow=uvGlow*uvGlow;\ruvGlow=uvGlow*uvGlow;\ralbedo+=mix(vec3(0.0,0.0,0.0),innerGlowColor.rgb,uvGlow.x+uvGlow.y); \r#endif\ngl_FragColor=vec4(albedo,alpha);\r}`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const fluentPixelShader = { name, shader };\n"]}
@@ -1,4 +1,4 @@
1
- /** @hidden */
1
+ /** @internal */
2
2
  export declare const fluentVertexShader: {
3
3
  name: string;
4
4
  shader: string;
@@ -12,6 +12,6 @@ worldPosition=worldPos.xyz;
12
12
  gl_Position=viewProjection*worldPos;
13
13
  // Sideeffect
14
14
  ShaderStore.ShadersStore[name] = shader;
15
- /** @hidden */
15
+ /** @internal */
16
16
  export const fluentVertexShader = { name, shader };
17
17
  //# sourceMappingURL=fluent.vertex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fluent.vertex.js","sourceRoot":"","sources":["../../../../../../../../lts/gui/generated/3D/materials/fluent/shaders/fluent.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentVertexShader\";\nconst shader = `precision highp float;\rattribute vec3 position;\rattribute vec3 normal;\rattribute vec2 uv;\runiform mat4 world;\runiform mat4 viewProjection;\rvarying vec2 vUV;\r#ifdef BORDER\nvarying vec2 scaleInfo;\runiform float borderWidth;\runiform vec3 scaleFactor;\r#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;\r#endif\nvoid main(void) {\rvUV=uv;\r#ifdef BORDER\nvec3 scale=scaleFactor;\rfloat minScale=min(min(scale.x,scale.y),scale.z);\rfloat maxScale=max(max(scale.x,scale.y),scale.z);\rfloat minOverMiddleScale=minScale/(scale.x+scale.y+scale.z-minScale-maxScale);\rfloat areaYZ=scale.y*scale.z;\rfloat areaXZ=scale.x*scale.z;\rfloat areaXY=scale.x*scale.y;\rfloat scaledBorderWidth=borderWidth; \rif (abs(normal.x)==1.0) \r{\rscale.x=scale.y;\rscale.y=scale.z;\rif (areaYZ>areaXZ && areaYZ>areaXY)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\relse if (abs(normal.y)==1.0) \r{\rscale.x=scale.z;\rif (areaXZ>areaXY && areaXZ>areaYZ)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\relse \r{\rif (areaXY>areaYZ && areaXY>areaXZ)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\rfloat scaleRatio=min(scale.x,scale.y)/max(scale.x,scale.y);\rif (scale.x>scale.y)\r{\rscaleInfo.x=1.0-(scaledBorderWidth*scaleRatio);\rscaleInfo.y=1.0-scaledBorderWidth;\r}\relse\r{\rscaleInfo.x=1.0-scaledBorderWidth;\rscaleInfo.y=1.0-(scaledBorderWidth*scaleRatio);\r} \r#endif \nvec4 worldPos=world*vec4(position,1.0);\r#ifdef HOVERLIGHT\nworldPosition=worldPos.xyz;\r#endif\ngl_Position=viewProjection*worldPos;\r}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @hidden */\nexport const fluentVertexShader = { name, shader };\n"]}
1
+ {"version":3,"file":"fluent.vertex.js","sourceRoot":"","sources":["../../../../../../../../lts/gui/generated/3D/materials/fluent/shaders/fluent.vertex.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,+CAAiC;AAEvD,MAAM,IAAI,GAAG,oBAAoB,CAAC;AAClC,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoEd,CAAC;AACF,aAAa;AACb,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;AACxC,gBAAgB;AAChB,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC","sourcesContent":["// Do not edit.\nimport { ShaderStore } from \"core/Engines/shaderStore\";\n\nconst name = \"fluentVertexShader\";\nconst shader = `precision highp float;\rattribute vec3 position;\rattribute vec3 normal;\rattribute vec2 uv;\runiform mat4 world;\runiform mat4 viewProjection;\rvarying vec2 vUV;\r#ifdef BORDER\nvarying vec2 scaleInfo;\runiform float borderWidth;\runiform vec3 scaleFactor;\r#endif\n#ifdef HOVERLIGHT\nvarying vec3 worldPosition;\r#endif\nvoid main(void) {\rvUV=uv;\r#ifdef BORDER\nvec3 scale=scaleFactor;\rfloat minScale=min(min(scale.x,scale.y),scale.z);\rfloat maxScale=max(max(scale.x,scale.y),scale.z);\rfloat minOverMiddleScale=minScale/(scale.x+scale.y+scale.z-minScale-maxScale);\rfloat areaYZ=scale.y*scale.z;\rfloat areaXZ=scale.x*scale.z;\rfloat areaXY=scale.x*scale.y;\rfloat scaledBorderWidth=borderWidth; \rif (abs(normal.x)==1.0) \r{\rscale.x=scale.y;\rscale.y=scale.z;\rif (areaYZ>areaXZ && areaYZ>areaXY)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\relse if (abs(normal.y)==1.0) \r{\rscale.x=scale.z;\rif (areaXZ>areaXY && areaXZ>areaYZ)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\relse \r{\rif (areaXY>areaYZ && areaXY>areaXZ)\r{\rscaledBorderWidth*=minOverMiddleScale;\r}\r}\rfloat scaleRatio=min(scale.x,scale.y)/max(scale.x,scale.y);\rif (scale.x>scale.y)\r{\rscaleInfo.x=1.0-(scaledBorderWidth*scaleRatio);\rscaleInfo.y=1.0-scaledBorderWidth;\r}\relse\r{\rscaleInfo.x=1.0-scaledBorderWidth;\rscaleInfo.y=1.0-(scaledBorderWidth*scaleRatio);\r} \r#endif \nvec4 worldPos=world*vec4(position,1.0);\r#ifdef HOVERLIGHT\nworldPosition=worldPos.xyz;\r#endif\ngl_Position=viewProjection*worldPos;\r}\r`;\n// Sideeffect\nShaderStore.ShadersStore[name] = shader;\n/** @internal */\nexport const fluentVertexShader = { name, shader };\n"]}
@@ -38,7 +38,7 @@ export declare class FluentBackplateMaterial extends PushMaterial {
38
38
  * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.
39
39
  */
40
40
  absoluteSizes: boolean;
41
- /** @hidden */
41
+ /** @internal */
42
42
  _filterWidth: number;
43
43
  /**
44
44
  * Gets or sets the base color of the backplate.
@@ -92,7 +92,7 @@ export declare class FluentBackplateMaterial extends PushMaterial {
92
92
  * Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0.
93
93
  */
94
94
  blobFade2: number;
95
- /** @hidden */
95
+ /** @internal */
96
96
  _rate: number;
97
97
  /**
98
98
  * Gets or sets the color of the highlights on the backplate line.
@@ -102,9 +102,9 @@ export declare class FluentBackplateMaterial extends PushMaterial {
102
102
  * Gets or sets the width of the highlights on the backplate line.
103
103
  */
104
104
  highlightWidth: number;
105
- /** @hidden */
105
+ /** @internal */
106
106
  _highlightTransform: Vector4;
107
- /** @hidden */
107
+ /** @internal */
108
108
  _highlight: number;
109
109
  /**
110
110
  * Gets or sets the intensity of the iridescence effect.
@@ -114,17 +114,17 @@ export declare class FluentBackplateMaterial extends PushMaterial {
114
114
  * Gets or sets the intensity of the iridescence effect on the backplate edges.
115
115
  */
116
116
  iridescenceEdgeIntensity: number;
117
- /** @hidden */
117
+ /** @internal */
118
118
  _angle: number;
119
119
  /**
120
120
  * Gets or sets the opacity of the backplate (0.0 - 1.0).
121
121
  */
122
122
  fadeOut: number;
123
- /** @hidden */
123
+ /** @internal */
124
124
  _reflected: boolean;
125
- /** @hidden */
125
+ /** @internal */
126
126
  _frequency: number;
127
- /** @hidden */
127
+ /** @internal */
128
128
  _verticalOffset: number;
129
129
  /**
130
130
  * Gets or sets the world-space position of the tip of the left index finger.
@@ -12,7 +12,7 @@ import { EffectFallbacks } from "@babylonjs/core/Materials/effectFallbacks.js";
12
12
  import { Constants } from "@babylonjs/core/Engines/constants.js";
13
13
  import "./shaders/fluentBackplate.fragment.js";
14
14
  import "./shaders/fluentBackplate.vertex.js";
15
- /** @hidden */
15
+ /** @internal */
16
16
  class FluentBackplateMaterialDefines extends MaterialDefines {
17
17
  constructor() {
18
18
  super();
@@ -43,7 +43,7 @@ export class FluentBackplateMaterial extends PushMaterial {
43
43
  * Since desktop and VR/AR have different relative sizes, it's usually best to keep this false.
44
44
  */
45
45
  this.absoluteSizes = false;
46
- /** @hidden */
46
+ /** @internal */
47
47
  this._filterWidth = 1;
48
48
  /**
49
49
  * Gets or sets the base color of the backplate.
@@ -97,7 +97,7 @@ export class FluentBackplateMaterial extends PushMaterial {
97
97
  * Gets or sets the opacity of the fluent hover glow effect corresponding to the right pointer (0.0 - 1.0). Default is 0.
98
98
  */
99
99
  this.blobFade2 = 0;
100
- /** @hidden */
100
+ /** @internal */
101
101
  this._rate = 0.135;
102
102
  /**
103
103
  * Gets or sets the color of the highlights on the backplate line.
@@ -107,9 +107,9 @@ export class FluentBackplateMaterial extends PushMaterial {
107
107
  * Gets or sets the width of the highlights on the backplate line.
108
108
  */
109
109
  this.highlightWidth = 0.25;
110
- /** @hidden */
110
+ /** @internal */
111
111
  this._highlightTransform = new Vector4(1, 1, 0, 0);
112
- /** @hidden */
112
+ /** @internal */
113
113
  this._highlight = 1;
114
114
  /**
115
115
  * Gets or sets the intensity of the iridescence effect.
@@ -119,17 +119,17 @@ export class FluentBackplateMaterial extends PushMaterial {
119
119
  * Gets or sets the intensity of the iridescence effect on the backplate edges.
120
120
  */
121
121
  this.iridescenceEdgeIntensity = 1;
122
- /** @hidden */
122
+ /** @internal */
123
123
  this._angle = -45;
124
124
  /**
125
125
  * Gets or sets the opacity of the backplate (0.0 - 1.0).
126
126
  */
127
127
  this.fadeOut = 1;
128
- /** @hidden */
128
+ /** @internal */
129
129
  this._reflected = true;
130
- /** @hidden */
130
+ /** @internal */
131
131
  this._frequency = 1;
132
- /** @hidden */
132
+ /** @internal */
133
133
  this._verticalOffset = 0;
134
134
  /**
135
135
  * Gets or sets the world-space position of the tip of the left index finger.