@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.3.0 → 0.3.1

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 (169) 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/TouchControllerFake.js +91 -91
  29. package/dist/commonjs/Inputs/XRGamepadController.js +124 -124
  30. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +252 -252
  31. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +10 -10
  32. package/dist/commonjs/PeerConnectionController/CandidateStat.js +10 -10
  33. package/dist/commonjs/PeerConnectionController/CodecStats.js +10 -10
  34. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +10 -10
  35. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +22 -22
  36. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +10 -10
  37. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +16 -16
  38. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +584 -584
  39. package/dist/commonjs/PeerConnectionController/SessionStats.js +10 -10
  40. package/dist/commonjs/PeerConnectionController/StreamStats.js +10 -10
  41. package/dist/commonjs/PixelStreaming/PixelStreaming.js +607 -607
  42. package/dist/commonjs/UI/OnScreenKeyboard.js +82 -82
  43. package/dist/commonjs/UeInstanceMessage/ResponseController.js +38 -38
  44. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +120 -120
  45. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +210 -210
  46. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +49 -49
  47. package/dist/commonjs/Util/EventEmitter.js +386 -386
  48. package/dist/commonjs/Util/FileUtil.js +108 -108
  49. package/dist/commonjs/Util/IURLSearchParams.js +25 -25
  50. package/dist/commonjs/Util/InputCoordTranslator.js +49 -49
  51. package/dist/commonjs/Util/RTCUtils.js +40 -40
  52. package/dist/commonjs/VideoPlayer/StreamController.js +67 -67
  53. package/dist/commonjs/VideoPlayer/VideoPlayer.js +177 -177
  54. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1221 -1221
  55. package/dist/commonjs/WebXR/WebXRController.js +335 -335
  56. package/dist/commonjs/pixelstreamingfrontend.js +70 -70
  57. package/dist/esm/AFK/AFKController.js +105 -105
  58. package/dist/esm/Config/Config.js +551 -551
  59. package/dist/esm/Config/SettingBase.js +94 -94
  60. package/dist/esm/Config/SettingFlag.js +45 -45
  61. package/dist/esm/Config/SettingNumber.js +79 -79
  62. package/dist/esm/Config/SettingOption.js +80 -80
  63. package/dist/esm/Config/SettingText.js +38 -38
  64. package/dist/esm/DataChannel/DataChannelController.js +102 -102
  65. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +90 -90
  66. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +14 -14
  67. package/dist/esm/DataChannel/DataChannelSender.js +39 -39
  68. package/dist/esm/DataChannel/InitialSettings.js +34 -34
  69. package/dist/esm/DataChannel/LatencyTestResults.js +56 -56
  70. package/dist/esm/FreezeFrame/FreezeFrame.js +89 -89
  71. package/dist/esm/FreezeFrame/FreezeFrameController.js +91 -91
  72. package/dist/esm/Inputs/GamepadController.js +184 -184
  73. package/dist/esm/Inputs/GamepadTypes.js +17 -17
  74. package/dist/esm/Inputs/IInputController.js +1 -1
  75. package/dist/esm/Inputs/InputClassesFactory.js +91 -91
  76. package/dist/esm/Inputs/KeyCodes.js +109 -109
  77. package/dist/esm/Inputs/KeyboardController.js +133 -133
  78. package/dist/esm/Inputs/MouseButtons.js +23 -23
  79. package/dist/esm/Inputs/MouseController.js +93 -93
  80. package/dist/esm/Inputs/MouseControllerHovering.js +89 -89
  81. package/dist/esm/Inputs/MouseControllerLocked.js +149 -149
  82. package/dist/esm/Inputs/SpecialKeyCodes.js +15 -15
  83. package/dist/esm/Inputs/TouchController.js +119 -119
  84. package/dist/esm/Inputs/TouchControllerFake.js +87 -87
  85. package/dist/esm/Inputs/XRGamepadController.js +120 -120
  86. package/dist/esm/PeerConnectionController/AggregatedStats.js +248 -248
  87. package/dist/esm/PeerConnectionController/CandidatePairStats.js +6 -6
  88. package/dist/esm/PeerConnectionController/CandidateStat.js +6 -6
  89. package/dist/esm/PeerConnectionController/CodecStats.js +6 -6
  90. package/dist/esm/PeerConnectionController/DataChannelStats.js +6 -6
  91. package/dist/esm/PeerConnectionController/InboundRTPStats.js +16 -16
  92. package/dist/esm/PeerConnectionController/InboundTrackStats.js +6 -6
  93. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +11 -11
  94. package/dist/esm/PeerConnectionController/PeerConnectionController.js +580 -580
  95. package/dist/esm/PeerConnectionController/SessionStats.js +6 -6
  96. package/dist/esm/PeerConnectionController/StreamStats.js +6 -6
  97. package/dist/esm/PixelStreaming/PixelStreaming.js +603 -603
  98. package/dist/esm/UI/OnScreenKeyboard.js +78 -78
  99. package/dist/esm/UeInstanceMessage/ResponseController.js +34 -34
  100. package/dist/esm/UeInstanceMessage/SendMessageController.js +116 -116
  101. package/dist/esm/UeInstanceMessage/StreamMessageController.js +205 -205
  102. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +45 -45
  103. package/dist/esm/Util/EventEmitter.js +345 -345
  104. package/dist/esm/Util/FileUtil.js +103 -103
  105. package/dist/esm/Util/IURLSearchParams.js +21 -21
  106. package/dist/esm/Util/InputCoordTranslator.js +45 -45
  107. package/dist/esm/Util/RTCUtils.js +36 -36
  108. package/dist/esm/VideoPlayer/StreamController.js +63 -63
  109. package/dist/esm/VideoPlayer/VideoPlayer.js +173 -173
  110. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1217 -1217
  111. package/dist/esm/WebXR/WebXRController.js +331 -331
  112. package/dist/esm/pixelstreamingfrontend.js +24 -24
  113. package/dist/types/AFK/AFKController.d.ts +38 -38
  114. package/dist/types/Config/Config.d.ts +220 -220
  115. package/dist/types/Config/SettingBase.d.ts +43 -43
  116. package/dist/types/Config/SettingFlag.d.ts +24 -24
  117. package/dist/types/Config/SettingNumber.d.ts +41 -41
  118. package/dist/types/Config/SettingOption.d.ts +41 -41
  119. package/dist/types/Config/SettingText.d.ts +21 -21
  120. package/dist/types/DataChannel/DataChannelController.d.ts +59 -59
  121. package/dist/types/DataChannel/DataChannelLatencyTestController.d.ts +25 -25
  122. package/dist/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  123. package/dist/types/DataChannel/DataChannelSender.d.ts +21 -21
  124. package/dist/types/DataChannel/InitialSettings.d.ts +44 -44
  125. package/dist/types/DataChannel/LatencyTestResults.d.ts +31 -31
  126. package/dist/types/FreezeFrame/FreezeFrame.d.ts +36 -36
  127. package/dist/types/FreezeFrame/FreezeFrameController.d.ts +37 -37
  128. package/dist/types/Inputs/GamepadController.d.ts +61 -61
  129. package/dist/types/Inputs/GamepadTypes.d.ts +15 -15
  130. package/dist/types/Inputs/IInputController.d.ts +16 -16
  131. package/dist/types/Inputs/InputClassesFactory.d.ts +53 -53
  132. package/dist/types/Inputs/KeyCodes.d.ts +5 -5
  133. package/dist/types/Inputs/KeyboardController.d.ts +34 -34
  134. package/dist/types/Inputs/MouseButtons.d.ts +22 -22
  135. package/dist/types/Inputs/MouseController.d.ts +40 -40
  136. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -26
  137. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -31
  138. package/dist/types/Inputs/SpecialKeyCodes.d.ts +14 -14
  139. package/dist/types/Inputs/TouchController.d.ts +28 -28
  140. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -29
  141. package/dist/types/Inputs/XRGamepadController.d.ts +15 -15
  142. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +82 -82
  143. package/dist/types/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  144. package/dist/types/PeerConnectionController/CandidateStat.d.ts +13 -13
  145. package/dist/types/PeerConnectionController/CodecStats.d.ts +14 -14
  146. package/dist/types/PeerConnectionController/DataChannelStats.d.ts +15 -15
  147. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  148. package/dist/types/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  149. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  150. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  151. package/dist/types/PeerConnectionController/SessionStats.d.ts +8 -8
  152. package/dist/types/PeerConnectionController/StreamStats.d.ts +9 -9
  153. package/dist/types/PixelStreaming/PixelStreaming.d.ts +271 -271
  154. package/dist/types/UI/OnScreenKeyboard.d.ts +30 -30
  155. package/dist/types/UeInstanceMessage/ResponseController.d.ts +19 -19
  156. package/dist/types/UeInstanceMessage/SendMessageController.d.ts +18 -18
  157. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  158. package/dist/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  159. package/dist/types/Util/EventEmitter.d.ts +429 -429
  160. package/dist/types/Util/FileUtil.d.ts +32 -32
  161. package/dist/types/Util/IURLSearchParams.d.ts +9 -9
  162. package/dist/types/Util/InputCoordTranslator.d.ts +29 -29
  163. package/dist/types/Util/RTCUtils.d.ts +8 -8
  164. package/dist/types/VideoPlayer/StreamController.d.ts +22 -22
  165. package/dist/types/VideoPlayer/VideoPlayer.d.ts +78 -78
  166. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  167. package/dist/types/WebXR/WebXRController.d.ts +42 -42
  168. package/dist/types/pixelstreamingfrontend.d.ts +23 -23
  169. package/package.json +45 -45
@@ -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