@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.
- package/.cspell.json +48 -0
- package/.eslintignore +8 -0
- package/.eslintrc.js +8 -0
- package/.prettierignore +0 -0
- package/.prettierrc.json +6 -0
- package/dist/lib-pixelstreamingfrontend.esm.js +1 -0
- package/dist/lib-pixelstreamingfrontend.js +1 -0
- package/jest.config.js +18 -0
- package/package.json +48 -0
- package/readme.md +15 -0
- package/src/AFK/AFKController.test.ts +162 -0
- package/src/AFK/AFKController.ts +158 -0
- package/src/Config/Config.test.ts +222 -0
- package/src/Config/Config.ts +970 -0
- package/src/Config/SettingBase.ts +65 -0
- package/src/Config/SettingFlag.ts +99 -0
- package/src/Config/SettingNumber.ts +111 -0
- package/src/Config/SettingOption.ts +124 -0
- package/src/Config/SettingText.ts +82 -0
- package/src/DataChannel/DataChannelController.ts +138 -0
- package/src/DataChannel/DataChannelLatencyTestController.ts +129 -0
- package/src/DataChannel/DataChannelLatencyTestResults.ts +67 -0
- package/src/DataChannel/DataChannelSender.ts +59 -0
- package/src/DataChannel/InitialSettings.ts +61 -0
- package/src/DataChannel/LatencyTestResults.ts +76 -0
- package/src/FreezeFrame/FreezeFrame.ts +114 -0
- package/src/FreezeFrame/FreezeFrameController.ts +114 -0
- package/src/Inputs/FakeTouchController.ts +199 -0
- package/src/Inputs/GamepadController.ts +314 -0
- package/src/Inputs/GamepadTypes.ts +10 -0
- package/src/Inputs/HoveringMouseEvents.ts +192 -0
- package/src/Inputs/IMouseEvents.ts +64 -0
- package/src/Inputs/ITouchController.ts +29 -0
- package/src/Inputs/InputClassesFactory.ts +140 -0
- package/src/Inputs/KeyboardController.ts +354 -0
- package/src/Inputs/LockedMouseEvents.ts +287 -0
- package/src/Inputs/MouseButtons.ts +25 -0
- package/src/Inputs/MouseController.ts +362 -0
- package/src/Inputs/SpecialKeyCodes.ts +16 -0
- package/src/Inputs/TouchController.ts +208 -0
- package/src/Inputs/XRGamepadController.ts +126 -0
- package/src/PeerConnectionController/AggregatedStats.ts +311 -0
- package/src/PeerConnectionController/CandidatePairStats.ts +17 -0
- package/src/PeerConnectionController/CandidateStat.ts +13 -0
- package/src/PeerConnectionController/CodecStats.ts +19 -0
- package/src/PeerConnectionController/DataChannelStats.ts +17 -0
- package/src/PeerConnectionController/InboundRTPStats.ts +154 -0
- package/src/PeerConnectionController/InboundTrackStats.ts +34 -0
- package/src/PeerConnectionController/OutBoundRTPStats.ts +26 -0
- package/src/PeerConnectionController/PeerConnectionController.ts +563 -0
- package/src/PeerConnectionController/SessionStats.ts +10 -0
- package/src/PeerConnectionController/StreamStats.ts +11 -0
- package/src/PixelStreaming/PixelStreaming.test.ts +626 -0
- package/src/PixelStreaming/PixelStreaming.ts +851 -0
- package/src/UI/OnScreenKeyboard.ts +97 -0
- package/src/UeInstanceMessage/ResponseController.ts +47 -0
- package/src/UeInstanceMessage/SendMessageController.ts +154 -0
- package/src/UeInstanceMessage/StreamMessageController.ts +233 -0
- package/src/UeInstanceMessage/ToStreamerMessagesController.ts +62 -0
- package/src/Util/CoordinateConverter.ts +289 -0
- package/src/Util/EventEmitter.ts +611 -0
- package/src/Util/EventListenerTracker.ts +29 -0
- package/src/Util/FileUtil.ts +140 -0
- package/src/Util/RTCUtils.ts +41 -0
- package/src/Util/WebGLUtils.ts +49 -0
- package/src/Util/WebXRUtils.ts +25 -0
- package/src/VideoPlayer/StreamController.ts +89 -0
- package/src/VideoPlayer/VideoPlayer.ts +246 -0
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +2158 -0
- package/src/WebXR/WebXRController.ts +319 -0
- package/src/__test__/mockMediaStream.ts +124 -0
- package/src/__test__/mockRTCPeerConnection.ts +347 -0
- package/src/__test__/mockRTCRtpReceiver.ts +22 -0
- package/src/__test__/mockWebSocket.ts +136 -0
- package/src/pixelstreamingfrontend.ts +46 -0
- package/tsconfig.jest.json +8 -0
- package/tsconfig.json +24 -0
- package/types/AFK/AFKController.d.ts +39 -0
- package/types/Config/Config.d.ts +218 -0
- package/types/Config/SettingBase.d.ts +30 -0
- package/types/Config/SettingFlag.d.ts +33 -0
- package/types/Config/SettingNumber.d.ts +45 -0
- package/types/Config/SettingOption.d.ts +43 -0
- package/types/Config/SettingText.d.ts +29 -0
- package/types/DataChannel/DataChannelController.d.ts +59 -0
- package/types/DataChannel/DataChannelLatencyTestController.d.ts +26 -0
- package/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -0
- package/types/DataChannel/DataChannelSender.d.ts +21 -0
- package/types/DataChannel/InitialSettings.d.ts +44 -0
- package/types/DataChannel/LatencyTestResults.d.ts +31 -0
- package/types/FreezeFrame/FreezeFrame.d.ts +36 -0
- package/types/FreezeFrame/FreezeFrameController.d.ts +37 -0
- package/types/Inputs/FakeTouchController.d.ts +61 -0
- package/types/Inputs/GamepadController.d.ts +85 -0
- package/types/Inputs/GamepadTypes.d.ts +8 -0
- package/types/Inputs/HoveringMouseEvents.d.ts +56 -0
- package/types/Inputs/IMouseEvents.d.ts +53 -0
- package/types/Inputs/ITouchController.d.ts +24 -0
- package/types/Inputs/InputClassesFactory.d.ts +54 -0
- package/types/Inputs/KeyboardController.d.ts +62 -0
- package/types/Inputs/LockedMouseEvents.d.ts +80 -0
- package/types/Inputs/MouseButtons.d.ts +22 -0
- package/types/Inputs/MouseController.d.ts +75 -0
- package/types/Inputs/SpecialKeyCodes.d.ts +14 -0
- package/types/Inputs/TouchController.d.ts +53 -0
- package/types/Inputs/XRGamepadController.d.ts +15 -0
- package/types/PeerConnectionController/AggregatedStats.d.ts +77 -0
- package/types/PeerConnectionController/CandidatePairStats.d.ts +15 -0
- package/types/PeerConnectionController/CandidateStat.d.ts +11 -0
- package/types/PeerConnectionController/CodecStats.d.ts +14 -0
- package/types/PeerConnectionController/DataChannelStats.d.ts +15 -0
- package/types/PeerConnectionController/InboundRTPStats.d.ts +141 -0
- package/types/PeerConnectionController/InboundTrackStats.d.ts +32 -0
- package/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -0
- package/types/PeerConnectionController/PeerConnectionController.d.ts +132 -0
- package/types/PeerConnectionController/SessionStats.d.ts +8 -0
- package/types/PeerConnectionController/StreamStats.d.ts +9 -0
- package/types/PixelStreaming/PixelStreaming.d.ts +259 -0
- package/types/UI/OnScreenKeyboard.d.ts +31 -0
- package/types/UeInstanceMessage/ResponseController.d.ts +19 -0
- package/types/UeInstanceMessage/SendMessageController.d.ts +18 -0
- package/types/UeInstanceMessage/StreamMessageController.d.ts +29 -0
- package/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -0
- package/types/Util/CoordinateConverter.d.ts +100 -0
- package/types/Util/EventEmitter.d.ts +422 -0
- package/types/Util/EventListenerTracker.d.ts +14 -0
- package/types/Util/FileUtil.d.ts +32 -0
- package/types/Util/RTCUtils.d.ts +8 -0
- package/types/Util/WebGLUtils.d.ts +4 -0
- package/types/Util/WebXRUtils.d.ts +9 -0
- package/types/VideoPlayer/StreamController.d.ts +24 -0
- package/types/VideoPlayer/VideoPlayer.d.ts +78 -0
- package/types/WebRtcPlayer/WebRtcPlayerController.d.ts +377 -0
- package/types/WebXR/WebXRController.d.ts +26 -0
- package/types/pixelstreamingfrontend.d.ts +22 -0
- package/webpack.common.js +35 -0
- package/webpack.dev.js +35 -0
- 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,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
|
+
}
|