@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.0.5

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 (138) hide show
  1. package/.cspell.json +48 -0
  2. package/.eslintignore +8 -0
  3. package/.eslintrc.js +8 -0
  4. package/.prettierignore +0 -0
  5. package/.prettierrc.json +6 -0
  6. package/dist/lib-pixelstreamingfrontend.esm.js +1 -0
  7. package/dist/lib-pixelstreamingfrontend.js +1 -0
  8. package/jest.config.js +18 -0
  9. package/package.json +48 -0
  10. package/readme.md +15 -0
  11. package/src/AFK/AFKController.test.ts +162 -0
  12. package/src/AFK/AFKController.ts +158 -0
  13. package/src/Config/Config.test.ts +222 -0
  14. package/src/Config/Config.ts +970 -0
  15. package/src/Config/SettingBase.ts +65 -0
  16. package/src/Config/SettingFlag.ts +99 -0
  17. package/src/Config/SettingNumber.ts +111 -0
  18. package/src/Config/SettingOption.ts +124 -0
  19. package/src/Config/SettingText.ts +82 -0
  20. package/src/DataChannel/DataChannelController.ts +138 -0
  21. package/src/DataChannel/DataChannelLatencyTestController.ts +129 -0
  22. package/src/DataChannel/DataChannelLatencyTestResults.ts +67 -0
  23. package/src/DataChannel/DataChannelSender.ts +59 -0
  24. package/src/DataChannel/InitialSettings.ts +61 -0
  25. package/src/DataChannel/LatencyTestResults.ts +76 -0
  26. package/src/FreezeFrame/FreezeFrame.ts +114 -0
  27. package/src/FreezeFrame/FreezeFrameController.ts +114 -0
  28. package/src/Inputs/FakeTouchController.ts +199 -0
  29. package/src/Inputs/GamepadController.ts +314 -0
  30. package/src/Inputs/GamepadTypes.ts +10 -0
  31. package/src/Inputs/HoveringMouseEvents.ts +192 -0
  32. package/src/Inputs/IMouseEvents.ts +64 -0
  33. package/src/Inputs/ITouchController.ts +29 -0
  34. package/src/Inputs/InputClassesFactory.ts +140 -0
  35. package/src/Inputs/KeyboardController.ts +354 -0
  36. package/src/Inputs/LockedMouseEvents.ts +287 -0
  37. package/src/Inputs/MouseButtons.ts +25 -0
  38. package/src/Inputs/MouseController.ts +362 -0
  39. package/src/Inputs/SpecialKeyCodes.ts +16 -0
  40. package/src/Inputs/TouchController.ts +208 -0
  41. package/src/Inputs/XRGamepadController.ts +126 -0
  42. package/src/PeerConnectionController/AggregatedStats.ts +311 -0
  43. package/src/PeerConnectionController/CandidatePairStats.ts +17 -0
  44. package/src/PeerConnectionController/CandidateStat.ts +13 -0
  45. package/src/PeerConnectionController/CodecStats.ts +19 -0
  46. package/src/PeerConnectionController/DataChannelStats.ts +17 -0
  47. package/src/PeerConnectionController/InboundRTPStats.ts +154 -0
  48. package/src/PeerConnectionController/InboundTrackStats.ts +34 -0
  49. package/src/PeerConnectionController/OutBoundRTPStats.ts +26 -0
  50. package/src/PeerConnectionController/PeerConnectionController.ts +563 -0
  51. package/src/PeerConnectionController/SessionStats.ts +10 -0
  52. package/src/PeerConnectionController/StreamStats.ts +11 -0
  53. package/src/PixelStreaming/PixelStreaming.test.ts +626 -0
  54. package/src/PixelStreaming/PixelStreaming.ts +851 -0
  55. package/src/UI/OnScreenKeyboard.ts +97 -0
  56. package/src/UeInstanceMessage/ResponseController.ts +47 -0
  57. package/src/UeInstanceMessage/SendMessageController.ts +154 -0
  58. package/src/UeInstanceMessage/StreamMessageController.ts +233 -0
  59. package/src/UeInstanceMessage/ToStreamerMessagesController.ts +62 -0
  60. package/src/Util/CoordinateConverter.ts +289 -0
  61. package/src/Util/EventEmitter.ts +611 -0
  62. package/src/Util/EventListenerTracker.ts +29 -0
  63. package/src/Util/FileUtil.ts +140 -0
  64. package/src/Util/RTCUtils.ts +41 -0
  65. package/src/Util/WebGLUtils.ts +49 -0
  66. package/src/Util/WebXRUtils.ts +25 -0
  67. package/src/VideoPlayer/StreamController.ts +89 -0
  68. package/src/VideoPlayer/VideoPlayer.ts +246 -0
  69. package/src/WebRtcPlayer/WebRtcPlayerController.ts +2158 -0
  70. package/src/WebXR/WebXRController.ts +319 -0
  71. package/src/__test__/mockMediaStream.ts +124 -0
  72. package/src/__test__/mockRTCPeerConnection.ts +347 -0
  73. package/src/__test__/mockRTCRtpReceiver.ts +22 -0
  74. package/src/__test__/mockWebSocket.ts +136 -0
  75. package/src/pixelstreamingfrontend.ts +46 -0
  76. package/tsconfig.jest.json +8 -0
  77. package/tsconfig.json +24 -0
  78. package/types/AFK/AFKController.d.ts +39 -0
  79. package/types/Config/Config.d.ts +218 -0
  80. package/types/Config/SettingBase.d.ts +30 -0
  81. package/types/Config/SettingFlag.d.ts +33 -0
  82. package/types/Config/SettingNumber.d.ts +45 -0
  83. package/types/Config/SettingOption.d.ts +43 -0
  84. package/types/Config/SettingText.d.ts +29 -0
  85. package/types/DataChannel/DataChannelController.d.ts +59 -0
  86. package/types/DataChannel/DataChannelLatencyTestController.d.ts +26 -0
  87. package/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -0
  88. package/types/DataChannel/DataChannelSender.d.ts +21 -0
  89. package/types/DataChannel/InitialSettings.d.ts +44 -0
  90. package/types/DataChannel/LatencyTestResults.d.ts +31 -0
  91. package/types/FreezeFrame/FreezeFrame.d.ts +36 -0
  92. package/types/FreezeFrame/FreezeFrameController.d.ts +37 -0
  93. package/types/Inputs/FakeTouchController.d.ts +61 -0
  94. package/types/Inputs/GamepadController.d.ts +85 -0
  95. package/types/Inputs/GamepadTypes.d.ts +8 -0
  96. package/types/Inputs/HoveringMouseEvents.d.ts +56 -0
  97. package/types/Inputs/IMouseEvents.d.ts +53 -0
  98. package/types/Inputs/ITouchController.d.ts +24 -0
  99. package/types/Inputs/InputClassesFactory.d.ts +54 -0
  100. package/types/Inputs/KeyboardController.d.ts +62 -0
  101. package/types/Inputs/LockedMouseEvents.d.ts +80 -0
  102. package/types/Inputs/MouseButtons.d.ts +22 -0
  103. package/types/Inputs/MouseController.d.ts +75 -0
  104. package/types/Inputs/SpecialKeyCodes.d.ts +14 -0
  105. package/types/Inputs/TouchController.d.ts +53 -0
  106. package/types/Inputs/XRGamepadController.d.ts +15 -0
  107. package/types/PeerConnectionController/AggregatedStats.d.ts +77 -0
  108. package/types/PeerConnectionController/CandidatePairStats.d.ts +15 -0
  109. package/types/PeerConnectionController/CandidateStat.d.ts +11 -0
  110. package/types/PeerConnectionController/CodecStats.d.ts +14 -0
  111. package/types/PeerConnectionController/DataChannelStats.d.ts +15 -0
  112. package/types/PeerConnectionController/InboundRTPStats.d.ts +141 -0
  113. package/types/PeerConnectionController/InboundTrackStats.d.ts +32 -0
  114. package/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -0
  115. package/types/PeerConnectionController/PeerConnectionController.d.ts +132 -0
  116. package/types/PeerConnectionController/SessionStats.d.ts +8 -0
  117. package/types/PeerConnectionController/StreamStats.d.ts +9 -0
  118. package/types/PixelStreaming/PixelStreaming.d.ts +259 -0
  119. package/types/UI/OnScreenKeyboard.d.ts +31 -0
  120. package/types/UeInstanceMessage/ResponseController.d.ts +19 -0
  121. package/types/UeInstanceMessage/SendMessageController.d.ts +18 -0
  122. package/types/UeInstanceMessage/StreamMessageController.d.ts +29 -0
  123. package/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -0
  124. package/types/Util/CoordinateConverter.d.ts +100 -0
  125. package/types/Util/EventEmitter.d.ts +422 -0
  126. package/types/Util/EventListenerTracker.d.ts +14 -0
  127. package/types/Util/FileUtil.d.ts +32 -0
  128. package/types/Util/RTCUtils.d.ts +8 -0
  129. package/types/Util/WebGLUtils.d.ts +4 -0
  130. package/types/Util/WebXRUtils.d.ts +9 -0
  131. package/types/VideoPlayer/StreamController.d.ts +24 -0
  132. package/types/VideoPlayer/VideoPlayer.d.ts +78 -0
  133. package/types/WebRtcPlayer/WebRtcPlayerController.d.ts +377 -0
  134. package/types/WebXR/WebXRController.d.ts +26 -0
  135. package/types/pixelstreamingfrontend.d.ts +22 -0
  136. package/webpack.common.js +35 -0
  137. package/webpack.dev.js +35 -0
  138. package/webpack.prod.js +36 -0
@@ -0,0 +1,37 @@
1
+ import { FreezeFrame } from './FreezeFrame';
2
+ /**
3
+ * A class for controlling freeze frame functionality
4
+ */
5
+ export declare class FreezeFrameController {
6
+ freezeFrame: FreezeFrame;
7
+ receiving: boolean;
8
+ size: number;
9
+ jpeg: Uint8Array;
10
+ valid: boolean;
11
+ freezeFrameDelay: number;
12
+ /**
13
+ * Construct a freeze frame controller
14
+ * @param rootDiv - the div that a freeze frame element will be injected into
15
+ */
16
+ constructor(rootDiv: HTMLElement);
17
+ /**
18
+ * Show the freeze frame if it is valid
19
+ */
20
+ showFreezeFrame(): void;
21
+ /**
22
+ * Hide the freeze frame and set the validity to false
23
+ */
24
+ hideFreezeFrame(): void;
25
+ /**
26
+ * Update the freeze frames image source and load it
27
+ * @param jpeg - the freeze frame image as a byte array data
28
+ * @param onLoadCallBack - a call back for managing if the play overlay needs to be shown or not
29
+ */
30
+ updateFreezeFrameAndShow(jpeg: Uint8Array, onLoadCallBack: () => void): void;
31
+ /**
32
+ * Process the new freeze frame image and update it
33
+ * @param view - the freeze frame image as a byte array data
34
+ * @param onLoadCallBack - a call back for managing if the play overlay needs to be shown or not
35
+ */
36
+ processFreezeFrameMessage(view: Uint8Array, onLoadCallBack: () => void): void;
37
+ }
@@ -0,0 +1,61 @@
1
+ import { CoordinateConverter } from '../Util/CoordinateConverter';
2
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
3
+ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
+ import { ITouchController } from './ITouchController';
5
+ /**
6
+ * Allows for the usage of fake touch events and implements ITouchController
7
+ * @param dataChannelController - The controller for the Data channel
8
+ * @param videoElementParent - The video player DOM element
9
+ */
10
+ export declare class FakeTouchController implements ITouchController {
11
+ fakeTouchFinger: FakeTouchFinger;
12
+ toStreamerMessagesProvider: StreamMessageController;
13
+ videoElementProvider: VideoPlayer;
14
+ coordinateConverter: CoordinateConverter;
15
+ videoElementParentClientRect: DOMRect;
16
+ private touchEventListenerTracker;
17
+ /**
18
+ * @param toStreamerMessagesProvider - Stream message instance
19
+ * @param videoElementProvider - Video element instance
20
+ * @param coordinateConverter - A coordinate converter instance
21
+ */
22
+ constructor(toStreamerMessagesProvider: StreamMessageController, videoElementProvider: VideoPlayer, coordinateConverter: CoordinateConverter);
23
+ /**
24
+ * Unregister all touch events
25
+ */
26
+ unregisterTouchEvents(): void;
27
+ /**
28
+ * Sets the video Element Parent Client Rect numbers for this class
29
+ * @param videoElementParentClientRect - a html ElementParentClientRect object
30
+ */
31
+ setVideoElementParentClientRect(videoElementParentClientRect: DOMRect): void;
32
+ /**
33
+ * When a touch event begins
34
+ * @param touch - the activating touch event
35
+ */
36
+ onTouchStart(touch: TouchEvent): void;
37
+ /**
38
+ * When a touch event ends
39
+ * @param touchEvent - the activating touch event
40
+ */
41
+ onTouchEnd(touchEvent: TouchEvent): void;
42
+ /**
43
+ * On a Move touch event
44
+ * @param touchEvent - the activating touch event
45
+ */
46
+ onTouchMove(touchEvent: TouchEvent): void;
47
+ }
48
+ /**
49
+ * The interface for finger position mapping
50
+ */
51
+ export declare class FakeTouchFinger {
52
+ id: number;
53
+ x: number;
54
+ y: number;
55
+ /**
56
+ * @param id - the button id
57
+ * @param x - the x axis value
58
+ * @param y - the y axis value
59
+ */
60
+ constructor(id: number, x: number, y: number);
61
+ }
@@ -0,0 +1,85 @@
1
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
2
+ import { Controller } from './GamepadTypes';
3
+ /**
4
+ * The class that handles the functionality of gamepads and controllers
5
+ */
6
+ export declare class GamePadController {
7
+ controllers: Array<Controller>;
8
+ requestAnimationFrame: (callback: FrameRequestCallback) => number;
9
+ toStreamerMessagesProvider: StreamMessageController;
10
+ private gamePadEventListenerTracker;
11
+ /**
12
+ * @param toStreamerMessagesProvider - Stream message instance
13
+ */
14
+ constructor(toStreamerMessagesProvider: StreamMessageController);
15
+ /**
16
+ * Unregisters all event handlers
17
+ */
18
+ unregisterGamePadEvents(): void;
19
+ /**
20
+ * Connects the gamepad handler
21
+ * @param gamePadEvent - the activating gamepad event
22
+ */
23
+ gamePadConnectHandler(gamePadEvent: GamepadEvent): void;
24
+ /**
25
+ * Disconnects the gamepad handler
26
+ * @param gamePadEvent - the activating gamepad event
27
+ */
28
+ gamePadDisconnectHandler(gamePadEvent: GamepadEvent): void;
29
+ /**
30
+ * Scan for connected gamepads
31
+ */
32
+ scanGamePads(): void;
33
+ /**
34
+ * Updates the status of the gamepad and sends the inputs
35
+ */
36
+ updateStatus(): void;
37
+ onGamepadResponseReceived(gamepadId: number): void;
38
+ /**
39
+ * Event to send the gamepadconnected message to the application
40
+ */
41
+ onGamepadConnected(): void;
42
+ /**
43
+ * Event to send the gamepaddisconnected message to the application
44
+ */
45
+ onGamepadDisconnected(controllerIdx: number): void;
46
+ onBeforeUnload(ev: Event): void;
47
+ }
48
+ /**
49
+ * Additional types for Window and Navigator
50
+ */
51
+ declare global {
52
+ interface Window {
53
+ mozRequestAnimationFrame(callback: FrameRequestCallback): number;
54
+ webkitRequestAnimationFrame(callback: FrameRequestCallback): number;
55
+ }
56
+ interface Navigator {
57
+ webkitGetGamepads(): Gamepad[];
58
+ }
59
+ }
60
+ /**
61
+ * Gamepad layout codes enum
62
+ */
63
+ export declare enum gamepadLayout {
64
+ RightClusterBottomButton = 0,
65
+ RightClusterRightButton = 1,
66
+ RightClusterLeftButton = 2,
67
+ RightClusterTopButton = 3,
68
+ LeftShoulder = 4,
69
+ RightShoulder = 5,
70
+ LeftTrigger = 6,
71
+ RightTrigger = 7,
72
+ SelectOrBack = 8,
73
+ StartOrForward = 9,
74
+ LeftAnalogPress = 10,
75
+ RightAnalogPress = 11,
76
+ LeftClusterTopButton = 12,
77
+ LeftClusterBottomButton = 13,
78
+ LeftClusterLeftButton = 14,
79
+ LeftClusterRightButton = 15,
80
+ CentreButton = 16,
81
+ LeftStickHorizontal = 0,
82
+ LeftStickVertical = 1,
83
+ RightStickHorizontal = 2,
84
+ RightStickVertical = 3
85
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The interface for controllers
3
+ */
4
+ export interface Controller {
5
+ currentState: Gamepad;
6
+ prevState: Gamepad;
7
+ id: number | undefined;
8
+ }
@@ -0,0 +1,56 @@
1
+ import { MouseController } from './MouseController';
2
+ import { IMouseEvents } from './IMouseEvents';
3
+ /**
4
+ * Video Player mouse Hover handler
5
+ */
6
+ export declare class HoveringMouseEvents implements IMouseEvents {
7
+ mouseController: MouseController;
8
+ /**
9
+ * @param mouseController - Mouse Controller instance
10
+ */
11
+ constructor(mouseController: MouseController);
12
+ /**
13
+ * Unregister event handlers
14
+ */
15
+ unregisterMouseEvents(): void;
16
+ /**
17
+ * Handle the mouse move event, sends the mouse data to the UE Instance
18
+ * @param mouseEvent - Mouse Event
19
+ */
20
+ updateMouseMovePosition(mouseEvent: MouseEvent): void;
21
+ /**
22
+ * Handle the mouse Down event, sends the mouse data to the UE Instance
23
+ * @param mouseEvent - Mouse Event
24
+ */
25
+ handleMouseDown(mouseEvent: MouseEvent): void;
26
+ /**
27
+ * Handle the mouse Up event, sends the mouse data to the UE Instance
28
+ * @param mouseEvent - Mouse Event
29
+ */
30
+ handleMouseUp(mouseEvent: MouseEvent): void;
31
+ /**
32
+ * Consumes the mouse context event. The UE instance has no equivalent and doesn't need to be informed.
33
+ * @param mouseEvent - Mouse Event
34
+ */
35
+ handleContextMenu(mouseEvent: MouseEvent): void;
36
+ /**
37
+ * Handle the mouse wheel event, sends the mouse wheel data to the UE Instance
38
+ * @param wheelEvent - Mouse Event
39
+ */
40
+ handleMouseWheel(wheelEvent: WheelEvent): void;
41
+ /**
42
+ * Handle the mouse double click event, sends the mouse data to the UE Instance
43
+ * @param mouseEvent - Mouse Event
44
+ */
45
+ handleMouseDouble(mouseEvent: MouseEvent): void;
46
+ /**
47
+ * Handle the press mouse buttons event, sends the mouse data to the UE Instance
48
+ * @param mouseEvent - Mouse Event
49
+ */
50
+ handlePressMouseButtons(mouseEvent: MouseEvent): void;
51
+ /**
52
+ * Handle the release mouse buttons event, sends the mouse data to the UE Instance
53
+ * @param mouseEvent - Mouse Event
54
+ */
55
+ handleReleaseMouseButtons(mouseEvent: MouseEvent): void;
56
+ }
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Interface for Mouse Events
3
+ */
4
+ export interface IMouseEvents {
5
+ /**
6
+ * Handle when the locked state Changed
7
+ */
8
+ lockStateChange?(): void;
9
+ /**
10
+ * Handle when the mouse move
11
+ * @param mouseEvent - Mouse Event
12
+ */
13
+ updateMouseMovePosition?(mouseEvent: MouseEvent): void;
14
+ /**
15
+ * Handle when the Button Down
16
+ * @param mouseEvent - Mouse Event
17
+ */
18
+ handleMouseDown(mouseEvent: MouseEvent): void;
19
+ /**
20
+ * Handle when the button up
21
+ * @param mouseEvent - Mouse Event
22
+ */
23
+ handleMouseUp(mouseEvent: MouseEvent): void;
24
+ /**
25
+ * Handle when the mouse wheel
26
+ * @param wheelEvent - Mouse wheel
27
+ */
28
+ handleMouseWheel(wheelEvent: WheelEvent): void;
29
+ /**
30
+ * Handle when the button double click
31
+ * @param mouseEvent - Mouse Event
32
+ */
33
+ handleMouseDouble(mouseEvent: MouseEvent): void;
34
+ /**
35
+ * Handle the press mouse buttons event, sends the mouse data to the UE Instance
36
+ * @param mouseEvent - Mouse Event
37
+ */
38
+ handlePressMouseButtons(mouseEvent: MouseEvent): void;
39
+ /**
40
+ * Handle the release mouse buttons event, sends the mouse data to the UE Instance
41
+ * @param mouseEvent - Mouse Event
42
+ */
43
+ handleReleaseMouseButtons(mouseEvent: MouseEvent): void;
44
+ /**
45
+ * Handle the mouse context menu
46
+ * @param mouseEvent - mouse event
47
+ */
48
+ handleContextMenu?(mouseEvent: MouseEvent): void;
49
+ /**
50
+ * Unregisters any registered mouse event handlers
51
+ */
52
+ unregisterMouseEvents(): void;
53
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Interface for Touch Events
3
+ */
4
+ export interface ITouchController {
5
+ /**
6
+ * Fire when a touch event starts
7
+ * @param touchEvent - Touch Event Data
8
+ */
9
+ onTouchStart(touchEvent: TouchEvent): void;
10
+ /**
11
+ * Fire when a touch event ends
12
+ * @param touchEvent - Touch Event Data
13
+ */
14
+ onTouchEnd(touchEvent: TouchEvent): void;
15
+ /**
16
+ * Fire when touch moves
17
+ * @param touchEvent - Touch Event Data
18
+ */
19
+ onTouchMove(touchEvent: TouchEvent): void;
20
+ /**
21
+ * Unregisters all touch event handlers
22
+ */
23
+ unregisterTouchEvents(): void;
24
+ }
@@ -0,0 +1,54 @@
1
+ import { FakeTouchController } from './FakeTouchController';
2
+ import { KeyboardController } from './KeyboardController';
3
+ import { MouseController } from './MouseController';
4
+ import { TouchController } from './TouchController';
5
+ import { GamePadController } from './GamepadController';
6
+ import { Config, ControlSchemeType } from '../Config/Config';
7
+ import { CoordinateConverter } from '../Util/CoordinateConverter';
8
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
9
+ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
10
+ /**
11
+ * Class for making and setting up input class types
12
+ */
13
+ export declare class InputClassesFactory {
14
+ toStreamerMessagesProvider: StreamMessageController;
15
+ videoElementProvider: VideoPlayer;
16
+ coordinateConverter: CoordinateConverter;
17
+ activeKeys: ActiveKeys;
18
+ /**
19
+ * @param toStreamerMessagesProvider - Stream message instance
20
+ * @param videoElementProvider - Video Player instance
21
+ * @param coordinateConverter - A coordinateConverter instance
22
+ */
23
+ constructor(toStreamerMessagesProvider: StreamMessageController, videoElementProvider: VideoPlayer, coordinateConverter: CoordinateConverter);
24
+ /**
25
+ * Registers browser key events.
26
+ */
27
+ registerKeyBoard(config: Config): KeyboardController;
28
+ /**
29
+ * register mouse events based on a control type
30
+ * @param controlScheme - if the mouse is either hovering or locked
31
+ */
32
+ registerMouse(controlScheme: ControlSchemeType): MouseController;
33
+ /**
34
+ * register touch events
35
+ * @param fakeMouseTouch - the faked mouse touch event
36
+ */
37
+ registerTouch(fakeMouseTouch: boolean, videoElementParentClientRect: DOMRect): FakeTouchController | TouchController;
38
+ /**
39
+ * registers a gamepad
40
+ */
41
+ registerGamePad(): GamePadController;
42
+ }
43
+ /**
44
+ * A class that keeps track of current active keys
45
+ */
46
+ export declare class ActiveKeys {
47
+ activeKeys: Array<number>;
48
+ constructor();
49
+ /**
50
+ * Get the current array of active keys
51
+ * @returns - an array of active keys
52
+ */
53
+ getActiveKeys(): number[];
54
+ }
@@ -0,0 +1,62 @@
1
+ import { ActiveKeys } from './InputClassesFactory';
2
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
3
+ import { Config } from '../Config/Config';
4
+ interface ICodeToKeyCode {
5
+ [key: string]: number;
6
+ }
7
+ /**
8
+ * Handles the Keyboard Inputs for the document
9
+ */
10
+ export declare class KeyboardController {
11
+ toStreamerMessagesProvider: StreamMessageController;
12
+ activeKeysProvider: ActiveKeys;
13
+ config: Config;
14
+ private keyboardEventListenerTracker;
15
+ CodeToKeyCode: ICodeToKeyCode;
16
+ /**
17
+ * @param toStreamerMessagesProvider Stream message provider class object
18
+ * @param config The applications configuration. We're interested in the suppress browser keys option
19
+ * @param activeKeysProvider Active keys provider class object
20
+ */
21
+ constructor(toStreamerMessagesProvider: StreamMessageController, config: Config, activeKeysProvider: ActiveKeys);
22
+ /**
23
+ * Registers document keyboard events with the controller
24
+ */
25
+ registerKeyBoardEvents(): void;
26
+ /**
27
+ * Unregisters document keyboard events
28
+ */
29
+ unregisterKeyBoardEvents(): void;
30
+ /**
31
+ * Handles When a key is down
32
+ * @param keyboardEvent - Keyboard event
33
+ */
34
+ handleOnKeyDown(keyboardEvent: KeyboardEvent): void;
35
+ /**
36
+ * handles when a key is up
37
+ * @param keyboardEvent - Keyboard event
38
+ */
39
+ handleOnKeyUp(keyboardEvent: KeyboardEvent): void;
40
+ /**
41
+ * Handles when a key is press
42
+ * @param keyboard - Keyboard Event
43
+ */
44
+ handleOnKeyPress(keyboard: KeyboardEvent): void;
45
+ /**
46
+ * Handle whenever composition ends (eg chinese simplified)
47
+ * @param compositionEvent - the composition event
48
+ */
49
+ handleOnCompositionEnd(compositionEvent: CompositionEvent): void;
50
+ /**
51
+ * Gets the Keycode of the Key pressed
52
+ * @param keyboardEvent - Key board Event
53
+ * @returns - the key code of the Key
54
+ */
55
+ getKeycode(keyboardEvent: KeyboardEvent): number;
56
+ /**
57
+ * Browser keys do not have a charCode so we only need to test keyCode.
58
+ * @param keyCode - the browser keycode number
59
+ */
60
+ isKeyCodeBrowserKey(keyCode: number): boolean;
61
+ }
62
+ export {};
@@ -0,0 +1,80 @@
1
+ import { MouseController } from './MouseController';
2
+ import { IMouseEvents } from './IMouseEvents';
3
+ import { NormalizedQuantizedUnsignedCoord } from '../Util/CoordinateConverter';
4
+ import { ActiveKeys } from './InputClassesFactory';
5
+ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
6
+ /**
7
+ * Handle the mouse locked events
8
+ */
9
+ export declare class LockedMouseEvents implements IMouseEvents {
10
+ x: number;
11
+ y: number;
12
+ coord: NormalizedQuantizedUnsignedCoord;
13
+ videoElementProvider: VideoPlayer;
14
+ mouseController: MouseController;
15
+ activeKeysProvider: ActiveKeys;
16
+ updateMouseMovePositionEvent: (mouseEvent: MouseEvent) => void;
17
+ private mouseEventListenerTracker;
18
+ /**
19
+ * @param videoElementProvider - Video Player instance
20
+ * @param mouseController - Mouse controller instance
21
+ * @param activeKeysProvider - Active keys provider instance
22
+ * @param playerStyleAttributesProvider - Player style attributes instance
23
+ */
24
+ constructor(videoElementProvider: VideoPlayer, mouseController: MouseController, activeKeysProvider: ActiveKeys);
25
+ /**
26
+ * Unregisters all event handlers
27
+ */
28
+ unregisterMouseEvents(): void;
29
+ /**
30
+ * Handle when the locked state Changed
31
+ */
32
+ lockStateChange(): void;
33
+ /**
34
+ * Handle the mouse move event, sends the mouse data to the UE Instance
35
+ * @param mouseEvent - Mouse Event
36
+ */
37
+ updateMouseMovePosition(mouseEvent: MouseEvent): void;
38
+ /**
39
+ * Handle the mouse Down event, sends the mouse data to the UE Instance
40
+ * @param mouseEvent - Mouse Event
41
+ */
42
+ handleMouseDown(mouseEvent: MouseEvent): void;
43
+ /**
44
+ * Handle the mouse Up event, sends the mouse data to the UE Instance
45
+ * @param mouseEvent - Mouse Event
46
+ */
47
+ handleMouseUp(mouseEvent: MouseEvent): void;
48
+ /**
49
+ * Handle the mouse wheel event, sends the mouse wheel data to the UE Instance
50
+ * @param wheelEvent - Mouse Event
51
+ */
52
+ handleMouseWheel(wheelEvent: WheelEvent): void;
53
+ /**
54
+ * Handle the mouse double click event, sends the mouse data to the UE Instance
55
+ * @param mouseEvent - Mouse Event
56
+ */
57
+ handleMouseDouble(mouseEvent: MouseEvent): void;
58
+ /**
59
+ * Handle the press mouse buttons event, sends the mouse data to the UE Instance
60
+ * @param mouseEvent - Mouse Event
61
+ */
62
+ handlePressMouseButtons(mouseEvent: MouseEvent): void;
63
+ /**
64
+ * Handle the release mouse buttons event, sends the mouse data to the UE Instance
65
+ * @param mouseEvent - Mouse Event
66
+ */
67
+ handleReleaseMouseButtons(mouseEvent: MouseEvent): void;
68
+ }
69
+ /**
70
+ * Extra types for Document and WheelEvent
71
+ */
72
+ declare global {
73
+ interface Document {
74
+ mozPointerLockElement: unknown;
75
+ mozExitPointerLock?(): void;
76
+ }
77
+ interface WheelEvent {
78
+ wheelDelta: number;
79
+ }
80
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Mouse Button Data
3
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button}
4
+ */
5
+ export declare class MouseButton {
6
+ static mainButton: number;
7
+ static auxiliaryButton: number;
8
+ static secondaryButton: number;
9
+ static fourthButton: number;
10
+ static fifthButton: number;
11
+ }
12
+ /**
13
+ * Mouse Button Mask Data
14
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons}
15
+ */
16
+ export declare class MouseButtonsMask {
17
+ static primaryButton: number;
18
+ static secondaryButton: number;
19
+ static auxiliaryButton: number;
20
+ static fourthButton: number;
21
+ static fifthButton: number;
22
+ }
@@ -0,0 +1,75 @@
1
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
2
+ import { CoordinateConverter } from '../Util/CoordinateConverter';
3
+ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
+ import type { ActiveKeys } from './InputClassesFactory';
5
+ /**
6
+ * Handles the Mouse Inputs for the document
7
+ */
8
+ export declare class MouseController {
9
+ videoElementProvider: VideoPlayer;
10
+ toStreamerMessagesProvider: StreamMessageController;
11
+ coordinateConverter: CoordinateConverter;
12
+ activeKeysProvider: ActiveKeys;
13
+ private mouseEventListenerTracker;
14
+ /**
15
+ * @param toStreamerMessagesProvider - Stream message instance
16
+ * @param videoElementProvider - Video Player instance
17
+ * @param normalizeAndQuantize - A normalize and quantize instance
18
+ */
19
+ constructor(toStreamerMessagesProvider: StreamMessageController, videoElementProvider: VideoPlayer, coordinateConverter: CoordinateConverter, activeKeysProvider: ActiveKeys);
20
+ /**
21
+ * Clears all the click events on the current video element parent div
22
+ */
23
+ unregisterMouseEvents(): void;
24
+ /**
25
+ * Register a locked mouse class
26
+ * @param mouseController - a mouse controller instance
27
+ * @param playerStyleAttributesProvider - a player style attributes instance
28
+ */
29
+ registerLockedMouseEvents(mouseController: MouseController): void;
30
+ /**
31
+ * Register a hovering mouse class
32
+ * @param mouseController - A mouse controller object
33
+ */
34
+ registerHoveringMouseEvents(mouseController: MouseController): void;
35
+ /**
36
+ * Set the mouse enter and mouse leave events
37
+ */
38
+ registerMouseEnterAndLeaveEvents(): void;
39
+ /**
40
+ * Handle when a mouse button is released
41
+ * @param buttons - Mouse Button
42
+ * @param X - Mouse pointer X coordinate
43
+ * @param Y - Mouse pointer Y coordinate
44
+ */
45
+ releaseMouseButtons(buttons: number, X: number, Y: number): void;
46
+ /**
47
+ * Handle when a mouse button is pressed
48
+ * @param buttons - Mouse Button
49
+ * @param X - Mouse pointer X coordinate
50
+ * @param Y - Mouse pointer Y coordinate
51
+ */
52
+ pressMouseButtons(buttons: number, X: number, Y: number): void;
53
+ /**
54
+ * Handles mouse enter
55
+ */
56
+ sendMouseEnter(): void;
57
+ /**
58
+ * Handles mouse Leave
59
+ */
60
+ sendMouseLeave(): void;
61
+ /**
62
+ * Handles when a mouse button is pressed down
63
+ * @param button - Mouse Button Pressed
64
+ * @param X - Mouse X Coordinate
65
+ * @param Y - Mouse Y Coordinate
66
+ */
67
+ sendMouseDown(button: number, X: number, Y: number): void;
68
+ /**
69
+ * Handles when a mouse button is pressed up
70
+ * @param button - Mouse Button Pressed
71
+ * @param X - Mouse X Coordinate
72
+ * @param Y - Mouse Y Coordinate
73
+ */
74
+ sendMouseUp(button: number, X: number, Y: number): void;
75
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Registers the Special Key codes
3
+ * Must be kept in sync with JavaScriptKeyCodeToFKey C++ array.
4
+ * The index of the entry in the array is the special key code given below.
5
+ */
6
+ export declare class SpecialKeyCodes {
7
+ static backSpace: number;
8
+ static shift: number;
9
+ static control: number;
10
+ static alt: number;
11
+ static rightShift: number;
12
+ static rightControl: number;
13
+ static rightAlt: number;
14
+ }