@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.3.0 → 0.3.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 (172) hide show
  1. package/dist/commonjs/AFK/AFKController.js +109 -109
  2. package/dist/commonjs/Config/Config.js +559 -559
  3. package/dist/commonjs/Config/SettingBase.js +98 -98
  4. package/dist/commonjs/Config/SettingFlag.js +49 -49
  5. package/dist/commonjs/Config/SettingNumber.js +83 -83
  6. package/dist/commonjs/Config/SettingOption.js +84 -84
  7. package/dist/commonjs/Config/SettingText.js +42 -42
  8. package/dist/commonjs/DataChannel/DataChannelController.js +106 -106
  9. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +94 -94
  10. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +18 -18
  11. package/dist/commonjs/DataChannel/DataChannelSender.js +43 -43
  12. package/dist/commonjs/DataChannel/InitialSettings.js +41 -41
  13. package/dist/commonjs/DataChannel/LatencyTestResults.js +60 -60
  14. package/dist/commonjs/FreezeFrame/FreezeFrame.js +93 -93
  15. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +95 -95
  16. package/dist/commonjs/Inputs/GamepadController.js +188 -188
  17. package/dist/commonjs/Inputs/GamepadTypes.js +21 -21
  18. package/dist/commonjs/Inputs/IInputController.js +2 -2
  19. package/dist/commonjs/Inputs/InputClassesFactory.js +96 -96
  20. package/dist/commonjs/Inputs/KeyCodes.js +112 -112
  21. package/dist/commonjs/Inputs/KeyboardController.js +137 -137
  22. package/dist/commonjs/Inputs/MouseButtons.js +28 -28
  23. package/dist/commonjs/Inputs/MouseController.js +97 -97
  24. package/dist/commonjs/Inputs/MouseControllerHovering.js +93 -93
  25. package/dist/commonjs/Inputs/MouseControllerLocked.js +153 -153
  26. package/dist/commonjs/Inputs/SpecialKeyCodes.js +19 -19
  27. package/dist/commonjs/Inputs/TouchController.js +123 -123
  28. package/dist/commonjs/Inputs/TouchController.js.map +1 -1
  29. package/dist/commonjs/Inputs/TouchControllerFake.js +91 -91
  30. package/dist/commonjs/Inputs/XRGamepadController.js +124 -124
  31. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +252 -252
  32. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +10 -10
  33. package/dist/commonjs/PeerConnectionController/CandidateStat.js +10 -10
  34. package/dist/commonjs/PeerConnectionController/CodecStats.js +10 -10
  35. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +10 -10
  36. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +22 -22
  37. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +10 -10
  38. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +16 -16
  39. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +584 -584
  40. package/dist/commonjs/PeerConnectionController/SessionStats.js +10 -10
  41. package/dist/commonjs/PeerConnectionController/StreamStats.js +10 -10
  42. package/dist/commonjs/PixelStreaming/PixelStreaming.js +607 -607
  43. package/dist/commonjs/UI/OnScreenKeyboard.js +82 -82
  44. package/dist/commonjs/UeInstanceMessage/ResponseController.js +38 -38
  45. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +120 -120
  46. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +210 -210
  47. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +49 -49
  48. package/dist/commonjs/Util/EventEmitter.js +386 -386
  49. package/dist/commonjs/Util/FileUtil.js +108 -108
  50. package/dist/commonjs/Util/IURLSearchParams.js +25 -25
  51. package/dist/commonjs/Util/InputCoordTranslator.js +49 -49
  52. package/dist/commonjs/Util/RTCUtils.js +40 -40
  53. package/dist/commonjs/VideoPlayer/StreamController.js +67 -67
  54. package/dist/commonjs/VideoPlayer/VideoPlayer.js +177 -177
  55. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1221 -1221
  56. package/dist/commonjs/WebXR/WebXRController.js +335 -335
  57. package/dist/commonjs/pixelstreamingfrontend.js +70 -70
  58. package/dist/esm/AFK/AFKController.js +105 -105
  59. package/dist/esm/Config/Config.js +551 -551
  60. package/dist/esm/Config/SettingBase.js +94 -94
  61. package/dist/esm/Config/SettingFlag.js +45 -45
  62. package/dist/esm/Config/SettingNumber.js +79 -79
  63. package/dist/esm/Config/SettingOption.js +80 -80
  64. package/dist/esm/Config/SettingText.js +38 -38
  65. package/dist/esm/DataChannel/DataChannelController.js +102 -102
  66. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +90 -90
  67. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +14 -14
  68. package/dist/esm/DataChannel/DataChannelSender.js +39 -39
  69. package/dist/esm/DataChannel/InitialSettings.js +34 -34
  70. package/dist/esm/DataChannel/LatencyTestResults.js +56 -56
  71. package/dist/esm/FreezeFrame/FreezeFrame.js +89 -89
  72. package/dist/esm/FreezeFrame/FreezeFrameController.js +91 -91
  73. package/dist/esm/Inputs/GamepadController.js +184 -184
  74. package/dist/esm/Inputs/GamepadTypes.js +17 -17
  75. package/dist/esm/Inputs/IInputController.js +1 -1
  76. package/dist/esm/Inputs/InputClassesFactory.js +91 -91
  77. package/dist/esm/Inputs/KeyCodes.js +109 -109
  78. package/dist/esm/Inputs/KeyboardController.js +133 -133
  79. package/dist/esm/Inputs/MouseButtons.js +23 -23
  80. package/dist/esm/Inputs/MouseController.js +93 -93
  81. package/dist/esm/Inputs/MouseControllerHovering.js +89 -89
  82. package/dist/esm/Inputs/MouseControllerLocked.js +149 -149
  83. package/dist/esm/Inputs/SpecialKeyCodes.js +15 -15
  84. package/dist/esm/Inputs/TouchController.js +119 -119
  85. package/dist/esm/Inputs/TouchController.js.map +1 -1
  86. package/dist/esm/Inputs/TouchControllerFake.js +87 -87
  87. package/dist/esm/Inputs/XRGamepadController.js +120 -120
  88. package/dist/esm/PeerConnectionController/AggregatedStats.js +248 -248
  89. package/dist/esm/PeerConnectionController/CandidatePairStats.js +6 -6
  90. package/dist/esm/PeerConnectionController/CandidateStat.js +6 -6
  91. package/dist/esm/PeerConnectionController/CodecStats.js +6 -6
  92. package/dist/esm/PeerConnectionController/DataChannelStats.js +6 -6
  93. package/dist/esm/PeerConnectionController/InboundRTPStats.js +16 -16
  94. package/dist/esm/PeerConnectionController/InboundTrackStats.js +6 -6
  95. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +11 -11
  96. package/dist/esm/PeerConnectionController/PeerConnectionController.js +580 -580
  97. package/dist/esm/PeerConnectionController/SessionStats.js +6 -6
  98. package/dist/esm/PeerConnectionController/StreamStats.js +6 -6
  99. package/dist/esm/PixelStreaming/PixelStreaming.js +603 -603
  100. package/dist/esm/UI/OnScreenKeyboard.js +78 -78
  101. package/dist/esm/UeInstanceMessage/ResponseController.js +34 -34
  102. package/dist/esm/UeInstanceMessage/SendMessageController.js +116 -116
  103. package/dist/esm/UeInstanceMessage/StreamMessageController.js +205 -205
  104. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +45 -45
  105. package/dist/esm/Util/EventEmitter.js +345 -345
  106. package/dist/esm/Util/FileUtil.js +103 -103
  107. package/dist/esm/Util/IURLSearchParams.js +21 -21
  108. package/dist/esm/Util/InputCoordTranslator.js +45 -45
  109. package/dist/esm/Util/RTCUtils.js +36 -36
  110. package/dist/esm/VideoPlayer/StreamController.js +63 -63
  111. package/dist/esm/VideoPlayer/VideoPlayer.js +173 -173
  112. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1217 -1217
  113. package/dist/esm/WebXR/WebXRController.js +331 -331
  114. package/dist/esm/pixelstreamingfrontend.js +24 -24
  115. package/dist/types/AFK/AFKController.d.ts +38 -38
  116. package/dist/types/Config/Config.d.ts +220 -220
  117. package/dist/types/Config/SettingBase.d.ts +43 -43
  118. package/dist/types/Config/SettingFlag.d.ts +24 -24
  119. package/dist/types/Config/SettingNumber.d.ts +41 -41
  120. package/dist/types/Config/SettingOption.d.ts +41 -41
  121. package/dist/types/Config/SettingText.d.ts +21 -21
  122. package/dist/types/DataChannel/DataChannelController.d.ts +59 -59
  123. package/dist/types/DataChannel/DataChannelLatencyTestController.d.ts +25 -25
  124. package/dist/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  125. package/dist/types/DataChannel/DataChannelSender.d.ts +21 -21
  126. package/dist/types/DataChannel/InitialSettings.d.ts +44 -44
  127. package/dist/types/DataChannel/LatencyTestResults.d.ts +31 -31
  128. package/dist/types/FreezeFrame/FreezeFrame.d.ts +36 -36
  129. package/dist/types/FreezeFrame/FreezeFrameController.d.ts +37 -37
  130. package/dist/types/Inputs/GamepadController.d.ts +61 -61
  131. package/dist/types/Inputs/GamepadTypes.d.ts +15 -15
  132. package/dist/types/Inputs/IInputController.d.ts +16 -16
  133. package/dist/types/Inputs/InputClassesFactory.d.ts +53 -53
  134. package/dist/types/Inputs/KeyCodes.d.ts +5 -5
  135. package/dist/types/Inputs/KeyboardController.d.ts +34 -34
  136. package/dist/types/Inputs/MouseButtons.d.ts +22 -22
  137. package/dist/types/Inputs/MouseController.d.ts +40 -40
  138. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -26
  139. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -31
  140. package/dist/types/Inputs/SpecialKeyCodes.d.ts +14 -14
  141. package/dist/types/Inputs/TouchController.d.ts +28 -28
  142. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -29
  143. package/dist/types/Inputs/XRGamepadController.d.ts +15 -15
  144. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +82 -82
  145. package/dist/types/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  146. package/dist/types/PeerConnectionController/CandidateStat.d.ts +13 -13
  147. package/dist/types/PeerConnectionController/CodecStats.d.ts +14 -14
  148. package/dist/types/PeerConnectionController/DataChannelStats.d.ts +15 -15
  149. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  150. package/dist/types/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  151. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  152. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  153. package/dist/types/PeerConnectionController/SessionStats.d.ts +8 -8
  154. package/dist/types/PeerConnectionController/StreamStats.d.ts +9 -9
  155. package/dist/types/PixelStreaming/PixelStreaming.d.ts +271 -271
  156. package/dist/types/UI/OnScreenKeyboard.d.ts +30 -30
  157. package/dist/types/UeInstanceMessage/ResponseController.d.ts +19 -19
  158. package/dist/types/UeInstanceMessage/SendMessageController.d.ts +18 -18
  159. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  160. package/dist/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  161. package/dist/types/Util/EventEmitter.d.ts +429 -429
  162. package/dist/types/Util/FileUtil.d.ts +32 -32
  163. package/dist/types/Util/IURLSearchParams.d.ts +9 -9
  164. package/dist/types/Util/InputCoordTranslator.d.ts +29 -29
  165. package/dist/types/Util/RTCUtils.d.ts +8 -8
  166. package/dist/types/VideoPlayer/StreamController.d.ts +22 -22
  167. package/dist/types/VideoPlayer/VideoPlayer.d.ts +78 -78
  168. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  169. package/dist/types/WebXR/WebXRController.d.ts +42 -42
  170. package/dist/types/pixelstreamingfrontend.d.ts +23 -23
  171. package/package.json +45 -45
  172. package/src/Inputs/TouchController.ts +3 -3
@@ -1,92 +1,92 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TouchControllerFake = void 0;
5
- const MouseButtons_1 = require("./MouseButtons");
6
- /**
7
- * Allows for the usage of fake touch events
8
- */
9
- class TouchControllerFake {
10
- constructor(streamMessageController, videoPlayer, coordinateConverter) {
11
- this.streamMessageController = streamMessageController;
12
- this.videoPlayer = videoPlayer;
13
- this.coordinateConverter = coordinateConverter;
14
- this.onTouchStartListener = this.onTouchStart.bind(this);
15
- this.onTouchEndListener = this.onTouchEnd.bind(this);
16
- this.onTouchMoveListener = this.onTouchMove.bind(this);
17
- this.videoElementParentClientRect = this.videoPlayer.getVideoParentElement().getBoundingClientRect();
18
- }
19
- register() {
20
- document.addEventListener('touchstart', this.onTouchStartListener);
21
- document.addEventListener('touchend', this.onTouchEndListener);
22
- document.addEventListener('touchmove', this.onTouchMoveListener);
23
- }
24
- unregister() {
25
- document.removeEventListener('touchstart', this.onTouchStartListener);
26
- document.removeEventListener('touchend', this.onTouchEndListener);
27
- document.removeEventListener('touchmove', this.onTouchMoveListener);
28
- }
29
- onTouchStart(touch) {
30
- if (!this.videoPlayer.isVideoReady() || touch.target !== this.videoPlayer.getVideoElement()) {
31
- return;
32
- }
33
- if (this.fakeTouchFinger == null) {
34
- const first_touch = touch.changedTouches[0];
35
- this.fakeTouchFinger = {
36
- id: first_touch.identifier,
37
- x: first_touch.clientX - this.videoElementParentClientRect.left,
38
- y: first_touch.clientY - this.videoElementParentClientRect.top
39
- };
40
- const videoElementParent = this.videoPlayer.getVideoParentElement();
41
- const mouseEvent = new MouseEvent('mouseenter', first_touch);
42
- videoElementParent.dispatchEvent(mouseEvent);
43
- const coord = this.coordinateConverter.translateUnsigned(this.fakeTouchFinger.x, this.fakeTouchFinger.y);
44
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
45
- toStreamerHandlers.get('MouseDown')([MouseButtons_1.MouseButton.mainButton, coord.x, coord.y]);
46
- }
47
- touch.preventDefault();
48
- }
49
- onTouchEnd(touchEvent) {
50
- if (!this.videoPlayer.isVideoReady() || this.fakeTouchFinger == null) {
51
- return;
52
- }
53
- const videoElementParent = this.videoPlayer.getVideoParentElement();
54
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
55
- for (let t = 0; t < touchEvent.changedTouches.length; t++) {
56
- const touch = touchEvent.changedTouches[t];
57
- if (touch.identifier === this.fakeTouchFinger.id) {
58
- const x = touch.clientX - this.videoElementParentClientRect.left;
59
- const y = touch.clientY - this.videoElementParentClientRect.top;
60
- const coord = this.coordinateConverter.translateUnsigned(x, y);
61
- toStreamerHandlers.get('MouseUp')([MouseButtons_1.MouseButton.mainButton, coord.x, coord.y]);
62
- const mouseEvent = new MouseEvent('mouseleave', touch);
63
- videoElementParent.dispatchEvent(mouseEvent);
64
- this.fakeTouchFinger = null;
65
- break;
66
- }
67
- }
68
- touchEvent.preventDefault();
69
- }
70
- onTouchMove(touchEvent) {
71
- if (!this.videoPlayer.isVideoReady() || this.fakeTouchFinger == null) {
72
- return;
73
- }
74
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
75
- for (let t = 0; t < touchEvent.touches.length; t++) {
76
- const touch = touchEvent.touches[t];
77
- if (touch.identifier === this.fakeTouchFinger.id) {
78
- const x = touch.clientX - this.videoElementParentClientRect.left;
79
- const y = touch.clientY - this.videoElementParentClientRect.top;
80
- const coord = this.coordinateConverter.translateUnsigned(x, y);
81
- const delta = this.coordinateConverter.translateSigned(x - this.fakeTouchFinger.x, y - this.fakeTouchFinger.y);
82
- toStreamerHandlers.get('MouseMove')([coord.x, coord.y, delta.x, delta.y]);
83
- this.fakeTouchFinger.x = x;
84
- this.fakeTouchFinger.y = y;
85
- break;
86
- }
87
- }
88
- touchEvent.preventDefault();
89
- }
90
- }
91
- exports.TouchControllerFake = TouchControllerFake;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TouchControllerFake = void 0;
5
+ const MouseButtons_1 = require("./MouseButtons");
6
+ /**
7
+ * Allows for the usage of fake touch events
8
+ */
9
+ class TouchControllerFake {
10
+ constructor(streamMessageController, videoPlayer, coordinateConverter) {
11
+ this.streamMessageController = streamMessageController;
12
+ this.videoPlayer = videoPlayer;
13
+ this.coordinateConverter = coordinateConverter;
14
+ this.onTouchStartListener = this.onTouchStart.bind(this);
15
+ this.onTouchEndListener = this.onTouchEnd.bind(this);
16
+ this.onTouchMoveListener = this.onTouchMove.bind(this);
17
+ this.videoElementParentClientRect = this.videoPlayer.getVideoParentElement().getBoundingClientRect();
18
+ }
19
+ register() {
20
+ document.addEventListener('touchstart', this.onTouchStartListener);
21
+ document.addEventListener('touchend', this.onTouchEndListener);
22
+ document.addEventListener('touchmove', this.onTouchMoveListener);
23
+ }
24
+ unregister() {
25
+ document.removeEventListener('touchstart', this.onTouchStartListener);
26
+ document.removeEventListener('touchend', this.onTouchEndListener);
27
+ document.removeEventListener('touchmove', this.onTouchMoveListener);
28
+ }
29
+ onTouchStart(touch) {
30
+ if (!this.videoPlayer.isVideoReady() || touch.target !== this.videoPlayer.getVideoElement()) {
31
+ return;
32
+ }
33
+ if (this.fakeTouchFinger == null) {
34
+ const first_touch = touch.changedTouches[0];
35
+ this.fakeTouchFinger = {
36
+ id: first_touch.identifier,
37
+ x: first_touch.clientX - this.videoElementParentClientRect.left,
38
+ y: first_touch.clientY - this.videoElementParentClientRect.top
39
+ };
40
+ const videoElementParent = this.videoPlayer.getVideoParentElement();
41
+ const mouseEvent = new MouseEvent('mouseenter', first_touch);
42
+ videoElementParent.dispatchEvent(mouseEvent);
43
+ const coord = this.coordinateConverter.translateUnsigned(this.fakeTouchFinger.x, this.fakeTouchFinger.y);
44
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
45
+ toStreamerHandlers.get('MouseDown')([MouseButtons_1.MouseButton.mainButton, coord.x, coord.y]);
46
+ }
47
+ touch.preventDefault();
48
+ }
49
+ onTouchEnd(touchEvent) {
50
+ if (!this.videoPlayer.isVideoReady() || this.fakeTouchFinger == null) {
51
+ return;
52
+ }
53
+ const videoElementParent = this.videoPlayer.getVideoParentElement();
54
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
55
+ for (let t = 0; t < touchEvent.changedTouches.length; t++) {
56
+ const touch = touchEvent.changedTouches[t];
57
+ if (touch.identifier === this.fakeTouchFinger.id) {
58
+ const x = touch.clientX - this.videoElementParentClientRect.left;
59
+ const y = touch.clientY - this.videoElementParentClientRect.top;
60
+ const coord = this.coordinateConverter.translateUnsigned(x, y);
61
+ toStreamerHandlers.get('MouseUp')([MouseButtons_1.MouseButton.mainButton, coord.x, coord.y]);
62
+ const mouseEvent = new MouseEvent('mouseleave', touch);
63
+ videoElementParent.dispatchEvent(mouseEvent);
64
+ this.fakeTouchFinger = null;
65
+ break;
66
+ }
67
+ }
68
+ touchEvent.preventDefault();
69
+ }
70
+ onTouchMove(touchEvent) {
71
+ if (!this.videoPlayer.isVideoReady() || this.fakeTouchFinger == null) {
72
+ return;
73
+ }
74
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
75
+ for (let t = 0; t < touchEvent.touches.length; t++) {
76
+ const touch = touchEvent.touches[t];
77
+ if (touch.identifier === this.fakeTouchFinger.id) {
78
+ const x = touch.clientX - this.videoElementParentClientRect.left;
79
+ const y = touch.clientY - this.videoElementParentClientRect.top;
80
+ const coord = this.coordinateConverter.translateUnsigned(x, y);
81
+ const delta = this.coordinateConverter.translateSigned(x - this.fakeTouchFinger.x, y - this.fakeTouchFinger.y);
82
+ toStreamerHandlers.get('MouseMove')([coord.x, coord.y, delta.x, delta.y]);
83
+ this.fakeTouchFinger.x = x;
84
+ this.fakeTouchFinger.y = y;
85
+ break;
86
+ }
87
+ }
88
+ touchEvent.preventDefault();
89
+ }
90
+ }
91
+ exports.TouchControllerFake = TouchControllerFake;
92
92
  //# sourceMappingURL=TouchControllerFake.js.map
@@ -1,125 +1,125 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.XRGamepadController = void 0;
5
- const GamepadTypes_1 = require("./GamepadTypes");
6
- /**
7
- * The class that handles the functionality of XR gamepads and controllers.
8
- */
9
- class XRGamepadController {
10
- /**
11
- * @param toStreamerMessagesProvider - Stream message instance
12
- */
13
- constructor(toStreamerMessagesProvider) {
14
- this.toStreamerMessagesProvider = toStreamerMessagesProvider;
15
- this.controllers = [];
16
- }
17
- updateStatus(source, frame, refSpace) {
18
- if (source.gamepad) {
19
- const gamepadPose = frame.getPose(source.gripSpace, refSpace);
20
- if (!gamepadPose) {
21
- return;
22
- }
23
- let system = 0;
24
- if (source.profiles.includes('htc-vive')) {
25
- system = 1;
26
- }
27
- else if (source.profiles.includes('oculus-touch')) {
28
- system = 2;
29
- }
30
- // TODO (william.belcher): Add other profiles (Quest, Microsoft Mixed Reality, etc)
31
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRSystem')([system]);
32
- // Default: AnyHand (2)
33
- let handedness = 2;
34
- switch (source.handedness) {
35
- case 'left':
36
- handedness = 0;
37
- break;
38
- case 'right':
39
- handedness = 1;
40
- break;
41
- }
42
- // Send controller transform
43
- const matrix = gamepadPose.transform.matrix;
44
- const mat = [];
45
- for (let i = 0; i < 16; i++) {
46
- mat[i] = new Float32Array([matrix[i]])[0];
47
- }
48
- // prettier-ignore
49
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRControllerTransform')([
50
- mat[0], mat[4], mat[8], mat[12],
51
- mat[1], mat[5], mat[9], mat[13],
52
- mat[2], mat[6], mat[10], mat[14],
53
- mat[3], mat[7], mat[11], mat[15],
54
- handedness
55
- ]);
56
- // Handle controller buttons and axes
57
- if (this.controllers[handedness] === undefined) {
58
- this.controllers[handedness] = {
59
- prevState: undefined,
60
- currentState: undefined,
61
- id: undefined
62
- };
63
- this.controllers[handedness].prevState = (0, GamepadTypes_1.deepCopyGamepad)(source.gamepad);
64
- }
65
- this.controllers[handedness].currentState = (0, GamepadTypes_1.deepCopyGamepad)(source.gamepad);
66
- const controller = this.controllers[handedness];
67
- const currState = controller.currentState;
68
- const prevState = controller.prevState;
69
- // Iterate over buttons
70
- for (let i = 0; i < currState.buttons.length; i++) {
71
- const currButton = currState.buttons[i];
72
- const prevButton = prevState.buttons[i];
73
- if (currButton.pressed) {
74
- // press
75
- const isRepeat = prevButton.pressed ? 1 : 0;
76
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonPressed')([
77
- handedness,
78
- i,
79
- isRepeat,
80
- currButton.value
81
- ]);
82
- }
83
- else if (prevButton.pressed) {
84
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonReleased')([
85
- handedness,
86
- i,
87
- 0
88
- ]);
89
- }
90
- if (currButton.touched) {
91
- // touched
92
- const isRepeat = prevButton.touched ? 1 : 0;
93
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonTouched')([
94
- handedness,
95
- i,
96
- isRepeat
97
- ]);
98
- }
99
- else if (prevButton.touched) {
100
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonTouchReleased')([
101
- handedness,
102
- i,
103
- 0
104
- ]);
105
- }
106
- }
107
- // Iterate over gamepad axes
108
- for (let i = 0; i < currState.axes.length; i++) {
109
- const curAxisValue = currState.axes[i];
110
- const prevAxisValue = prevState.axes[i];
111
- // Only send axis update if there is a change
112
- if (curAxisValue != prevAxisValue) {
113
- this.toStreamerMessagesProvider.toStreamerHandlers.get('XRAnalog')([
114
- handedness,
115
- i,
116
- curAxisValue
117
- ]);
118
- }
119
- }
120
- this.controllers[handedness].prevState = currState;
121
- }
122
- }
123
- }
124
- exports.XRGamepadController = XRGamepadController;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.XRGamepadController = void 0;
5
+ const GamepadTypes_1 = require("./GamepadTypes");
6
+ /**
7
+ * The class that handles the functionality of XR gamepads and controllers.
8
+ */
9
+ class XRGamepadController {
10
+ /**
11
+ * @param toStreamerMessagesProvider - Stream message instance
12
+ */
13
+ constructor(toStreamerMessagesProvider) {
14
+ this.toStreamerMessagesProvider = toStreamerMessagesProvider;
15
+ this.controllers = [];
16
+ }
17
+ updateStatus(source, frame, refSpace) {
18
+ if (source.gamepad) {
19
+ const gamepadPose = frame.getPose(source.gripSpace, refSpace);
20
+ if (!gamepadPose) {
21
+ return;
22
+ }
23
+ let system = 0;
24
+ if (source.profiles.includes('htc-vive')) {
25
+ system = 1;
26
+ }
27
+ else if (source.profiles.includes('oculus-touch')) {
28
+ system = 2;
29
+ }
30
+ // TODO (william.belcher): Add other profiles (Quest, Microsoft Mixed Reality, etc)
31
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRSystem')([system]);
32
+ // Default: AnyHand (2)
33
+ let handedness = 2;
34
+ switch (source.handedness) {
35
+ case 'left':
36
+ handedness = 0;
37
+ break;
38
+ case 'right':
39
+ handedness = 1;
40
+ break;
41
+ }
42
+ // Send controller transform
43
+ const matrix = gamepadPose.transform.matrix;
44
+ const mat = [];
45
+ for (let i = 0; i < 16; i++) {
46
+ mat[i] = new Float32Array([matrix[i]])[0];
47
+ }
48
+ // prettier-ignore
49
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRControllerTransform')([
50
+ mat[0], mat[4], mat[8], mat[12],
51
+ mat[1], mat[5], mat[9], mat[13],
52
+ mat[2], mat[6], mat[10], mat[14],
53
+ mat[3], mat[7], mat[11], mat[15],
54
+ handedness
55
+ ]);
56
+ // Handle controller buttons and axes
57
+ if (this.controllers[handedness] === undefined) {
58
+ this.controllers[handedness] = {
59
+ prevState: undefined,
60
+ currentState: undefined,
61
+ id: undefined
62
+ };
63
+ this.controllers[handedness].prevState = (0, GamepadTypes_1.deepCopyGamepad)(source.gamepad);
64
+ }
65
+ this.controllers[handedness].currentState = (0, GamepadTypes_1.deepCopyGamepad)(source.gamepad);
66
+ const controller = this.controllers[handedness];
67
+ const currState = controller.currentState;
68
+ const prevState = controller.prevState;
69
+ // Iterate over buttons
70
+ for (let i = 0; i < currState.buttons.length; i++) {
71
+ const currButton = currState.buttons[i];
72
+ const prevButton = prevState.buttons[i];
73
+ if (currButton.pressed) {
74
+ // press
75
+ const isRepeat = prevButton.pressed ? 1 : 0;
76
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonPressed')([
77
+ handedness,
78
+ i,
79
+ isRepeat,
80
+ currButton.value
81
+ ]);
82
+ }
83
+ else if (prevButton.pressed) {
84
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonReleased')([
85
+ handedness,
86
+ i,
87
+ 0
88
+ ]);
89
+ }
90
+ if (currButton.touched) {
91
+ // touched
92
+ const isRepeat = prevButton.touched ? 1 : 0;
93
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonTouched')([
94
+ handedness,
95
+ i,
96
+ isRepeat
97
+ ]);
98
+ }
99
+ else if (prevButton.touched) {
100
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRButtonTouchReleased')([
101
+ handedness,
102
+ i,
103
+ 0
104
+ ]);
105
+ }
106
+ }
107
+ // Iterate over gamepad axes
108
+ for (let i = 0; i < currState.axes.length; i++) {
109
+ const curAxisValue = currState.axes[i];
110
+ const prevAxisValue = prevState.axes[i];
111
+ // Only send axis update if there is a change
112
+ if (curAxisValue != prevAxisValue) {
113
+ this.toStreamerMessagesProvider.toStreamerHandlers.get('XRAnalog')([
114
+ handedness,
115
+ i,
116
+ curAxisValue
117
+ ]);
118
+ }
119
+ }
120
+ this.controllers[handedness].prevState = currState;
121
+ }
122
+ }
123
+ }
124
+ exports.XRGamepadController = XRGamepadController;
125
125
  //# sourceMappingURL=XRGamepadController.js.map