@babylonjs/core 5.0.0-beta.9 → 5.0.0-rc.2

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 (187) hide show
  1. package/Actions/actionEvent.d.ts +3 -4
  2. package/Actions/actionEvent.js.map +1 -1
  3. package/Animations/animation.d.ts +4 -4
  4. package/Animations/animation.js +4 -4
  5. package/Animations/animation.js.map +1 -1
  6. package/Audio/sound.d.ts +12 -6
  7. package/Audio/sound.js +48 -24
  8. package/Audio/sound.js.map +1 -1
  9. package/BakedVertexAnimation/vertexAnimationBaker.js +0 -1
  10. package/BakedVertexAnimation/vertexAnimationBaker.js.map +1 -1
  11. package/Behaviors/Meshes/baseSixDofDragBehavior.js.map +1 -1
  12. package/Behaviors/Meshes/pointerDragBehavior.js +5 -0
  13. package/Behaviors/Meshes/pointerDragBehavior.js.map +1 -1
  14. package/Bones/skeleton.js +20 -13
  15. package/Bones/skeleton.js.map +1 -1
  16. package/Cameras/Inputs/BaseCameraPointersInput.d.ts +1 -0
  17. package/Cameras/Inputs/BaseCameraPointersInput.js +4 -3
  18. package/Cameras/Inputs/BaseCameraPointersInput.js.map +1 -1
  19. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js +10 -9
  20. package/Cameras/Inputs/arcRotateCameraMouseWheelInput.js.map +1 -1
  21. package/Cameras/Inputs/followCameraMouseWheelInput.js.map +1 -1
  22. package/Cameras/VR/vrExperienceHelper.js.map +1 -1
  23. package/Cameras/arcRotateCamera.d.ts +4 -2
  24. package/Cameras/arcRotateCamera.js +11 -6
  25. package/Cameras/arcRotateCamera.js.map +1 -1
  26. package/Cameras/targetCamera.d.ts +1 -0
  27. package/Cameras/targetCamera.js +1 -0
  28. package/Cameras/targetCamera.js.map +1 -1
  29. package/Culling/ray.js +4 -2
  30. package/Culling/ray.js.map +1 -1
  31. package/DeviceInput/Helpers/eventFactory.d.ts +6 -6
  32. package/DeviceInput/Helpers/eventFactory.js +34 -16
  33. package/DeviceInput/Helpers/eventFactory.js.map +1 -1
  34. package/DeviceInput/InputDevices/deviceEnums.d.ts +26 -3
  35. package/DeviceInput/InputDevices/deviceEnums.js +31 -7
  36. package/DeviceInput/InputDevices/deviceEnums.js.map +1 -1
  37. package/DeviceInput/InputDevices/deviceSource.d.ts +11 -3
  38. package/DeviceInput/InputDevices/deviceSource.js.map +1 -1
  39. package/DeviceInput/InputDevices/deviceSourceManager.d.ts +12 -9
  40. package/DeviceInput/InputDevices/deviceSourceManager.js +75 -12
  41. package/DeviceInput/InputDevices/deviceSourceManager.js.map +1 -1
  42. package/DeviceInput/InputDevices/deviceTypes.d.ts +1 -1
  43. package/DeviceInput/InputDevices/deviceTypes.js.map +1 -1
  44. package/DeviceInput/InputDevices/inputInterfaces.d.ts +3 -28
  45. package/DeviceInput/InputDevices/inputInterfaces.js.map +1 -1
  46. package/DeviceInput/InputDevices/internalDeviceSourceManager.d.ts +4 -24
  47. package/DeviceInput/InputDevices/internalDeviceSourceManager.js +27 -91
  48. package/DeviceInput/InputDevices/internalDeviceSourceManager.js.map +1 -1
  49. package/DeviceInput/InputDevices/nativeDeviceInputSystem.d.ts +3 -2
  50. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js +7 -13
  51. package/DeviceInput/InputDevices/nativeDeviceInputSystem.js.map +1 -1
  52. package/DeviceInput/InputDevices/webDeviceInputSystem.d.ts +4 -2
  53. package/DeviceInput/InputDevices/webDeviceInputSystem.js +54 -77
  54. package/DeviceInput/InputDevices/webDeviceInputSystem.js.map +1 -1
  55. package/Engines/Extensions/engine.query.d.ts +7 -0
  56. package/Engines/Extensions/engine.query.js +12 -0
  57. package/Engines/Extensions/engine.query.js.map +1 -1
  58. package/Engines/Extensions/engine.renderTarget.d.ts +5 -0
  59. package/Engines/Extensions/engine.renderTarget.js.map +1 -1
  60. package/Engines/ICanvas.d.ts +4 -0
  61. package/Engines/ICanvas.js.map +1 -1
  62. package/Engines/Native/nativeInterfaces.d.ts +1 -1
  63. package/Engines/Native/nativeInterfaces.js.map +1 -1
  64. package/Engines/engine.d.ts +14 -2
  65. package/Engines/engine.js +25 -0
  66. package/Engines/engine.js.map +1 -1
  67. package/Engines/index.d.ts +1 -0
  68. package/Engines/index.js +1 -0
  69. package/Engines/index.js.map +1 -1
  70. package/Engines/nativeEngine.d.ts +8 -0
  71. package/Engines/nativeEngine.js +38 -10
  72. package/Engines/nativeEngine.js.map +1 -1
  73. package/Engines/thinEngine.js +2 -2
  74. package/Engines/thinEngine.js.map +1 -1
  75. package/Engines/webgpuEngine.js +2 -2
  76. package/Engines/webgpuEngine.js.map +1 -1
  77. package/Events/deviceInputEvents.d.ts +17 -18
  78. package/Events/deviceInputEvents.js.map +1 -1
  79. package/Gizmos/boundingBoxGizmo.js.map +1 -1
  80. package/Helpers/environmentHelper.js +2 -2
  81. package/Helpers/environmentHelper.js.map +1 -1
  82. package/Helpers/videoDome.d.ts +8 -0
  83. package/Helpers/videoDome.js +18 -4
  84. package/Helpers/videoDome.js.map +1 -1
  85. package/Inputs/scene.inputManager.js +50 -24
  86. package/Inputs/scene.inputManager.js.map +1 -1
  87. package/Layers/effectLayer.d.ts +1 -0
  88. package/Layers/effectLayer.js +24 -0
  89. package/Layers/effectLayer.js.map +1 -1
  90. package/Materials/Node/Blocks/Dual/textureBlock.d.ts +6 -2
  91. package/Materials/Node/Blocks/Dual/textureBlock.js +50 -8
  92. package/Materials/Node/Blocks/Dual/textureBlock.js.map +1 -1
  93. package/Materials/Node/Blocks/elbowBlock.d.ts +6 -0
  94. package/Materials/Node/Blocks/elbowBlock.js +25 -0
  95. package/Materials/Node/Blocks/elbowBlock.js.map +1 -1
  96. package/Materials/Node/Blocks/simplexPerlin3DBlock.js +1 -0
  97. package/Materials/Node/Blocks/simplexPerlin3DBlock.js.map +1 -1
  98. package/Materials/Node/nodeMaterialBlock.d.ts +1 -1
  99. package/Materials/Node/nodeMaterialBlock.js.map +1 -1
  100. package/Materials/PBR/pbrBaseMaterial.js +1 -0
  101. package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
  102. package/Materials/Textures/Procedurals/proceduralTexture.d.ts +1 -1
  103. package/Materials/Textures/Procedurals/proceduralTexture.js.map +1 -1
  104. package/Materials/Textures/dynamicTexture.d.ts +1 -1
  105. package/Materials/Textures/dynamicTexture.js.map +1 -1
  106. package/Materials/materialPluginBase.d.ts +5 -0
  107. package/Materials/materialPluginBase.js +5 -0
  108. package/Materials/materialPluginBase.js.map +1 -1
  109. package/Materials/materialPluginEvent.d.ts +1 -0
  110. package/Materials/materialPluginEvent.js.map +1 -1
  111. package/Materials/materialPluginManager.d.ts +1 -0
  112. package/Materials/materialPluginManager.js +20 -15
  113. package/Materials/materialPluginManager.js.map +1 -1
  114. package/Materials/standardMaterial.js +1 -0
  115. package/Materials/standardMaterial.js.map +1 -1
  116. package/Maths/math.vector.d.ts +5 -0
  117. package/Maths/math.vector.js +20 -9
  118. package/Maths/math.vector.js.map +1 -1
  119. package/Meshes/Builders/polygonBuilder.js +2 -1
  120. package/Meshes/Builders/polygonBuilder.js.map +1 -1
  121. package/Meshes/Compression/dracoCompression.js +3 -7
  122. package/Meshes/Compression/dracoCompression.js.map +1 -1
  123. package/Meshes/abstractMesh.d.ts +1 -1
  124. package/Meshes/abstractMesh.js +0 -1
  125. package/Meshes/abstractMesh.js.map +1 -1
  126. package/Meshes/geometry.js +5 -0
  127. package/Meshes/geometry.js.map +1 -1
  128. package/Meshes/instancedMesh.js +7 -4
  129. package/Meshes/instancedMesh.js.map +1 -1
  130. package/Meshes/mesh.js +21 -22
  131. package/Meshes/mesh.js.map +1 -1
  132. package/Meshes/mesh.vertexData.d.ts +3 -2
  133. package/Meshes/mesh.vertexData.js +114 -85
  134. package/Meshes/mesh.vertexData.js.map +1 -1
  135. package/Meshes/transformNode.d.ts +3 -3
  136. package/Meshes/transformNode.js +9 -6
  137. package/Meshes/transformNode.js.map +1 -1
  138. package/Misc/fileTools.js +23 -9
  139. package/Misc/fileTools.js.map +1 -1
  140. package/Misc/khronosTextureContainer2.d.ts +10 -15
  141. package/Misc/khronosTextureContainer2.js +31 -60
  142. package/Misc/khronosTextureContainer2.js.map +1 -1
  143. package/Misc/videoRecorder.d.ts +1 -1
  144. package/Misc/videoRecorder.js +1 -1
  145. package/Misc/videoRecorder.js.map +1 -1
  146. package/Misc/workerPool.d.ts +37 -3
  147. package/Misc/workerPool.js +91 -15
  148. package/Misc/workerPool.js.map +1 -1
  149. package/Morph/morphTarget.d.ts +2 -1
  150. package/Morph/morphTarget.js +5 -1
  151. package/Morph/morphTarget.js.map +1 -1
  152. package/Morph/morphTargetManager.js +1 -1
  153. package/Morph/morphTargetManager.js.map +1 -1
  154. package/Particles/particleSystem.d.ts +13 -1
  155. package/Particles/particleSystem.js +20 -0
  156. package/Particles/particleSystem.js.map +1 -1
  157. package/Particles/pointsCloudSystem.d.ts +1 -1
  158. package/Particles/pointsCloudSystem.js +1 -1
  159. package/Particles/pointsCloudSystem.js.map +1 -1
  160. package/Rendering/prePassRenderer.js +12 -2
  161. package/Rendering/prePassRenderer.js.map +1 -1
  162. package/Rendering/subSurfaceConfiguration.js +1 -1
  163. package/Rendering/subSurfaceConfiguration.js.map +1 -1
  164. package/Rendering/utilityLayerRenderer.js +2 -0
  165. package/Rendering/utilityLayerRenderer.js.map +1 -1
  166. package/Shaders/ShadersInclude/pointCloudVertex.js +1 -1
  167. package/Shaders/ShadersInclude/pointCloudVertex.js.map +1 -1
  168. package/Shaders/background.vertex.js +1 -1
  169. package/Shaders/background.vertex.js.map +1 -1
  170. package/Shaders/pbr.vertex.js +1 -1
  171. package/Shaders/pbr.vertex.js.map +1 -1
  172. package/XR/features/WebXRImageTracking.d.ts +2 -1
  173. package/XR/features/WebXRImageTracking.js +43 -64
  174. package/XR/features/WebXRImageTracking.js.map +1 -1
  175. package/XR/features/WebXRNearInteraction.js +4 -2
  176. package/XR/features/WebXRNearInteraction.js.map +1 -1
  177. package/XR/native/nativeXRFrame.d.ts +1 -0
  178. package/XR/native/nativeXRFrame.js +1 -0
  179. package/XR/native/nativeXRFrame.js.map +1 -1
  180. package/XR/webXRSessionManager.js +1 -0
  181. package/XR/webXRSessionManager.js.map +1 -1
  182. package/package.json +1 -1
  183. package/scene.d.ts +1 -10
  184. package/scene.js +36 -39
  185. package/scene.js.map +1 -1
  186. package/types.d.ts +1 -1
  187. package/types.js.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { EventConstants } from "../../Events/deviceInputEvents.js";
2
- import { DeviceType, PointerInput } from "../InputDevices/deviceEnums.js";
2
+ import { DeviceType, NativePointerInput, PointerInput } from "../InputDevices/deviceEnums.js";
3
3
  /**
4
4
  * Class to wrap DeviceInputSystem data into an event object
5
5
  */
@@ -15,7 +15,7 @@ var DeviceEventFactory = /** @class */ (function () {
15
15
  * @param currentState Current value for given input
16
16
  * @param deviceInputSystem Reference to DeviceInputSystem
17
17
  * @param elementToAttachTo HTMLElement to reference as target for inputs
18
- * @returns IEvent object
18
+ * @returns IUIEvent object
19
19
  */
20
20
  DeviceEventFactory.CreateDeviceEvent = function (deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {
21
21
  switch (deviceType) {
@@ -40,11 +40,20 @@ var DeviceEventFactory = /** @class */ (function () {
40
40
  * @param currentState Current value for given input
41
41
  * @param deviceInputSystem Reference to DeviceInputSystem
42
42
  * @param elementToAttachTo HTMLElement to reference as target for inputs
43
- * @returns IEvent object (Pointer)
43
+ * @returns IUIEvent object (Pointer)
44
44
  */
45
45
  DeviceEventFactory._createPointerEvent = function (deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {
46
46
  var evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);
47
- evt.pointerId = deviceType === DeviceType.Mouse ? 1 : deviceSlot;
47
+ if (deviceType === DeviceType.Mouse) {
48
+ evt.deviceType = DeviceType.Mouse;
49
+ evt.pointerId = 1;
50
+ evt.pointerType = "mouse";
51
+ }
52
+ else {
53
+ evt.deviceType = DeviceType.Touch;
54
+ evt.pointerId = deviceSlot;
55
+ evt.pointerType = "touch";
56
+ }
48
57
  if (inputIndex === PointerInput.Move) {
49
58
  evt.type = "pointermove";
50
59
  }
@@ -62,7 +71,7 @@ var DeviceEventFactory = /** @class */ (function () {
62
71
  * @param currentState Current value for given input
63
72
  * @param deviceInputSystem Reference to DeviceInputSystem
64
73
  * @param elementToAttachTo HTMLElement to reference as target for inputs
65
- * @returns IEvent object (Wheel)
74
+ * @returns IUIEvent object (Wheel)
66
75
  */
67
76
  DeviceEventFactory._createWheelEvent = function (deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {
68
77
  var evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);
@@ -81,27 +90,33 @@ var DeviceEventFactory = /** @class */ (function () {
81
90
  * @param currentState Current value for given input
82
91
  * @param deviceInputSystem Reference to DeviceInputSystem
83
92
  * @param elementToAttachTo HTMLElement to reference as target for inputs
84
- * @returns IEvent object (Mouse)
93
+ * @returns IUIEvent object (Mouse)
85
94
  */
86
95
  DeviceEventFactory._createMouseEvent = function (deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo) {
87
96
  var evt = this._createEvent(elementToAttachTo);
88
97
  var pointerX = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Horizontal);
89
98
  var pointerY = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Vertical);
90
- // If dealing with a change to the delta, grab values for event init
91
- var movementX = inputIndex === PointerInput.DeltaHorizontal ? currentState : 0;
92
- var movementY = inputIndex === PointerInput.DeltaVertical ? currentState : 0;
93
- // Get offsets from container
94
- var offsetX = inputIndex === PointerInput.DeltaHorizontal && elementToAttachTo ? movementX - elementToAttachTo.getBoundingClientRect().x : 0;
95
- var offsetY = inputIndex === PointerInput.DeltaVertical && elementToAttachTo ? movementY - elementToAttachTo.getBoundingClientRect().y : 0;
99
+ // Handle offsets/deltas based on existence of HTMLElement
100
+ if (elementToAttachTo) {
101
+ evt.movementX = 0;
102
+ evt.movementY = 0;
103
+ evt.offsetX = evt.movementX - elementToAttachTo.getBoundingClientRect().x;
104
+ evt.offsetY = evt.movementY - elementToAttachTo.getBoundingClientRect().y;
105
+ }
106
+ else {
107
+ evt.movementX = deviceInputSystem.pollInput(deviceType, deviceSlot, NativePointerInput.DeltaHorizontal); // DeltaHorizontal
108
+ evt.movementY = deviceInputSystem.pollInput(deviceType, deviceSlot, NativePointerInput.DeltaVertical); // DeltaVertical
109
+ evt.offsetX = 0;
110
+ evt.offsetY = 0;
111
+ }
96
112
  this._checkNonCharacterKeys(evt, deviceInputSystem);
97
113
  evt.clientX = pointerX;
98
114
  evt.clientY = pointerY;
99
- evt.movementX = movementX;
100
- evt.movementY = movementY;
101
- evt.offsetX = offsetX;
102
- evt.offsetY = offsetY;
103
115
  evt.x = pointerX;
104
116
  evt.y = pointerY;
117
+ evt.deviceType = deviceType;
118
+ evt.deviceSlot = deviceSlot;
119
+ evt.inputIndex = inputIndex;
105
120
  return evt;
106
121
  };
107
122
  /**
@@ -115,6 +130,9 @@ var DeviceEventFactory = /** @class */ (function () {
115
130
  DeviceEventFactory._createKeyboardEvent = function (inputIndex, currentState, deviceInputSystem, elementToAttachTo) {
116
131
  var evt = this._createEvent(elementToAttachTo);
117
132
  this._checkNonCharacterKeys(evt, deviceInputSystem);
133
+ evt.deviceType = DeviceType.Keyboard;
134
+ evt.deviceSlot = 0;
135
+ evt.inputIndex = inputIndex;
118
136
  evt.type = currentState === 1 ? "keydown" : "keyup";
119
137
  evt.key = String.fromCharCode(inputIndex);
120
138
  evt.keyCode = inputIndex;
@@ -1 +1 @@
1
- {"version":3,"file":"eventFactory.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/Helpers/eventFactory.ts"],"names":[],"mappings":"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","sourcesContent":["\r\nimport { EventConstants, IEvent } from \"../../Events/deviceInputEvents\";\r\nimport { Nullable } from \"../../types\";\r\nimport { DeviceType, PointerInput } from \"../InputDevices/deviceEnums\";\r\nimport { IDeviceInputSystem } from \"../InputDevices/inputInterfaces\";\r\n\r\n/**\r\n * Class to wrap DeviceInputSystem data into an event object\r\n */\r\nexport class DeviceEventFactory {\r\n /**\r\n * Create device input events based on provided type and slot\r\n *\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object\r\n */\r\n public static CreateDeviceEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): IEvent {\r\n switch (deviceType) {\r\n case DeviceType.Keyboard:\r\n return this._createKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n case DeviceType.Mouse:\r\n if (inputIndex === PointerInput.MouseWheelX || inputIndex === PointerInput.MouseWheelY || inputIndex === PointerInput.MouseWheelZ) {\r\n return this._createWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n }\r\n case DeviceType.Touch:\r\n return this._createPointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n default:\r\n throw `Unable to generate event for device ${DeviceType[deviceType]}`;\r\n }\r\n }\r\n\r\n /**\r\n * Creates pointer event\r\n *\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object (Pointer)\r\n */\r\n private static _createPointerEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n\r\n evt.pointerId = deviceType === DeviceType.Mouse ? 1 : deviceSlot;\r\n\r\n if (inputIndex === PointerInput.Move) {\r\n evt.type = \"pointermove\";\r\n }\r\n else if (inputIndex >= PointerInput.LeftClick && inputIndex <= PointerInput.RightClick) {\r\n evt.type = (currentState === 1) ? \"pointerdown\" : \"pointerup\";\r\n evt.button = inputIndex - 2;\r\n }\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Mouse Wheel Event\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object (Wheel)\r\n */\r\n private static _createWheelEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo: any): any {\r\n const evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n\r\n evt.type = \"wheel\";\r\n evt.deltaMode = EventConstants.DOM_DELTA_PIXEL;\r\n evt.deltaX = (inputIndex === PointerInput.MouseWheelX) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelX);\r\n evt.deltaY = (inputIndex === PointerInput.MouseWheelY) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelY);\r\n evt.deltaZ = (inputIndex === PointerInput.MouseWheelZ) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelZ);\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Mouse Event\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object (Mouse)\r\n */\r\n private static _createMouseEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createEvent(elementToAttachTo);\r\n const pointerX = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Horizontal);\r\n const pointerY = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Vertical);\r\n // If dealing with a change to the delta, grab values for event init\r\n const movementX = inputIndex === PointerInput.DeltaHorizontal ? currentState : 0;\r\n const movementY = inputIndex === PointerInput.DeltaVertical ? currentState : 0;\r\n // Get offsets from container\r\n const offsetX = inputIndex === PointerInput.DeltaHorizontal && elementToAttachTo ? movementX! - elementToAttachTo.getBoundingClientRect().x : 0;\r\n const offsetY = inputIndex === PointerInput.DeltaVertical && elementToAttachTo ? movementY! - elementToAttachTo.getBoundingClientRect().y : 0;\r\n this._checkNonCharacterKeys(evt, deviceInputSystem);\r\n\r\n evt.clientX = pointerX;\r\n evt.clientY = pointerY;\r\n evt.movementX = movementX;\r\n evt.movementY = movementY;\r\n evt.offsetX = offsetX;\r\n evt.offsetY = offsetY;\r\n evt.x = pointerX;\r\n evt.y = pointerY;\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Keyboard Event\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object (Keyboard)\r\n */\r\n private static _createKeyboardEvent(inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createEvent(elementToAttachTo);\r\n this._checkNonCharacterKeys(evt, deviceInputSystem);\r\n\r\n evt.type = currentState === 1 ? \"keydown\" : \"keyup\";\r\n evt.key = String.fromCharCode(inputIndex);\r\n evt.keyCode = inputIndex;\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Add parameters for non-character keys (Ctrl, Alt, Meta, Shift)\r\n * @param evt Event object to add parameters to\r\n * @param deviceInputSystem DeviceInputSystem to pull values from\r\n */\r\n private static _checkNonCharacterKeys(evt: any, deviceInputSystem: IDeviceInputSystem): void {\r\n const isKeyboardActive = deviceInputSystem.isDeviceAvailable(DeviceType.Keyboard);\r\n const altKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 18) === 1;\r\n const ctrlKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 17) === 1;\r\n const metaKey =\r\n isKeyboardActive &&\r\n (deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 91) === 1 ||\r\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 92) === 1 ||\r\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 93) === 1);\r\n const shiftKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 16) === 1;\r\n\r\n evt.altKey = altKey;\r\n evt.ctrlKey = ctrlKey;\r\n evt.metaKey = metaKey;\r\n evt.shiftKey = shiftKey;\r\n }\r\n\r\n /**\r\n * Create base event object\r\n * @param elementToAttachTo Value to use as event target\r\n * @returns\r\n */\r\n private static _createEvent(elementToAttachTo: any): any {\r\n const evt: { [k: string]: any } = {};\r\n evt.preventDefault = () => { };\r\n evt.target = elementToAttachTo;\r\n\r\n return evt;\r\n }\r\n}"]}
1
+ {"version":3,"file":"eventFactory.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/Helpers/eventFactory.ts"],"names":[],"mappings":"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","sourcesContent":["\r\nimport { EventConstants, IUIEvent } from \"../../Events/deviceInputEvents\";\r\nimport { Nullable } from \"../../types\";\r\nimport { DeviceType, NativePointerInput, PointerInput } from \"../InputDevices/deviceEnums\";\r\nimport { IDeviceInputSystem } from \"../InputDevices/inputInterfaces\";\r\n\r\n/**\r\n * Class to wrap DeviceInputSystem data into an event object\r\n */\r\nexport class DeviceEventFactory {\r\n /**\r\n * Create device input events based on provided type and slot\r\n *\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IUIEvent object\r\n */\r\n public static CreateDeviceEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): IUIEvent {\r\n switch (deviceType) {\r\n case DeviceType.Keyboard:\r\n return this._createKeyboardEvent(inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n case DeviceType.Mouse:\r\n if (inputIndex === PointerInput.MouseWheelX || inputIndex === PointerInput.MouseWheelY || inputIndex === PointerInput.MouseWheelZ) {\r\n return this._createWheelEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n }\r\n case DeviceType.Touch:\r\n return this._createPointerEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n default:\r\n throw `Unable to generate event for device ${DeviceType[deviceType]}`;\r\n }\r\n }\r\n\r\n /**\r\n * Creates pointer event\r\n *\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IUIEvent object (Pointer)\r\n */\r\n private static _createPointerEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n\r\n if (deviceType === DeviceType.Mouse) {\r\n evt.deviceType = DeviceType.Mouse;\r\n evt.pointerId = 1;\r\n evt.pointerType = \"mouse\";\r\n }\r\n else {\r\n evt.deviceType = DeviceType.Touch;\r\n evt.pointerId = deviceSlot;\r\n evt.pointerType = \"touch\";\r\n }\r\n\r\n if (inputIndex === PointerInput.Move) {\r\n evt.type = \"pointermove\";\r\n }\r\n else if (inputIndex >= PointerInput.LeftClick && inputIndex <= PointerInput.RightClick) {\r\n evt.type = (currentState === 1) ? \"pointerdown\" : \"pointerup\";\r\n evt.button = inputIndex - 2;\r\n }\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Mouse Wheel Event\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IUIEvent object (Wheel)\r\n */\r\n private static _createWheelEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo: any): any {\r\n const evt = this._createMouseEvent(deviceType, deviceSlot, inputIndex, currentState, deviceInputSystem, elementToAttachTo);\r\n\r\n evt.type = \"wheel\";\r\n evt.deltaMode = EventConstants.DOM_DELTA_PIXEL;\r\n evt.deltaX = (inputIndex === PointerInput.MouseWheelX) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelX);\r\n evt.deltaY = (inputIndex === PointerInput.MouseWheelY) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelY);\r\n evt.deltaZ = (inputIndex === PointerInput.MouseWheelZ) ? currentState : deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.MouseWheelZ);\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Mouse Event\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IUIEvent object (Mouse)\r\n */\r\n private static _createMouseEvent(deviceType: DeviceType, deviceSlot: number, inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createEvent(elementToAttachTo);\r\n const pointerX = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Horizontal);\r\n const pointerY = deviceInputSystem.pollInput(deviceType, deviceSlot, PointerInput.Vertical);\r\n\r\n // Handle offsets/deltas based on existence of HTMLElement\r\n if (elementToAttachTo) {\r\n evt.movementX = 0;\r\n evt.movementY = 0;\r\n evt.offsetX = evt.movementX - elementToAttachTo.getBoundingClientRect().x;\r\n evt.offsetY = evt.movementY - elementToAttachTo.getBoundingClientRect().y;\r\n }\r\n else {\r\n evt.movementX = deviceInputSystem.pollInput(deviceType, deviceSlot, NativePointerInput.DeltaHorizontal); // DeltaHorizontal\r\n evt.movementY = deviceInputSystem.pollInput(deviceType, deviceSlot, NativePointerInput.DeltaVertical); // DeltaVertical\r\n evt.offsetX = 0;\r\n evt.offsetY = 0;\r\n }\r\n this._checkNonCharacterKeys(evt, deviceInputSystem);\r\n\r\n evt.clientX = pointerX;\r\n evt.clientY = pointerY;\r\n evt.x = pointerX;\r\n evt.y = pointerY;\r\n\r\n evt.deviceType = deviceType;\r\n evt.deviceSlot = deviceSlot;\r\n evt.inputIndex = inputIndex;\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Create Keyboard Event\r\n * @param inputIndex Id of input to be checked\r\n * @param currentState Current value for given input\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param elementToAttachTo HTMLElement to reference as target for inputs\r\n * @returns IEvent object (Keyboard)\r\n */\r\n private static _createKeyboardEvent(inputIndex: number, currentState: Nullable<number>, deviceInputSystem: IDeviceInputSystem, elementToAttachTo?: any): any {\r\n const evt = this._createEvent(elementToAttachTo);\r\n this._checkNonCharacterKeys(evt, deviceInputSystem);\r\n evt.deviceType = DeviceType.Keyboard;\r\n evt.deviceSlot = 0;\r\n evt.inputIndex = inputIndex;\r\n\r\n evt.type = currentState === 1 ? \"keydown\" : \"keyup\";\r\n evt.key = String.fromCharCode(inputIndex);\r\n evt.keyCode = inputIndex;\r\n\r\n return evt;\r\n }\r\n\r\n /**\r\n * Add parameters for non-character keys (Ctrl, Alt, Meta, Shift)\r\n * @param evt Event object to add parameters to\r\n * @param deviceInputSystem DeviceInputSystem to pull values from\r\n */\r\n private static _checkNonCharacterKeys(evt: any, deviceInputSystem: IDeviceInputSystem): void {\r\n const isKeyboardActive = deviceInputSystem.isDeviceAvailable(DeviceType.Keyboard);\r\n const altKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 18) === 1;\r\n const ctrlKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 17) === 1;\r\n const metaKey =\r\n isKeyboardActive &&\r\n (deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 91) === 1 ||\r\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 92) === 1 ||\r\n deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 93) === 1);\r\n const shiftKey = isKeyboardActive && deviceInputSystem.pollInput(DeviceType.Keyboard, 0, 16) === 1;\r\n\r\n evt.altKey = altKey;\r\n evt.ctrlKey = ctrlKey;\r\n evt.metaKey = metaKey;\r\n evt.shiftKey = shiftKey;\r\n }\r\n\r\n /**\r\n * Create base event object\r\n * @param elementToAttachTo Value to use as event target\r\n * @returns\r\n */\r\n private static _createEvent(elementToAttachTo: any): any {\r\n const evt: { [k: string]: any } = {};\r\n evt.preventDefault = () => { };\r\n evt.target = elementToAttachTo;\r\n\r\n return evt;\r\n }\r\n}"]}
@@ -23,6 +23,31 @@ export declare enum DeviceType {
23
23
  * Enum for All Pointers (Touch/Mouse)
24
24
  */
25
25
  export declare enum PointerInput {
26
+ /** Horizontal Axis (Not used in events/observables; only in polling) */
27
+ Horizontal = 0,
28
+ /** Vertical Axis (Not used in events/observables; only in polling) */
29
+ Vertical = 1,
30
+ /** Left Click or Touch */
31
+ LeftClick = 2,
32
+ /** Middle Click */
33
+ MiddleClick = 3,
34
+ /** Right Click */
35
+ RightClick = 4,
36
+ /** Browser Back */
37
+ BrowserBack = 5,
38
+ /** Browser Forward */
39
+ BrowserForward = 6,
40
+ /** Mouse Wheel X */
41
+ MouseWheelX = 7,
42
+ /** Mouse Wheel Y */
43
+ MouseWheelY = 8,
44
+ /** Mouse Wheel Z */
45
+ MouseWheelZ = 9,
46
+ /** Used in events/observables to identify if x/y changes occurred */
47
+ Move = 12
48
+ }
49
+ /** @hidden */
50
+ export declare enum NativePointerInput {
26
51
  /** Horizontal Axis */
27
52
  Horizontal = 0,
28
53
  /** Vertical Axis */
@@ -46,9 +71,7 @@ export declare enum PointerInput {
46
71
  /** Delta X */
47
72
  DeltaHorizontal = 10,
48
73
  /** Delta Y */
49
- DeltaVertical = 11,
50
- /** Move Catch-all */
51
- Move = 12
74
+ DeltaVertical = 11
52
75
  }
53
76
  /**
54
77
  * Enum for Dual Shock Gamepad
@@ -26,9 +26,9 @@ export var DeviceType;
26
26
  */
27
27
  export var PointerInput;
28
28
  (function (PointerInput) {
29
- /** Horizontal Axis */
29
+ /** Horizontal Axis (Not used in events/observables; only in polling) */
30
30
  PointerInput[PointerInput["Horizontal"] = 0] = "Horizontal";
31
- /** Vertical Axis */
31
+ /** Vertical Axis (Not used in events/observables; only in polling) */
32
32
  PointerInput[PointerInput["Vertical"] = 1] = "Vertical";
33
33
  /** Left Click or Touch */
34
34
  PointerInput[PointerInput["LeftClick"] = 2] = "LeftClick";
@@ -46,13 +46,37 @@ export var PointerInput;
46
46
  PointerInput[PointerInput["MouseWheelY"] = 8] = "MouseWheelY";
47
47
  /** Mouse Wheel Z */
48
48
  PointerInput[PointerInput["MouseWheelZ"] = 9] = "MouseWheelZ";
49
- /** Delta X */
50
- PointerInput[PointerInput["DeltaHorizontal"] = 10] = "DeltaHorizontal";
51
- /** Delta Y */
52
- PointerInput[PointerInput["DeltaVertical"] = 11] = "DeltaVertical";
53
- /** Move Catch-all */
49
+ /** Used in events/observables to identify if x/y changes occurred */
54
50
  PointerInput[PointerInput["Move"] = 12] = "Move";
55
51
  })(PointerInput || (PointerInput = {}));
52
+ /** @hidden */
53
+ export var NativePointerInput;
54
+ (function (NativePointerInput) {
55
+ /** Horizontal Axis */
56
+ NativePointerInput[NativePointerInput["Horizontal"] = 0] = "Horizontal";
57
+ /** Vertical Axis */
58
+ NativePointerInput[NativePointerInput["Vertical"] = 1] = "Vertical";
59
+ /** Left Click or Touch */
60
+ NativePointerInput[NativePointerInput["LeftClick"] = 2] = "LeftClick";
61
+ /** Middle Click */
62
+ NativePointerInput[NativePointerInput["MiddleClick"] = 3] = "MiddleClick";
63
+ /** Right Click */
64
+ NativePointerInput[NativePointerInput["RightClick"] = 4] = "RightClick";
65
+ /** Browser Back */
66
+ NativePointerInput[NativePointerInput["BrowserBack"] = 5] = "BrowserBack";
67
+ /** Browser Forward */
68
+ NativePointerInput[NativePointerInput["BrowserForward"] = 6] = "BrowserForward";
69
+ /** Mouse Wheel X */
70
+ NativePointerInput[NativePointerInput["MouseWheelX"] = 7] = "MouseWheelX";
71
+ /** Mouse Wheel Y */
72
+ NativePointerInput[NativePointerInput["MouseWheelY"] = 8] = "MouseWheelY";
73
+ /** Mouse Wheel Z */
74
+ NativePointerInput[NativePointerInput["MouseWheelZ"] = 9] = "MouseWheelZ";
75
+ /** Delta X */
76
+ NativePointerInput[NativePointerInput["DeltaHorizontal"] = 10] = "DeltaHorizontal";
77
+ /** Delta Y */
78
+ NativePointerInput[NativePointerInput["DeltaVertical"] = 11] = "DeltaVertical";
79
+ })(NativePointerInput || (NativePointerInput = {}));
56
80
  /**
57
81
  * Enum for Dual Shock Gamepad
58
82
  */
@@ -1 +1 @@
1
- {"version":3,"file":"deviceEnums.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceEnums.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Enum for Device Types\r\n */\r\nexport enum DeviceType {\r\n /** Generic */\r\n Generic = 0,\r\n /** Keyboard */\r\n Keyboard = 1,\r\n /** Mouse */\r\n Mouse = 2,\r\n /** Touch Pointers */\r\n Touch = 3,\r\n /** PS4 Dual Shock */\r\n DualShock = 4,\r\n /** Xbox */\r\n Xbox = 5,\r\n /** Switch Controller */\r\n Switch = 6,\r\n /** PS5 DualSense */\r\n DualSense = 7,\r\n}\r\n\r\n// Device Enums\r\n/**\r\n * Enum for All Pointers (Touch/Mouse)\r\n */\r\nexport enum PointerInput {\r\n /** Horizontal Axis */\r\n Horizontal = 0,\r\n /** Vertical Axis */\r\n Vertical = 1,\r\n /** Left Click or Touch */\r\n LeftClick = 2,\r\n /** Middle Click */\r\n MiddleClick = 3,\r\n /** Right Click */\r\n RightClick = 4,\r\n /** Browser Back */\r\n BrowserBack = 5,\r\n /** Browser Forward */\r\n BrowserForward = 6,\r\n /** Mouse Wheel X */\r\n MouseWheelX = 7,\r\n /** Mouse Wheel Y */\r\n MouseWheelY = 8,\r\n /** Mouse Wheel Z */\r\n MouseWheelZ = 9,\r\n /** Delta X */\r\n DeltaHorizontal = 10,\r\n /** Delta Y */\r\n DeltaVertical = 11,\r\n /** Move Catch-all */\r\n Move = 12,\r\n}\r\n\r\n/**\r\n * Enum for Dual Shock Gamepad\r\n */\r\nexport enum DualShockInput {\r\n /** Cross */\r\n Cross = 0,\r\n /** Circle */\r\n Circle = 1,\r\n /** Square */\r\n Square = 2,\r\n /** Triangle */\r\n Triangle = 3,\r\n /** L1 */\r\n L1 = 4,\r\n /** R1 */\r\n R1 = 5,\r\n /** L2 */\r\n L2 = 6,\r\n /** R2 */\r\n R2 = 7,\r\n /** Share */\r\n Share = 8,\r\n /** Options */\r\n Options = 9,\r\n /** L3 */\r\n L3 = 10,\r\n /** R3 */\r\n R3 = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** TouchPad */\r\n TouchPad = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}\r\n\r\n/**\r\n * Enum for Dual Sense Gamepad\r\n */\r\n export enum DualSenseInput {\r\n /** Cross */\r\n Cross = 0,\r\n /** Circle */\r\n Circle = 1,\r\n /** Square */\r\n Square = 2,\r\n /** Triangle */\r\n Triangle = 3,\r\n /** L1 */\r\n L1 = 4,\r\n /** R1 */\r\n R1 = 5,\r\n /** L2 */\r\n L2 = 6,\r\n /** R2 */\r\n R2 = 7,\r\n /** Create */\r\n Create = 8,\r\n /** Options */\r\n Options = 9,\r\n /** L3 */\r\n L3 = 10,\r\n /** R3 */\r\n R3 = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** TouchPad */\r\n TouchPad = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}\r\n\r\n/**\r\n * Enum for Xbox Gamepad\r\n */\r\nexport enum XboxInput {\r\n /** A */\r\n A = 0,\r\n /** B */\r\n B = 1,\r\n /** X */\r\n X = 2,\r\n /** Y */\r\n Y = 3,\r\n /** LB */\r\n LB = 4,\r\n /** RB */\r\n RB = 5,\r\n /** LT */\r\n LT = 6,\r\n /** RT */\r\n RT = 7,\r\n /** Back */\r\n Back = 8,\r\n /** Start */\r\n Start = 9,\r\n /** LS */\r\n LS = 10,\r\n /** RS */\r\n RS = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** LStickXAxis */\r\n LStickXAxis = 17,\r\n /** LStickYAxis */\r\n LStickYAxis = 18,\r\n /** RStickXAxis */\r\n RStickXAxis = 19,\r\n /** RStickYAxis */\r\n RStickYAxis = 20\r\n}\r\n\r\n/**\r\n * Enum for Switch (Pro/JoyCon L+R) Gamepad\r\n */\r\nexport enum SwitchInput {\r\n /** B */\r\n B = 0,\r\n /** A */\r\n A = 1,\r\n /** Y */\r\n Y = 2,\r\n /** X */\r\n X = 3,\r\n /** L */\r\n L = 4,\r\n /** R */\r\n R = 5,\r\n /** ZL */\r\n ZL = 6,\r\n /** ZR */\r\n ZR = 7,\r\n /** Minus */\r\n Minus = 8,\r\n /** Plus */\r\n Plus = 9,\r\n /** LS */\r\n LS = 10,\r\n /** RS */\r\n RS = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** Capture */\r\n Capture = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}"]}
1
+ {"version":3,"file":"deviceEnums.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceEnums.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * Enum for Device Types\r\n */\r\nexport enum DeviceType {\r\n /** Generic */\r\n Generic = 0,\r\n /** Keyboard */\r\n Keyboard = 1,\r\n /** Mouse */\r\n Mouse = 2,\r\n /** Touch Pointers */\r\n Touch = 3,\r\n /** PS4 Dual Shock */\r\n DualShock = 4,\r\n /** Xbox */\r\n Xbox = 5,\r\n /** Switch Controller */\r\n Switch = 6,\r\n /** PS5 DualSense */\r\n DualSense = 7,\r\n}\r\n\r\n// Device Enums\r\n/**\r\n * Enum for All Pointers (Touch/Mouse)\r\n */\r\nexport enum PointerInput {\r\n /** Horizontal Axis (Not used in events/observables; only in polling) */\r\n Horizontal = 0,\r\n /** Vertical Axis (Not used in events/observables; only in polling) */\r\n Vertical = 1,\r\n /** Left Click or Touch */\r\n LeftClick = 2,\r\n /** Middle Click */\r\n MiddleClick = 3,\r\n /** Right Click */\r\n RightClick = 4,\r\n /** Browser Back */\r\n BrowserBack = 5,\r\n /** Browser Forward */\r\n BrowserForward = 6,\r\n /** Mouse Wheel X */\r\n MouseWheelX = 7,\r\n /** Mouse Wheel Y */\r\n MouseWheelY = 8,\r\n /** Mouse Wheel Z */\r\n MouseWheelZ = 9,\r\n /** Used in events/observables to identify if x/y changes occurred */\r\n Move = 12,\r\n}\r\n\r\n/** @hidden */\r\nexport enum NativePointerInput {\r\n /** Horizontal Axis */\r\n Horizontal = PointerInput.Horizontal,\r\n /** Vertical Axis */\r\n Vertical = 1,\r\n /** Left Click or Touch */\r\n LeftClick = 2,\r\n /** Middle Click */\r\n MiddleClick = 3,\r\n /** Right Click */\r\n RightClick = 4,\r\n /** Browser Back */\r\n BrowserBack = 5,\r\n /** Browser Forward */\r\n BrowserForward = 6,\r\n /** Mouse Wheel X */\r\n MouseWheelX = 7,\r\n /** Mouse Wheel Y */\r\n MouseWheelY = 8,\r\n /** Mouse Wheel Z */\r\n MouseWheelZ = 9,\r\n /** Delta X */\r\n DeltaHorizontal = 10,\r\n /** Delta Y */\r\n DeltaVertical = 11,\r\n}\r\n\r\n/**\r\n * Enum for Dual Shock Gamepad\r\n */\r\nexport enum DualShockInput {\r\n /** Cross */\r\n Cross = 0,\r\n /** Circle */\r\n Circle = 1,\r\n /** Square */\r\n Square = 2,\r\n /** Triangle */\r\n Triangle = 3,\r\n /** L1 */\r\n L1 = 4,\r\n /** R1 */\r\n R1 = 5,\r\n /** L2 */\r\n L2 = 6,\r\n /** R2 */\r\n R2 = 7,\r\n /** Share */\r\n Share = 8,\r\n /** Options */\r\n Options = 9,\r\n /** L3 */\r\n L3 = 10,\r\n /** R3 */\r\n R3 = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** TouchPad */\r\n TouchPad = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}\r\n\r\n/**\r\n * Enum for Dual Sense Gamepad\r\n */\r\n export enum DualSenseInput {\r\n /** Cross */\r\n Cross = 0,\r\n /** Circle */\r\n Circle = 1,\r\n /** Square */\r\n Square = 2,\r\n /** Triangle */\r\n Triangle = 3,\r\n /** L1 */\r\n L1 = 4,\r\n /** R1 */\r\n R1 = 5,\r\n /** L2 */\r\n L2 = 6,\r\n /** R2 */\r\n R2 = 7,\r\n /** Create */\r\n Create = 8,\r\n /** Options */\r\n Options = 9,\r\n /** L3 */\r\n L3 = 10,\r\n /** R3 */\r\n R3 = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** TouchPad */\r\n TouchPad = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}\r\n\r\n/**\r\n * Enum for Xbox Gamepad\r\n */\r\nexport enum XboxInput {\r\n /** A */\r\n A = 0,\r\n /** B */\r\n B = 1,\r\n /** X */\r\n X = 2,\r\n /** Y */\r\n Y = 3,\r\n /** LB */\r\n LB = 4,\r\n /** RB */\r\n RB = 5,\r\n /** LT */\r\n LT = 6,\r\n /** RT */\r\n RT = 7,\r\n /** Back */\r\n Back = 8,\r\n /** Start */\r\n Start = 9,\r\n /** LS */\r\n LS = 10,\r\n /** RS */\r\n RS = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** LStickXAxis */\r\n LStickXAxis = 17,\r\n /** LStickYAxis */\r\n LStickYAxis = 18,\r\n /** RStickXAxis */\r\n RStickXAxis = 19,\r\n /** RStickYAxis */\r\n RStickYAxis = 20\r\n}\r\n\r\n/**\r\n * Enum for Switch (Pro/JoyCon L+R) Gamepad\r\n */\r\nexport enum SwitchInput {\r\n /** B */\r\n B = 0,\r\n /** A */\r\n A = 1,\r\n /** Y */\r\n Y = 2,\r\n /** X */\r\n X = 3,\r\n /** L */\r\n L = 4,\r\n /** R */\r\n R = 5,\r\n /** ZL */\r\n ZL = 6,\r\n /** ZR */\r\n ZR = 7,\r\n /** Minus */\r\n Minus = 8,\r\n /** Plus */\r\n Plus = 9,\r\n /** LS */\r\n LS = 10,\r\n /** RS */\r\n RS = 11,\r\n /** DPadUp */\r\n DPadUp = 12,\r\n /** DPadDown */\r\n DPadDown = 13,\r\n /** DPadLeft */\r\n DPadLeft = 14,\r\n /** DRight */\r\n DPadRight = 15,\r\n /** Home */\r\n Home = 16,\r\n /** Capture */\r\n Capture = 17,\r\n /** LStickXAxis */\r\n LStickXAxis = 18,\r\n /** LStickYAxis */\r\n LStickYAxis = 19,\r\n /** RStickXAxis */\r\n RStickXAxis = 20,\r\n /** RStickYAxis */\r\n RStickYAxis = 21\r\n}"]}
@@ -1,7 +1,12 @@
1
- import { DeviceType } from './deviceEnums';
1
+ import { DeviceType, PointerInput } from './deviceEnums';
2
2
  import { Observable } from '../../Misc/observable';
3
3
  import { DeviceInput } from './deviceTypes';
4
- import { IDeviceEvent, IDeviceInputSystem } from './inputInterfaces';
4
+ import { IDeviceInputSystem } from './inputInterfaces';
5
+ import { IUIEvent } from '../../Events/deviceInputEvents';
6
+ /**
7
+ * Subset of DeviceInput that only handles pointers and keyboard
8
+ */
9
+ declare type DeviceEventInput<T extends DeviceType> = T extends DeviceType.Keyboard | DeviceType.Generic ? number : T extends DeviceType.Mouse | DeviceType.Touch ? Exclude<PointerInput, PointerInput.Horizontal | PointerInput.Vertical> : never;
5
10
  /**
6
11
  * Class that handles all input for a specific device
7
12
  */
@@ -13,7 +18,9 @@ export declare class DeviceSource<T extends DeviceType> {
13
18
  /**
14
19
  * Observable to handle device input changes per device
15
20
  */
16
- readonly onInputChangedObservable: Observable<IDeviceEvent>;
21
+ readonly onInputChangedObservable: Observable<IUIEvent & {
22
+ inputIndex: DeviceEventInput<T>;
23
+ }>;
17
24
  private readonly _deviceInputSystem;
18
25
  /**
19
26
  * Default Constructor
@@ -33,3 +40,4 @@ export declare class DeviceSource<T extends DeviceType> {
33
40
  */
34
41
  getInput(inputIndex: DeviceInput<T>): number;
35
42
  }
43
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"deviceSource.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD;;GAEG;AACF;IAUG;;;;;OAKG;IACH,sBAAY,iBAAqC;IAC7C,qBAAqB;IACL,UAAsB;IACtC,mDAAmD;IACnC,UAAsB;QAAtB,2BAAA,EAAA,cAAsB;QAFtB,eAAU,GAAV,UAAU,CAAY;QAEtB,eAAU,GAAV,UAAU,CAAY;QAnB1C,iBAAiB;QACjB;;WAEG;QACa,6BAAwB,GAAG,IAAI,UAAU,EAAgB,CAAC;QAgBtE,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,+BAAQ,GAAf,UAAgB,UAA0B;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3F,CAAC;IACL,mBAAC;AAAD,CAAC,AAhCA,IAgCA","sourcesContent":["import { DeviceType } from './deviceEnums';\r\nimport { Observable } from '../../Misc/observable';\r\nimport { DeviceInput } from './deviceTypes';\r\nimport { IDeviceEvent, IDeviceInputSystem } from './inputInterfaces';\r\n\r\n/**\r\n * Class that handles all input for a specific device\r\n */\r\n export class DeviceSource<T extends DeviceType> {\r\n // Public Members\r\n /**\r\n * Observable to handle device input changes per device\r\n */\r\n public readonly onInputChangedObservable = new Observable<IDeviceEvent>();\r\n\r\n // Private Members\r\n private readonly _deviceInputSystem: IDeviceInputSystem;\r\n\r\n /**\r\n * Default Constructor\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n */\r\n constructor(deviceInputSystem: IDeviceInputSystem,\r\n /** Type of device */\r\n public readonly deviceType: DeviceType,\r\n /** \"Slot\" or index that device is referenced in */\r\n public readonly deviceSlot: number = 0) {\r\n this._deviceInputSystem = deviceInputSystem;\r\n }\r\n\r\n /**\r\n * Get input for specific input\r\n * @param inputIndex index of specific input on device\r\n * @returns Input value from DeviceInputSystem\r\n */\r\n public getInput(inputIndex: DeviceInput<T>): number {\r\n return this._deviceInputSystem.pollInput(this.deviceType, this.deviceSlot, inputIndex);\r\n }\r\n}"]}
1
+ {"version":3,"file":"deviceSource.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAanD;;GAEG;AACH;IAUI;;;;;OAKG;IACH,sBAAY,iBAAqC;IAC7C,qBAAqB;IACL,UAAsB;IACtC,mDAAmD;IACnC,UAAsB;QAAtB,2BAAA,EAAA,cAAsB;QAFtB,eAAU,GAAV,UAAU,CAAY;QAEtB,eAAU,GAAV,UAAU,CAAY;QAnB1C,iBAAiB;QACjB;;WAEG;QACa,6BAAwB,GAAG,IAAI,UAAU,EAAkD,CAAC;QAgBxG,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,+BAAQ,GAAf,UAAgB,UAA0B;QACtC,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3F,CAAC;IACL,mBAAC;AAAD,CAAC,AAhCD,IAgCC","sourcesContent":["import { DeviceType, PointerInput } from './deviceEnums';\r\nimport { Observable } from '../../Misc/observable';\r\nimport { DeviceInput } from './deviceTypes';\r\nimport { IDeviceInputSystem } from './inputInterfaces';\r\nimport { IUIEvent } from '../../Events/deviceInputEvents';\r\n\r\n/**\r\n * Subset of DeviceInput that only handles pointers and keyboard\r\n */\r\ntype DeviceEventInput<T extends DeviceType> =\r\n T extends DeviceType.Keyboard | DeviceType.Generic ? number :\r\n T extends DeviceType.Mouse | DeviceType.Touch ? Exclude<PointerInput, PointerInput.Horizontal | PointerInput.Vertical> :\r\n never;\r\n\r\n/**\r\n * Class that handles all input for a specific device\r\n */\r\nexport class DeviceSource<T extends DeviceType> {\r\n // Public Members\r\n /**\r\n * Observable to handle device input changes per device\r\n */\r\n public readonly onInputChangedObservable = new Observable<IUIEvent & { inputIndex: DeviceEventInput<T> }>();\r\n\r\n // Private Members\r\n private readonly _deviceInputSystem: IDeviceInputSystem;\r\n\r\n /**\r\n * Default Constructor\r\n * @param deviceInputSystem Reference to DeviceInputSystem\r\n * @param deviceType Type of device\r\n * @param deviceSlot \"Slot\" or index that device is referenced in\r\n */\r\n constructor(deviceInputSystem: IDeviceInputSystem,\r\n /** Type of device */\r\n public readonly deviceType: DeviceType,\r\n /** \"Slot\" or index that device is referenced in */\r\n public readonly deviceSlot: number = 0) {\r\n this._deviceInputSystem = deviceInputSystem;\r\n }\r\n\r\n /**\r\n * Get input for specific input\r\n * @param inputIndex index of specific input on device\r\n * @returns Input value from DeviceInputSystem\r\n */\r\n public getInput(inputIndex: DeviceInput<T>): number {\r\n return this._deviceInputSystem.pollInput(this.deviceType, this.deviceSlot, inputIndex);\r\n }\r\n}"]}
@@ -2,30 +2,26 @@ import { Engine } from '../../Engines/engine';
2
2
  import { DeviceType } from './deviceEnums';
3
3
  import { Nullable } from '../../types';
4
4
  import { Observable } from '../../Misc/observable';
5
- import { IDeviceEvent } from './inputInterfaces';
6
5
  import { DeviceSource } from './deviceSource';
6
+ import { IObservableManager } from './internalDeviceSourceManager';
7
7
  import { IDisposable } from '../../scene';
8
+ import { IUIEvent } from '../../Events/deviceInputEvents';
8
9
  /**
9
10
  * Class to keep track of devices
10
11
  */
11
- export declare class DeviceSourceManager implements IDisposable {
12
+ export declare class DeviceSourceManager implements IDisposable, IObservableManager {
12
13
  /**
13
14
  * Observable to be triggered when after a device is connected, any new observers added will be triggered against already connected devices
14
15
  */
15
16
  readonly onDeviceConnectedObservable: Observable<DeviceSource<DeviceType>>;
16
- /**
17
- * Observable to be triggered when a device's input is changed
18
- */
19
- readonly onInputChangedObservable: Observable<IDeviceEvent>;
20
17
  /**
21
18
  * Observable to be triggered when after a device is disconnected
22
19
  */
23
20
  readonly onDeviceDisconnectedObservable: Observable<DeviceSource<DeviceType>>;
24
21
  private _engine;
25
22
  private _onDisposeObserver;
26
- private _getDeviceSource;
27
- private _getDeviceSources;
28
- private _getDevices;
23
+ private readonly _devices;
24
+ private readonly _firstDevice;
29
25
  /**
30
26
  * Gets a DeviceSource, given a type and slot
31
27
  * @param deviceType Type of Device
@@ -53,4 +49,11 @@ export declare class DeviceSourceManager implements IDisposable {
53
49
  * Dispose of DeviceSourceManager
54
50
  */
55
51
  dispose(): void;
52
+ /** @hidden */
53
+ _addDevice(deviceSource: DeviceSource<DeviceType>): void;
54
+ /** @hidden */
55
+ _removeDevice(deviceType: DeviceType, deviceSlot: number): void;
56
+ /** @hidden */
57
+ _onInputChanged(deviceType: DeviceType, deviceSlot: number, eventData: IUIEvent): void;
58
+ private _updateFirstDevices;
56
59
  }
@@ -1,3 +1,4 @@
1
+ import { DeviceType } from './deviceEnums.js';
1
2
  import { Observable } from '../../Misc/observable.js';
2
3
  import { InternalDeviceSourceManager } from './internalDeviceSourceManager.js';
3
4
  /**
@@ -10,6 +11,9 @@ var DeviceSourceManager = /** @class */ (function () {
10
11
  */
11
12
  function DeviceSourceManager(engine) {
12
13
  var _this = this;
14
+ var numberOfDeviceTypes = Object.keys(DeviceType).length / 2;
15
+ this._devices = new Array(numberOfDeviceTypes);
16
+ this._firstDevice = new Array(numberOfDeviceTypes);
13
17
  this._engine = engine;
14
18
  if (!this._engine._deviceSourceManager) {
15
19
  this._engine._deviceSourceManager = new InternalDeviceSourceManager(engine);
@@ -21,12 +25,8 @@ var DeviceSourceManager = /** @class */ (function () {
21
25
  _this.onDeviceConnectedObservable.notifyObserver(observer, device);
22
26
  });
23
27
  });
24
- this.onInputChangedObservable = new Observable();
25
28
  this.onDeviceDisconnectedObservable = new Observable();
26
29
  this._engine._deviceSourceManager.registerManager(this);
27
- this._getDeviceSource = this._engine._deviceSourceManager.getDeviceSource;
28
- this._getDeviceSources = this._engine._deviceSourceManager.getDeviceSources;
29
- this._getDevices = this._engine._deviceSourceManager.getDevices;
30
30
  this._onDisposeObserver = engine.onDisposeObservable.add(function () {
31
31
  _this.dispose();
32
32
  });
@@ -39,7 +39,16 @@ var DeviceSourceManager = /** @class */ (function () {
39
39
  * @returns DeviceSource
40
40
  */
41
41
  DeviceSourceManager.prototype.getDeviceSource = function (deviceType, deviceSlot) {
42
- return this._getDeviceSource(deviceType, deviceSlot);
42
+ if (deviceSlot === undefined) {
43
+ if (this._firstDevice[deviceType] === undefined) {
44
+ return null;
45
+ }
46
+ deviceSlot = this._firstDevice[deviceType];
47
+ }
48
+ if (!this._devices[deviceType] || this._devices[deviceType][deviceSlot] === undefined) {
49
+ return null;
50
+ }
51
+ return this._devices[deviceType][deviceSlot];
43
52
  };
44
53
  /**
45
54
  * Gets an array of DeviceSource objects for a given device type
@@ -47,14 +56,19 @@ var DeviceSourceManager = /** @class */ (function () {
47
56
  * @returns All available DeviceSources of a given type
48
57
  */
49
58
  DeviceSourceManager.prototype.getDeviceSources = function (deviceType) {
50
- return this._getDeviceSources(deviceType);
59
+ return this._devices[deviceType].filter(function (source) { return !!source; });
51
60
  };
52
61
  /**
53
62
  * Returns a read-only list of all available devices
54
63
  * @returns All available DeviceSources
55
64
  */
56
65
  DeviceSourceManager.prototype.getDevices = function () {
57
- return this._getDevices();
66
+ var deviceArray = new Array();
67
+ for (var _i = 0, _a = this._devices; _i < _a.length; _i++) {
68
+ var deviceSet = _a[_i];
69
+ deviceArray.push.apply(deviceArray, deviceSet);
70
+ }
71
+ return deviceArray;
58
72
  };
59
73
  /**
60
74
  * Dispose of DeviceSourceManager
@@ -62,12 +76,7 @@ var DeviceSourceManager = /** @class */ (function () {
62
76
  DeviceSourceManager.prototype.dispose = function () {
63
77
  // Null out observable refs
64
78
  this.onDeviceConnectedObservable.clear();
65
- this.onInputChangedObservable.clear();
66
79
  this.onDeviceDisconnectedObservable.clear();
67
- // Null out function refs
68
- this._getDeviceSource = function () { return null; };
69
- this._getDeviceSources = function () { return []; };
70
- this._getDevices = function () { return []; };
71
80
  if (this._engine._deviceSourceManager) {
72
81
  this._engine._deviceSourceManager.unregisterManager(this);
73
82
  if (--this._engine._deviceSourceManager._refCount < 1) {
@@ -77,6 +86,60 @@ var DeviceSourceManager = /** @class */ (function () {
77
86
  }
78
87
  this._engine.onDisposeObservable.remove(this._onDisposeObserver);
79
88
  };
89
+ // Hidden Functions
90
+ /** @hidden */
91
+ DeviceSourceManager.prototype._addDevice = function (deviceSource) {
92
+ if (!this._devices[deviceSource.deviceType]) {
93
+ this._devices[deviceSource.deviceType] = new Array();
94
+ }
95
+ if (!this._devices[deviceSource.deviceType][deviceSource.deviceSlot]) {
96
+ this._devices[deviceSource.deviceType][deviceSource.deviceSlot] = deviceSource;
97
+ this._updateFirstDevices(deviceSource.deviceType);
98
+ }
99
+ this.onDeviceConnectedObservable.notifyObservers(deviceSource);
100
+ };
101
+ /** @hidden */
102
+ DeviceSourceManager.prototype._removeDevice = function (deviceType, deviceSlot) {
103
+ var _a, _b;
104
+ var deviceSource = (_a = this._devices[deviceType]) === null || _a === void 0 ? void 0 : _a[deviceSlot]; // Grab local reference to use before removing from devices
105
+ this.onDeviceDisconnectedObservable.notifyObservers(deviceSource);
106
+ if ((_b = this._devices[deviceType]) === null || _b === void 0 ? void 0 : _b[deviceSlot]) {
107
+ delete this._devices[deviceType][deviceSlot];
108
+ }
109
+ // Even if we don't delete a device, we should still check for the first device as things may have gotten out of sync.
110
+ this._updateFirstDevices(deviceType);
111
+ };
112
+ /** @hidden */
113
+ DeviceSourceManager.prototype._onInputChanged = function (deviceType, deviceSlot, eventData) {
114
+ var _a, _b;
115
+ (_b = (_a = this._devices[deviceType]) === null || _a === void 0 ? void 0 : _a[deviceSlot]) === null || _b === void 0 ? void 0 : _b.onInputChangedObservable.notifyObservers(eventData);
116
+ };
117
+ // Private Functions
118
+ DeviceSourceManager.prototype._updateFirstDevices = function (type) {
119
+ switch (type) {
120
+ case DeviceType.Keyboard:
121
+ case DeviceType.Mouse:
122
+ this._firstDevice[type] = 0;
123
+ break;
124
+ case DeviceType.Touch:
125
+ case DeviceType.DualSense:
126
+ case DeviceType.DualShock:
127
+ case DeviceType.Xbox:
128
+ case DeviceType.Switch:
129
+ case DeviceType.Generic:
130
+ delete this._firstDevice[type];
131
+ var devices = this._devices[type];
132
+ if (devices) {
133
+ for (var i = 0; i < devices.length; i++) {
134
+ if (devices[i]) {
135
+ this._firstDevice[type] = i;
136
+ break;
137
+ }
138
+ }
139
+ }
140
+ break;
141
+ }
142
+ };
80
143
  return DeviceSourceManager;
81
144
  }());
82
145
  export { DeviceSourceManager };
@@ -1 +1 @@
1
- {"version":3,"file":"deviceSourceManager.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceSourceManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAG7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAI5E;;GAEG;AACH;IAmDI;;;OAGG;IACH,6BAAY,MAAc;QAA1B,iBAyBC;QAxBG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;SAC/E;QACD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QAE9C,cAAc;QACd,IAAI,CAAC,2BAA2B,GAAG,IAAI,UAAU,CAA2B,UAAC,QAAQ;YACjF,KAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC7B,KAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,wBAAwB,GAAG,IAAI,UAAU,EAAgB,CAAC;QAC/D,IAAI,CAAC,8BAA8B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC;QAC1E,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;QAC5E,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAEhE,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC;YACrD,KAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IAzDD,mBAAmB;IACnB;;;;;OAKG;IACI,6CAAe,GAAtB,UAA6C,UAAa,EAAE,UAAmB;QAC3E,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED;;;;OAIG;IACI,8CAAgB,GAAvB,UAA8C,UAAa;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,wCAAU,GAAjB;QACI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,CAAC;IAiCD;;OAEG;IACI,qCAAO,GAAd;QACI,2BAA2B;QAC3B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAC5C,yBAAyB;QACzB,IAAI,CAAC,gBAAgB,GAAG,cAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,cAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,cAAQ,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAExC,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;gBACnD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC5C;SACJ;QACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IACL,0BAAC;AAAD,CAAC,AAxGD,IAwGC","sourcesContent":["import { Engine } from '../../Engines/engine';\nimport { DeviceType } from './deviceEnums';\nimport { Nullable } from '../../types';\nimport { Observable, Observer } from '../../Misc/observable';\nimport { IDeviceEvent } from './inputInterfaces';\nimport { DeviceSource } from './deviceSource';\nimport { InternalDeviceSourceManager } from './internalDeviceSourceManager';\nimport { IDisposable } from '../../scene';\nimport { ThinEngine } from '../../Engines/thinEngine';\n\n/**\n * Class to keep track of devices\n */\nexport class DeviceSourceManager implements IDisposable {\n // Public Members\n /**\n * Observable to be triggered when after a device is connected, any new observers added will be triggered against already connected devices\n */\n public readonly onDeviceConnectedObservable: Observable<DeviceSource<DeviceType>>;\n /**\n * Observable to be triggered when a device's input is changed\n */\n public readonly onInputChangedObservable: Observable<IDeviceEvent>;\n /**\n * Observable to be triggered when after a device is disconnected\n */\n public readonly onDeviceDisconnectedObservable: Observable<DeviceSource<DeviceType>>;\n\n // Private Members\n private _engine: Engine;\n private _onDisposeObserver: Nullable<Observer<ThinEngine>>;\n\n private _getDeviceSource: <T extends DeviceType>(deviceType: T, deviceSlot?: number) => Nullable<DeviceSource<T>>;\n private _getDeviceSources: <T extends DeviceType>(deviceType: T) => ReadonlyArray<DeviceSource<T>>;\n private _getDevices: () => ReadonlyArray<DeviceSource<DeviceType>>;\n\n // Public Functions\n /**\n * Gets a DeviceSource, given a type and slot\n * @param deviceType Type of Device\n * @param deviceSlot Slot or ID of device\n * @returns DeviceSource\n */\n public getDeviceSource<T extends DeviceType>(deviceType: T, deviceSlot?: number): Nullable<DeviceSource<T>> {\n return this._getDeviceSource(deviceType, deviceSlot);\n }\n\n /**\n * Gets an array of DeviceSource objects for a given device type\n * @param deviceType Type of Device\n * @returns All available DeviceSources of a given type\n */\n public getDeviceSources<T extends DeviceType>(deviceType: T): ReadonlyArray<DeviceSource<T>> {\n return this._getDeviceSources(deviceType);\n }\n\n /**\n * Returns a read-only list of all available devices\n * @returns All available DeviceSources\n */\n public getDevices(): ReadonlyArray<DeviceSource<DeviceType>> {\n return this._getDevices();\n }\n\n /**\n * Default constructor\n * @param engine Used to get canvas (if applicable)\n */\n constructor(engine: Engine) {\n this._engine = engine;\n if (!this._engine._deviceSourceManager) {\n this._engine._deviceSourceManager = new InternalDeviceSourceManager(engine);\n }\n this._engine._deviceSourceManager._refCount++;\n\n // Observables\n this.onDeviceConnectedObservable = new Observable<DeviceSource<DeviceType>>((observer) => {\n this.getDevices().forEach((device) => {\n this.onDeviceConnectedObservable.notifyObserver(observer, device);\n });\n });\n this.onInputChangedObservable = new Observable<IDeviceEvent>();\n this.onDeviceDisconnectedObservable = new Observable<DeviceSource<DeviceType>>();\n\n this._engine._deviceSourceManager.registerManager(this);\n\n this._getDeviceSource = this._engine._deviceSourceManager.getDeviceSource;\n this._getDeviceSources = this._engine._deviceSourceManager.getDeviceSources;\n this._getDevices = this._engine._deviceSourceManager.getDevices;\n\n this._onDisposeObserver = engine.onDisposeObservable.add(() => {\n this.dispose();\n });\n }\n\n /**\n * Dispose of DeviceSourceManager\n */\n public dispose(): void {\n // Null out observable refs\n this.onDeviceConnectedObservable.clear();\n this.onInputChangedObservable.clear();\n this.onDeviceDisconnectedObservable.clear();\n // Null out function refs\n this._getDeviceSource = () => { return null; };\n this._getDeviceSources = () => { return []; };\n this._getDevices = () => { return []; };\n\n if (this._engine._deviceSourceManager) {\n this._engine._deviceSourceManager.unregisterManager(this);\n if (--this._engine._deviceSourceManager._refCount < 1) {\n this._engine._deviceSourceManager.dispose();\n delete this._engine._deviceSourceManager;\n }\n }\n this._engine.onDisposeObservable.remove(this._onDisposeObserver);\n }\n}\n"]}
1
+ {"version":3,"file":"deviceSourceManager.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceSourceManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAY,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,2BAA2B,EAAsB,MAAM,+BAA+B,CAAC;AAKhG;;GAEG;AACH;IA8DI;;;OAGG;IACH,6BAAY,MAAc;QAA1B,iBAwBC;QAvBG,IAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAkC,mBAAmB,CAAC,CAAC;QAChF,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAS,mBAAmB,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,2BAA2B,CAAC,MAAM,CAAC,CAAC;SAC/E;QACD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;QAE9C,cAAc;QACd,IAAI,CAAC,2BAA2B,GAAG,IAAI,UAAU,CAA2B,UAAC,QAAQ;YACjF,KAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,UAAC,MAAM;gBAC7B,KAAI,CAAC,2BAA2B,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,8BAA8B,GAAG,IAAI,UAAU,EAA4B,CAAC;QAEjF,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAExD,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,mBAAmB,CAAC,GAAG,CAAC;YACrD,KAAI,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IAxED,mBAAmB;IACnB;;;;;OAKG;IACI,6CAAe,GAAtB,UAA6C,UAAa,EAAE,UAAmB;QAC3E,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACf;YAED,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;SAC9C;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,KAAK,SAAS,EAAE;YACnF,OAAO,IAAI,CAAC;SACf;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IACD;;;;OAIG;IACI,8CAAgB,GAAvB,UAA8C,UAAa;QACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,UAAC,MAAM,IAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;OAGG;IACI,wCAAU,GAAjB;QACI,IAAM,WAAW,GAAG,IAAI,KAAK,EAA4B,CAAC;QAC1D,KAAwB,UAAa,EAAb,KAAA,IAAI,CAAC,QAAQ,EAAb,cAAa,EAAb,IAAa,EAAE;YAAlC,IAAM,SAAS,SAAA;YAChB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;SAClD;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;IAgCD;;OAEG;IACI,qCAAO,GAAd;QACI,2BAA2B;QAC3B,IAAI,CAAC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACzC,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;QAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;YACnC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,GAAG,CAAC,EAAE;gBACnD,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;aAC5C;SACJ;QACD,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAED,mBAAmB;IACnB,cAAc;IACP,wCAAU,GAAjB,UAAkB,YAAsC;QACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,IAAI,KAAK,EAA4B,CAAC;SAClF;QAED,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YAClE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC;YAC/E,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;SACrD;QAED,IAAI,CAAC,2BAA2B,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IAED,cAAc;IACP,2CAAa,GAApB,UAAqB,UAAsB,EAAE,UAAkB;;QAC3D,IAAM,YAAY,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,CAAC,CAAC,2DAA2D;QACzH,IAAI,CAAC,8BAA8B,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAClE,IAAI,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,EAAE;YACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,UAAU,CAAC,CAAC;SAChD;QACD,sHAAsH;QACtH,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,cAAc;IACP,6CAAe,GAAtB,UAAuB,UAAsB,EAAE,UAAkB,EAAE,SAAmB;;QAClF,MAAA,MAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,0CAAG,UAAU,CAAC,0CAAE,wBAAwB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACjG,CAAC;IAED,oBAAoB;IACZ,iDAAmB,GAA3B,UAA4B,IAAgB;QACxC,QAAQ,IAAI,EAAE;YACV,KAAK,UAAU,CAAC,QAAQ,CAAC;YACzB,KAAK,UAAU,CAAC,KAAK;gBACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5B,MAAM;YACV,KAAK,UAAU,CAAC,KAAK,CAAC;YACtB,KAAK,UAAU,CAAC,SAAS,CAAC;YAC1B,KAAK,UAAU,CAAC,SAAS,CAAC;YAC1B,KAAK,UAAU,CAAC,IAAI,CAAC;YACrB,KAAK,UAAU,CAAC,MAAM,CAAC;YACvB,KAAK,UAAU,CAAC,OAAO;gBACnB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,OAAO,EAAE;oBACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACrC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE;4BACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC5B,MAAM;yBACT;qBACJ;iBACJ;gBACD,MAAM;SACb;IACL,CAAC;IACL,0BAAC;AAAD,CAAC,AAvKD,IAuKC","sourcesContent":["import { Engine } from '../../Engines/engine';\nimport { DeviceType } from './deviceEnums';\nimport { Nullable } from '../../types';\nimport { Observable, Observer } from '../../Misc/observable';\nimport { DeviceSource } from './deviceSource';\nimport { InternalDeviceSourceManager, IObservableManager } from './internalDeviceSourceManager';\nimport { IDisposable } from '../../scene';\nimport { ThinEngine } from '../../Engines/thinEngine';\nimport { IUIEvent } from '../../Events/deviceInputEvents';\n\n/**\n * Class to keep track of devices\n */\nexport class DeviceSourceManager implements IDisposable, IObservableManager {\n // Public Members\n /**\n * Observable to be triggered when after a device is connected, any new observers added will be triggered against already connected devices\n */\n public readonly onDeviceConnectedObservable: Observable<DeviceSource<DeviceType>>;\n\n /**\n * Observable to be triggered when after a device is disconnected\n */\n public readonly onDeviceDisconnectedObservable: Observable<DeviceSource<DeviceType>>;\n\n // Private Members\n private _engine: Engine;\n private _onDisposeObserver: Nullable<Observer<ThinEngine>>;\n private readonly _devices: Array<Array<DeviceSource<DeviceType>>>;\n private readonly _firstDevice: Array<number>;\n\n // Public Functions\n /**\n * Gets a DeviceSource, given a type and slot\n * @param deviceType Type of Device\n * @param deviceSlot Slot or ID of device\n * @returns DeviceSource\n */\n public getDeviceSource<T extends DeviceType>(deviceType: T, deviceSlot?: number): Nullable<DeviceSource<T>> {\n if (deviceSlot === undefined) {\n if (this._firstDevice[deviceType] === undefined) {\n return null;\n }\n\n deviceSlot = this._firstDevice[deviceType];\n }\n\n if (!this._devices[deviceType] || this._devices[deviceType][deviceSlot] === undefined) {\n return null;\n }\n\n return this._devices[deviceType][deviceSlot];\n }\n /**\n * Gets an array of DeviceSource objects for a given device type\n * @param deviceType Type of Device\n * @returns All available DeviceSources of a given type\n */\n public getDeviceSources<T extends DeviceType>(deviceType: T): ReadonlyArray<DeviceSource<T>> {\n return this._devices[deviceType].filter((source) => { return !!source; });\n }\n\n /**\n * Returns a read-only list of all available devices\n * @returns All available DeviceSources\n */\n public getDevices(): ReadonlyArray<DeviceSource<DeviceType>> {\n const deviceArray = new Array<DeviceSource<DeviceType>>();\n for (const deviceSet of this._devices) {\n deviceArray.push.apply(deviceArray, deviceSet);\n }\n\n return deviceArray;\n }\n\n /**\n * Default constructor\n * @param engine Used to get canvas (if applicable)\n */\n constructor(engine: Engine) {\n const numberOfDeviceTypes = Object.keys(DeviceType).length / 2;\n this._devices = new Array<Array<DeviceSource<DeviceType>>>(numberOfDeviceTypes);\n this._firstDevice = new Array<number>(numberOfDeviceTypes);\n this._engine = engine;\n\n if (!this._engine._deviceSourceManager) {\n this._engine._deviceSourceManager = new InternalDeviceSourceManager(engine);\n }\n this._engine._deviceSourceManager._refCount++;\n\n // Observables\n this.onDeviceConnectedObservable = new Observable<DeviceSource<DeviceType>>((observer) => {\n this.getDevices().forEach((device) => {\n this.onDeviceConnectedObservable.notifyObserver(observer, device);\n });\n });\n this.onDeviceDisconnectedObservable = new Observable<DeviceSource<DeviceType>>();\n\n this._engine._deviceSourceManager.registerManager(this);\n\n this._onDisposeObserver = engine.onDisposeObservable.add(() => {\n this.dispose();\n });\n }\n\n /**\n * Dispose of DeviceSourceManager\n */\n public dispose(): void {\n // Null out observable refs\n this.onDeviceConnectedObservable.clear();\n this.onDeviceDisconnectedObservable.clear();\n\n if (this._engine._deviceSourceManager) {\n this._engine._deviceSourceManager.unregisterManager(this);\n if (--this._engine._deviceSourceManager._refCount < 1) {\n this._engine._deviceSourceManager.dispose();\n delete this._engine._deviceSourceManager;\n }\n }\n this._engine.onDisposeObservable.remove(this._onDisposeObserver);\n }\n\n // Hidden Functions\n /** @hidden */\n public _addDevice(deviceSource: DeviceSource<DeviceType>): void {\n if (!this._devices[deviceSource.deviceType]) {\n this._devices[deviceSource.deviceType] = new Array<DeviceSource<DeviceType>>();\n }\n\n if (!this._devices[deviceSource.deviceType][deviceSource.deviceSlot]) {\n this._devices[deviceSource.deviceType][deviceSource.deviceSlot] = deviceSource;\n this._updateFirstDevices(deviceSource.deviceType);\n }\n\n this.onDeviceConnectedObservable.notifyObservers(deviceSource);\n }\n\n /** @hidden */\n public _removeDevice(deviceType: DeviceType, deviceSlot: number): void {\n const deviceSource = this._devices[deviceType]?.[deviceSlot]; // Grab local reference to use before removing from devices\n this.onDeviceDisconnectedObservable.notifyObservers(deviceSource);\n if (this._devices[deviceType]?.[deviceSlot]) {\n delete this._devices[deviceType][deviceSlot];\n }\n // Even if we don't delete a device, we should still check for the first device as things may have gotten out of sync.\n this._updateFirstDevices(deviceType);\n }\n\n /** @hidden */\n public _onInputChanged(deviceType: DeviceType, deviceSlot: number, eventData: IUIEvent): void {\n this._devices[deviceType]?.[deviceSlot]?.onInputChangedObservable.notifyObservers(eventData);\n }\n\n // Private Functions\n private _updateFirstDevices(type: DeviceType): void {\n switch (type) {\n case DeviceType.Keyboard:\n case DeviceType.Mouse:\n this._firstDevice[type] = 0;\n break;\n case DeviceType.Touch:\n case DeviceType.DualSense:\n case DeviceType.DualShock:\n case DeviceType.Xbox:\n case DeviceType.Switch:\n case DeviceType.Generic:\n delete this._firstDevice[type];\n const devices = this._devices[type];\n if (devices) {\n for (let i = 0; i < devices.length; i++) {\n if (devices[i]) {\n this._firstDevice[type] = i;\n break;\n }\n }\n }\n break;\n }\n }\n}\n"]}
@@ -2,4 +2,4 @@ import { DeviceType, PointerInput, DualShockInput, XboxInput, SwitchInput, DualS
2
2
  /**
3
3
  * Type to handle enforcement of inputs
4
4
  */
5
- export declare type DeviceInput<T extends DeviceType> = T extends DeviceType.Keyboard | DeviceType.Generic ? number : T extends DeviceType.Mouse | DeviceType.Touch ? PointerInput : T extends DeviceType.DualShock ? DualShockInput : T extends DeviceType.Xbox ? XboxInput : T extends DeviceType.Switch ? SwitchInput : T extends DeviceType.DualSense ? DualSenseInput : never;
5
+ export declare type DeviceInput<T extends DeviceType> = T extends DeviceType.Keyboard | DeviceType.Generic ? number : T extends DeviceType.Mouse | DeviceType.Touch ? Exclude<PointerInput, PointerInput.Move> : T extends DeviceType.DualShock ? DualShockInput : T extends DeviceType.Xbox ? XboxInput : T extends DeviceType.Switch ? SwitchInput : T extends DeviceType.DualSense ? DualSenseInput : never;
@@ -1 +1 @@
1
- {"version":3,"file":"deviceTypes.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceTypes.ts"],"names":[],"mappings":"","sourcesContent":["import { DeviceType, PointerInput, DualShockInput, XboxInput, SwitchInput, DualSenseInput } from './deviceEnums';\r\n\r\n/**\r\n * Type to handle enforcement of inputs\r\n */\r\nexport type DeviceInput<T extends DeviceType> =\r\n T extends DeviceType.Keyboard | DeviceType.Generic ? number :\r\n T extends DeviceType.Mouse | DeviceType.Touch ? PointerInput :\r\n T extends DeviceType.DualShock ? DualShockInput :\r\n T extends DeviceType.Xbox ? XboxInput :\r\n T extends DeviceType.Switch ? SwitchInput :\r\n T extends DeviceType.DualSense ? DualSenseInput :\r\n never;"]}
1
+ {"version":3,"file":"deviceTypes.js","sourceRoot":"","sources":["../../../../sourceES6/core/DeviceInput/InputDevices/deviceTypes.ts"],"names":[],"mappings":"","sourcesContent":["import { DeviceType, PointerInput, DualShockInput, XboxInput, SwitchInput, DualSenseInput } from './deviceEnums';\r\n\r\n/**\r\n * Type to handle enforcement of inputs\r\n */\r\nexport type DeviceInput<T extends DeviceType> =\r\n T extends DeviceType.Keyboard | DeviceType.Generic ? number :\r\n T extends DeviceType.Mouse | DeviceType.Touch ? Exclude<PointerInput, PointerInput.Move> :\r\n T extends DeviceType.DualShock ? DualShockInput :\r\n T extends DeviceType.Xbox ? XboxInput :\r\n T extends DeviceType.Switch ? SwitchInput :\r\n T extends DeviceType.DualSense ? DualSenseInput :\r\n never;"]}