@babylonjs/gui 5.0.0-alpha.8 → 5.0.0-beta.3

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 (276) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +165 -125
  3. package/2D/advancedDynamicTexture.js +342 -181
  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 +91 -13
  16. package/2D/controls/container.js.map +1 -1
  17. package/2D/controls/control.d.ts +103 -44
  18. package/2D/controls/control.js +278 -129
  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 +108 -24
  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 +2 -1
  39. package/2D/controls/inputText.js +40 -14
  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 +35 -13
  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 +16 -9
  82. package/2D/controls/textBlock.js +75 -34
  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 +118 -0
  134. package/3D/controls/holographicSlate.js +365 -0
  135. package/3D/controls/holographicSlate.js.map +1 -0
  136. package/3D/controls/index.d.ts +7 -0
  137. package/3D/controls/index.js +22 -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 +45 -0
  142. package/3D/controls/nearMenu.js +111 -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 +9 -21
  152. package/3D/controls/touchButton3D.js +52 -224
  153. package/3D/controls/touchButton3D.js.map +1 -1
  154. package/3D/controls/touchHolographicButton.d.ts +20 -3
  155. package/3D/controls/touchHolographicButton.js +137 -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/touchToggleButton3D.d.ts +35 -0
  164. package/3D/controls/touchToggleButton3D.js +60 -0
  165. package/3D/controls/touchToggleButton3D.js.map +1 -0
  166. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  167. package/3D/controls/volumeBasedPanel.js +5 -5
  168. package/3D/controls/volumeBasedPanel.js.map +1 -1
  169. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  170. package/3D/gizmos/gizmoHandle.js +210 -0
  171. package/3D/gizmos/gizmoHandle.js.map +1 -0
  172. package/3D/gizmos/index.d.ts +2 -0
  173. package/3D/gizmos/index.js +3 -0
  174. package/3D/gizmos/index.js.map +1 -0
  175. package/3D/gizmos/slateGizmo.d.ts +59 -0
  176. package/3D/gizmos/slateGizmo.js +364 -0
  177. package/3D/gizmos/slateGizmo.js.map +1 -0
  178. package/3D/gui3DManager.d.ts +15 -2
  179. package/3D/gui3DManager.js +62 -41
  180. package/3D/gui3DManager.js.map +1 -1
  181. package/3D/index.d.ts +3 -2
  182. package/3D/index.js +5 -4
  183. package/3D/index.js.map +1 -1
  184. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  185. package/3D/materials/fluent/fluentMaterial.js +282 -0
  186. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  187. package/3D/materials/fluent/index.d.ts +1 -0
  188. package/3D/materials/fluent/index.js +2 -0
  189. package/3D/materials/fluent/index.js.map +1 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  191. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  192. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  193. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  194. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  195. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  196. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  197. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  198. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  199. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  200. package/3D/materials/fluentBackplate/index.js +2 -0
  201. package/3D/materials/fluentBackplate/index.js.map +1 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  204. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  205. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  206. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  207. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  208. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  209. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  210. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  211. package/3D/materials/fluentButton/index.d.ts +1 -0
  212. package/3D/materials/fluentButton/index.js +2 -0
  213. package/3D/materials/fluentButton/index.js.map +1 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  216. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  217. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  218. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  219. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  220. package/3D/materials/fluentMaterial.d.ts +2 -88
  221. package/3D/materials/fluentMaterial.js +2 -277
  222. package/3D/materials/fluentMaterial.js.map +1 -1
  223. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  224. package/3D/materials/handle/handleMaterial.js +127 -0
  225. package/3D/materials/handle/handleMaterial.js.map +1 -0
  226. package/3D/materials/handle/index.d.ts +1 -0
  227. package/3D/materials/handle/index.js +2 -0
  228. package/3D/materials/handle/index.js.map +1 -0
  229. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  230. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  231. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  232. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  233. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  234. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  235. package/3D/materials/index.d.ts +5 -1
  236. package/3D/materials/index.js +5 -1
  237. package/3D/materials/index.js.map +1 -1
  238. package/3D/materials/mrdl/index.d.ts +3 -0
  239. package/3D/materials/mrdl/index.js +4 -0
  240. package/3D/materials/mrdl/index.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  242. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  243. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  244. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  245. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  246. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  247. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  248. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  249. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  252. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  253. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  254. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  255. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  265. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  266. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  267. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  268. package/3D/vector3WithInfo.js +1 -1
  269. package/index.d.ts +2 -2
  270. package/index.js +2 -2
  271. package/index.js.map +1 -1
  272. package/legacy/legacy.js +2 -2
  273. package/package.json +117 -9
  274. package/3D/materials/shaders/fluent.fragment.js +0 -7
  275. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  276. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -0,0 +1,111 @@
1
+ import { __extends } from "tslib";
2
+ import { TouchHolographicButton } from "./touchHolographicButton.js";
3
+ import { DefaultBehavior } from "../behaviors/defaultBehavior.js";
4
+ import { TouchHolographicMenu } from "./touchHolographicMenu.js";
5
+ /**
6
+ * NearMenu that displays buttons and follows the camera
7
+ * @since 5.0.0
8
+ */
9
+ var NearMenu = /** @class */ (function (_super) {
10
+ __extends(NearMenu, _super);
11
+ /**
12
+ * Creates a near menu GUI 3D control
13
+ * @param name name of the near menu
14
+ */
15
+ function NearMenu(name) {
16
+ var _this = _super.call(this, name) || this;
17
+ _this._isPinned = false;
18
+ _this._defaultBehavior = new DefaultBehavior();
19
+ _this._dragObserver = _this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(function () {
20
+ _this.isPinned = true;
21
+ });
22
+ _this.backPlateMargin = 1;
23
+ return _this;
24
+ }
25
+ Object.defineProperty(NearMenu.prototype, "defaultBehavior", {
26
+ /**
27
+ * Regroups all mesh behaviors for the near menu
28
+ */
29
+ get: function () {
30
+ return this._defaultBehavior;
31
+ },
32
+ enumerable: false,
33
+ configurable: true
34
+ });
35
+ Object.defineProperty(NearMenu.prototype, "isPinned", {
36
+ /**
37
+ * Indicates if the near menu is world-pinned
38
+ */
39
+ get: function () {
40
+ return this._isPinned;
41
+ },
42
+ set: function (value) {
43
+ this._isPinned = value;
44
+ if (this._isPinned) {
45
+ this._pinMaterial.emissiveColor.copyFromFloats(0.25, 0.4, 0.95);
46
+ this._defaultBehavior.followBehaviorEnabled = false;
47
+ }
48
+ else {
49
+ this._pinMaterial.emissiveColor.copyFromFloats(0.08, 0.15, 0.55);
50
+ this._defaultBehavior.followBehaviorEnabled = true;
51
+ }
52
+ },
53
+ enumerable: false,
54
+ configurable: true
55
+ });
56
+ NearMenu.prototype._createPinButton = function (parent) {
57
+ var _this = this;
58
+ var control = new TouchHolographicButton("pin" + this.name, false);
59
+ control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;
60
+ control.parent = this;
61
+ control._host = this._host;
62
+ control.onPointerClickObservable.add(function () { return (_this.isPinned = !_this.isPinned); });
63
+ if (this._host.utilityLayer) {
64
+ control._prepareNode(this._host.utilityLayer.utilityLayerScene);
65
+ control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);
66
+ this._pinMaterial = control.backMaterial;
67
+ this._pinMaterial.diffuseColor.copyFromFloats(0, 0, 0);
68
+ if (control.node) {
69
+ control.node.parent = parent;
70
+ }
71
+ }
72
+ return control;
73
+ };
74
+ NearMenu.prototype._createNode = function (scene) {
75
+ var node = _super.prototype._createNode.call(this, scene);
76
+ this._pinButton = this._createPinButton(node);
77
+ this.isPinned = false;
78
+ this._defaultBehavior.attach(node, [this._backPlate]);
79
+ this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;
80
+ this._defaultBehavior.followBehavior.pitchOffset = -15;
81
+ this._defaultBehavior.followBehavior.minimumDistance = 0.3;
82
+ this._defaultBehavior.followBehavior.defaultDistance = 0.4;
83
+ this._defaultBehavior.followBehavior.maximumDistance = 0.6;
84
+ this._backPlate.isNearGrabbable = true;
85
+ node.isVisible = false;
86
+ return node;
87
+ };
88
+ NearMenu.prototype._finalProcessing = function () {
89
+ _super.prototype._finalProcessing.call(this);
90
+ this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);
91
+ };
92
+ /**
93
+ * Disposes the near menu
94
+ */
95
+ NearMenu.prototype.dispose = function () {
96
+ _super.prototype.dispose.call(this);
97
+ this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);
98
+ this._defaultBehavior.detach();
99
+ };
100
+ /**
101
+ * Base Url for the assets.
102
+ */
103
+ NearMenu.ASSETS_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
104
+ /**
105
+ * File name for the close icon.
106
+ */
107
+ NearMenu.PIN_ICON_FILENAME = "IconPin.png";
108
+ return NearMenu;
109
+ }(TouchHolographicMenu));
110
+ export { NearMenu };
111
+ //# sourceMappingURL=nearMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nearMenu.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/nearMenu.ts"],"names":[],"mappings":"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","sourcesContent":["import { Scene } from \"@babylonjs/core/scene\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Nullable } from \"@babylonjs/core/types\";\r\nimport { Mesh } from \"@babylonjs/core/Meshes/mesh\";\r\nimport { TouchHolographicButton } from \"./touchHolographicButton\";\r\nimport { DefaultBehavior } from \"../behaviors/defaultBehavior\";\r\nimport { StandardMaterial } from \"@babylonjs/core/Materials/standardMaterial\";\r\nimport { TouchHolographicMenu } from \"./touchHolographicMenu\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { PickingInfo } from \"@babylonjs/core/Collisions/pickingInfo\";\r\n\r\n/**\r\n * NearMenu that displays buttons and follows the camera\r\n * @since 5.0.0\r\n */\r\nexport class NearMenu extends TouchHolographicMenu {\r\n /**\r\n * Base Url for the assets.\r\n */\r\n private static ASSETS_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n /**\r\n * File name for the close icon.\r\n */\r\n private static PIN_ICON_FILENAME: string = \"IconPin.png\";\r\n\r\n private _pinButton: TouchHolographicButton;\r\n private _pinMaterial: StandardMaterial;\r\n private _dragObserver: Nullable<\r\n Observer<{\r\n delta: Vector3;\r\n position: Vector3;\r\n pickInfo: PickingInfo;\r\n }>\r\n >;\r\n\r\n private _defaultBehavior: DefaultBehavior;\r\n /**\r\n * Regroups all mesh behaviors for the near menu\r\n */\r\n public get defaultBehavior(): DefaultBehavior {\r\n return this._defaultBehavior;\r\n }\r\n\r\n private _isPinned: boolean = false;\r\n /**\r\n * Indicates if the near menu is world-pinned\r\n */\r\n public get isPinned(): boolean {\r\n return this._isPinned;\r\n }\r\n\r\n public set isPinned(value: boolean) {\r\n this._isPinned = value;\r\n\r\n if (this._isPinned) {\r\n this._pinMaterial.emissiveColor.copyFromFloats(0.25, 0.4, 0.95);\r\n this._defaultBehavior.followBehaviorEnabled = false;\r\n } else {\r\n this._pinMaterial.emissiveColor.copyFromFloats(0.08, 0.15, 0.55);\r\n this._defaultBehavior.followBehaviorEnabled = true;\r\n }\r\n }\r\n\r\n private _createPinButton(parent: TransformNode) {\r\n const control = new TouchHolographicButton(\"pin\" + this.name, false);\r\n control.imageUrl = NearMenu.ASSETS_BASE_URL + NearMenu.PIN_ICON_FILENAME;\r\n control.parent = this;\r\n control._host = this._host;\r\n control.onPointerClickObservable.add(() => (this.isPinned = !this.isPinned));\r\n\r\n if (this._host.utilityLayer) {\r\n control._prepareNode(this._host.utilityLayer.utilityLayerScene);\r\n control.scaling.scaleInPlace(TouchHolographicMenu.MENU_BUTTON_SCALE);\r\n this._pinMaterial = control.backMaterial;\r\n this._pinMaterial.diffuseColor.copyFromFloats(0, 0, 0);\r\n\r\n if (control.node) {\r\n control.node.parent = parent;\r\n }\r\n }\r\n\r\n return control;\r\n }\r\n\r\n protected _createNode(scene: Scene): Nullable<TransformNode> {\r\n const node = super._createNode(scene)! as Mesh;\r\n\r\n this._pinButton = this._createPinButton(node);\r\n this.isPinned = false;\r\n\r\n this._defaultBehavior.attach(node, [this._backPlate]);\r\n this._defaultBehavior.followBehavior.ignoreCameraPitchAndRoll = true;\r\n this._defaultBehavior.followBehavior.pitchOffset = -15;\r\n this._defaultBehavior.followBehavior.minimumDistance = 0.3;\r\n this._defaultBehavior.followBehavior.defaultDistance = 0.4;\r\n this._defaultBehavior.followBehavior.maximumDistance = 0.6;\r\n\r\n this._backPlate.isNearGrabbable = true;\r\n node.isVisible = false;\r\n\r\n return node;\r\n }\r\n\r\n protected _finalProcessing() {\r\n super._finalProcessing();\r\n\r\n this._pinButton.position.copyFromFloats((this._backPlate.scaling.x + TouchHolographicMenu.MENU_BUTTON_SCALE) / 2, this._backPlate.scaling.y / 2, 0);\r\n }\r\n\r\n /**\r\n * Creates a near menu GUI 3D control\r\n * @param name name of the near menu\r\n */\r\n constructor(name?: string) {\r\n super(name);\r\n\r\n this._defaultBehavior = new DefaultBehavior();\r\n this._dragObserver = this._defaultBehavior.sixDofDragBehavior.onDragObservable.add(() => {\r\n this.isPinned = true;\r\n });\r\n\r\n this.backPlateMargin = 1;\r\n }\r\n\r\n /**\r\n * Disposes the near menu\r\n */\r\n public dispose() {\r\n super.dispose();\r\n\r\n this._defaultBehavior.sixDofDragBehavior.onDragObservable.remove(this._dragObserver);\r\n this._defaultBehavior.detach();\r\n }\r\n}\r\n"]}
@@ -1,7 +1,7 @@
1
1
  import { __extends } from "tslib";
2
- import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
3
- import { Container3D } from "./container3D";
4
- import { VolumeBasedPanel } from "./volumeBasedPanel";
2
+ import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { Container3D } from "./container3D.js";
4
+ import { VolumeBasedPanel } from "./volumeBasedPanel.js";
5
5
  /**
6
6
  * Class used to create a container panel deployed on the surface of a plane
7
7
  */
@@ -1,8 +1,8 @@
1
1
  import { __extends } from "tslib";
2
- import { Tools } from "@babylonjs/core/Misc/tools";
3
- import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
4
- import { VolumeBasedPanel } from "./volumeBasedPanel";
5
- import { Container3D } from "./container3D";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { VolumeBasedPanel } from "./volumeBasedPanel.js";
5
+ import { Container3D } from "./container3D.js";
6
6
  /**
7
7
  * Class used to create a container panel where items get randomized planar mapping
8
8
  */
@@ -0,0 +1,80 @@
1
+ import { Nullable } from "@babylonjs/core/types";
2
+ import { Observable } from "@babylonjs/core/Misc/observable";
3
+ import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
4
+ import { Scene } from "@babylonjs/core/scene";
5
+ import { Control3D } from "./control3D";
6
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
7
+ import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial";
8
+ import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial";
9
+ import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial";
10
+ /**
11
+ * Class used to create a slider in 3D
12
+ */
13
+ export declare class Slider3D extends Control3D {
14
+ /**
15
+ * Base Url for the models.
16
+ */
17
+ static MODEL_BASE_URL: string;
18
+ /**
19
+ * File name for the 8x4 model.
20
+ */
21
+ static MODEL_FILENAME: string;
22
+ private _sliderBackplate;
23
+ private _sliderBackplateMaterial;
24
+ private _sliderBarMaterial;
25
+ private _sliderThumbMaterial;
26
+ private _sliderThumb;
27
+ private _sliderBar;
28
+ private _sliderBackplateVisible;
29
+ private _minimum;
30
+ private _maximum;
31
+ private _value;
32
+ private _step;
33
+ /** Observable raised when the sldier value changes */
34
+ onValueChangedObservable: Observable<number>;
35
+ /**
36
+ * Creates a new slider
37
+ * @param name defines the control name
38
+ * @param sliderBackplateVisible defines if the control has a backplate, default is false
39
+ */
40
+ constructor(name?: string, sliderBackplateVisible?: boolean);
41
+ /**
42
+ * Gets the mesh used to render this control
43
+ */
44
+ get mesh(): Nullable<AbstractMesh>;
45
+ /** Gets or sets minimum value */
46
+ get minimum(): number;
47
+ set minimum(value: number);
48
+ /** Gets or sets maximum value */
49
+ get maximum(): number;
50
+ set maximum(value: number);
51
+ /** Gets or sets step value */
52
+ get step(): number;
53
+ set step(value: number);
54
+ /** Gets or sets current value */
55
+ get value(): number;
56
+ set value(value: number);
57
+ protected get start(): number;
58
+ protected get end(): number;
59
+ /**
60
+ * Gets the slider bar material used by this control
61
+ */
62
+ get sliderBarMaterial(): MRDLSliderBarMaterial;
63
+ /**
64
+ * Gets the slider thumb material used by this control
65
+ */
66
+ get sliderThumbMaterial(): MRDLSliderThumbMaterial;
67
+ /**
68
+ * Gets the slider backplate material used by this control
69
+ */
70
+ get sliderBackplateMaterial(): MRDLBackplateMaterial;
71
+ protected _createNode(scene: Scene): TransformNode;
72
+ protected _affectMaterial(mesh: AbstractMesh): void;
73
+ private _createBehavior;
74
+ private _convertToPosition;
75
+ private _convertToValue;
76
+ /**
77
+ * Releases all associated resources
78
+ */
79
+ dispose(): void;
80
+ }
@@ -0,0 +1,268 @@
1
+ import { __extends } from "tslib";
2
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
3
+ import { Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { Control3D } from "./control3D.js";
5
+ import { CreateBox } from "@babylonjs/core/Meshes/Builders/boxBuilder.js";
6
+ import { PointerDragBehavior } from "@babylonjs/core/Behaviors/Meshes/pointerDragBehavior.js";
7
+ import { SceneLoader } from "@babylonjs/core/Loading/sceneLoader.js";
8
+ import { MRDLSliderBarMaterial } from "../materials/mrdl/mrdlSliderBarMaterial.js";
9
+ import { MRDLSliderThumbMaterial } from "../materials/mrdl/mrdlSliderThumbMaterial.js";
10
+ import { MRDLBackplateMaterial } from "../materials/mrdl/mrdlBackplateMaterial.js";
11
+ var SLIDER_MIN = 0;
12
+ var SLIDER_MAX = 100;
13
+ var SLIDER_VAL = 50;
14
+ var SLIDER_STEP = 0;
15
+ var SLIDER_SCALING = 1.0;
16
+ var SLIDER_MARGIN = 0.2;
17
+ /**
18
+ * Class used to create a slider in 3D
19
+ */
20
+ var Slider3D = /** @class */ (function (_super) {
21
+ __extends(Slider3D, _super);
22
+ /**
23
+ * Creates a new slider
24
+ * @param name defines the control name
25
+ * @param sliderBackplateVisible defines if the control has a backplate, default is false
26
+ */
27
+ function Slider3D(name, sliderBackplateVisible) {
28
+ var _this = _super.call(this, name) || this;
29
+ /** Observable raised when the sldier value changes */
30
+ _this.onValueChangedObservable = new Observable();
31
+ _this._sliderBackplateVisible = sliderBackplateVisible || false;
32
+ _this._minimum = SLIDER_MIN;
33
+ _this._maximum = SLIDER_MAX;
34
+ _this._step = SLIDER_STEP;
35
+ _this._value = SLIDER_VAL;
36
+ return _this;
37
+ }
38
+ Object.defineProperty(Slider3D.prototype, "mesh", {
39
+ /**
40
+ * Gets the mesh used to render this control
41
+ */
42
+ get: function () {
43
+ if (this.node) {
44
+ return this._sliderThumb;
45
+ }
46
+ return null;
47
+ },
48
+ enumerable: false,
49
+ configurable: true
50
+ });
51
+ Object.defineProperty(Slider3D.prototype, "minimum", {
52
+ /** Gets or sets minimum value */
53
+ get: function () {
54
+ return this._minimum;
55
+ },
56
+ set: function (value) {
57
+ if (this._minimum === value) {
58
+ return;
59
+ }
60
+ this._minimum = Math.max(value, SLIDER_MIN);
61
+ this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
62
+ },
63
+ enumerable: false,
64
+ configurable: true
65
+ });
66
+ Object.defineProperty(Slider3D.prototype, "maximum", {
67
+ /** Gets or sets maximum value */
68
+ get: function () {
69
+ return this._maximum;
70
+ },
71
+ set: function (value) {
72
+ if (this._maximum === value) {
73
+ return;
74
+ }
75
+ this._maximum = Math.max(value, this._minimum);
76
+ this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);
77
+ },
78
+ enumerable: false,
79
+ configurable: true
80
+ });
81
+ Object.defineProperty(Slider3D.prototype, "step", {
82
+ /** Gets or sets step value */
83
+ get: function () {
84
+ return this._step;
85
+ },
86
+ set: function (value) {
87
+ if (this._step === value) {
88
+ return;
89
+ }
90
+ this._step = Math.max(Math.min(value, this._maximum - this._minimum), SLIDER_STEP);
91
+ },
92
+ enumerable: false,
93
+ configurable: true
94
+ });
95
+ Object.defineProperty(Slider3D.prototype, "value", {
96
+ /** Gets or sets current value */
97
+ get: function () {
98
+ return this._value;
99
+ },
100
+ set: function (value) {
101
+ if (this._value === value) {
102
+ return;
103
+ }
104
+ this._value = Math.max(Math.min(value, this._maximum), this._minimum);
105
+ this.onValueChangedObservable.notifyObservers(this._value);
106
+ },
107
+ enumerable: false,
108
+ configurable: true
109
+ });
110
+ Object.defineProperty(Slider3D.prototype, "start", {
111
+ get: function () {
112
+ if (!this.node) {
113
+ return -SLIDER_SCALING / 2;
114
+ }
115
+ return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;
116
+ },
117
+ enumerable: false,
118
+ configurable: true
119
+ });
120
+ Object.defineProperty(Slider3D.prototype, "end", {
121
+ get: function () {
122
+ if (!this.node) {
123
+ return SLIDER_SCALING / 2;
124
+ }
125
+ return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;
126
+ },
127
+ enumerable: false,
128
+ configurable: true
129
+ });
130
+ Object.defineProperty(Slider3D.prototype, "sliderBarMaterial", {
131
+ /**
132
+ * Gets the slider bar material used by this control
133
+ */
134
+ get: function () {
135
+ return this._sliderBarMaterial;
136
+ },
137
+ enumerable: false,
138
+ configurable: true
139
+ });
140
+ Object.defineProperty(Slider3D.prototype, "sliderThumbMaterial", {
141
+ /**
142
+ * Gets the slider thumb material used by this control
143
+ */
144
+ get: function () {
145
+ return this._sliderThumbMaterial;
146
+ },
147
+ enumerable: false,
148
+ configurable: true
149
+ });
150
+ Object.defineProperty(Slider3D.prototype, "sliderBackplateMaterial", {
151
+ /**
152
+ * Gets the slider backplate material used by this control
153
+ */
154
+ get: function () {
155
+ return this._sliderBackplateMaterial;
156
+ },
157
+ enumerable: false,
158
+ configurable: true
159
+ });
160
+ // Mesh association
161
+ Slider3D.prototype._createNode = function (scene) {
162
+ var _this = this;
163
+ var sliderBackplate = CreateBox(this.name + "_sliderbackplate", {
164
+ width: 1.0,
165
+ height: 1.0,
166
+ depth: 1.0,
167
+ }, scene);
168
+ sliderBackplate.isPickable = false;
169
+ sliderBackplate.visibility = 0;
170
+ sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);
171
+ SceneLoader.ImportMeshAsync(undefined, Slider3D.MODEL_BASE_URL, Slider3D.MODEL_FILENAME, scene)
172
+ .then(function (result) {
173
+ var sliderBackplateModel = result.meshes[1];
174
+ var sliderBarModel = result.meshes[1].clone(_this.name + "_sliderbar", sliderBackplate);
175
+ var sliderThumbModel = result.meshes[1].clone(_this.name + "_sliderthumb", sliderBackplate);
176
+ sliderBackplateModel.visibility = 0;
177
+ if (_this._sliderBackplateVisible) {
178
+ sliderBackplateModel.visibility = 1;
179
+ sliderBackplateModel.name = _this.name + "_sliderbackplate";
180
+ sliderBackplateModel.isPickable = false;
181
+ sliderBackplateModel.scaling.x = 1;
182
+ sliderBackplateModel.scaling.z = 0.2;
183
+ sliderBackplateModel.parent = sliderBackplate;
184
+ if (!!_this._sliderBackplateMaterial) {
185
+ sliderBackplateModel.material = _this._sliderBackplateMaterial;
186
+ }
187
+ _this._sliderBackplate = sliderBackplateModel;
188
+ }
189
+ if (!!sliderBarModel) {
190
+ sliderBarModel.parent = sliderBackplate;
191
+ sliderBarModel.position.z = -0.1;
192
+ sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);
193
+ sliderBarModel.isPickable = false;
194
+ if (!!_this._sliderBarMaterial) {
195
+ sliderBarModel.material = _this._sliderBarMaterial;
196
+ }
197
+ _this._sliderBar = sliderBarModel;
198
+ }
199
+ if (!!sliderThumbModel) {
200
+ sliderThumbModel.parent = sliderBackplate;
201
+ sliderThumbModel.isPickable = true;
202
+ sliderThumbModel.position.z = -0.115;
203
+ sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);
204
+ sliderThumbModel.position.x = _this._convertToPosition(_this.value);
205
+ sliderThumbModel.addBehavior(_this._createBehavior());
206
+ if (!!_this._sliderThumbMaterial) {
207
+ sliderThumbModel.material = _this._sliderThumbMaterial;
208
+ }
209
+ _this._sliderThumb = sliderThumbModel;
210
+ }
211
+ });
212
+ this._affectMaterial(sliderBackplate);
213
+ return sliderBackplate;
214
+ };
215
+ Slider3D.prototype._affectMaterial = function (mesh) {
216
+ var _a, _b, _c;
217
+ this._sliderBackplateMaterial = (_a = this._sliderBackplateMaterial) !== null && _a !== void 0 ? _a : new MRDLBackplateMaterial(this.name + "_sliderbackplate_material", mesh.getScene());
218
+ this._sliderBarMaterial = (_b = this._sliderBarMaterial) !== null && _b !== void 0 ? _b : new MRDLSliderBarMaterial(this.name + "_sliderbar_material", mesh.getScene());
219
+ this._sliderThumbMaterial = (_c = this._sliderThumbMaterial) !== null && _c !== void 0 ? _c : new MRDLSliderThumbMaterial(this.name + "_sliderthumb_material", mesh.getScene());
220
+ };
221
+ Slider3D.prototype._createBehavior = function () {
222
+ var _this = this;
223
+ var pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });
224
+ pointerDragBehavior.moveAttached = false;
225
+ pointerDragBehavior.onDragObservable.add(function (event) {
226
+ var newPosition = _this._sliderThumb.position.x + event.dragDistance / _this.scaling.x;
227
+ _this._sliderThumb.position.x = Math.max(Math.min(newPosition, _this.end), _this.start);
228
+ _this.value = _this._convertToValue(_this._sliderThumb.position.x);
229
+ });
230
+ pointerDragBehavior.onDragEndObservable.add(function (event) {
231
+ _this._sliderThumb.position.x = _this._convertToPosition(_this.value);
232
+ });
233
+ return pointerDragBehavior;
234
+ };
235
+ Slider3D.prototype._convertToPosition = function (value) {
236
+ var position = ((value - this.minimum) / (this.maximum - this.minimum)) * (this.end - this.start) + this.start;
237
+ return Math.min(Math.max(position, this.start), this.end);
238
+ };
239
+ Slider3D.prototype._convertToValue = function (position) {
240
+ var value = ((position - this.start) / (this.end - this.start)) * (this.maximum - this.minimum);
241
+ value = this.step ? Math.round(value / this.step) * this.step : value;
242
+ return Math.max(Math.min(this.minimum + value, this._maximum), this._minimum);
243
+ };
244
+ /**
245
+ * Releases all associated resources
246
+ */
247
+ Slider3D.prototype.dispose = function () {
248
+ var _a, _b, _c, _d, _e, _f;
249
+ _super.prototype.dispose.call(this);
250
+ (_a = this._sliderBar) === null || _a === void 0 ? void 0 : _a.dispose();
251
+ (_b = this._sliderThumb) === null || _b === void 0 ? void 0 : _b.dispose();
252
+ (_c = this._sliderBarMaterial) === null || _c === void 0 ? void 0 : _c.dispose();
253
+ (_d = this._sliderThumbMaterial) === null || _d === void 0 ? void 0 : _d.dispose();
254
+ (_e = this._sliderBackplate) === null || _e === void 0 ? void 0 : _e.dispose();
255
+ (_f = this._sliderBackplateMaterial) === null || _f === void 0 ? void 0 : _f.dispose();
256
+ };
257
+ /**
258
+ * Base Url for the models.
259
+ */
260
+ Slider3D.MODEL_BASE_URL = "https://assets.babylonjs.com/meshes/MRTK/";
261
+ /**
262
+ * File name for the 8x4 model.
263
+ */
264
+ Slider3D.MODEL_FILENAME = 'mrtk-fluent-backplate.glb';
265
+ return Slider3D;
266
+ }(Control3D));
267
+ export { Slider3D };
268
+ //# sourceMappingURL=slider3D.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider3D.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/3D/controls/slider3D.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observable } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3 } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { TransformNode } from \"@babylonjs/core/Meshes/transformNode\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\nimport { Control3D } from \"./control3D\";\r\nimport { CreateBox } from \"@babylonjs/core/Meshes/Builders/boxBuilder\";\r\nimport { PointerDragBehavior } from \"@babylonjs/core/Behaviors/Meshes/pointerDragBehavior\";\r\nimport { AbstractMesh } from \"@babylonjs/core/Meshes/abstractMesh\";\r\nimport { SceneLoader } from \"@babylonjs/core/Loading/sceneLoader\";\r\nimport { MRDLSliderBarMaterial } from \"../materials/mrdl/mrdlSliderBarMaterial\";\r\nimport { MRDLSliderThumbMaterial } from \"../materials/mrdl/mrdlSliderThumbMaterial\";\r\nimport { MRDLBackplateMaterial } from \"../materials/mrdl/mrdlBackplateMaterial\";\r\n\r\nconst SLIDER_MIN: number = 0;\r\nconst SLIDER_MAX: number = 100;\r\nconst SLIDER_VAL: number = 50;\r\nconst SLIDER_STEP: number = 0;\r\nconst SLIDER_SCALING: number = 1.0;\r\nconst SLIDER_MARGIN: number = 0.2;\r\n\r\n/**\r\n * Class used to create a slider in 3D\r\n */\r\nexport class Slider3D extends Control3D {\r\n /**\r\n * Base Url for the models.\r\n */\r\n public static MODEL_BASE_URL: string = \"https://assets.babylonjs.com/meshes/MRTK/\";\r\n\r\n /**\r\n * File name for the 8x4 model.\r\n */\r\n public static MODEL_FILENAME: string = 'mrtk-fluent-backplate.glb';\r\n\r\n private _sliderBackplate: AbstractMesh;\r\n private _sliderBackplateMaterial: MRDLBackplateMaterial;\r\n private _sliderBarMaterial: MRDLSliderBarMaterial;\r\n private _sliderThumbMaterial: MRDLSliderThumbMaterial;\r\n private _sliderThumb: AbstractMesh;\r\n private _sliderBar: AbstractMesh;\r\n private _sliderBackplateVisible: boolean;\r\n\r\n private _minimum: number;\r\n private _maximum: number;\r\n private _value: number;\r\n private _step: number;\r\n\r\n /** Observable raised when the sldier value changes */\r\n public onValueChangedObservable = new Observable<number>();\r\n\r\n /**\r\n * Creates a new slider\r\n * @param name defines the control name\r\n * @param sliderBackplateVisible defines if the control has a backplate, default is false\r\n */\r\n constructor(name?: string, sliderBackplateVisible?: boolean) {\r\n super(name);\r\n this._sliderBackplateVisible = sliderBackplateVisible || false;\r\n\r\n this._minimum = SLIDER_MIN;\r\n this._maximum = SLIDER_MAX;\r\n this._step = SLIDER_STEP;\r\n this._value = SLIDER_VAL;\r\n }\r\n\r\n /**\r\n * Gets the mesh used to render this control\r\n */\r\n public get mesh(): Nullable<AbstractMesh> {\r\n if (this.node) {\r\n return this._sliderThumb;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n /** Gets or sets minimum value */\r\n public get minimum(): number {\r\n return this._minimum;\r\n }\r\n\r\n public set minimum(value: number) {\r\n if (this._minimum === value) {\r\n return;\r\n }\r\n\r\n this._minimum = Math.max(value, SLIDER_MIN);\r\n this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets maximum value */\r\n public get maximum(): number {\r\n return this._maximum;\r\n }\r\n\r\n public set maximum(value: number) {\r\n if (this._maximum === value) {\r\n return;\r\n }\r\n\r\n this._maximum = Math.max(value, this._minimum);\r\n this._value = Math.max(Math.min(this._value, this._maximum), this._minimum);\r\n }\r\n\r\n /** Gets or sets step value */\r\n public get step(): number {\r\n return this._step;\r\n }\r\n\r\n public set step(value: number) {\r\n if (this._step === value) {\r\n return;\r\n }\r\n\r\n this._step = Math.max(Math.min(value, this._maximum - this._minimum), SLIDER_STEP);\r\n }\r\n\r\n /** Gets or sets current value */\r\n public get value(): number {\r\n return this._value;\r\n }\r\n\r\n public set value(value: number) {\r\n if (this._value === value) {\r\n return;\r\n }\r\n\r\n this._value = Math.max(Math.min(value, this._maximum), this._minimum);\r\n this.onValueChangedObservable.notifyObservers(this._value);\r\n }\r\n\r\n protected get start(): number {\r\n if (!this.node) {\r\n return -SLIDER_SCALING / 2;\r\n }\r\n\r\n return this._sliderBar.position.x - this._sliderBar.scaling.x / 2;\r\n }\r\n\r\n protected get end(): number {\r\n if (!this.node) {\r\n return SLIDER_SCALING / 2;\r\n }\r\n\r\n return this._sliderBar.position.x + this._sliderBar.scaling.x / 2;\r\n }\r\n\r\n /**\r\n * Gets the slider bar material used by this control\r\n */\r\n public get sliderBarMaterial(): MRDLSliderBarMaterial {\r\n return this._sliderBarMaterial;\r\n }\r\n\r\n /**\r\n * Gets the slider thumb material used by this control\r\n */\r\n public get sliderThumbMaterial(): MRDLSliderThumbMaterial {\r\n return this._sliderThumbMaterial;\r\n }\r\n\r\n /**\r\n * Gets the slider backplate material used by this control\r\n */\r\n public get sliderBackplateMaterial(): MRDLBackplateMaterial {\r\n return this._sliderBackplateMaterial;\r\n }\r\n\r\n // Mesh association\r\n protected _createNode(scene: Scene): TransformNode {\r\n const sliderBackplate = CreateBox(`${this.name}_sliderbackplate`, {\r\n width: 1.0,\r\n height: 1.0,\r\n depth: 1.0,\r\n }, scene);\r\n sliderBackplate.isPickable = false;\r\n sliderBackplate.visibility = 0;\r\n sliderBackplate.scaling = new Vector3(1, 0.5, 0.8);\r\n\r\n SceneLoader.ImportMeshAsync(\r\n undefined,\r\n Slider3D.MODEL_BASE_URL,\r\n Slider3D.MODEL_FILENAME,\r\n scene)\r\n .then((result) => {\r\n const sliderBackplateModel = result.meshes[1];\r\n const sliderBarModel = result.meshes[1].clone(`${this.name}_sliderbar`, sliderBackplate);\r\n const sliderThumbModel = result.meshes[1].clone(`${this.name}_sliderthumb`, sliderBackplate);\r\n sliderBackplateModel.visibility = 0;\r\n\r\n if (this._sliderBackplateVisible) {\r\n sliderBackplateModel.visibility = 1;\r\n sliderBackplateModel.name = `${this.name}_sliderbackplate`;\r\n sliderBackplateModel.isPickable = false;\r\n sliderBackplateModel.scaling.x = 1;\r\n sliderBackplateModel.scaling.z = 0.2;\r\n sliderBackplateModel.parent = sliderBackplate;\r\n if (!!this._sliderBackplateMaterial) {\r\n sliderBackplateModel.material = this._sliderBackplateMaterial;\r\n }\r\n this._sliderBackplate = sliderBackplateModel;\r\n }\r\n\r\n if (!!sliderBarModel) {\r\n sliderBarModel.parent = sliderBackplate;\r\n sliderBarModel.position.z = -0.1;\r\n sliderBarModel.scaling = new Vector3(SLIDER_SCALING - SLIDER_MARGIN, 0.04, 0.3);\r\n sliderBarModel.isPickable = false;\r\n if (!!this._sliderBarMaterial) {\r\n sliderBarModel.material = this._sliderBarMaterial;\r\n }\r\n this._sliderBar = sliderBarModel;\r\n }\r\n\r\n if (!!sliderThumbModel) {\r\n sliderThumbModel.parent = sliderBackplate;\r\n sliderThumbModel.isPickable = true;\r\n sliderThumbModel.position.z = -0.115;\r\n sliderThumbModel.scaling = new Vector3(0.025, 0.3, 0.6);\r\n sliderThumbModel.position.x = this._convertToPosition(this.value);\r\n sliderThumbModel.addBehavior(this._createBehavior());\r\n if (!!this._sliderThumbMaterial) {\r\n sliderThumbModel.material = this._sliderThumbMaterial;\r\n }\r\n this._sliderThumb = sliderThumbModel;\r\n }\r\n });\r\n\r\n this._affectMaterial(sliderBackplate);\r\n return sliderBackplate;\r\n }\r\n\r\n protected _affectMaterial(mesh: AbstractMesh) {\r\n this._sliderBackplateMaterial = this._sliderBackplateMaterial ?? new MRDLBackplateMaterial(`${this.name}_sliderbackplate_material`, mesh.getScene());\r\n this._sliderBarMaterial = this._sliderBarMaterial ?? new MRDLSliderBarMaterial(`${this.name}_sliderbar_material`, mesh.getScene());\r\n this._sliderThumbMaterial = this._sliderThumbMaterial ?? new MRDLSliderThumbMaterial(`${this.name}_sliderthumb_material`, mesh.getScene());\r\n }\r\n\r\n private _createBehavior(): PointerDragBehavior {\r\n const pointerDragBehavior = new PointerDragBehavior({ dragAxis: Vector3.Right() });\r\n pointerDragBehavior.moveAttached = false;\r\n\r\n pointerDragBehavior.onDragObservable.add((event) => {\r\n const newPosition = this._sliderThumb.position.x + event.dragDistance / this.scaling.x;\r\n this._sliderThumb.position.x = Math.max(Math.min(newPosition, this.end), this.start);\r\n this.value = this._convertToValue(this._sliderThumb.position.x);\r\n });\r\n\r\n pointerDragBehavior.onDragEndObservable.add((event) => {\r\n this._sliderThumb.position.x = this._convertToPosition(this.value);\r\n });\r\n\r\n return pointerDragBehavior;\r\n }\r\n\r\n private _convertToPosition(value: number): number {\r\n const position = ((value - this.minimum) / (this.maximum - this.minimum)) * (this.end - this.start) + this.start;\r\n return Math.min(Math.max(position, this.start), this.end);\r\n }\r\n\r\n private _convertToValue(position: number): number {\r\n let value = ((position - this.start) / (this.end - this.start)) * (this.maximum - this.minimum);\r\n value = this.step ? Math.round(value / this.step) * this.step : value;\r\n\r\n return Math.max(Math.min(this.minimum + value, this._maximum), this._minimum);\r\n }\r\n\r\n /**\r\n * Releases all associated resources\r\n */\r\n public dispose() {\r\n super.dispose();\r\n this._sliderBar?.dispose();\r\n this._sliderThumb?.dispose();\r\n this._sliderBarMaterial?.dispose();\r\n this._sliderThumbMaterial?.dispose();\r\n this._sliderBackplate?.dispose();\r\n this._sliderBackplateMaterial?.dispose();\r\n }\r\n}\r\n"]}
@@ -1,9 +1,9 @@
1
1
  import { __extends } from "tslib";
2
- import { Tools } from "@babylonjs/core/Misc/tools";
3
- import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
4
- import { VolumeBasedPanel } from "./volumeBasedPanel";
5
- import { Container3D } from "./container3D";
6
- import { Axis, Space } from '@babylonjs/core/Maths/math.axis';
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { VolumeBasedPanel } from "./volumeBasedPanel.js";
5
+ import { Container3D } from "./container3D.js";
6
+ import { Axis, Space } from '@babylonjs/core/Maths/math.axis.js';
7
7
  /**
8
8
  * Class used to create a container panel deployed on the surface of a sphere
9
9
  */
@@ -1,7 +1,7 @@
1
1
  import { __extends } from "tslib";
2
- import { Tools } from "@babylonjs/core/Misc/tools";
3
- import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector";
4
- import { Container3D } from "./container3D";
2
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
3
+ import { Matrix, TmpVectors, Vector3 } from "@babylonjs/core/Maths/math.vector.js";
4
+ import { Container3D } from "./container3D.js";
5
5
  /**
6
6
  * Class used to create a stack panel in 3D on XY plane
7
7
  */
@@ -1,6 +1,5 @@
1
1
  import { Vector3 } from "@babylonjs/core/Maths/math.vector";
2
2
  import { Mesh } from "@babylonjs/core/Meshes/mesh";
3
- import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
4
3
  import { TransformNode } from "@babylonjs/core/Meshes/transformNode";
5
4
  import { Scene } from "@babylonjs/core/scene";
6
5
  import { Button3D } from "./button3D";
@@ -10,16 +9,7 @@ import { Button3D } from "./button3D";
10
9
  export declare class TouchButton3D extends Button3D {
11
10
  private _collisionMesh;
12
11
  private _collidableFrontDirection;
13
- private _lastTouchPoint;
14
- private _tempButtonForwardRay;
15
- private _lastKnownCollidableScale;
16
- private _collidableInitialized;
17
- private _frontOffset;
18
- private _backOffset;
19
- private _hoverOffset;
20
- private _pushThroughBackOffset;
21
- private _activeInteractions;
22
- private _previousHeight;
12
+ protected _isNearPressed: boolean;
23
13
  /**
24
14
  * Creates a new touchable button
25
15
  * @param name defines the control name
@@ -27,25 +17,23 @@ export declare class TouchButton3D extends Button3D {
27
17
  */
28
18
  constructor(name?: string, collisionMesh?: Mesh);
29
19
  /**
30
- * Sets the front-facing direction of the button
20
+ * Sets the front-facing direction of the button. Pass in Vector3.Zero to allow interactions from any direction
31
21
  * @param frontDir the forward direction of the button
32
22
  */
33
23
  set collidableFrontDirection(frontWorldDir: Vector3);
34
- private _getWorldMatrixData;
24
+ /**
25
+ * Returns the front-facing direction of the button, or Vector3.Zero if there is no 'front'
26
+ */
27
+ get collidableFrontDirection(): Vector3;
35
28
  /**
36
29
  * Sets the mesh used for testing input collision
37
30
  * @param collisionMesh the new collision mesh for the button
38
31
  */
39
32
  set collisionMesh(collisionMesh: Mesh);
40
- private _getShortestDistancePointToLine;
41
- private _isPrimedForInteraction;
42
- private _getPointOnButton;
43
- private _updateDistanceOffsets;
44
- private _getHeightFromButtonCenter;
45
- private _getDistanceOffPlane;
46
- private _updateButtonState;
33
+ private _isInteractionInFrontOfButton;
34
+ protected _getInteractionHeight(interactionPos: Vector3, basePos: Vector3): number;
47
35
  /** @hidden */
48
- _collisionCheckForStateChange(mesh: AbstractMesh): void;
36
+ _generatePointerEventType(providedType: number, nearMeshPosition: Vector3, activeInteractionCount: number): number;
49
37
  protected _getTypeName(): string;
50
38
  protected _createNode(scene: Scene): TransformNode;
51
39
  /**