@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.4.4 → 0.4.6

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.
@@ -72,7 +72,7 @@ class GamepadController {
72
72
  window.removeEventListener('webkitgamepadconnected', this.onGamepadConnectedListener);
73
73
  window.removeEventListener('webkitgamepaddisconnected', this.onGamepadDisconnectedListener);
74
74
  for (const controller of this.controllers) {
75
- if (controller.id !== undefined) {
75
+ if (controller && controller.id !== undefined) {
76
76
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
77
77
  }
78
78
  }
@@ -80,7 +80,7 @@ class GamepadController {
80
80
  }
81
81
  onGamepadResponseReceived(gamepadId) {
82
82
  for (const controller of this.controllers) {
83
- if (controller.id === undefined) {
83
+ if (controller && controller.id === undefined) {
84
84
  controller.id = gamepadId;
85
85
  break;
86
86
  }
@@ -102,7 +102,11 @@ class GamepadController {
102
102
  const deletedController = this.controllers[gamepad.index];
103
103
  delete this.controllers[gamepad.index];
104
104
  this.controllers = this.controllers.filter((controller) => controller !== undefined);
105
- this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([deletedController.id]);
105
+ if (deletedController.id !== undefined) {
106
+ this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([
107
+ deletedController.id
108
+ ]);
109
+ }
106
110
  }
107
111
  scanGamepads() {
108
112
  const gamepads = navigator.getGamepads
@@ -111,7 +115,7 @@ class GamepadController {
111
115
  ? navigator.webkitGetGamepads()
112
116
  : [];
113
117
  for (let i = 0; i < gamepads.length; i++) {
114
- if (gamepads[i] && gamepads[i].index in this.controllers) {
118
+ if (gamepads[i] && this.controllers[gamepads[i].index] !== undefined) {
115
119
  this.controllers[gamepads[i].index].currentState = gamepads[i];
116
120
  }
117
121
  }
@@ -121,8 +125,11 @@ class GamepadController {
121
125
  const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
122
126
  // Iterate over multiple controllers in the case the multiple gamepads are connected
123
127
  for (const controller of this.controllers) {
128
+ if (!controller) {
129
+ continue;
130
+ }
124
131
  // If we haven't received an id (possible if using an older version of UE), return to original functionality
125
- const controllerIndex = controller.id === undefined ? this.controllers.indexOf(controller) : controller.id;
132
+ const controllerId = controller.id === undefined ? this.controllers.indexOf(controller) : controller.id;
126
133
  const currentState = controller.currentState;
127
134
  for (let i = 0; i < controller.currentState.buttons.length; i++) {
128
135
  const currentButton = controller.currentState.buttons[i];
@@ -131,15 +138,15 @@ class GamepadController {
131
138
  // press
132
139
  if (i == GamepadLayout.LeftTrigger) {
133
140
  // UEs left analog has a button index of 5
134
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, currentButton.value]);
141
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, currentButton.value]);
135
142
  }
136
143
  else if (i == GamepadLayout.RightTrigger) {
137
144
  // UEs right analog has a button index of 6
138
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, currentButton.value]);
145
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, currentButton.value]);
139
146
  }
140
147
  else {
141
148
  toStreamerHandlers.get('GamepadButtonPressed')([
142
- controllerIndex,
149
+ controllerId,
143
150
  i,
144
151
  previousButton.pressed ? 1 : 0
145
152
  ]);
@@ -149,14 +156,14 @@ class GamepadController {
149
156
  // release
150
157
  if (i == GamepadLayout.LeftTrigger) {
151
158
  // UEs left analog has a button index of 5
152
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, 0]);
159
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, 0]);
153
160
  }
154
161
  else if (i == GamepadLayout.RightTrigger) {
155
162
  // UEs right analog has a button index of 6
156
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, 0]);
163
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, 0]);
157
164
  }
158
165
  else {
159
- toStreamerHandlers.get('GamepadButtonReleased')([controllerIndex, i, 0]);
166
+ toStreamerHandlers.get('GamepadButtonReleased')([controllerId, i, 0]);
160
167
  }
161
168
  }
162
169
  }
@@ -168,9 +175,10 @@ class GamepadController {
168
175
  // https://w3c.github.io/gamepad/#remapping Gamepad browser side standard mapping has positive down, negative up. This is downright disgusting. So we fix it.
169
176
  const y = -parseFloat(currentState.axes[i + 1].toFixed(4));
170
177
  // UE's analog axes follow the same order as the browsers, but start at index 1 so we will offset as such
171
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 1, x]); // Horizontal axes, only offset by 1
172
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
178
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 1, x]); // Horizontal axes, only offset by 1
179
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
173
180
  }
181
+ const controllerIndex = this.controllers.indexOf(controller);
174
182
  this.controllers[controllerIndex].prevState = (0, GamepadTypes_1.deepCopyGamepad)(currentState);
175
183
  }
176
184
  if (this.controllers.length > 0) {
@@ -181,6 +189,9 @@ class GamepadController {
181
189
  // When a user navigates away from the page, we need to inform UE of all the disconnecting
182
190
  // controllers
183
191
  for (const controller of this.controllers) {
192
+ if (!controller || controller.id === undefined) {
193
+ continue;
194
+ }
184
195
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
185
196
  }
186
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadController.js","sourceRoot":"","sources":["../../../src/Inputs/GamepadController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GamepadController.js","sourceRoot":"","sources":["../../../src/Inputs/GamepadController.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ class FileUtil {
18
18
  file.extension = '';
19
19
  file.receiving = true;
20
20
  file.valid = false;
21
- file.size = 0;
21
+ file.chunks = 0;
22
22
  file.data = [];
23
23
  file.timestampStart = new Date().getTime();
24
24
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
@@ -38,7 +38,7 @@ class FileUtil {
38
38
  file.extension = '';
39
39
  file.receiving = true;
40
40
  file.valid = false;
41
- file.size = 0;
41
+ file.chunks = 0;
42
42
  file.data = [];
43
43
  file.timestampStart = new Date().getTime();
44
44
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
@@ -55,21 +55,25 @@ class FileUtil {
55
55
  // If we haven't received the initial setup instructions, return
56
56
  if (!file.receiving)
57
57
  return;
58
- // Extract the total size of the file (across all chunks)
59
- file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
60
- 16379 /* The maximum number of payload bits per message*/);
58
+ const typeSize = 1;
59
+ const intSize = 4;
60
+ const maxMessageSize = 16 * 1024;
61
+ const headerSize = typeSize + intSize;
62
+ const maxPayloadSize = maxMessageSize - headerSize;
63
+ // Calculate total number of chunks from the total file size
64
+ file.chunks = Math.ceil(new DataView(view.slice(typeSize, headerSize).buffer).getInt32(0, true) / maxPayloadSize);
61
65
  // Get the file part of the payload
62
- const fileBytes = view.slice(1 + 4);
66
+ const fileBytes = view.slice(headerSize);
63
67
  // Append to existing data that holds the file
64
68
  file.data.push(fileBytes);
65
69
  // Uncomment for debug
66
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
67
- if (file.data.length === file.size) {
70
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.chunks}`);
71
+ if (file.data.length === file.chunks) {
68
72
  file.receiving = false;
69
73
  file.valid = true;
70
74
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received complete file');
71
75
  const transferDuration = new Date().getTime() - file.timestampStart;
72
- const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
76
+ const transferBitrate = Math.round((file.chunks * maxMessageSize) / transferDuration);
73
77
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
74
78
  // File reconstruction
75
79
  /**
@@ -85,9 +89,9 @@ class FileUtil {
85
89
  // if you are so inclined to make it auto-download, do something like: a.click();
86
90
  a.remove();
87
91
  }
88
- else if (file.data.length > file.size) {
92
+ else if (file.data.length > file.chunks) {
89
93
  file.receiving = false;
90
- lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
94
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.chunks}`);
91
95
  }
92
96
  }
93
97
  }
@@ -100,7 +104,7 @@ class FileTemplate {
100
104
  this.mimetype = '';
101
105
  this.extension = '';
102
106
  this.receiving = false;
103
- this.size = 0;
107
+ this.chunks = 0;
104
108
  this.data = [];
105
109
  this.valid = false;
106
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"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"}
@@ -72,7 +72,7 @@ class GamepadController {
72
72
  window.removeEventListener('webkitgamepadconnected', this.onGamepadConnectedListener);
73
73
  window.removeEventListener('webkitgamepaddisconnected', this.onGamepadDisconnectedListener);
74
74
  for (const controller of this.controllers) {
75
- if (controller.id !== undefined) {
75
+ if (controller && controller.id !== undefined) {
76
76
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
77
77
  }
78
78
  }
@@ -80,7 +80,7 @@ class GamepadController {
80
80
  }
81
81
  onGamepadResponseReceived(gamepadId) {
82
82
  for (const controller of this.controllers) {
83
- if (controller.id === undefined) {
83
+ if (controller && controller.id === undefined) {
84
84
  controller.id = gamepadId;
85
85
  break;
86
86
  }
@@ -102,7 +102,11 @@ class GamepadController {
102
102
  const deletedController = this.controllers[gamepad.index];
103
103
  delete this.controllers[gamepad.index];
104
104
  this.controllers = this.controllers.filter((controller) => controller !== undefined);
105
- this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([deletedController.id]);
105
+ if (deletedController.id !== undefined) {
106
+ this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([
107
+ deletedController.id
108
+ ]);
109
+ }
106
110
  }
107
111
  scanGamepads() {
108
112
  const gamepads = navigator.getGamepads
@@ -111,7 +115,7 @@ class GamepadController {
111
115
  ? navigator.webkitGetGamepads()
112
116
  : [];
113
117
  for (let i = 0; i < gamepads.length; i++) {
114
- if (gamepads[i] && gamepads[i].index in this.controllers) {
118
+ if (gamepads[i] && this.controllers[gamepads[i].index] !== undefined) {
115
119
  this.controllers[gamepads[i].index].currentState = gamepads[i];
116
120
  }
117
121
  }
@@ -121,8 +125,11 @@ class GamepadController {
121
125
  const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
122
126
  // Iterate over multiple controllers in the case the multiple gamepads are connected
123
127
  for (const controller of this.controllers) {
128
+ if (!controller) {
129
+ continue;
130
+ }
124
131
  // If we haven't received an id (possible if using an older version of UE), return to original functionality
125
- const controllerIndex = controller.id === undefined ? this.controllers.indexOf(controller) : controller.id;
132
+ const controllerId = controller.id === undefined ? this.controllers.indexOf(controller) : controller.id;
126
133
  const currentState = controller.currentState;
127
134
  for (let i = 0; i < controller.currentState.buttons.length; i++) {
128
135
  const currentButton = controller.currentState.buttons[i];
@@ -131,15 +138,15 @@ class GamepadController {
131
138
  // press
132
139
  if (i == GamepadLayout.LeftTrigger) {
133
140
  // UEs left analog has a button index of 5
134
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, currentButton.value]);
141
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, currentButton.value]);
135
142
  }
136
143
  else if (i == GamepadLayout.RightTrigger) {
137
144
  // UEs right analog has a button index of 6
138
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, currentButton.value]);
145
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, currentButton.value]);
139
146
  }
140
147
  else {
141
148
  toStreamerHandlers.get('GamepadButtonPressed')([
142
- controllerIndex,
149
+ controllerId,
143
150
  i,
144
151
  previousButton.pressed ? 1 : 0
145
152
  ]);
@@ -149,14 +156,14 @@ class GamepadController {
149
156
  // release
150
157
  if (i == GamepadLayout.LeftTrigger) {
151
158
  // UEs left analog has a button index of 5
152
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, 0]);
159
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, 0]);
153
160
  }
154
161
  else if (i == GamepadLayout.RightTrigger) {
155
162
  // UEs right analog has a button index of 6
156
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, 0]);
163
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, 0]);
157
164
  }
158
165
  else {
159
- toStreamerHandlers.get('GamepadButtonReleased')([controllerIndex, i, 0]);
166
+ toStreamerHandlers.get('GamepadButtonReleased')([controllerId, i, 0]);
160
167
  }
161
168
  }
162
169
  }
@@ -168,9 +175,10 @@ class GamepadController {
168
175
  // https://w3c.github.io/gamepad/#remapping Gamepad browser side standard mapping has positive down, negative up. This is downright disgusting. So we fix it.
169
176
  const y = -parseFloat(currentState.axes[i + 1].toFixed(4));
170
177
  // UE's analog axes follow the same order as the browsers, but start at index 1 so we will offset as such
171
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 1, x]); // Horizontal axes, only offset by 1
172
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
178
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 1, x]); // Horizontal axes, only offset by 1
179
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
173
180
  }
181
+ const controllerIndex = this.controllers.indexOf(controller);
174
182
  this.controllers[controllerIndex].prevState = (0, GamepadTypes_1.deepCopyGamepad)(currentState);
175
183
  }
176
184
  if (this.controllers.length > 0) {
@@ -181,6 +189,9 @@ class GamepadController {
181
189
  // When a user navigates away from the page, we need to inform UE of all the disconnecting
182
190
  // controllers
183
191
  for (const controller of this.controllers) {
192
+ if (!controller || controller.id === undefined) {
193
+ continue;
194
+ }
184
195
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
185
196
  }
186
197
  }
@@ -1 +1 @@
1
- {"version":3,"file":"GamepadController.js","sourceRoot":"","sources":["../../../src/Inputs/GamepadController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GamepadController.js","sourceRoot":"","sources":["../../../src/Inputs/GamepadController.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ class FileUtil {
18
18
  file.extension = '';
19
19
  file.receiving = true;
20
20
  file.valid = false;
21
- file.size = 0;
21
+ file.chunks = 0;
22
22
  file.data = [];
23
23
  file.timestampStart = new Date().getTime();
24
24
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
@@ -38,7 +38,7 @@ class FileUtil {
38
38
  file.extension = '';
39
39
  file.receiving = true;
40
40
  file.valid = false;
41
- file.size = 0;
41
+ file.chunks = 0;
42
42
  file.data = [];
43
43
  file.timestampStart = new Date().getTime();
44
44
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received first chunk of file');
@@ -55,21 +55,25 @@ class FileUtil {
55
55
  // If we haven't received the initial setup instructions, return
56
56
  if (!file.receiving)
57
57
  return;
58
- // Extract the total size of the file (across all chunks)
59
- file.size = Math.ceil(new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
60
- 16379 /* The maximum number of payload bits per message*/);
58
+ const typeSize = 1;
59
+ const intSize = 4;
60
+ const maxMessageSize = 16 * 1024;
61
+ const headerSize = typeSize + intSize;
62
+ const maxPayloadSize = maxMessageSize - headerSize;
63
+ // Calculate total number of chunks from the total file size
64
+ file.chunks = Math.ceil(new DataView(view.slice(typeSize, headerSize).buffer).getInt32(0, true) / maxPayloadSize);
61
65
  // Get the file part of the payload
62
- const fileBytes = view.slice(1 + 4);
66
+ const fileBytes = view.slice(headerSize);
63
67
  // Append to existing data that holds the file
64
68
  file.data.push(fileBytes);
65
69
  // Uncomment for debug
66
- lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
67
- if (file.data.length === file.size) {
70
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Received file chunk: ${file.data.length}/${file.chunks}`);
71
+ if (file.data.length === file.chunks) {
68
72
  file.receiving = false;
69
73
  file.valid = true;
70
74
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info('Received complete file');
71
75
  const transferDuration = new Date().getTime() - file.timestampStart;
72
- const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
76
+ const transferBitrate = Math.round((file.chunks * maxMessageSize) / transferDuration);
73
77
  lib_pixelstreamingcommon_ue5_5_1.Logger.Info(`Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`);
74
78
  // File reconstruction
75
79
  /**
@@ -85,9 +89,9 @@ class FileUtil {
85
89
  // if you are so inclined to make it auto-download, do something like: a.click();
86
90
  a.remove();
87
91
  }
88
- else if (file.data.length > file.size) {
92
+ else if (file.data.length > file.chunks) {
89
93
  file.receiving = false;
90
- lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
94
+ lib_pixelstreamingcommon_ue5_5_1.Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.chunks}`);
91
95
  }
92
96
  }
93
97
  }
@@ -100,7 +104,7 @@ class FileTemplate {
100
104
  this.mimetype = '';
101
105
  this.extension = '';
102
106
  this.receiving = false;
103
- this.size = 0;
107
+ this.chunks = 0;
104
108
  this.data = [];
105
109
  this.valid = false;
106
110
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileUtil.js","sourceRoot":"","sources":["../../../src/Util/FileUtil.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { FlagsIds, NumericParametersIds, OptionParametersIds, TextParametersIds } from '../Config/Config';
2
2
  import { LatencyTestResults } from '../DataChannel/LatencyTestResults';
3
3
  import { AggregatedStats } from '../PeerConnectionController/AggregatedStats';
4
- import { InitialSettings } from '../pixelstreamingfrontend';
4
+ import { InitialSettings } from '../DataChannel/InitialSettings';
5
5
  import { Messages } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
6
6
  import { SettingFlag } from '../Config/SettingFlag';
7
7
  import { SettingNumber } from '../Config/SettingNumber';
@@ -25,7 +25,7 @@ export declare class FileTemplate {
25
25
  mimetype: string;
26
26
  extension: string;
27
27
  receiving: boolean;
28
- size: number;
28
+ chunks: number;
29
29
  data: Array<Uint8Array>;
30
30
  valid: boolean;
31
31
  timestampStart: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epicgames-ps/lib-pixelstreamingfrontend-ue5.5",
3
- "version": "0.4.4",
3
+ "version": "0.4.6",
4
4
  "description": "Frontend library for Unreal Engine 5.5 Pixel Streaming",
5
5
  "main": "dist/commonjs/pixelstreamingfrontend.js",
6
6
  "module": "dist/esm/pixelstreamingfrontend.js",
@@ -29,7 +29,7 @@
29
29
  "typescript": "^5.0.0"
30
30
  },
31
31
  "dependencies": {
32
- "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.1.4",
32
+ "@epicgames-ps/lib-pixelstreamingcommon-ue5.5": "^0.1.5",
33
33
  "@types/webxr": "^0.5.1",
34
34
  "sdp": "^3.1.0"
35
35
  },
@@ -100,7 +100,7 @@ export class GamepadController implements IInputController {
100
100
  window.removeEventListener('webkitgamepadconnected', this.onGamepadConnectedListener);
101
101
  window.removeEventListener('webkitgamepaddisconnected', this.onGamepadDisconnectedListener);
102
102
  for (const controller of this.controllers) {
103
- if (controller.id !== undefined) {
103
+ if (controller && controller.id !== undefined) {
104
104
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
105
105
  }
106
106
  }
@@ -109,7 +109,7 @@ export class GamepadController implements IInputController {
109
109
 
110
110
  onGamepadResponseReceived(gamepadId: number) {
111
111
  for (const controller of this.controllers) {
112
- if (controller.id === undefined) {
112
+ if (controller && controller.id === undefined) {
113
113
  controller.id = gamepadId;
114
114
  break;
115
115
  }
@@ -134,7 +134,11 @@ export class GamepadController implements IInputController {
134
134
  const deletedController = this.controllers[gamepad.index];
135
135
  delete this.controllers[gamepad.index];
136
136
  this.controllers = this.controllers.filter((controller) => controller !== undefined);
137
- this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([deletedController.id]);
137
+ if (deletedController.id !== undefined) {
138
+ this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([
139
+ deletedController.id
140
+ ]);
141
+ }
138
142
  }
139
143
 
140
144
  private scanGamepads() {
@@ -144,7 +148,7 @@ export class GamepadController implements IInputController {
144
148
  ? navigator.webkitGetGamepads()
145
149
  : [];
146
150
  for (let i = 0; i < gamepads.length; i++) {
147
- if (gamepads[i] && gamepads[i].index in this.controllers) {
151
+ if (gamepads[i] && this.controllers[gamepads[i].index] !== undefined) {
148
152
  this.controllers[gamepads[i].index].currentState = gamepads[i];
149
153
  }
150
154
  }
@@ -156,8 +160,11 @@ export class GamepadController implements IInputController {
156
160
 
157
161
  // Iterate over multiple controllers in the case the multiple gamepads are connected
158
162
  for (const controller of this.controllers) {
163
+ if (!controller) {
164
+ continue;
165
+ }
159
166
  // If we haven't received an id (possible if using an older version of UE), return to original functionality
160
- const controllerIndex =
167
+ const controllerId =
161
168
  controller.id === undefined ? this.controllers.indexOf(controller) : controller.id;
162
169
  const currentState = controller.currentState;
163
170
  for (let i = 0; i < controller.currentState.buttons.length; i++) {
@@ -167,13 +174,13 @@ export class GamepadController implements IInputController {
167
174
  // press
168
175
  if (i == GamepadLayout.LeftTrigger) {
169
176
  // UEs left analog has a button index of 5
170
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, currentButton.value]);
177
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, currentButton.value]);
171
178
  } else if (i == GamepadLayout.RightTrigger) {
172
179
  // UEs right analog has a button index of 6
173
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, currentButton.value]);
180
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, currentButton.value]);
174
181
  } else {
175
182
  toStreamerHandlers.get('GamepadButtonPressed')([
176
- controllerIndex,
183
+ controllerId,
177
184
  i,
178
185
  previousButton.pressed ? 1 : 0
179
186
  ]);
@@ -182,12 +189,12 @@ export class GamepadController implements IInputController {
182
189
  // release
183
190
  if (i == GamepadLayout.LeftTrigger) {
184
191
  // UEs left analog has a button index of 5
185
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 5, 0]);
192
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 5, 0]);
186
193
  } else if (i == GamepadLayout.RightTrigger) {
187
194
  // UEs right analog has a button index of 6
188
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, 6, 0]);
195
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, 6, 0]);
189
196
  } else {
190
- toStreamerHandlers.get('GamepadButtonReleased')([controllerIndex, i, 0]);
197
+ toStreamerHandlers.get('GamepadButtonReleased')([controllerId, i, 0]);
191
198
  }
192
199
  }
193
200
  }
@@ -201,9 +208,11 @@ export class GamepadController implements IInputController {
201
208
  const y = -parseFloat(currentState.axes[i + 1].toFixed(4));
202
209
 
203
210
  // UE's analog axes follow the same order as the browsers, but start at index 1 so we will offset as such
204
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 1, x]); // Horizontal axes, only offset by 1
205
- toStreamerHandlers.get('GamepadAnalog')([controllerIndex, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
211
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 1, x]); // Horizontal axes, only offset by 1
212
+ toStreamerHandlers.get('GamepadAnalog')([controllerId, i + 2, y]); // Vertical axes, offset by two (1 to match UEs axes convention and then another 1 for the vertical axes)
206
213
  }
214
+
215
+ const controllerIndex = this.controllers.indexOf(controller);
207
216
  this.controllers[controllerIndex].prevState = deepCopyGamepad(currentState);
208
217
  }
209
218
  if (this.controllers.length > 0) {
@@ -215,6 +224,9 @@ export class GamepadController implements IInputController {
215
224
  // When a user navigates away from the page, we need to inform UE of all the disconnecting
216
225
  // controllers
217
226
  for (const controller of this.controllers) {
227
+ if (!controller || controller.id === undefined) {
228
+ continue;
229
+ }
218
230
  this.streamMessageController.toStreamerHandlers.get('GamepadDisconnected')([controller.id]);
219
231
  }
220
232
  }
@@ -1,7 +1,7 @@
1
1
  import { FlagsIds, NumericParametersIds, OptionParametersIds, TextParametersIds } from '../Config/Config';
2
2
  import { LatencyTestResults } from '../DataChannel/LatencyTestResults';
3
3
  import { AggregatedStats } from '../PeerConnectionController/AggregatedStats';
4
- import { InitialSettings } from '../pixelstreamingfrontend';
4
+ import { InitialSettings } from '../DataChannel/InitialSettings';
5
5
  import { Messages } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
6
6
  import { SettingFlag } from '../Config/SettingFlag';
7
7
  import { SettingNumber } from '../Config/SettingNumber';
@@ -17,7 +17,7 @@ export class FileUtil {
17
17
  file.extension = '';
18
18
  file.receiving = true;
19
19
  file.valid = false;
20
- file.size = 0;
20
+ file.chunks = 0;
21
21
  file.data = [];
22
22
  file.timestampStart = new Date().getTime();
23
23
  Logger.Info('Received first chunk of file');
@@ -39,7 +39,7 @@ export class FileUtil {
39
39
  file.extension = '';
40
40
  file.receiving = true;
41
41
  file.valid = false;
42
- file.size = 0;
42
+ file.chunks = 0;
43
43
  file.data = [];
44
44
  file.timestampStart = new Date().getTime();
45
45
  Logger.Info('Received first chunk of file');
@@ -58,27 +58,32 @@ export class FileUtil {
58
58
  // If we haven't received the initial setup instructions, return
59
59
  if (!file.receiving) return;
60
60
 
61
- // Extract the total size of the file (across all chunks)
62
- file.size = Math.ceil(
63
- new DataView(view.slice(1, 5).buffer).getInt32(0, true) /
64
- 16379 /* The maximum number of payload bits per message*/
61
+ const typeSize = 1;
62
+ const intSize = 4;
63
+ const maxMessageSize = 16 * 1024;
64
+ const headerSize = typeSize + intSize;
65
+ const maxPayloadSize = maxMessageSize - headerSize;
66
+
67
+ // Calculate total number of chunks from the total file size
68
+ file.chunks = Math.ceil(
69
+ new DataView(view.slice(typeSize, headerSize).buffer).getInt32(0, true) / maxPayloadSize
65
70
  );
66
71
 
67
72
  // Get the file part of the payload
68
- const fileBytes = view.slice(1 + 4);
73
+ const fileBytes = view.slice(headerSize);
69
74
 
70
75
  // Append to existing data that holds the file
71
76
  file.data.push(fileBytes);
72
77
 
73
78
  // Uncomment for debug
74
- Logger.Info(`Received file chunk: ${file.data.length}/${file.size}`);
79
+ Logger.Info(`Received file chunk: ${file.data.length}/${file.chunks}`);
75
80
 
76
- if (file.data.length === file.size) {
81
+ if (file.data.length === file.chunks) {
77
82
  file.receiving = false;
78
83
  file.valid = true;
79
84
  Logger.Info('Received complete file');
80
85
  const transferDuration = new Date().getTime() - file.timestampStart;
81
- const transferBitrate = Math.round((file.size * 16 * 1024) / transferDuration);
86
+ const transferBitrate = Math.round((file.chunks * maxMessageSize) / transferDuration);
82
87
  Logger.Info(
83
88
  `Average transfer bitrate: ${transferBitrate}kb/s over ${transferDuration / 1000} seconds`
84
89
  );
@@ -96,9 +101,9 @@ export class FileUtil {
96
101
  document.body.append(a);
97
102
  // if you are so inclined to make it auto-download, do something like: a.click();
98
103
  a.remove();
99
- } else if (file.data.length > file.size) {
104
+ } else if (file.data.length > file.chunks) {
100
105
  file.receiving = false;
101
- Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.size}`);
106
+ Logger.Error(`Received bigger file than advertised: ${file.data.length}/${file.chunks}`);
102
107
  }
103
108
  }
104
109
  }
@@ -110,7 +115,7 @@ export class FileTemplate {
110
115
  mimetype = '';
111
116
  extension = '';
112
117
  receiving = false;
113
- size = 0;
118
+ chunks = 0;
114
119
  data: Array<Uint8Array> = [];
115
120
  valid = false;
116
121
  timestampStart: number;