@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.1.3 → 0.2.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 (94) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.prettierrc.json +1 -0
  3. package/dist/lib-pixelstreamingfrontend.esm.js +1 -1
  4. package/dist/lib-pixelstreamingfrontend.js +1 -1
  5. package/package.json +6 -5
  6. package/src/AFK/AFKController.ts +10 -32
  7. package/src/Config/Config.ts +179 -201
  8. package/src/Config/SettingBase.ts +61 -2
  9. package/src/Config/SettingFlag.ts +10 -48
  10. package/src/Config/SettingNumber.ts +10 -28
  11. package/src/Config/SettingOption.ts +13 -46
  12. package/src/Config/SettingText.ts +9 -37
  13. package/src/DataChannel/DataChannelController.ts +6 -26
  14. package/src/DataChannel/DataChannelLatencyTestController.ts +38 -33
  15. package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
  16. package/src/DataChannel/DataChannelSender.ts +5 -15
  17. package/src/DataChannel/LatencyTestResults.ts +5 -15
  18. package/src/FreezeFrame/FreezeFrame.ts +7 -19
  19. package/src/FreezeFrame/FreezeFrameController.ts +3 -14
  20. package/src/Inputs/GamepadController.ts +123 -221
  21. package/src/Inputs/GamepadTypes.ts +23 -0
  22. package/src/Inputs/IInputController.ts +17 -0
  23. package/src/Inputs/InputClassesFactory.ts +38 -45
  24. package/src/Inputs/KeyCodes.ts +114 -0
  25. package/src/Inputs/KeyboardController.ts +49 -232
  26. package/src/Inputs/MouseController.ts +71 -297
  27. package/src/Inputs/MouseControllerHovering.ts +118 -0
  28. package/src/Inputs/MouseControllerLocked.ts +194 -0
  29. package/src/Inputs/TouchController.ts +49 -105
  30. package/src/Inputs/TouchControllerFake.ts +132 -0
  31. package/src/Inputs/XRGamepadController.ts +35 -44
  32. package/src/PeerConnectionController/AggregatedStats.ts +26 -54
  33. package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
  34. package/src/PeerConnectionController/CandidateStat.ts +1 -1
  35. package/src/PeerConnectionController/PeerConnectionController.ts +217 -164
  36. package/src/PixelStreaming/PixelStreaming.ts +174 -226
  37. package/src/UI/OnScreenKeyboard.ts +14 -9
  38. package/src/UeInstanceMessage/ResponseController.ts +6 -15
  39. package/src/UeInstanceMessage/SendMessageController.ts +16 -18
  40. package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
  41. package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
  42. package/src/Util/EventEmitter.ts +17 -22
  43. package/src/Util/FileUtil.ts +11 -34
  44. package/src/Util/IURLSearchParams.ts +25 -0
  45. package/src/Util/InputCoordTranslator.ts +73 -0
  46. package/src/Util/RTCUtils.ts +23 -15
  47. package/src/VideoPlayer/StreamController.ts +6 -23
  48. package/src/VideoPlayer/VideoPlayer.ts +9 -30
  49. package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
  50. package/src/WebXR/WebXRController.ts +82 -94
  51. package/src/pixelstreamingfrontend.ts +6 -10
  52. package/types/AFK/AFKController.d.ts +0 -1
  53. package/types/Config/Config.d.ts +6 -5
  54. package/types/Config/SettingBase.d.ts +13 -0
  55. package/types/Config/SettingFlag.d.ts +1 -10
  56. package/types/Config/SettingNumber.d.ts +1 -5
  57. package/types/Config/SettingOption.d.ts +1 -10
  58. package/types/Config/SettingText.d.ts +1 -9
  59. package/types/DataChannel/DataChannelLatencyTestController.d.ts +1 -1
  60. package/types/Inputs/GamepadController.d.ts +22 -46
  61. package/types/Inputs/GamepadTypes.d.ts +7 -0
  62. package/types/Inputs/IInputController.d.ts +16 -0
  63. package/types/Inputs/InputClassesFactory.d.ts +7 -8
  64. package/types/Inputs/KeyCodes.d.ts +5 -0
  65. package/types/Inputs/KeyboardController.d.ts +17 -45
  66. package/types/Inputs/MouseController.d.ts +33 -68
  67. package/types/Inputs/MouseControllerHovering.d.ts +26 -0
  68. package/types/Inputs/MouseControllerLocked.d.ts +31 -0
  69. package/types/Inputs/TouchController.d.ts +19 -44
  70. package/types/Inputs/TouchControllerFake.d.ts +29 -0
  71. package/types/Inputs/XRGamepadController.d.ts +0 -7
  72. package/types/PeerConnectionController/PeerConnectionController.d.ts +10 -1
  73. package/types/PixelStreaming/PixelStreaming.d.ts +14 -2
  74. package/types/UI/OnScreenKeyboard.d.ts +2 -2
  75. package/types/Util/EventEmitter.d.ts +1 -1
  76. package/types/Util/IURLSearchParams.d.ts +9 -0
  77. package/types/Util/InputCoordTranslator.d.ts +29 -0
  78. package/types/VideoPlayer/StreamController.d.ts +0 -2
  79. package/types/WebRtcPlayer/WebRtcPlayerController.d.ts +19 -17
  80. package/types/pixelstreamingfrontend.d.ts +1 -1
  81. package/src/Inputs/FakeTouchController.ts +0 -199
  82. package/src/Inputs/HoveringMouseEvents.ts +0 -192
  83. package/src/Inputs/IMouseEvents.ts +0 -64
  84. package/src/Inputs/ITouchController.ts +0 -29
  85. package/src/Inputs/LockedMouseEvents.ts +0 -287
  86. package/src/Util/CoordinateConverter.ts +0 -290
  87. package/src/Util/EventListenerTracker.ts +0 -29
  88. package/types/Inputs/FakeTouchController.d.ts +0 -61
  89. package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
  90. package/types/Inputs/IMouseEvents.d.ts +0 -53
  91. package/types/Inputs/ITouchController.d.ts +0 -24
  92. package/types/Inputs/LockedMouseEvents.d.ts +0 -80
  93. package/types/Util/CoordinateConverter.d.ts +0 -100
  94. package/types/Util/EventListenerTracker.d.ts +0 -14
@@ -1,6 +1,5 @@
1
1
  // Copyright Epic Games, Inc. All Rights Reserved.
2
2
 
3
- import { MouseController } from '../Inputs/MouseController';
4
3
  import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
5
4
  import { VideoPlayer } from './VideoPlayer';
6
5
 
@@ -10,7 +9,6 @@ import { VideoPlayer } from './VideoPlayer';
10
9
  export class StreamController {
11
10
  videoElementProvider: VideoPlayer;
12
11
  audioElement: HTMLAudioElement;
13
- mouseController: MouseController;
14
12
 
15
13
  /**
16
14
  * @param videoElementProvider Video Player instance
@@ -26,11 +24,7 @@ export class StreamController {
26
24
  * @param rtcTrackEvent - RTC Track Event
27
25
  */
28
26
  handleOnTrack(rtcTrackEvent: RTCTrackEvent) {
29
- Logger.Log(
30
- Logger.GetStackTrace(),
31
- 'handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams),
32
- 6
33
- );
27
+ Logger.Info('handleOnTrack ' + JSON.stringify(rtcTrackEvent.streams));
34
28
  // Do not add the track if the ID is `probator` as this is special track created by mediasoup for bitrate probing.
35
29
  // Refer to https://github.com/EpicGamesExt/PixelStreamingInfrastructure/pull/86 for more details.
36
30
  if (rtcTrackEvent.streams.length < 1 || rtcTrackEvent.streams[0].id == 'probator') {
@@ -40,15 +34,13 @@ export class StreamController {
40
34
  const videoElement = this.videoElementProvider.getVideoElement();
41
35
 
42
36
  if (rtcTrackEvent.track) {
43
- Logger.Log(
44
- Logger.GetStackTrace(),
37
+ Logger.Info(
45
38
  'Got track - ' +
46
39
  rtcTrackEvent.track.kind +
47
40
  ' id=' +
48
41
  rtcTrackEvent.track.id +
49
42
  ' readyState=' +
50
- rtcTrackEvent.track.readyState,
51
- 6
43
+ rtcTrackEvent.track.readyState
52
44
  );
53
45
  }
54
46
 
@@ -60,10 +52,7 @@ export class StreamController {
60
52
  videoElement.srcObject !== rtcTrackEvent.streams[0]
61
53
  ) {
62
54
  videoElement.srcObject = rtcTrackEvent.streams[0];
63
- Logger.Log(
64
- Logger.GetStackTrace(),
65
- 'Set video source from video track ontrack.'
66
- );
55
+ Logger.Info('Set video source from video track ontrack.');
67
56
  return;
68
57
  }
69
58
  }
@@ -80,16 +69,10 @@ export class StreamController {
80
69
  return;
81
70
  }
82
71
  // video element has some other media stream that is not associated with this audio track
83
- else if (
84
- videoElement.srcObject &&
85
- videoElement.srcObject !== audioMediaStream
86
- ) {
72
+ else if (videoElement.srcObject && videoElement.srcObject !== audioMediaStream) {
87
73
  // create a new audio element
88
74
  this.audioElement.srcObject = audioMediaStream;
89
- Logger.Log(
90
- Logger.GetStackTrace(),
91
- 'Created new audio element to play separate audio stream.'
92
- );
75
+ Logger.Info('Created new audio element to play separate audio stream.');
93
76
  }
94
77
  }
95
78
  }
@@ -43,9 +43,7 @@ export class VideoPlayer {
43
43
  videoElementParent.appendChild(this.videoElement);
44
44
 
45
45
  this.onResizePlayerCallback = () => {
46
- console.log(
47
- 'Resolution changed, restyling player, did you forget to override this function?'
48
- );
46
+ console.log('Resolution changed, restyling player, did you forget to override this function?');
49
47
  };
50
48
  this.onMatchViewportResolutionCallback = () => {
51
49
  console.log(
@@ -69,12 +67,10 @@ export class VideoPlayer {
69
67
 
70
68
  // set resize events to the windows if it is resized or its orientation is changed
71
69
  window.addEventListener('resize', () => this.resizePlayerStyle(), true);
72
- window.addEventListener('orientationchange', () =>
73
- this.onOrientationChange()
74
- );
70
+ window.addEventListener('orientationchange', () => this.onOrientationChange());
75
71
  }
76
72
 
77
- public setAudioElement(audioElement: HTMLAudioElement) : void {
73
+ public setAudioElement(audioElement: HTMLAudioElement): void {
78
74
  this.audioElement = audioElement;
79
75
  }
80
76
 
@@ -83,12 +79,8 @@ export class VideoPlayer {
83
79
  * @returns A promise for if playing the video was successful or not.
84
80
  */
85
81
  play(): Promise<void> {
86
- this.videoElement.muted = this.config.isFlagEnabled(
87
- Flags.StartVideoMuted
88
- );
89
- this.videoElement.autoplay = this.config.isFlagEnabled(
90
- Flags.AutoPlayVideo
91
- );
82
+ this.videoElement.muted = this.config.isFlagEnabled(Flags.StartVideoMuted);
83
+ this.videoElement.autoplay = this.config.isFlagEnabled(Flags.AutoPlayVideo);
92
84
  return this.videoElement.play();
93
85
  }
94
86
 
@@ -103,20 +95,14 @@ export class VideoPlayer {
103
95
  * @returns - whether the video element is playing.
104
96
  */
105
97
  isVideoReady(): boolean {
106
- return (
107
- this.videoElement.readyState !== undefined &&
108
- this.videoElement.readyState > 0
109
- );
98
+ return this.videoElement.readyState !== undefined && this.videoElement.readyState > 0;
110
99
  }
111
100
 
112
101
  /**
113
102
  * @returns True if the video element has a valid video source (srcObject).
114
103
  */
115
104
  hasVideoSource(): boolean {
116
- return (
117
- this.videoElement.srcObject !== undefined &&
118
- this.videoElement.srcObject !== null
119
- );
105
+ return this.videoElement.srcObject !== undefined && this.videoElement.srcObject !== null;
120
106
  }
121
107
 
122
108
  /**
@@ -231,16 +217,9 @@ export class VideoPlayer {
231
217
 
232
218
  this.lastTimeResized = new Date().getTime();
233
219
  } else {
234
- Logger.Log(
235
- Logger.GetStackTrace(),
236
- 'Resizing too often - skipping',
237
- 6
238
- );
220
+ Logger.Info('Resizing too often - skipping');
239
221
  clearTimeout(this.resizeTimeoutHandle);
240
- this.resizeTimeoutHandle = window.setTimeout(
241
- () => this.updateVideoStreamSize(),
242
- 100
243
- );
222
+ this.resizeTimeoutHandle = window.setTimeout(() => this.updateVideoStreamSize(), 100);
244
223
  }
245
224
  }
246
225
  }