@babylonjs/gui 5.0.0-alpha.6 → 5.0.0-alpha.60

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 (272) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +26 -4
  3. package/2D/advancedDynamicTexture.js +107 -47
  4. package/2D/advancedDynamicTexture.js.map +1 -1
  5. package/2D/controls/button.js +10 -10
  6. package/2D/controls/button.js.map +1 -1
  7. package/2D/controls/checkbox.d.ts +2 -1
  8. package/2D/controls/checkbox.js +10 -8
  9. package/2D/controls/checkbox.js.map +1 -1
  10. package/2D/controls/colorpicker.d.ts +4 -3
  11. package/2D/controls/colorpicker.js +40 -23
  12. package/2D/controls/colorpicker.js.map +1 -1
  13. package/2D/controls/container.d.ts +16 -5
  14. package/2D/controls/container.js +89 -11
  15. package/2D/controls/container.js.map +1 -1
  16. package/2D/controls/control.d.ts +40 -15
  17. package/2D/controls/control.js +103 -59
  18. package/2D/controls/control.js.map +1 -1
  19. package/2D/controls/displayGrid.d.ts +2 -1
  20. package/2D/controls/displayGrid.js +6 -6
  21. package/2D/controls/displayGrid.js.map +1 -1
  22. package/2D/controls/ellipse.d.ts +5 -3
  23. package/2D/controls/ellipse.js +9 -5
  24. package/2D/controls/ellipse.js.map +1 -1
  25. package/2D/controls/focusableButton.d.ts +4 -2
  26. package/2D/controls/focusableButton.js +9 -6
  27. package/2D/controls/focusableButton.js.map +1 -1
  28. package/2D/controls/focusableControl.d.ts +2 -1
  29. package/2D/controls/focusableControl.js.map +1 -1
  30. package/2D/controls/grid.d.ts +11 -2
  31. package/2D/controls/grid.js +63 -6
  32. package/2D/controls/grid.js.map +1 -1
  33. package/2D/controls/image.d.ts +20 -12
  34. package/2D/controls/image.js +154 -111
  35. package/2D/controls/image.js.map +1 -1
  36. package/2D/controls/index.js +29 -29
  37. package/2D/controls/inputPassword.js +4 -4
  38. package/2D/controls/inputPassword.js.map +1 -1
  39. package/2D/controls/inputText.d.ts +6 -4
  40. package/2D/controls/inputText.js +39 -13
  41. package/2D/controls/inputText.js.map +1 -1
  42. package/2D/controls/line.d.ts +3 -2
  43. package/2D/controls/line.js +8 -8
  44. package/2D/controls/line.js.map +1 -1
  45. package/2D/controls/multiLine.d.ts +4 -3
  46. package/2D/controls/multiLine.js +6 -6
  47. package/2D/controls/multiLine.js.map +1 -1
  48. package/2D/controls/radioButton.d.ts +2 -1
  49. package/2D/controls/radioButton.js +10 -7
  50. package/2D/controls/radioButton.js.map +1 -1
  51. package/2D/controls/rectangle.d.ts +8 -3
  52. package/2D/controls/rectangle.js +21 -5
  53. package/2D/controls/rectangle.js.map +1 -1
  54. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
  55. package/2D/controls/scrollViewers/scrollViewer.js +9 -9
  56. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  57. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
  58. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
  59. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  60. package/2D/controls/selector.js +8 -8
  61. package/2D/controls/selector.js.map +1 -1
  62. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  63. package/2D/controls/sliders/baseSlider.js +12 -10
  64. package/2D/controls/sliders/baseSlider.js.map +1 -1
  65. package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
  66. package/2D/controls/sliders/imageBasedSlider.js +29 -5
  67. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  68. package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
  69. package/2D/controls/sliders/imageScrollBar.js +3 -3
  70. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  71. package/2D/controls/sliders/scrollBar.d.ts +2 -1
  72. package/2D/controls/sliders/scrollBar.js +3 -3
  73. package/2D/controls/sliders/scrollBar.js.map +1 -1
  74. package/2D/controls/sliders/slider.d.ts +2 -1
  75. package/2D/controls/sliders/slider.js +4 -4
  76. package/2D/controls/sliders/slider.js.map +1 -1
  77. package/2D/controls/stackPanel.d.ts +3 -2
  78. package/2D/controls/stackPanel.js +6 -6
  79. package/2D/controls/stackPanel.js.map +1 -1
  80. package/2D/controls/statics.js +3 -3
  81. package/2D/controls/statics.js.map +1 -1
  82. package/2D/controls/textBlock.d.ts +9 -8
  83. package/2D/controls/textBlock.js +25 -15
  84. package/2D/controls/textBlock.js.map +1 -1
  85. package/2D/controls/textWrapper.js +2 -2
  86. package/2D/controls/textWrapper.js.map +1 -1
  87. package/2D/controls/toggleButton.d.ts +1 -13
  88. package/2D/controls/toggleButton.js +29 -38
  89. package/2D/controls/toggleButton.js.map +1 -1
  90. package/2D/controls/virtualKeyboard.js +5 -5
  91. package/2D/controls/virtualKeyboard.js.map +1 -1
  92. package/2D/index.d.ts +1 -1
  93. package/2D/index.js +9 -9
  94. package/2D/index.js.map +1 -1
  95. package/2D/math2D.js +2 -2
  96. package/2D/measure.js +1 -1
  97. package/2D/measure.js.map +1 -1
  98. package/2D/multiLinePoint.js +3 -3
  99. package/2D/style.js +2 -2
  100. package/2D/xmlLoader.d.ts +17 -3
  101. package/2D/xmlLoader.js +54 -15
  102. package/2D/xmlLoader.js.map +1 -1
  103. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  104. package/3D/behaviors/defaultBehavior.js +122 -0
  105. package/3D/behaviors/defaultBehavior.js.map +1 -0
  106. package/3D/controls/abstractButton3D.d.ts +2 -2
  107. package/3D/controls/abstractButton3D.js +3 -3
  108. package/3D/controls/abstractButton3D.js.map +1 -1
  109. package/3D/controls/button3D.d.ts +0 -24
  110. package/3D/controls/button3D.js +7 -83
  111. package/3D/controls/button3D.js.map +1 -1
  112. package/3D/controls/container3D.js +2 -2
  113. package/3D/controls/contentDisplay3D.d.ts +30 -0
  114. package/3D/controls/contentDisplay3D.js +79 -0
  115. package/3D/controls/contentDisplay3D.js.map +1 -0
  116. package/3D/controls/control3D.d.ts +8 -7
  117. package/3D/controls/control3D.js +39 -28
  118. package/3D/controls/control3D.js.map +1 -1
  119. package/3D/controls/cylinderPanel.js +5 -5
  120. package/3D/controls/handMenu.d.ts +28 -0
  121. package/3D/controls/handMenu.js +48 -0
  122. package/3D/controls/handMenu.js.map +1 -0
  123. package/3D/controls/holographicBackplate.d.ts +48 -0
  124. package/3D/controls/holographicBackplate.js +121 -0
  125. package/3D/controls/holographicBackplate.js.map +1 -0
  126. package/3D/controls/holographicButton.d.ts +1 -1
  127. package/3D/controls/holographicButton.js +27 -24
  128. package/3D/controls/holographicButton.js.map +1 -1
  129. package/3D/controls/holographicSlate.d.ts +118 -0
  130. package/3D/controls/holographicSlate.js +360 -0
  131. package/3D/controls/holographicSlate.js.map +1 -0
  132. package/3D/controls/index.d.ts +10 -0
  133. package/3D/controls/index.js +22 -12
  134. package/3D/controls/index.js.map +1 -1
  135. package/3D/controls/meshButton3D.js +2 -2
  136. package/3D/controls/meshButton3D.js.map +1 -1
  137. package/3D/controls/nearMenu.d.ts +45 -0
  138. package/3D/controls/nearMenu.js +111 -0
  139. package/3D/controls/nearMenu.js.map +1 -0
  140. package/3D/controls/planePanel.js +3 -3
  141. package/3D/controls/scatterPanel.js +4 -4
  142. package/3D/controls/slider3D.d.ts +80 -0
  143. package/3D/controls/slider3D.js +268 -0
  144. package/3D/controls/slider3D.js.map +1 -0
  145. package/3D/controls/spherePanel.js +5 -5
  146. package/3D/controls/stackPanel3D.js +3 -3
  147. package/3D/controls/touchButton3D.d.ts +43 -0
  148. package/3D/controls/touchButton3D.js +133 -0
  149. package/3D/controls/touchButton3D.js.map +1 -0
  150. package/3D/controls/touchHolographicButton.d.ts +100 -0
  151. package/3D/controls/touchHolographicButton.js +408 -0
  152. package/3D/controls/touchHolographicButton.js.map +1 -0
  153. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  154. package/3D/controls/touchHolographicMenu.js +147 -0
  155. package/3D/controls/touchHolographicMenu.js.map +1 -0
  156. package/3D/controls/touchMeshButton3D.d.ts +22 -0
  157. package/3D/controls/touchMeshButton3D.js +63 -0
  158. package/3D/controls/touchMeshButton3D.js.map +1 -0
  159. package/3D/controls/touchToggleButton3D.d.ts +35 -0
  160. package/3D/controls/touchToggleButton3D.js +60 -0
  161. package/3D/controls/touchToggleButton3D.js.map +1 -0
  162. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  163. package/3D/controls/volumeBasedPanel.js +5 -5
  164. package/3D/controls/volumeBasedPanel.js.map +1 -1
  165. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  166. package/3D/gizmos/gizmoHandle.js +210 -0
  167. package/3D/gizmos/gizmoHandle.js.map +1 -0
  168. package/3D/gizmos/index.d.ts +2 -0
  169. package/3D/gizmos/index.js +3 -0
  170. package/3D/gizmos/index.js.map +1 -0
  171. package/3D/gizmos/slateGizmo.d.ts +59 -0
  172. package/3D/gizmos/slateGizmo.js +364 -0
  173. package/3D/gizmos/slateGizmo.js.map +1 -0
  174. package/3D/gui3DManager.d.ts +9 -0
  175. package/3D/gui3DManager.js +30 -13
  176. package/3D/gui3DManager.js.map +1 -1
  177. package/3D/index.d.ts +3 -2
  178. package/3D/index.js +5 -4
  179. package/3D/index.js.map +1 -1
  180. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  181. package/3D/materials/fluent/fluentMaterial.js +282 -0
  182. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  183. package/3D/materials/fluent/index.d.ts +1 -0
  184. package/3D/materials/fluent/index.js +2 -0
  185. package/3D/materials/fluent/index.js.map +1 -0
  186. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  187. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  188. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  189. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  191. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  192. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  193. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  194. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  195. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  196. package/3D/materials/fluentBackplate/index.js +2 -0
  197. package/3D/materials/fluentBackplate/index.js.map +1 -0
  198. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  199. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  200. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  201. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  204. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  205. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  206. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  207. package/3D/materials/fluentButton/index.d.ts +1 -0
  208. package/3D/materials/fluentButton/index.js +2 -0
  209. package/3D/materials/fluentButton/index.js.map +1 -0
  210. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  211. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  212. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  213. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  216. package/3D/materials/fluentMaterial.d.ts +2 -88
  217. package/3D/materials/fluentMaterial.js +2 -277
  218. package/3D/materials/fluentMaterial.js.map +1 -1
  219. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  220. package/3D/materials/handle/handleMaterial.js +127 -0
  221. package/3D/materials/handle/handleMaterial.js.map +1 -0
  222. package/3D/materials/handle/index.d.ts +1 -0
  223. package/3D/materials/handle/index.js +2 -0
  224. package/3D/materials/handle/index.js.map +1 -0
  225. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  226. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  227. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  228. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  229. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  230. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  231. package/3D/materials/index.d.ts +5 -1
  232. package/3D/materials/index.js +5 -1
  233. package/3D/materials/index.js.map +1 -1
  234. package/3D/materials/mrdl/index.d.ts +3 -0
  235. package/3D/materials/mrdl/index.js +4 -0
  236. package/3D/materials/mrdl/index.js.map +1 -0
  237. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  238. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  239. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  240. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  241. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  242. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  243. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  244. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  245. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  246. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  247. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  248. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  249. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  252. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  253. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  254. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  255. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  264. package/3D/vector3WithInfo.js +1 -1
  265. package/index.d.ts +2 -2
  266. package/index.js +2 -2
  267. package/index.js.map +1 -1
  268. package/legacy/legacy.js +2 -2
  269. package/package.json +126 -9
  270. package/3D/materials/shaders/fluent.fragment.js +0 -7
  271. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  272. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -0,0 +1,122 @@
1
+ import { FollowBehavior } from "@babylonjs/core/Behaviors/Meshes/followBehavior.js";
2
+ import { SixDofDragBehavior } from "@babylonjs/core/Behaviors/Meshes/sixDofDragBehavior.js";
3
+ import { SurfaceMagnetismBehavior } from "@babylonjs/core/Behaviors/Meshes/surfaceMagnetismBehavior.js";
4
+ /**
5
+ * Default behavior for 3D UI elements.
6
+ * Handles a FollowBehavior, SixDofBehavior and SurfaceMagnetismBehavior
7
+ * @since 5.0.0
8
+ */
9
+ var DefaultBehavior = /** @class */ (function () {
10
+ /**
11
+ * Instantiates the default behavior
12
+ */
13
+ function DefaultBehavior() {
14
+ /**
15
+ * Enables the follow behavior
16
+ */
17
+ this.followBehaviorEnabled = false;
18
+ /**
19
+ * Enables the six DoF drag behavior
20
+ */
21
+ this.sixDofDragBehaviorEnabled = true;
22
+ /**
23
+ * Enables the surface magnetism behavior
24
+ */
25
+ this.surfaceMagnetismBehaviorEnabled = true;
26
+ this._followBehavior = new FollowBehavior();
27
+ this._sixDofDragBehavior = new SixDofDragBehavior();
28
+ this._surfaceMagnetismBehavior = new SurfaceMagnetismBehavior();
29
+ }
30
+ Object.defineProperty(DefaultBehavior.prototype, "name", {
31
+ /**
32
+ * The name of the behavior
33
+ */
34
+ get: function () {
35
+ return "Default";
36
+ },
37
+ enumerable: false,
38
+ configurable: true
39
+ });
40
+ Object.defineProperty(DefaultBehavior.prototype, "followBehavior", {
41
+ /**
42
+ * The follow behavior
43
+ */
44
+ get: function () {
45
+ return this._followBehavior;
46
+ },
47
+ enumerable: false,
48
+ configurable: true
49
+ });
50
+ Object.defineProperty(DefaultBehavior.prototype, "sixDofDragBehavior", {
51
+ /**
52
+ * The six DoF drag behavior
53
+ */
54
+ get: function () {
55
+ return this._sixDofDragBehavior;
56
+ },
57
+ enumerable: false,
58
+ configurable: true
59
+ });
60
+ Object.defineProperty(DefaultBehavior.prototype, "surfaceMagnetismBehavior", {
61
+ /**
62
+ * The surface magnetism behavior
63
+ */
64
+ get: function () {
65
+ return this._surfaceMagnetismBehavior;
66
+ },
67
+ enumerable: false,
68
+ configurable: true
69
+ });
70
+ /**
71
+ * Initializes the behavior
72
+ */
73
+ DefaultBehavior.prototype.init = function () { };
74
+ /**
75
+ * Attaches the default behavior
76
+ * @param ownerMesh The top level mesh
77
+ * @param draggablesMeshes Descendant meshes that can be used for dragging the owner mesh
78
+ * @param sceneUnderstandingMeshes Meshes from the scene understanding that will be used for surface magnetism
79
+ */
80
+ DefaultBehavior.prototype.attach = function (ownerMesh, draggablesMeshes, sceneUnderstandingMeshes) {
81
+ this._scene = ownerMesh.getScene();
82
+ this.attachedNode = ownerMesh;
83
+ this._addObservables();
84
+ // Since our observables are bound before the child behaviors', ours are called first
85
+ this._followBehavior.attach(ownerMesh);
86
+ this._sixDofDragBehavior.attach(ownerMesh);
87
+ this._sixDofDragBehavior.draggableMeshes = draggablesMeshes || null;
88
+ this._sixDofDragBehavior.faceCameraOnDragStart = true;
89
+ this._surfaceMagnetismBehavior.attach(ownerMesh, this._scene);
90
+ if (sceneUnderstandingMeshes) {
91
+ this._surfaceMagnetismBehavior.meshes = sceneUnderstandingMeshes;
92
+ }
93
+ // We disable this behavior because we will handle pose changing event manually with sixDofDragBehavior
94
+ this._surfaceMagnetismBehavior.enabled = false;
95
+ };
96
+ /**
97
+ * Detaches the behavior from the mesh
98
+ */
99
+ DefaultBehavior.prototype.detach = function () {
100
+ this.attachedNode = null;
101
+ this._removeObservables();
102
+ this._followBehavior.detach();
103
+ this._sixDofDragBehavior.detach();
104
+ this._surfaceMagnetismBehavior.detach();
105
+ };
106
+ DefaultBehavior.prototype._addObservables = function () {
107
+ var _this = this;
108
+ this._onBeforeRenderObserver = this._scene.onBeforeRenderObservable.add(function () {
109
+ _this._followBehavior._enabled = !_this._sixDofDragBehavior.isMoving && _this.followBehaviorEnabled;
110
+ });
111
+ this._onDragObserver = this._sixDofDragBehavior.onDragObservable.add(function (event) {
112
+ _this._sixDofDragBehavior.disableMovement = _this._surfaceMagnetismBehavior.findAndUpdateTarget(event.pickInfo);
113
+ });
114
+ };
115
+ DefaultBehavior.prototype._removeObservables = function () {
116
+ this._scene.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);
117
+ this._sixDofDragBehavior.onDragObservable.remove(this._onDragObserver);
118
+ };
119
+ return DefaultBehavior;
120
+ }());
121
+ export { DefaultBehavior };
122
+ //# sourceMappingURL=defaultBehavior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultBehavior.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/behaviors/defaultBehavior.ts"],"names":[],"mappings":"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","sourcesContent":["import { Behavior } from \"@babylonjs/core/Behaviors/behavior\";\r\nimport { FollowBehavior } from \"@babylonjs/core/Behaviors/Meshes/followBehavior\";\r\nimport { SixDofDragBehavior } from \"@babylonjs/core/Behaviors/Meshes/sixDofDragBehavior\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { SurfaceMagnetismBehavior } from \"@babylonjs/core/Behaviors/Meshes/surfaceMagnetismBehavior\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PickingInfo } from \"@babylonjs/core/Collisions/pickingInfo\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\n\r\n/**\r\n * Default behavior for 3D UI elements.\r\n * Handles a FollowBehavior, SixDofBehavior and SurfaceMagnetismBehavior\r\n * @since 5.0.0\r\n */\r\nexport class DefaultBehavior implements Behavior<Mesh> {\r\n private _scene: Scene;\r\n private _followBehavior: FollowBehavior;\r\n private _sixDofDragBehavior: SixDofDragBehavior;\r\n private _surfaceMagnetismBehavior: SurfaceMagnetismBehavior;\r\n private _onBeforeRenderObserver: Nullable<Observer<Scene>>;\r\n private _onDragObserver: Nullable<Observer<{ delta: Vector3; position: Vector3; pickInfo: PickingInfo }>>;\r\n\r\n /**\r\n * Instantiates the default behavior\r\n */\r\n constructor() {\r\n this._followBehavior = new FollowBehavior();\r\n this._sixDofDragBehavior = new SixDofDragBehavior();\r\n this._surfaceMagnetismBehavior = new SurfaceMagnetismBehavior();\r\n }\r\n\r\n /**\r\n * Attached node of this behavior\r\n */\r\n public attachedNode: Nullable<Mesh>;\r\n\r\n /**\r\n * The name of the behavior\r\n */\r\n public get name(): string {\r\n return \"Default\";\r\n }\r\n\r\n /**\r\n * The follow behavior\r\n */\r\n public get followBehavior(): FollowBehavior {\r\n return this._followBehavior;\r\n }\r\n\r\n /**\r\n * The six DoF drag behavior\r\n */\r\n public get sixDofDragBehavior(): SixDofDragBehavior {\r\n return this._sixDofDragBehavior;\r\n }\r\n\r\n /**\r\n * The surface magnetism behavior\r\n */\r\n public get surfaceMagnetismBehavior(): SurfaceMagnetismBehavior {\r\n return this._surfaceMagnetismBehavior;\r\n }\r\n\r\n /**\r\n * Enables the follow behavior\r\n */\r\n public followBehaviorEnabled: boolean = false;\r\n\r\n /**\r\n * Enables the six DoF drag behavior\r\n */\r\n public sixDofDragBehaviorEnabled: boolean = true;\r\n\r\n /**\r\n * Enables the surface magnetism behavior\r\n */\r\n public surfaceMagnetismBehaviorEnabled: boolean = true;\r\n\r\n /**\r\n * Initializes the behavior\r\n */\r\n public init() { }\r\n\r\n /**\r\n * Attaches the default behavior\r\n * @param ownerMesh The top level mesh\r\n * @param draggablesMeshes Descendant meshes that can be used for dragging the owner mesh\r\n * @param sceneUnderstandingMeshes Meshes from the scene understanding that will be used for surface magnetism\r\n */\r\n public attach(ownerMesh: Mesh, draggablesMeshes?: Mesh[], sceneUnderstandingMeshes?: AbstractMesh[]): void {\r\n this._scene = ownerMesh.getScene();\r\n this.attachedNode = ownerMesh;\r\n\r\n this._addObservables();\r\n // Since our observables are bound before the child behaviors', ours are called first\r\n this._followBehavior.attach(ownerMesh);\r\n this._sixDofDragBehavior.attach(ownerMesh);\r\n this._sixDofDragBehavior.draggableMeshes = draggablesMeshes || null;\r\n this._sixDofDragBehavior.faceCameraOnDragStart = true;\r\n this._surfaceMagnetismBehavior.attach(ownerMesh, this._scene);\r\n if (sceneUnderstandingMeshes) {\r\n this._surfaceMagnetismBehavior.meshes = sceneUnderstandingMeshes;\r\n }\r\n\r\n // We disable this behavior because we will handle pose changing event manually with sixDofDragBehavior\r\n this._surfaceMagnetismBehavior.enabled = false;\r\n }\r\n\r\n /**\r\n * Detaches the behavior from the mesh\r\n */\r\n public detach(): void {\r\n this.attachedNode = null;\r\n this._removeObservables();\r\n this._followBehavior.detach();\r\n this._sixDofDragBehavior.detach();\r\n this._surfaceMagnetismBehavior.detach();\r\n }\r\n\r\n private _addObservables() {\r\n this._onBeforeRenderObserver = this._scene.onBeforeRenderObservable.add(() => {\r\n this._followBehavior._enabled = !this._sixDofDragBehavior.isMoving && this.followBehaviorEnabled;\r\n });\r\n this._onDragObserver = this._sixDofDragBehavior.onDragObservable.add((event: { pickInfo: PickingInfo }) => {\r\n this._sixDofDragBehavior.disableMovement = this._surfaceMagnetismBehavior.findAndUpdateTarget(event.pickInfo);\r\n });\r\n }\r\n\r\n private _removeObservables() {\r\n this._scene.onBeforeRenderObservable.remove(this._onBeforeRenderObserver);\r\n this._sixDofDragBehavior.onDragObservable.remove(this._onDragObserver);\r\n }\r\n}\r\n"]}
@@ -1,10 +1,10 @@
1
1
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
2
2
  import { Scene } from "@babylonjs/core/scene";
3
- import { Control3D } from "./control3D";
3
+ import { ContentDisplay3D } from "./contentDisplay3D";
4
4
  /**
5
5
  * Class used as a root to all buttons
6
6
  */
7
- export declare class AbstractButton3D extends Control3D {
7
+ export declare class AbstractButton3D extends ContentDisplay3D {
8
8
  /**
9
9
  * Creates a new button
10
10
  * @param name defines the control name
@@ -1,6 +1,6 @@
1
1
  import { __extends } from "tslib";
2
- import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
3
- import { Control3D } from "./control3D";
2
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
3
+ import { ContentDisplay3D } from "./contentDisplay3D.js";
4
4
  /**
5
5
  * Class used as a root to all buttons
6
6
  */
@@ -21,6 +21,6 @@ var AbstractButton3D = /** @class */ (function (_super) {
21
21
  return new TransformNode("button" + this.name);
22
22
  };
23
23
  return AbstractButton3D;
24
- }(Control3D));
24
+ }(ContentDisplay3D));
25
25
  export { AbstractButton3D };
26
26
  //# sourceMappingURL=abstractButton3D.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstractButton3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/abstractButton3D.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH;IAAsC,oCAAS;IAC3C;;;OAGG;IACH,0BAAY,IAAa;eACrB,kBAAM,IAAI,CAAC;IACf,CAAC;IAES,uCAAY,GAAtB;QACI,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,mBAAmB;IACT,sCAAW,GAArB,UAAsB,KAAY;QAC9B,OAAO,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACL,uBAAC;AAAD,CAAC,AAjBD,CAAsC,SAAS,GAiB9C","sourcesContent":["import { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Control3D } from \"./control3D\";\r\n\r\n/**\r\n * Class used as a root to all buttons\r\n */\r\nexport class AbstractButton3D extends Control3D {\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"AbstractButton3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n return new TransformNode(\"button\" + this.name);\r\n }\r\n}"]}
1
+ {"version":3,"file":"abstractButton3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/abstractButton3D.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH;IAAsC,oCAAgB;IAClD;;;OAGG;IACH,0BAAY,IAAa;eACrB,kBAAM,IAAI,CAAC;IACf,CAAC;IAES,uCAAY,GAAtB;QACI,OAAO,kBAAkB,CAAC;IAC9B,CAAC;IAED,mBAAmB;IACT,sCAAW,GAArB,UAAsB,KAAY;QAC9B,OAAO,IAAI,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IACL,uBAAC;AAAD,CAAC,AAjBD,CAAsC,gBAAgB,GAiBrD","sourcesContent":["import { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { ContentDisplay3D } from \"./contentDisplay3D\";\r\n\r\n/**\r\n * Class used as a root to all buttons\r\n */\r\nexport class AbstractButton3D extends ContentDisplay3D {\r\n /**\r\n * Creates a new button\r\n * @param name defines the control name\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"AbstractButton3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n return new TransformNode(\"button\" + this.name);\r\n }\r\n}\r\n"]}
@@ -1,46 +1,22 @@
1
- import { int } from "@babylonjs/core/types";
2
1
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
3
2
  import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
4
3
  import { Material } from "@babylonjs/core/Materials/material";
5
4
  import { Scene } from "@babylonjs/core/scene";
6
5
  import { AbstractButton3D } from "./abstractButton3D";
7
6
  import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
8
- import { Control } from "../../2D/controls/control";
9
7
  /**
10
8
  * Class used to create a button in 3D
11
9
  */
12
10
  export declare class Button3D extends AbstractButton3D {
13
11
  /** @hidden */
14
12
  protected _currentMaterial: Material;
15
- private _facadeTexture;
16
- private _content;
17
- private _contentResolution;
18
- private _contentScaleRatio;
19
- /**
20
- * Gets or sets the texture resolution used to render content (512 by default)
21
- */
22
- get contentResolution(): int;
23
- set contentResolution(value: int);
24
- /**
25
- * Gets or sets the texture scale ratio used to render content (2 by default)
26
- */
27
- get contentScaleRatio(): number;
28
- set contentScaleRatio(value: number);
29
- protected _disposeFacadeTexture(): void;
30
- protected _resetContent(): void;
31
13
  /**
32
14
  * Creates a new button
33
15
  * @param name defines the control name
34
16
  */
35
17
  constructor(name?: string);
36
- /**
37
- * Gets or sets the GUI 2D content used to display the button's facade
38
- */
39
- get content(): Control;
40
- set content(value: Control);
41
18
  /**
42
19
  * Apply the facade texture (created from the content property).
43
- * This function can be overloaded by child classes
44
20
  * @param facadeTexture defines the AdvancedDynamicTexture to use
45
21
  */
46
22
  protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
@@ -1,11 +1,9 @@
1
1
  import { __extends } from "tslib";
2
- import { Vector4 } from "@babylonjs/core/Maths/math.vector";
3
- import { BoxBuilder } from "@babylonjs/core/Meshes/Builders/boxBuilder";
4
- import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial";
5
- import { Texture } from "@babylonjs/core/Materials/Textures/texture";
6
- import { AbstractButton3D } from "./abstractButton3D";
7
- import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
8
- import { Color3 } from '@babylonjs/core/Maths/math.color';
2
+ import { Vector4 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
4
+ import { StandardMaterial } from "@babylonjs/core/Materials/standardMaterial.js";
5
+ import { AbstractButton3D } from "./abstractButton3D.js";
6
+ import { Color3 } from "@babylonjs/core/Maths/math.color.js";
9
7
  /**
10
8
  * Class used to create a button in 3D
11
9
  */
@@ -17,8 +15,6 @@ var Button3D = /** @class */ (function (_super) {
17
15
  */
18
16
  function Button3D(name) {
19
17
  var _this = _super.call(this, name) || this;
20
- _this._contentResolution = 512;
21
- _this._contentScaleRatio = 2;
22
18
  // Default animations
23
19
  _this.pointerEnterAnimation = function () {
24
20
  if (!_this.mesh) {
@@ -43,80 +39,8 @@ var Button3D = /** @class */ (function (_super) {
43
39
  };
44
40
  return _this;
45
41
  }
46
- Object.defineProperty(Button3D.prototype, "contentResolution", {
47
- /**
48
- * Gets or sets the texture resolution used to render content (512 by default)
49
- */
50
- get: function () {
51
- return this._contentResolution;
52
- },
53
- set: function (value) {
54
- if (this._contentResolution === value) {
55
- return;
56
- }
57
- this._contentResolution = value;
58
- this._resetContent();
59
- },
60
- enumerable: false,
61
- configurable: true
62
- });
63
- Object.defineProperty(Button3D.prototype, "contentScaleRatio", {
64
- /**
65
- * Gets or sets the texture scale ratio used to render content (2 by default)
66
- */
67
- get: function () {
68
- return this._contentScaleRatio;
69
- },
70
- set: function (value) {
71
- if (this._contentScaleRatio === value) {
72
- return;
73
- }
74
- this._contentScaleRatio = value;
75
- this._resetContent();
76
- },
77
- enumerable: false,
78
- configurable: true
79
- });
80
- Button3D.prototype._disposeFacadeTexture = function () {
81
- if (this._facadeTexture) {
82
- this._facadeTexture.dispose();
83
- this._facadeTexture = null;
84
- }
85
- };
86
- Button3D.prototype._resetContent = function () {
87
- this._disposeFacadeTexture();
88
- this.content = this._content;
89
- };
90
- Object.defineProperty(Button3D.prototype, "content", {
91
- /**
92
- * Gets or sets the GUI 2D content used to display the button's facade
93
- */
94
- get: function () {
95
- return this._content;
96
- },
97
- set: function (value) {
98
- this._content = value;
99
- if (!this._host || !this._host.utilityLayer) {
100
- return;
101
- }
102
- if (!this._facadeTexture) {
103
- this._facadeTexture = new AdvancedDynamicTexture("Facade", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);
104
- this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;
105
- this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;
106
- this._facadeTexture.premulAlpha = true;
107
- }
108
- else {
109
- this._facadeTexture.rootContainer.clearControls();
110
- }
111
- this._facadeTexture.addControl(value);
112
- this._applyFacade(this._facadeTexture);
113
- },
114
- enumerable: false,
115
- configurable: true
116
- });
117
42
  /**
118
43
  * Apply the facade texture (created from the content property).
119
- * This function can be overloaded by child classes
120
44
  * @param facadeTexture defines the AdvancedDynamicTexture to use
121
45
  */
122
46
  Button3D.prototype._applyFacade = function (facadeTexture) {
@@ -132,11 +56,11 @@ var Button3D = /** @class */ (function (_super) {
132
56
  faceUV[i] = new Vector4(0, 0, 0, 0);
133
57
  }
134
58
  faceUV[1] = new Vector4(0, 0, 1, 1);
135
- var mesh = BoxBuilder.CreateBox(this.name + "_rootMesh", {
59
+ var mesh = CreateBox(this.name + "_rootMesh", {
136
60
  width: 1.0,
137
61
  height: 1.0,
138
62
  depth: 0.08,
139
- faceUV: faceUV
63
+ faceUV: faceUV,
140
64
  }, scene);
141
65
  return mesh;
142
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"button3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/button3D.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAG5D,OAAO,EAAE,UAAU,EAAE,MAAM,4CAA4C,CAAC;AAExE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D;;GAEG;AACH;IAA8B,4BAAgB;IAoD1C;;;OAGG;IACH,kBAAY,IAAa;QAAzB,YACI,kBAAM,IAAI,CAAC,SA8Bd;QAlFO,wBAAkB,GAAG,GAAG,CAAC;QACzB,wBAAkB,GAAG,CAAC,CAAC;QAqD3B,qBAAqB;QAErB,KAAI,CAAC,qBAAqB,GAAG;YACzB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YACkB,KAAI,CAAC,gBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;QAC3E,CAAC,CAAC;QAEF,KAAI,CAAC,mBAAmB,GAAG;YACJ,KAAI,CAAC,gBAAiB,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAC7E,CAAC,CAAC;QAEF,KAAI,CAAC,oBAAoB,GAAG;YACxB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YAED,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC;QAEF,KAAI,CAAC,kBAAkB,GAAG;YACtB,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE;gBACZ,OAAO;aACV;YAED,KAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QAC/C,CAAC,CAAC;;IACN,CAAC;IA5ED,sBAAW,uCAAiB;QAH5B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAU;YACnC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;;;OATA;IAcD,sBAAW,uCAAiB;QAH5B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAa;YACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;;;OATA;IAWS,wCAAqB,GAA/B;QACI,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;IACL,CAAC;IAES,gCAAa,GAAvB;QACI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IA0CD,sBAAW,6BAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;aAED,UAAmB,KAAc;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBACzC,OAAO;aACV;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;gBAC9L,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;aAC1C;iBACI;gBACD,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;aACrD;YAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;;;OAtBA;IAwBD;;;;OAIG;IACO,+BAAY,GAAtB,UAAuB,aAAqC;QAClD,IAAI,CAAC,gBAAiB,CAAC,eAAe,GAAG,aAAa,CAAC;IACjE,CAAC;IAES,+BAAY,GAAtB;QACI,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,mBAAmB;IACT,8BAAW,GAArB,UAAsB,KAAY;QAC9B,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACxB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SACvC;QACD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpC,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,EAAE;YACrD,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,MAAM;SACjB,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,IAAI,CAAC;IAChB,CAAC;IAES,kCAAe,GAAzB,UAA0B,IAAkB;QACxC,IAAI,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7E,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;QAExC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QAEjC,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,0BAAO,GAAd;QACI,iBAAM,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;SACnC;IACL,CAAC;IACL,eAAC;AAAD,CAAC,AA5KD,CAA8B,gBAAgB,GA4K7C","sourcesContent":["import { int, Nullable } from \"@babylonjs/core/types\";\r\nimport { Vector4 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { BoxBuilder } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { AbstractButton3D } from \"./abstractButton3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Control } from \"../../2D/controls/control\";\r\nimport { Color3 } from '@babylonjs/core/Maths/math.color';\r\n\r\n/**\r\n * Class used to create a button in 3D\r\n */\r\nexport class Button3D extends AbstractButton3D {\r\n /** @hidden */\r\n protected _currentMaterial: Material;\r\n private _facadeTexture: Nullable<AdvancedDynamicTexture>;\r\n private _content: Control;\r\n private _contentResolution = 512;\r\n private _contentScaleRatio = 2;\r\n\r\n /**\r\n * Gets or sets the texture resolution used to render content (512 by default)\r\n */\r\n public get contentResolution(): int {\r\n return this._contentResolution;\r\n }\r\n\r\n public set contentResolution(value: int) {\r\n if (this._contentResolution === value) {\r\n return;\r\n }\r\n\r\n this._contentResolution = value;\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Gets or sets the texture scale ratio used to render content (2 by default)\r\n */\r\n public get contentScaleRatio(): number {\r\n return this._contentScaleRatio;\r\n }\r\n\r\n public set contentScaleRatio(value: number) {\r\n if (this._contentScaleRatio === value) {\r\n return;\r\n }\r\n\r\n this._contentScaleRatio = value;\r\n this._resetContent();\r\n }\r\n\r\n protected _disposeFacadeTexture() {\r\n if (this._facadeTexture) {\r\n this._facadeTexture.dispose();\r\n this._facadeTexture = null;\r\n }\r\n }\r\n\r\n protected _resetContent() {\r\n this._disposeFacadeTexture();\r\n this.content = this._content;\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) {\r\n super(name);\r\n\r\n // Default animations\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Red();\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Black();\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n /**\r\n * Gets or sets the GUI 2D content used to display the button's facade\r\n */\r\n public get content(): Control {\r\n return this._content;\r\n }\r\n\r\n public set content(value: Control) {\r\n this._content = value;\r\n\r\n if (!this._host || !this._host.utilityLayer) {\r\n return;\r\n }\r\n\r\n if (!this._facadeTexture) {\r\n this._facadeTexture = new AdvancedDynamicTexture(\"Facade\", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);\r\n this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;\r\n this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;\r\n this._facadeTexture.premulAlpha = true;\r\n }\r\n else {\r\n this._facadeTexture.rootContainer.clearControls();\r\n }\r\n\r\n this._facadeTexture.addControl(value);\r\n\r\n this._applyFacade(this._facadeTexture);\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n (<any>this._currentMaterial).emissiveTexture = facadeTexture;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n var faceUV = new Array(6);\r\n\r\n for (var i = 0; i < 6; i++) {\r\n faceUV[i] = new Vector4(0, 0, 0, 0);\r\n }\r\n faceUV[1] = new Vector4(0, 0, 1, 1);\r\n\r\n let mesh = BoxBuilder.CreateBox(this.name + \"_rootMesh\", {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n faceUV: faceUV\r\n }, scene);\r\n\r\n return mesh;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n let material = new StandardMaterial(this.name + \"Material\", mesh.getScene());\r\n material.specularColor = Color3.Black();\r\n\r\n mesh.material = material;\r\n this._currentMaterial = material;\r\n\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._disposeFacadeTexture();\r\n\r\n if (this._currentMaterial) {\r\n this._currentMaterial.dispose();\r\n }\r\n }\r\n}"]}
1
+ {"version":3,"file":"button3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/button3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { Vector4 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { Material } from \"@babylonjs/core/Materials/material\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { AbstractButton3D } from \"./abstractButton3D\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Color3 } from \"@babylonjs/core/Maths/math.color\";\r\n\r\n/**\r\n * Class used to create a button in 3D\r\n */\r\nexport class Button3D extends AbstractButton3D {\r\n /** @hidden */\r\n protected _currentMaterial: Material;\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) {\r\n super(name);\r\n\r\n // Default animations\r\n\r\n this.pointerEnterAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Red();\r\n };\r\n\r\n this.pointerOutAnimation = () => {\r\n (<StandardMaterial>this._currentMaterial).emissiveColor = Color3.Black();\r\n };\r\n\r\n this.pointerDownAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(0.95);\r\n };\r\n\r\n this.pointerUpAnimation = () => {\r\n if (!this.mesh) {\r\n return;\r\n }\r\n\r\n this.mesh.scaling.scaleInPlace(1.0 / 0.95);\r\n };\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) {\r\n (<any>this._currentMaterial).emissiveTexture = facadeTexture;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Button3D\";\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n var faceUV = new Array(6);\r\n\r\n for (var i = 0; i < 6; i++) {\r\n faceUV[i] = new Vector4(0, 0, 0, 0);\r\n }\r\n faceUV[1] = new Vector4(0, 0, 1, 1);\r\n\r\n let mesh = CreateBox(\r\n this.name + \"_rootMesh\",\r\n {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 0.08,\r\n faceUV: faceUV,\r\n },\r\n scene\r\n );\r\n\r\n return mesh;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n let material = new StandardMaterial(this.name + \"Material\", mesh.getScene());\r\n material.specularColor = Color3.Black();\r\n\r\n mesh.material = material;\r\n this._currentMaterial = material;\r\n\r\n this._resetContent();\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._disposeFacadeTexture();\r\n\r\n if (this._currentMaterial) {\r\n this._currentMaterial.dispose();\r\n }\r\n }\r\n}\r\n"]}
@@ -1,6 +1,6 @@
1
1
  import { __extends } from "tslib";
2
- import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
3
- import { Control3D } from "./control3D";
2
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode.js";
3
+ import { Control3D } from "./control3D.js";
4
4
  /**
5
5
  * Class used to create containers for controls
6
6
  */
@@ -0,0 +1,30 @@
1
+ import { Control } from "../../2D/controls/control";
2
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture";
3
+ import { Control3D } from "./control3D";
4
+ /**
5
+ * The base class for controls that display content
6
+ */
7
+ export declare class ContentDisplay3D extends Control3D {
8
+ private _content;
9
+ private _facadeTexture;
10
+ protected _contentResolution: number;
11
+ protected _contentScaleRatio: number;
12
+ /**
13
+ * Gets or sets the GUI 2D content used to display the button's facade
14
+ */
15
+ get content(): Control;
16
+ set content(value: Control);
17
+ /**
18
+ * Gets or sets the texture resolution used to render content (512 by default)
19
+ */
20
+ get contentResolution(): number;
21
+ set contentResolution(value: number);
22
+ protected _disposeFacadeTexture(): void;
23
+ protected _resetContent(): void;
24
+ /**
25
+ * Apply the facade texture (created from the content property).
26
+ * This function can be overloaded by child classes
27
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
28
+ */
29
+ protected _applyFacade(facadeTexture: AdvancedDynamicTexture): void;
30
+ }
@@ -0,0 +1,79 @@
1
+ import { __extends } from "tslib";
2
+ import { AdvancedDynamicTexture } from "../../2D/advancedDynamicTexture.js";
3
+ import { Control3D } from "./control3D.js";
4
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
5
+ /**
6
+ * The base class for controls that display content
7
+ */
8
+ var ContentDisplay3D = /** @class */ (function (_super) {
9
+ __extends(ContentDisplay3D, _super);
10
+ function ContentDisplay3D() {
11
+ var _this = _super !== null && _super.apply(this, arguments) || this;
12
+ _this._contentResolution = 512;
13
+ _this._contentScaleRatio = 2;
14
+ return _this;
15
+ }
16
+ Object.defineProperty(ContentDisplay3D.prototype, "content", {
17
+ /**
18
+ * Gets or sets the GUI 2D content used to display the button's facade
19
+ */
20
+ get: function () {
21
+ return this._content;
22
+ },
23
+ set: function (value) {
24
+ this._content = value;
25
+ if (!this._host || !this._host.utilityLayer) {
26
+ return;
27
+ }
28
+ if (!this._facadeTexture) {
29
+ this._facadeTexture = new AdvancedDynamicTexture("Facade", this._contentResolution, this._contentResolution, this._host.utilityLayer.utilityLayerScene, true, Texture.TRILINEAR_SAMPLINGMODE);
30
+ this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;
31
+ this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;
32
+ this._facadeTexture.premulAlpha = true;
33
+ }
34
+ else {
35
+ this._facadeTexture.rootContainer.clearControls();
36
+ }
37
+ this._facadeTexture.addControl(value);
38
+ this._applyFacade(this._facadeTexture);
39
+ },
40
+ enumerable: false,
41
+ configurable: true
42
+ });
43
+ Object.defineProperty(ContentDisplay3D.prototype, "contentResolution", {
44
+ /**
45
+ * Gets or sets the texture resolution used to render content (512 by default)
46
+ */
47
+ get: function () {
48
+ return this._contentResolution;
49
+ },
50
+ set: function (value) {
51
+ if (this._contentResolution === value) {
52
+ return;
53
+ }
54
+ this._contentResolution = value;
55
+ this._resetContent();
56
+ },
57
+ enumerable: false,
58
+ configurable: true
59
+ });
60
+ ContentDisplay3D.prototype._disposeFacadeTexture = function () {
61
+ if (this._facadeTexture) {
62
+ this._facadeTexture.dispose();
63
+ this._facadeTexture = null;
64
+ }
65
+ };
66
+ ContentDisplay3D.prototype._resetContent = function () {
67
+ this._disposeFacadeTexture();
68
+ this.content = this._content;
69
+ };
70
+ /**
71
+ * Apply the facade texture (created from the content property).
72
+ * This function can be overloaded by child classes
73
+ * @param facadeTexture defines the AdvancedDynamicTexture to use
74
+ */
75
+ ContentDisplay3D.prototype._applyFacade = function (facadeTexture) { };
76
+ return ContentDisplay3D;
77
+ }(Control3D));
78
+ export { ContentDisplay3D };
79
+ //# sourceMappingURL=contentDisplay3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contentDisplay3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/contentDisplay3D.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,4CAA4C,CAAC;AAErE;;GAEG;AACH;IAAsC,oCAAS;IAA/C;QAAA,qEA2EC;QAxEa,wBAAkB,GAAG,GAAG,CAAC;QACzB,wBAAkB,GAAG,CAAC,CAAC;;IAuErC,CAAC;IAlEG,sBAAW,qCAAO;QAHlB;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;aAED,UAAmB,KAAc;YAC7B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;gBACzC,OAAO;aACV;YAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,cAAc,GAAG,IAAI,sBAAsB,CAC5C,QAAQ,EACR,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,kBAAkB,EACvB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EACzC,IAAI,EACJ,OAAO,CAAC,sBAAsB,CACjC,CAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,CAAC;aAC1C;iBAAM;gBACH,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;aACrD;YAED,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;;;OA5BA;IAiCD,sBAAW,+CAAiB;QAH5B;;WAEG;aACH;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAa;YACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,aAAa,EAAE,CAAC;QACzB,CAAC;;;OATA;IAWS,gDAAqB,GAA/B;QACI,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;IACL,CAAC;IAES,wCAAa,GAAvB;QACI,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACO,uCAAY,GAAtB,UAAuB,aAAqC,IAAI,CAAC;IACrE,uBAAC;AAAD,CAAC,AA3ED,CAAsC,SAAS,GA2E9C","sourcesContent":["import { Control } from \"../../2D/controls/control\";\r\nimport { AdvancedDynamicTexture } from \"../../2D/advancedDynamicTexture\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { Texture } from \"@babylonjs/core/Materials/Textures/texture\";\r\n\r\n/**\r\n * The base class for controls that display content\r\n */\r\nexport class ContentDisplay3D extends Control3D {\r\n private _content: Control;\r\n private _facadeTexture: Nullable<AdvancedDynamicTexture>;\r\n protected _contentResolution = 512;\r\n protected _contentScaleRatio = 2;\r\n\r\n /**\r\n * Gets or sets the GUI 2D content used to display the button's facade\r\n */\r\n public get content(): Control {\r\n return this._content;\r\n }\r\n\r\n public set content(value: Control) {\r\n this._content = value;\r\n\r\n if (!this._host || !this._host.utilityLayer) {\r\n return;\r\n }\r\n\r\n if (!this._facadeTexture) {\r\n this._facadeTexture = new AdvancedDynamicTexture(\r\n \"Facade\",\r\n this._contentResolution,\r\n this._contentResolution,\r\n this._host.utilityLayer.utilityLayerScene,\r\n true,\r\n Texture.TRILINEAR_SAMPLINGMODE\r\n );\r\n this._facadeTexture.rootContainer.scaleX = this._contentScaleRatio;\r\n this._facadeTexture.rootContainer.scaleY = this._contentScaleRatio;\r\n this._facadeTexture.premulAlpha = true;\r\n } else {\r\n this._facadeTexture.rootContainer.clearControls();\r\n }\r\n\r\n this._facadeTexture.addControl(value);\r\n\r\n this._applyFacade(this._facadeTexture);\r\n }\r\n\r\n /**\r\n * Gets or sets the texture resolution used to render content (512 by default)\r\n */\r\n public get contentResolution(): number {\r\n return this._contentResolution;\r\n }\r\n\r\n public set contentResolution(value: number) {\r\n if (this._contentResolution === value) {\r\n return;\r\n }\r\n\r\n this._contentResolution = value;\r\n this._resetContent();\r\n }\r\n\r\n protected _disposeFacadeTexture() {\r\n if (this._facadeTexture) {\r\n this._facadeTexture.dispose();\r\n this._facadeTexture = null;\r\n }\r\n }\r\n\r\n protected _resetContent() {\r\n this._disposeFacadeTexture();\r\n this.content = this._content;\r\n }\r\n\r\n /**\r\n * Apply the facade texture (created from the content property).\r\n * This function can be overloaded by child classes\r\n * @param facadeTexture defines the AdvancedDynamicTexture to use\r\n */\r\n protected _applyFacade(facadeTexture: AdvancedDynamicTexture) { }\r\n}\r\n"]}
@@ -21,10 +21,10 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
21
21
  private _enterCount;
22
22
  private _downPointerIds;
23
23
  private _isVisible;
24
- /** Gets or sets the control position in world space */
24
+ /** Gets or sets the control position in world space */
25
25
  get position(): Vector3;
26
26
  set position(value: Vector3);
27
- /** Gets or sets the control scaling in world space */
27
+ /** Gets or sets the control scaling in world space */
28
28
  get scaling(): Vector3;
29
29
  set scaling(value: Vector3);
30
30
  /** Callback used to start pointer enter animation */
@@ -36,11 +36,11 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
36
36
  /** Callback used to start pointer up animation */
37
37
  pointerUpAnimation: () => void;
38
38
  /**
39
- * An event triggered when the pointer move over the control
40
- */
39
+ * An event triggered when the pointer moves over the control
40
+ */
41
41
  onPointerMoveObservable: Observable<Vector3>;
42
42
  /**
43
- * An event triggered when the pointer move out of the control
43
+ * An event triggered when the pointer moves out of the control
44
44
  */
45
45
  onPointerOutObservable: Observable<Control3D>;
46
46
  /**
@@ -126,7 +126,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
126
126
  linkToTransformNode(node: Nullable<TransformNode>): Control3D;
127
127
  /** @hidden **/
128
128
  _prepareNode(scene: Scene): void;
129
- protected _injectGUI3DMetadata(node: TransformNode): any;
129
+ protected _injectGUI3DReservedDataStore(node: TransformNode): any;
130
130
  /**
131
131
  * Node creation.
132
132
  * Can be overriden by children
@@ -139,6 +139,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
139
139
  * @param mesh defines the mesh which will represent the control
140
140
  */
141
141
  protected _affectMaterial(mesh: AbstractMesh): void;
142
+ private _IsTouchButton3D;
142
143
  /** @hidden */
143
144
  _onPointerMove(target: Control3D, coordinates: Vector3): void;
144
145
  /** @hidden */
@@ -152,7 +153,7 @@ export declare class Control3D implements IDisposable, IBehaviorAware<Control3D>
152
153
  /** @hidden */
153
154
  forcePointerUp(pointerId?: Nullable<number>): void;
154
155
  /** @hidden */
155
- _processObservables(type: number, pickedPoint: Vector3, pointerId: number, buttonIndex: number): boolean;
156
+ _processObservables(type: number, pickedPoint: Vector3, originMeshPosition: Nullable<Vector3>, pointerId: number, buttonIndex: number): boolean;
156
157
  /** @hidden */
157
158
  _disposeNode(): void;
158
159
  /**