@babylonjs/gui 5.0.0-alpha.9 → 5.0.0-beta.11

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 (273) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +179 -127
  3. package/2D/advancedDynamicTexture.js +368 -183
  4. package/2D/advancedDynamicTexture.js.map +1 -1
  5. package/2D/controls/button.d.ts +8 -0
  6. package/2D/controls/button.js +33 -10
  7. package/2D/controls/button.js.map +1 -1
  8. package/2D/controls/checkbox.d.ts +2 -1
  9. package/2D/controls/checkbox.js +10 -8
  10. package/2D/controls/checkbox.js.map +1 -1
  11. package/2D/controls/colorpicker.d.ts +4 -3
  12. package/2D/controls/colorpicker.js +40 -23
  13. package/2D/controls/colorpicker.js.map +1 -1
  14. package/2D/controls/container.d.ts +16 -5
  15. package/2D/controls/container.js +99 -15
  16. package/2D/controls/container.js.map +1 -1
  17. package/2D/controls/control.d.ts +115 -47
  18. package/2D/controls/control.js +318 -139
  19. package/2D/controls/control.js.map +1 -1
  20. package/2D/controls/displayGrid.d.ts +2 -1
  21. package/2D/controls/displayGrid.js +6 -6
  22. package/2D/controls/displayGrid.js.map +1 -1
  23. package/2D/controls/ellipse.d.ts +5 -3
  24. package/2D/controls/ellipse.js +9 -5
  25. package/2D/controls/ellipse.js.map +1 -1
  26. package/2D/controls/focusableButton.d.ts +1 -0
  27. package/2D/controls/focusableButton.js +9 -6
  28. package/2D/controls/focusableButton.js.map +1 -1
  29. package/2D/controls/grid.d.ts +13 -2
  30. package/2D/controls/grid.js +117 -33
  31. package/2D/controls/grid.js.map +1 -1
  32. package/2D/controls/image.d.ts +5 -4
  33. package/2D/controls/image.js +52 -31
  34. package/2D/controls/image.js.map +1 -1
  35. package/2D/controls/index.js +29 -29
  36. package/2D/controls/inputPassword.js +4 -4
  37. package/2D/controls/inputPassword.js.map +1 -1
  38. package/2D/controls/inputText.d.ts +4 -1
  39. package/2D/controls/inputText.js +42 -15
  40. package/2D/controls/inputText.js.map +1 -1
  41. package/2D/controls/line.d.ts +3 -2
  42. package/2D/controls/line.js +8 -8
  43. package/2D/controls/line.js.map +1 -1
  44. package/2D/controls/multiLine.d.ts +4 -3
  45. package/2D/controls/multiLine.js +6 -6
  46. package/2D/controls/multiLine.js.map +1 -1
  47. package/2D/controls/radioButton.d.ts +2 -1
  48. package/2D/controls/radioButton.js +10 -7
  49. package/2D/controls/radioButton.js.map +1 -1
  50. package/2D/controls/rectangle.d.ts +8 -3
  51. package/2D/controls/rectangle.js +21 -5
  52. package/2D/controls/rectangle.js.map +1 -1
  53. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
  54. package/2D/controls/scrollViewers/scrollViewer.js +9 -9
  55. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  56. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
  57. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
  58. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  59. package/2D/controls/selector.js +8 -8
  60. package/2D/controls/selector.js.map +1 -1
  61. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  62. package/2D/controls/sliders/baseSlider.js +12 -10
  63. package/2D/controls/sliders/baseSlider.js.map +1 -1
  64. package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
  65. package/2D/controls/sliders/imageBasedSlider.js +29 -5
  66. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  67. package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
  68. package/2D/controls/sliders/imageScrollBar.js +3 -3
  69. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  70. package/2D/controls/sliders/scrollBar.d.ts +2 -1
  71. package/2D/controls/sliders/scrollBar.js +3 -3
  72. package/2D/controls/sliders/scrollBar.js.map +1 -1
  73. package/2D/controls/sliders/slider.d.ts +2 -1
  74. package/2D/controls/sliders/slider.js +4 -4
  75. package/2D/controls/sliders/slider.js.map +1 -1
  76. package/2D/controls/stackPanel.d.ts +10 -3
  77. package/2D/controls/stackPanel.js +37 -15
  78. package/2D/controls/stackPanel.js.map +1 -1
  79. package/2D/controls/statics.js +3 -3
  80. package/2D/controls/statics.js.map +1 -1
  81. package/2D/controls/textBlock.d.ts +17 -9
  82. package/2D/controls/textBlock.js +91 -40
  83. package/2D/controls/textBlock.js.map +1 -1
  84. package/2D/controls/textWrapper.js +2 -2
  85. package/2D/controls/textWrapper.js.map +1 -1
  86. package/2D/controls/toggleButton.d.ts +1 -13
  87. package/2D/controls/toggleButton.js +29 -38
  88. package/2D/controls/toggleButton.js.map +1 -1
  89. package/2D/controls/virtualKeyboard.js +5 -5
  90. package/2D/controls/virtualKeyboard.js.map +1 -1
  91. package/2D/index.d.ts +1 -1
  92. package/2D/index.js +9 -9
  93. package/2D/index.js.map +1 -1
  94. package/2D/math2D.d.ts +5 -0
  95. package/2D/math2D.js +14 -2
  96. package/2D/math2D.js.map +1 -1
  97. package/2D/measure.js +1 -1
  98. package/2D/measure.js.map +1 -1
  99. package/2D/multiLinePoint.js +3 -3
  100. package/2D/style.js +2 -2
  101. package/2D/valueAndUnit.d.ts +21 -6
  102. package/2D/valueAndUnit.js +57 -13
  103. package/2D/valueAndUnit.js.map +1 -1
  104. package/2D/xmlLoader.d.ts +17 -3
  105. package/2D/xmlLoader.js +54 -15
  106. package/2D/xmlLoader.js.map +1 -1
  107. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  108. package/3D/behaviors/defaultBehavior.js +122 -0
  109. package/3D/behaviors/defaultBehavior.js.map +1 -0
  110. package/3D/controls/abstractButton3D.d.ts +2 -2
  111. package/3D/controls/abstractButton3D.js +3 -3
  112. package/3D/controls/abstractButton3D.js.map +1 -1
  113. package/3D/controls/button3D.d.ts +0 -24
  114. package/3D/controls/button3D.js +15 -84
  115. package/3D/controls/button3D.js.map +1 -1
  116. package/3D/controls/container3D.js +2 -2
  117. package/3D/controls/contentDisplay3D.d.ts +30 -0
  118. package/3D/controls/contentDisplay3D.js +79 -0
  119. package/3D/controls/contentDisplay3D.js.map +1 -0
  120. package/3D/controls/control3D.d.ts +10 -7
  121. package/3D/controls/control3D.js +27 -19
  122. package/3D/controls/control3D.js.map +1 -1
  123. package/3D/controls/cylinderPanel.js +5 -5
  124. package/3D/controls/handMenu.d.ts +28 -0
  125. package/3D/controls/handMenu.js +48 -0
  126. package/3D/controls/handMenu.js.map +1 -0
  127. package/3D/controls/holographicBackplate.d.ts +48 -0
  128. package/3D/controls/holographicBackplate.js +121 -0
  129. package/3D/controls/holographicBackplate.js.map +1 -0
  130. package/3D/controls/holographicButton.d.ts +1 -1
  131. package/3D/controls/holographicButton.js +35 -31
  132. package/3D/controls/holographicButton.js.map +1 -1
  133. package/3D/controls/holographicSlate.d.ts +120 -0
  134. package/3D/controls/holographicSlate.js +372 -0
  135. package/3D/controls/holographicSlate.js.map +1 -0
  136. package/3D/controls/index.d.ts +6 -0
  137. package/3D/controls/index.js +21 -15
  138. package/3D/controls/index.js.map +1 -1
  139. package/3D/controls/meshButton3D.js +2 -2
  140. package/3D/controls/meshButton3D.js.map +1 -1
  141. package/3D/controls/nearMenu.d.ts +44 -0
  142. package/3D/controls/nearMenu.js +113 -0
  143. package/3D/controls/nearMenu.js.map +1 -0
  144. package/3D/controls/planePanel.js +3 -3
  145. package/3D/controls/scatterPanel.js +4 -4
  146. package/3D/controls/slider3D.d.ts +80 -0
  147. package/3D/controls/slider3D.js +268 -0
  148. package/3D/controls/slider3D.js.map +1 -0
  149. package/3D/controls/spherePanel.js +5 -5
  150. package/3D/controls/stackPanel3D.js +3 -3
  151. package/3D/controls/touchButton3D.d.ts +30 -21
  152. package/3D/controls/touchButton3D.js +127 -228
  153. package/3D/controls/touchButton3D.js.map +1 -1
  154. package/3D/controls/touchHolographicButton.d.ts +23 -2
  155. package/3D/controls/touchHolographicButton.js +162 -67
  156. package/3D/controls/touchHolographicButton.js.map +1 -1
  157. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  158. package/3D/controls/touchHolographicMenu.js +149 -0
  159. package/3D/controls/touchHolographicMenu.js.map +1 -0
  160. package/3D/controls/touchMeshButton3D.d.ts +3 -6
  161. package/3D/controls/touchMeshButton3D.js +6 -14
  162. package/3D/controls/touchMeshButton3D.js.map +1 -1
  163. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  164. package/3D/controls/volumeBasedPanel.js +5 -5
  165. package/3D/controls/volumeBasedPanel.js.map +1 -1
  166. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  167. package/3D/gizmos/gizmoHandle.js +210 -0
  168. package/3D/gizmos/gizmoHandle.js.map +1 -0
  169. package/3D/gizmos/index.d.ts +2 -0
  170. package/3D/gizmos/index.js +3 -0
  171. package/3D/gizmos/index.js.map +1 -0
  172. package/3D/gizmos/slateGizmo.d.ts +59 -0
  173. package/3D/gizmos/slateGizmo.js +364 -0
  174. package/3D/gizmos/slateGizmo.js.map +1 -0
  175. package/3D/gui3DManager.d.ts +15 -2
  176. package/3D/gui3DManager.js +62 -41
  177. package/3D/gui3DManager.js.map +1 -1
  178. package/3D/index.d.ts +3 -2
  179. package/3D/index.js +5 -4
  180. package/3D/index.js.map +1 -1
  181. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  182. package/3D/materials/fluent/fluentMaterial.js +282 -0
  183. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  184. package/3D/materials/fluent/index.d.ts +1 -0
  185. package/3D/materials/fluent/index.js +2 -0
  186. package/3D/materials/fluent/index.js.map +1 -0
  187. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  188. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  189. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  191. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  192. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  193. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  194. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  195. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  196. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  197. package/3D/materials/fluentBackplate/index.js +2 -0
  198. package/3D/materials/fluentBackplate/index.js.map +1 -0
  199. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  200. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  201. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  204. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  205. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  206. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  207. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  208. package/3D/materials/fluentButton/index.d.ts +1 -0
  209. package/3D/materials/fluentButton/index.js +2 -0
  210. package/3D/materials/fluentButton/index.js.map +1 -0
  211. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  212. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  213. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  216. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  217. package/3D/materials/fluentMaterial.d.ts +2 -88
  218. package/3D/materials/fluentMaterial.js +2 -277
  219. package/3D/materials/fluentMaterial.js.map +1 -1
  220. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  221. package/3D/materials/handle/handleMaterial.js +127 -0
  222. package/3D/materials/handle/handleMaterial.js.map +1 -0
  223. package/3D/materials/handle/index.d.ts +1 -0
  224. package/3D/materials/handle/index.js +2 -0
  225. package/3D/materials/handle/index.js.map +1 -0
  226. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  227. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  228. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  229. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  230. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  231. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  232. package/3D/materials/index.d.ts +5 -1
  233. package/3D/materials/index.js +5 -1
  234. package/3D/materials/index.js.map +1 -1
  235. package/3D/materials/mrdl/index.d.ts +3 -0
  236. package/3D/materials/mrdl/index.js +4 -0
  237. package/3D/materials/mrdl/index.js.map +1 -0
  238. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  239. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  240. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  242. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  243. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  244. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  245. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  246. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  247. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  248. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  249. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  252. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  253. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  254. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  255. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  265. package/3D/vector3WithInfo.js +1 -1
  266. package/index.d.ts +2 -2
  267. package/index.js +2 -2
  268. package/index.js.map +1 -1
  269. package/legacy/legacy.js +2 -2
  270. package/package.json +114 -9
  271. package/3D/materials/shaders/fluent.fragment.js +0 -7
  272. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  273. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -1,16 +1,18 @@
1
1
  import { __extends } from "tslib";
2
- import { Button3D } from "./button3D";
3
- import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial";
4
- import { Mesh } from "@babylonjs/core/Meshes/mesh";
5
- import { PlaneBuilder } from "@babylonjs/core/Meshes/Builders/planeBuilder";
6
- import { BoxBuilder } from "@babylonjs/core/Meshes/Builders/boxBuilder";
7
- import { FadeInOutBehavior } from "@babylonjs/core/Behaviors/Meshes/fadeInOutBehavior";
8
- import { FluentMaterial } from "../materials/fluentMaterial";
9
- import { StackPanel } from "../../2D/controls/stackPanel";
10
- import { Image } from "../../2D/controls/image";
11
- import { TextBlock } from "../../2D/controls/textBlock";
12
- import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
13
- import { Color3 } from '@babylonjs/core/Maths/math.color';
2
+ import { Button3D } from "./button3D.js";
3
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
5
+ import { Mesh } from "@babylonjs/core/Meshes/mesh.js";
6
+ import { CreatePlane } from "@babylonjs/core/Meshes/Builders/planeBuilder.js";
7
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
8
+ import { FadeInOutBehavior } from "@babylonjs/core/Behaviors/Meshes/fadeInOutBehavior.js";
9
+ import { FluentMaterial } from "../materials/fluent/fluentMaterial.js";
10
+ import { StackPanel } from "../../2D/controls/stackPanel.js";
11
+ import { Image } from "../../2D/controls/image.js";
12
+ import { TextBlock } from "../../2D/controls/textBlock.js";
13
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
14
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
15
+ import { DomManagement } from "@babylonjs/core/Misc/domManagement.js";
14
16
  /**
15
17
  * Class used to create a holographic button in 3D
16
18
  */
@@ -89,18 +91,18 @@ var HolographicButton = /** @class */ (function (_super) {
89
91
  return;
90
92
  }
91
93
  if (!this._tooltipFade) {
94
+ var rightHandedScene = this._backPlate._scene.useRightHandedSystem;
92
95
  // Create tooltip with mesh and text
93
- this._tooltipMesh = PlaneBuilder.CreatePlane("", { size: 1 }, this._backPlate._scene);
94
- var tooltipBackground = PlaneBuilder.CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
96
+ this._tooltipMesh = CreatePlane("", { size: 1 }, this._backPlate._scene);
97
+ var tooltipBackground = CreatePlane("", { size: 1, sideOrientation: Mesh.DOUBLESIDE }, this._backPlate._scene);
95
98
  var mat = new StandardMaterial("", this._backPlate._scene);
96
99
  mat.diffuseColor = Color3.FromHexString("#212121");
97
100
  tooltipBackground.material = mat;
98
101
  tooltipBackground.isPickable = false;
99
102
  this._tooltipMesh.addChild(tooltipBackground);
100
- tooltipBackground.position.z = 0.05;
103
+ tooltipBackground.position = Vector3.Forward(rightHandedScene).scale(0.05);
101
104
  this._tooltipMesh.scaling.y = 1 / 3;
102
- this._tooltipMesh.position.y = 0.7;
103
- this._tooltipMesh.position.z = -0.15;
105
+ this._tooltipMesh.position = Vector3.Up().scale(0.7).add(Vector3.Forward(rightHandedScene).scale(-0.15));
104
106
  this._tooltipMesh.isPickable = false;
105
107
  this._tooltipMesh.parent = this._backPlate;
106
108
  // Create text texture for the tooltip
@@ -213,14 +215,16 @@ var HolographicButton = /** @class */ (function (_super) {
213
215
  this._disposeFacadeTexture();
214
216
  var panel = new StackPanel();
215
217
  panel.isVertical = true;
216
- if (this._imageUrl) {
217
- var image = new Image();
218
- image.source = this._imageUrl;
219
- image.paddingTop = "40px";
220
- image.height = "180px";
221
- image.width = "100px";
222
- image.paddingBottom = "40px";
223
- panel.addControl(image);
218
+ if (DomManagement.IsDocumentAvailable() && !!document.createElement) {
219
+ if (this._imageUrl) {
220
+ var image = new Image();
221
+ image.source = this._imageUrl;
222
+ image.paddingTop = "40px";
223
+ image.height = "180px";
224
+ image.width = "100px";
225
+ image.paddingBottom = "40px";
226
+ panel.addControl(image);
227
+ }
224
228
  }
225
229
  if (this._text) {
226
230
  var text = new TextBlock();
@@ -236,23 +240,23 @@ var HolographicButton = /** @class */ (function (_super) {
236
240
  };
237
241
  // Mesh association
238
242
  HolographicButton.prototype._createNode = function (scene) {
239
- this._backPlate = BoxBuilder.CreateBox(this.name + "BackMesh", {
243
+ this._backPlate = CreateBox(this.name + "BackMesh", {
240
244
  width: 1.0,
241
245
  height: 1.0,
242
- depth: 0.08
246
+ depth: 0.08,
243
247
  }, scene);
244
- this._frontPlate = BoxBuilder.CreateBox(this.name + "FrontMesh", {
248
+ this._frontPlate = CreateBox(this.name + "FrontMesh", {
245
249
  width: 1.0,
246
250
  height: 1.0,
247
- depth: 0.08
251
+ depth: 0.08,
248
252
  }, scene);
249
253
  this._frontPlate.parent = this._backPlate;
250
- this._frontPlate.position.z = -0.08;
254
+ this._frontPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);
251
255
  this._frontPlate.isPickable = false;
252
256
  this._frontPlate.setEnabled(false);
253
257
  this._textPlate = _super.prototype._createNode.call(this, scene);
254
258
  this._textPlate.parent = this._backPlate;
255
- this._textPlate.position.z = -0.08;
259
+ this._textPlate.position = Vector3.Forward(scene.useRightHandedSystem).scale(-0.08);
256
260
  this._textPlate.isPickable = false;
257
261
  return this._backPlate;
258
262
  };
@@ -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 { PlaneBuilder } from \"@babylonjs/core/Meshes/Builders/planeBuilder\";\r\nimport { BoxBuilder } 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/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\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 // Create tooltip with mesh and text\r\n this._tooltipMesh = PlaneBuilder.CreatePlane(\"\", { size: 1 }, this._backPlate._scene);\r\n var tooltipBackground = PlaneBuilder.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.z = 0.05;\r\n this._tooltipMesh.scaling.y = 1 / 3;\r\n this._tooltipMesh.position.y = 0.7;\r\n this._tooltipMesh.position.z = -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 (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 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 = BoxBuilder.CreateBox(this.name + \"BackMesh\", {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08\r\n }, scene);\r\n\r\n this._frontPlate = BoxBuilder.CreateBox(this.name + \"FrontMesh\", {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08\r\n }, scene);\r\n\r\n this._frontPlate.parent = this._backPlate;\r\n this._frontPlate.position.z = -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.z = -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}"]}
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"]}
@@ -0,0 +1,120 @@
1
+ import { ContentDisplay3D } from "./contentDisplay3D";
2
+ import { TouchHolographicButton } from "./touchHolographicButton";
3
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
4
+ import { DefaultBehavior } from "../behaviors/defaultBehavior";
5
+ import { SlateGizmo } from "../gizmos/slateGizmo";
6
+ import { Vector2, Vector3 } from "@babylonjs/core/Maths/math.vector";
7
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
8
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
9
+ import { Mesh } from "@babylonjs/core/Meshes/mesh";
10
+ import { Scene } from "@babylonjs/core/scene";
11
+ /**
12
+ * Class used to create a holographic slate
13
+ * @since 5.0.0
14
+ */
15
+ export declare class HolographicSlate extends ContentDisplay3D {
16
+ /**
17
+ * Base Url for the assets.
18
+ */
19
+ static ASSETS_BASE_URL: string;
20
+ /**
21
+ * File name for the close icon.
22
+ */
23
+ static CLOSE_ICON_FILENAME: string;
24
+ /**
25
+ * File name for the close icon.
26
+ */
27
+ static FOLLOW_ICON_FILENAME: string;
28
+ private static DEFAULT_TEXT_RESOLUTION_Y;
29
+ /**
30
+ * 2D dimensions of the slate
31
+ */
32
+ dimensions: Vector2;
33
+ /**
34
+ * Minimum dimensions of the slate
35
+ */
36
+ minDimensions: Vector2;
37
+ /**
38
+ * Default dimensions of the slate
39
+ */
40
+ readonly defaultDimensions: Vector2;
41
+ /**
42
+ * Height of the title bar component
43
+ */
44
+ titleBarHeight: number;
45
+ /**
46
+ * Margin between title bar and contentplate
47
+ */
48
+ titleBarMargin: number;
49
+ /**
50
+ * Origin in local coordinates (top left corner)
51
+ */
52
+ origin: Vector3;
53
+ private _titleBarMaterial;
54
+ private _contentMaterial;
55
+ private _pickedPointObserver;
56
+ private _positionChangedObserver;
57
+ private _titleText;
58
+ private _titleTextComponent;
59
+ private _contentViewport;
60
+ private _contentDragBehavior;
61
+ private _defaultBehavior;
62
+ /**
63
+ * Regroups all mesh behaviors for the slate
64
+ */
65
+ get defaultBehavior(): DefaultBehavior;
66
+ /** @hidden */
67
+ _gizmo: SlateGizmo;
68
+ protected _titleBar: Mesh;
69
+ protected _titleBarTitle: Mesh;
70
+ protected _contentPlate: Mesh;
71
+ protected _followButton: TouchHolographicButton;
72
+ protected _closeButton: TouchHolographicButton;
73
+ protected _contentScaleRatio: number;
74
+ /**
75
+ * Rendering ground id of all the meshes
76
+ */
77
+ set renderingGroupId(id: number);
78
+ get renderingGroupId(): number;
79
+ /**
80
+ * The title text displayed at the top of the slate
81
+ */
82
+ set title(title: string);
83
+ get title(): string;
84
+ /**
85
+ * Creates a new slate
86
+ * @param name defines the control name
87
+ */
88
+ constructor(name?: string);
89
+ /**
90
+ * Apply the facade texture (created from the content property).
91
+ * This function can be overloaded by child classes
92
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
93
+ */
94
+ protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
95
+ private _addControl;
96
+ protected _getTypeName(): string;
97
+ /**
98
+ * @hidden
99
+ */
100
+ _positionElements(): void;
101
+ private _applyContentViewport;
102
+ private _resetContentPositionAndZoom;
103
+ /**
104
+ * @hidden
105
+ */
106
+ _updatePivot(): void;
107
+ protected _createNode(scene: Scene): TransformNode;
108
+ private _attachContentPlateBehavior;
109
+ protected _affectMaterial(mesh: AbstractMesh): void;
110
+ /** @hidden **/
111
+ _prepareNode(scene: Scene): void;
112
+ /**
113
+ * Resets the aspect and pose of the slate so it is right in front of the active camera, facing towards it.
114
+ */
115
+ resetDefaultAspectAndPose(): void;
116
+ /**
117
+ * Releases all associated resources
118
+ */
119
+ dispose(): void;
120
+ }