@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,83 +1,83 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.OnScreenKeyboard = void 0;
5
- /**
6
- * Class for handling on screen keyboard usage
7
- */
8
- class OnScreenKeyboard {
9
- /**
10
- *
11
- * @param videoElementParent The div element the video player is injected into
12
- */
13
- constructor(videoElementParent) {
14
- this.editTextButton = null;
15
- this.hiddenInput = null;
16
- if ('ontouchstart' in document.documentElement) {
17
- this.createOnScreenKeyboardHelpers(videoElementParent);
18
- }
19
- }
20
- /**
21
- * An override for unquantizeAndDenormalizeUnsigned
22
- * @param x the x axis point
23
- * @param y the y axis point
24
- * @returns unquantizeAndDenormalizeUnsigned object
25
- */
26
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
- unquantizeAndDenormalizeUnsigned(x, y) {
28
- return null;
29
- }
30
- /**
31
- * Creates on screen keyboard helpers
32
- * @param videoElementParent The div element the video player i injected into
33
- */
34
- createOnScreenKeyboardHelpers(videoElementParent) {
35
- if (!this.hiddenInput) {
36
- this.hiddenInput = document.createElement('input');
37
- this.hiddenInput.id = 'hiddenInput';
38
- this.hiddenInput.maxLength = 0;
39
- // Set inline style so that users not using the UI library
40
- // will still have this element display correctly
41
- this.hiddenInput.style.position = 'absolute';
42
- this.hiddenInput.style.left = '-10%';
43
- this.hiddenInput.style.width = '0px';
44
- this.hiddenInput.style.opacity = '0';
45
- videoElementParent.appendChild(this.hiddenInput);
46
- }
47
- if (!this.editTextButton) {
48
- this.editTextButton = document.createElement('button');
49
- this.editTextButton.id = 'editTextButton';
50
- this.editTextButton.innerHTML = 'edit text';
51
- videoElementParent.appendChild(this.editTextButton);
52
- // Hide the 'edit text' button.
53
- this.editTextButton.style.display = 'none';
54
- this.editTextButton.addEventListener('touchend', (event) => {
55
- // Show the on-screen keyboard.
56
- this.hiddenInput.focus();
57
- event.preventDefault();
58
- });
59
- }
60
- }
61
- /**
62
- * Shows the on screen keyboard
63
- * @param command the command received via the data channel containing keyboard positions
64
- */
65
- showOnScreenKeyboard(command) {
66
- if (command.showOnScreenKeyboard) {
67
- // Show the 'edit text' button.
68
- this.editTextButton.style.display = 'default';
69
- // Place the 'edit text' button near the UE input widget.
70
- const pos = this.unquantizeAndDenormalizeUnsigned(command.x, command.y);
71
- this.editTextButton.style.top = pos.y.toString() + 'px';
72
- this.editTextButton.style.left = (pos.x - 40).toString() + 'px';
73
- }
74
- else {
75
- // Hide the 'edit text' button.
76
- this.editTextButton.style.display = 'none';
77
- // Hide the on-screen keyboard.
78
- this.hiddenInput.blur();
79
- }
80
- }
81
- }
82
- exports.OnScreenKeyboard = OnScreenKeyboard;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.OnScreenKeyboard = void 0;
5
+ /**
6
+ * Class for handling on screen keyboard usage
7
+ */
8
+ class OnScreenKeyboard {
9
+ /**
10
+ *
11
+ * @param videoElementParent The div element the video player is injected into
12
+ */
13
+ constructor(videoElementParent) {
14
+ this.editTextButton = null;
15
+ this.hiddenInput = null;
16
+ if ('ontouchstart' in document.documentElement) {
17
+ this.createOnScreenKeyboardHelpers(videoElementParent);
18
+ }
19
+ }
20
+ /**
21
+ * An override for unquantizeAndDenormalizeUnsigned
22
+ * @param x the x axis point
23
+ * @param y the y axis point
24
+ * @returns unquantizeAndDenormalizeUnsigned object
25
+ */
26
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
27
+ unquantizeAndDenormalizeUnsigned(x, y) {
28
+ return null;
29
+ }
30
+ /**
31
+ * Creates on screen keyboard helpers
32
+ * @param videoElementParent The div element the video player i injected into
33
+ */
34
+ createOnScreenKeyboardHelpers(videoElementParent) {
35
+ if (!this.hiddenInput) {
36
+ this.hiddenInput = document.createElement('input');
37
+ this.hiddenInput.id = 'hiddenInput';
38
+ this.hiddenInput.maxLength = 0;
39
+ // Set inline style so that users not using the UI library
40
+ // will still have this element display correctly
41
+ this.hiddenInput.style.position = 'absolute';
42
+ this.hiddenInput.style.left = '-10%';
43
+ this.hiddenInput.style.width = '0px';
44
+ this.hiddenInput.style.opacity = '0';
45
+ videoElementParent.appendChild(this.hiddenInput);
46
+ }
47
+ if (!this.editTextButton) {
48
+ this.editTextButton = document.createElement('button');
49
+ this.editTextButton.id = 'editTextButton';
50
+ this.editTextButton.innerHTML = 'edit text';
51
+ videoElementParent.appendChild(this.editTextButton);
52
+ // Hide the 'edit text' button.
53
+ this.editTextButton.style.display = 'none';
54
+ this.editTextButton.addEventListener('touchend', (event) => {
55
+ // Show the on-screen keyboard.
56
+ this.hiddenInput.focus();
57
+ event.preventDefault();
58
+ });
59
+ }
60
+ }
61
+ /**
62
+ * Shows the on screen keyboard
63
+ * @param command the command received via the data channel containing keyboard positions
64
+ */
65
+ showOnScreenKeyboard(command) {
66
+ if (command.showOnScreenKeyboard) {
67
+ // Show the 'edit text' button.
68
+ this.editTextButton.style.display = 'default';
69
+ // Place the 'edit text' button near the UE input widget.
70
+ const pos = this.unquantizeAndDenormalizeUnsigned(command.x, command.y);
71
+ this.editTextButton.style.top = pos.y.toString() + 'px';
72
+ this.editTextButton.style.left = (pos.x - 40).toString() + 'px';
73
+ }
74
+ else {
75
+ // Hide the 'edit text' button.
76
+ this.editTextButton.style.display = 'none';
77
+ // Hide the on-screen keyboard.
78
+ this.hiddenInput.blur();
79
+ }
80
+ }
81
+ }
82
+ exports.OnScreenKeyboard = OnScreenKeyboard;
83
83
  //# sourceMappingURL=OnScreenKeyboard.js.map
@@ -1,39 +1,39 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.ResponseController = void 0;
5
- const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
- class ResponseController {
7
- constructor() {
8
- this.responseEventListeners = new Map();
9
- }
10
- /**
11
- * Add a response event listener to the response map
12
- * @param name - The name of the response
13
- * @param listener - The method to be activated when the response is selected
14
- */
15
- addResponseEventListener(name, listener) {
16
- this.responseEventListeners.set(name, listener);
17
- }
18
- /**
19
- * Remove a response event listener to the response map
20
- * @param name - The name of the response
21
- */
22
- removeResponseEventListener(name) {
23
- this.responseEventListeners.delete(name);
24
- }
25
- /**
26
- * Handle a response when receiving one form the streamer
27
- * @param message - Data received from the data channel with the command in question
28
- */
29
- onResponse(message) {
30
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info('DataChannelReceiveMessageType.Response');
31
- const responses = new TextDecoder('utf-16').decode(message.slice(1));
32
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(responses);
33
- this.responseEventListeners.forEach((listener) => {
34
- listener(responses);
35
- });
36
- }
37
- }
38
- exports.ResponseController = ResponseController;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ResponseController = void 0;
5
+ const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
+ class ResponseController {
7
+ constructor() {
8
+ this.responseEventListeners = new Map();
9
+ }
10
+ /**
11
+ * Add a response event listener to the response map
12
+ * @param name - The name of the response
13
+ * @param listener - The method to be activated when the response is selected
14
+ */
15
+ addResponseEventListener(name, listener) {
16
+ this.responseEventListeners.set(name, listener);
17
+ }
18
+ /**
19
+ * Remove a response event listener to the response map
20
+ * @param name - The name of the response
21
+ */
22
+ removeResponseEventListener(name) {
23
+ this.responseEventListeners.delete(name);
24
+ }
25
+ /**
26
+ * Handle a response when receiving one form the streamer
27
+ * @param message - Data received from the data channel with the command in question
28
+ */
29
+ onResponse(message) {
30
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info('DataChannelReceiveMessageType.Response');
31
+ const responses = new TextDecoder('utf-16').decode(message.slice(1));
32
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(responses);
33
+ this.responseEventListeners.forEach((listener) => {
34
+ listener(responses);
35
+ });
36
+ }
37
+ }
38
+ exports.ResponseController = ResponseController;
39
39
  //# sourceMappingURL=ResponseController.js.map
@@ -1,121 +1,121 @@
1
- "use strict";
2
- // Copyright Epic Games, Inc. All Rights Reserved.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.SendMessageController = void 0;
5
- const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
- class SendMessageController {
7
- /**
8
- * @param dataChannelSender - Data channel instance
9
- * @param toStreamerMessagesMapProvider - Stream Messages instance
10
- */
11
- constructor(dataChannelSender, toStreamerMessagesMapProvider) {
12
- this.dataChannelSender = dataChannelSender;
13
- this.toStreamerMessagesMapProvider = toStreamerMessagesMapProvider;
14
- }
15
- /**
16
- * Send a message to the streamer through the data channel
17
- * @param messageType - the type of message we are sending
18
- * @param messageData - the message data we are sending over the data channel
19
- * @returns - nil
20
- */
21
- sendMessageToStreamer(messageType, messageData) {
22
- if (messageData === undefined) {
23
- messageData = [];
24
- }
25
- const toStreamerMessages = this.toStreamerMessagesMapProvider.toStreamerMessages;
26
- const messageFormat = toStreamerMessages.get(messageType);
27
- if (messageFormat === undefined) {
28
- lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Attempted to send a message to the streamer with message type: ${messageType}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);
29
- return;
30
- }
31
- if (messageFormat.structure && messageData && messageFormat.structure.length !== messageData.length) {
32
- lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Provided message data doesn't match expected layout. Expected [ ${messageFormat.structure
33
- .map((element) => {
34
- switch (element) {
35
- case 'uint8':
36
- case 'uint16':
37
- case 'int16':
38
- case 'float':
39
- case 'double':
40
- return 'number';
41
- case 'string':
42
- return 'string';
43
- }
44
- })
45
- .toString()} ] but received [ ${messageData.map((element) => typeof element).toString()} ]`);
46
- return;
47
- }
48
- let byteLength = 0;
49
- const textEncoder = new TextEncoder();
50
- // One loop to calculate the length in bytes of all of the provided data
51
- messageData.forEach((element, idx) => {
52
- const type = messageFormat.structure[idx];
53
- switch (type) {
54
- case 'uint8':
55
- byteLength += 1;
56
- break;
57
- case 'uint16':
58
- byteLength += 2;
59
- break;
60
- case 'int16':
61
- byteLength += 2;
62
- break;
63
- case 'float':
64
- byteLength += 4;
65
- break;
66
- case 'double':
67
- byteLength += 8;
68
- break;
69
- case 'string':
70
- // 2 bytes for string length
71
- byteLength += 2;
72
- // 2 bytes per characters
73
- byteLength += 2 * textEncoder.encode(element).length;
74
- break;
75
- }
76
- });
77
- const data = new DataView(new ArrayBuffer(byteLength + 1));
78
- data.setUint8(0, messageFormat.id);
79
- let byteOffset = 1;
80
- messageData.forEach((element, idx) => {
81
- const type = messageFormat.structure[idx];
82
- switch (type) {
83
- case 'uint8':
84
- data.setUint8(byteOffset, element);
85
- byteOffset += 1;
86
- break;
87
- case 'uint16':
88
- data.setUint16(byteOffset, element, true);
89
- byteOffset += 2;
90
- break;
91
- case 'int16':
92
- data.setInt16(byteOffset, element, true);
93
- byteOffset += 2;
94
- break;
95
- case 'float':
96
- data.setFloat32(byteOffset, element, true);
97
- byteOffset += 4;
98
- break;
99
- case 'double':
100
- data.setFloat64(byteOffset, element, true);
101
- byteOffset += 8;
102
- break;
103
- case 'string':
104
- data.setUint16(byteOffset, element.length, true);
105
- byteOffset += 2;
106
- for (let i = 0; i < element.length; i++) {
107
- data.setUint16(byteOffset, element.charCodeAt(i), true);
108
- byteOffset += 2;
109
- }
110
- break;
111
- }
112
- });
113
- if (!this.dataChannelSender.canSend()) {
114
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Data channel cannot send yet, skipping sending message: ${messageType} - ${new Uint8Array(data.buffer)}`);
115
- return;
116
- }
117
- this.dataChannelSender.sendData(data.buffer);
118
- }
119
- }
120
- exports.SendMessageController = SendMessageController;
1
+ "use strict";
2
+ // Copyright Epic Games, Inc. All Rights Reserved.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SendMessageController = void 0;
5
+ const lib_pixelstreamingcommon_ue5_5_1 = require("@epicgames-ps/lib-pixelstreamingcommon-ue5.5");
6
+ class SendMessageController {
7
+ /**
8
+ * @param dataChannelSender - Data channel instance
9
+ * @param toStreamerMessagesMapProvider - Stream Messages instance
10
+ */
11
+ constructor(dataChannelSender, toStreamerMessagesMapProvider) {
12
+ this.dataChannelSender = dataChannelSender;
13
+ this.toStreamerMessagesMapProvider = toStreamerMessagesMapProvider;
14
+ }
15
+ /**
16
+ * Send a message to the streamer through the data channel
17
+ * @param messageType - the type of message we are sending
18
+ * @param messageData - the message data we are sending over the data channel
19
+ * @returns - nil
20
+ */
21
+ sendMessageToStreamer(messageType, messageData) {
22
+ if (messageData === undefined) {
23
+ messageData = [];
24
+ }
25
+ const toStreamerMessages = this.toStreamerMessagesMapProvider.toStreamerMessages;
26
+ const messageFormat = toStreamerMessages.get(messageType);
27
+ if (messageFormat === undefined) {
28
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Attempted to send a message to the streamer with message type: ${messageType}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);
29
+ return;
30
+ }
31
+ if (messageFormat.structure && messageData && messageFormat.structure.length !== messageData.length) {
32
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Provided message data doesn't match expected layout. Expected [ ${messageFormat.structure
33
+ .map((element) => {
34
+ switch (element) {
35
+ case 'uint8':
36
+ case 'uint16':
37
+ case 'int16':
38
+ case 'float':
39
+ case 'double':
40
+ return 'number';
41
+ case 'string':
42
+ return 'string';
43
+ }
44
+ })
45
+ .toString()} ] but received [ ${messageData.map((element) => typeof element).toString()} ]`);
46
+ return;
47
+ }
48
+ let byteLength = 0;
49
+ const textEncoder = new TextEncoder();
50
+ // One loop to calculate the length in bytes of all of the provided data
51
+ messageData.forEach((element, idx) => {
52
+ const type = messageFormat.structure[idx];
53
+ switch (type) {
54
+ case 'uint8':
55
+ byteLength += 1;
56
+ break;
57
+ case 'uint16':
58
+ byteLength += 2;
59
+ break;
60
+ case 'int16':
61
+ byteLength += 2;
62
+ break;
63
+ case 'float':
64
+ byteLength += 4;
65
+ break;
66
+ case 'double':
67
+ byteLength += 8;
68
+ break;
69
+ case 'string':
70
+ // 2 bytes for string length
71
+ byteLength += 2;
72
+ // 2 bytes per characters
73
+ byteLength += 2 * textEncoder.encode(element).length;
74
+ break;
75
+ }
76
+ });
77
+ const data = new DataView(new ArrayBuffer(byteLength + 1));
78
+ data.setUint8(0, messageFormat.id);
79
+ let byteOffset = 1;
80
+ messageData.forEach((element, idx) => {
81
+ const type = messageFormat.structure[idx];
82
+ switch (type) {
83
+ case 'uint8':
84
+ data.setUint8(byteOffset, element);
85
+ byteOffset += 1;
86
+ break;
87
+ case 'uint16':
88
+ data.setUint16(byteOffset, element, true);
89
+ byteOffset += 2;
90
+ break;
91
+ case 'int16':
92
+ data.setInt16(byteOffset, element, true);
93
+ byteOffset += 2;
94
+ break;
95
+ case 'float':
96
+ data.setFloat32(byteOffset, element, true);
97
+ byteOffset += 4;
98
+ break;
99
+ case 'double':
100
+ data.setFloat64(byteOffset, element, true);
101
+ byteOffset += 8;
102
+ break;
103
+ case 'string':
104
+ data.setUint16(byteOffset, element.length, true);
105
+ byteOffset += 2;
106
+ for (let i = 0; i < element.length; i++) {
107
+ data.setUint16(byteOffset, element.charCodeAt(i), true);
108
+ byteOffset += 2;
109
+ }
110
+ break;
111
+ }
112
+ });
113
+ if (!this.dataChannelSender.canSend()) {
114
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Data channel cannot send yet, skipping sending message: ${messageType} - ${new Uint8Array(data.buffer)}`);
115
+ return;
116
+ }
117
+ this.dataChannelSender.sendData(data.buffer);
118
+ }
119
+ }
120
+ exports.SendMessageController = SendMessageController;
121
121
  //# sourceMappingURL=SendMessageController.js.map