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

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 (357) hide show
  1. package/.eslintrc.js +1 -1
  2. package/.prettierrc.json +1 -0
  3. package/dist/commonjs/AFK/AFKController.js +110 -0
  4. package/dist/commonjs/AFK/AFKController.js.map +1 -0
  5. package/dist/commonjs/Config/Config.js +560 -0
  6. package/dist/commonjs/Config/Config.js.map +1 -0
  7. package/dist/commonjs/Config/SettingBase.js +99 -0
  8. package/dist/commonjs/Config/SettingBase.js.map +1 -0
  9. package/dist/commonjs/Config/SettingFlag.js +50 -0
  10. package/dist/commonjs/Config/SettingFlag.js.map +1 -0
  11. package/dist/commonjs/Config/SettingNumber.js +84 -0
  12. package/dist/commonjs/Config/SettingNumber.js.map +1 -0
  13. package/dist/commonjs/Config/SettingOption.js +85 -0
  14. package/dist/commonjs/Config/SettingOption.js.map +1 -0
  15. package/dist/commonjs/Config/SettingText.js +43 -0
  16. package/dist/commonjs/Config/SettingText.js.map +1 -0
  17. package/dist/commonjs/DataChannel/DataChannelController.js +107 -0
  18. package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -0
  19. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +95 -0
  20. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  21. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +19 -0
  22. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  23. package/dist/commonjs/DataChannel/DataChannelSender.js +44 -0
  24. package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -0
  25. package/dist/commonjs/DataChannel/InitialSettings.js +42 -0
  26. package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -0
  27. package/dist/commonjs/DataChannel/LatencyTestResults.js +61 -0
  28. package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -0
  29. package/dist/commonjs/FreezeFrame/FreezeFrame.js +94 -0
  30. package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -0
  31. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +96 -0
  32. package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -0
  33. package/dist/commonjs/Inputs/GamepadController.js +189 -0
  34. package/dist/commonjs/Inputs/GamepadController.js.map +1 -0
  35. package/dist/commonjs/Inputs/GamepadTypes.js +22 -0
  36. package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -0
  37. package/dist/commonjs/Inputs/IInputController.js +3 -0
  38. package/dist/commonjs/Inputs/IInputController.js.map +1 -0
  39. package/dist/commonjs/Inputs/InputClassesFactory.js +97 -0
  40. package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -0
  41. package/dist/commonjs/Inputs/KeyCodes.js +113 -0
  42. package/dist/commonjs/Inputs/KeyCodes.js.map +1 -0
  43. package/dist/commonjs/Inputs/KeyboardController.js +138 -0
  44. package/dist/commonjs/Inputs/KeyboardController.js.map +1 -0
  45. package/dist/commonjs/Inputs/MouseButtons.js +29 -0
  46. package/dist/commonjs/Inputs/MouseButtons.js.map +1 -0
  47. package/dist/commonjs/Inputs/MouseController.js +98 -0
  48. package/dist/commonjs/Inputs/MouseController.js.map +1 -0
  49. package/dist/commonjs/Inputs/MouseControllerHovering.js +94 -0
  50. package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -0
  51. package/dist/commonjs/Inputs/MouseControllerLocked.js +154 -0
  52. package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -0
  53. package/dist/commonjs/Inputs/SpecialKeyCodes.js +20 -0
  54. package/dist/commonjs/Inputs/SpecialKeyCodes.js.map +1 -0
  55. package/dist/commonjs/Inputs/TouchController.js +124 -0
  56. package/dist/commonjs/Inputs/TouchController.js.map +1 -0
  57. package/dist/commonjs/Inputs/TouchControllerFake.js +92 -0
  58. package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -0
  59. package/dist/commonjs/Inputs/XRGamepadController.js +125 -0
  60. package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -0
  61. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +253 -0
  62. package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -0
  63. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +11 -0
  64. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js.map +1 -0
  65. package/dist/commonjs/PeerConnectionController/CandidateStat.js +11 -0
  66. package/dist/commonjs/PeerConnectionController/CandidateStat.js.map +1 -0
  67. package/dist/commonjs/PeerConnectionController/CodecStats.js +11 -0
  68. package/dist/commonjs/PeerConnectionController/CodecStats.js.map +1 -0
  69. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +11 -0
  70. package/dist/commonjs/PeerConnectionController/DataChannelStats.js.map +1 -0
  71. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +23 -0
  72. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js.map +1 -0
  73. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +11 -0
  74. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js.map +1 -0
  75. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +17 -0
  76. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  77. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +585 -0
  78. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
  79. package/dist/commonjs/PeerConnectionController/SessionStats.js +11 -0
  80. package/dist/commonjs/PeerConnectionController/SessionStats.js.map +1 -0
  81. package/dist/commonjs/PeerConnectionController/StreamStats.js +11 -0
  82. package/dist/commonjs/PeerConnectionController/StreamStats.js.map +1 -0
  83. package/dist/commonjs/PixelStreaming/PixelStreaming.js +608 -0
  84. package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -0
  85. package/dist/commonjs/UI/OnScreenKeyboard.js +83 -0
  86. package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -0
  87. package/dist/commonjs/UeInstanceMessage/ResponseController.js +39 -0
  88. package/dist/commonjs/UeInstanceMessage/ResponseController.js.map +1 -0
  89. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +121 -0
  90. package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -0
  91. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +211 -0
  92. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -0
  93. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +50 -0
  94. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  95. package/dist/commonjs/Util/EventEmitter.js +387 -0
  96. package/dist/commonjs/Util/EventEmitter.js.map +1 -0
  97. package/dist/commonjs/Util/FileUtil.js +109 -0
  98. package/dist/commonjs/Util/FileUtil.js.map +1 -0
  99. package/dist/commonjs/Util/IURLSearchParams.js +26 -0
  100. package/dist/commonjs/Util/IURLSearchParams.js.map +1 -0
  101. package/dist/commonjs/Util/InputCoordTranslator.js +50 -0
  102. package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -0
  103. package/dist/commonjs/Util/RTCUtils.js +41 -0
  104. package/dist/commonjs/Util/RTCUtils.js.map +1 -0
  105. package/dist/commonjs/VideoPlayer/StreamController.js +68 -0
  106. package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -0
  107. package/dist/commonjs/VideoPlayer/VideoPlayer.js +178 -0
  108. package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -0
  109. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1224 -0
  110. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  111. package/dist/commonjs/WebXR/WebXRController.js +361 -0
  112. package/dist/commonjs/WebXR/WebXRController.js.map +1 -0
  113. package/dist/commonjs/pixelstreamingfrontend.js +71 -0
  114. package/dist/commonjs/pixelstreamingfrontend.js.map +1 -0
  115. package/dist/esm/AFK/AFKController.js +106 -0
  116. package/dist/esm/AFK/AFKController.js.map +1 -0
  117. package/dist/esm/Config/Config.js +552 -0
  118. package/dist/esm/Config/Config.js.map +1 -0
  119. package/dist/esm/Config/SettingBase.js +95 -0
  120. package/dist/esm/Config/SettingBase.js.map +1 -0
  121. package/dist/esm/Config/SettingFlag.js +46 -0
  122. package/dist/esm/Config/SettingFlag.js.map +1 -0
  123. package/dist/esm/Config/SettingNumber.js +80 -0
  124. package/dist/esm/Config/SettingNumber.js.map +1 -0
  125. package/dist/esm/Config/SettingOption.js +81 -0
  126. package/dist/esm/Config/SettingOption.js.map +1 -0
  127. package/dist/esm/Config/SettingText.js +39 -0
  128. package/dist/esm/Config/SettingText.js.map +1 -0
  129. package/dist/esm/DataChannel/DataChannelController.js +103 -0
  130. package/dist/esm/DataChannel/DataChannelController.js.map +1 -0
  131. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +91 -0
  132. package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -0
  133. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +15 -0
  134. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
  135. package/dist/esm/DataChannel/DataChannelSender.js +40 -0
  136. package/dist/esm/DataChannel/DataChannelSender.js.map +1 -0
  137. package/dist/esm/DataChannel/InitialSettings.js +35 -0
  138. package/dist/esm/DataChannel/InitialSettings.js.map +1 -0
  139. package/dist/esm/DataChannel/LatencyTestResults.js +57 -0
  140. package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -0
  141. package/dist/esm/FreezeFrame/FreezeFrame.js +90 -0
  142. package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -0
  143. package/dist/esm/FreezeFrame/FreezeFrameController.js +92 -0
  144. package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -0
  145. package/dist/esm/Inputs/GamepadController.js +185 -0
  146. package/dist/esm/Inputs/GamepadController.js.map +1 -0
  147. package/dist/esm/Inputs/GamepadTypes.js +18 -0
  148. package/dist/esm/Inputs/GamepadTypes.js.map +1 -0
  149. package/dist/esm/Inputs/IInputController.js +2 -0
  150. package/dist/esm/Inputs/IInputController.js.map +1 -0
  151. package/dist/esm/Inputs/InputClassesFactory.js +92 -0
  152. package/dist/esm/Inputs/InputClassesFactory.js.map +1 -0
  153. package/dist/esm/Inputs/KeyCodes.js +110 -0
  154. package/dist/esm/Inputs/KeyCodes.js.map +1 -0
  155. package/dist/esm/Inputs/KeyboardController.js +134 -0
  156. package/dist/esm/Inputs/KeyboardController.js.map +1 -0
  157. package/dist/esm/Inputs/MouseButtons.js +24 -0
  158. package/dist/esm/Inputs/MouseButtons.js.map +1 -0
  159. package/dist/esm/Inputs/MouseController.js +94 -0
  160. package/dist/esm/Inputs/MouseController.js.map +1 -0
  161. package/dist/esm/Inputs/MouseControllerHovering.js +90 -0
  162. package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -0
  163. package/dist/esm/Inputs/MouseControllerLocked.js +150 -0
  164. package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -0
  165. package/dist/esm/Inputs/SpecialKeyCodes.js +16 -0
  166. package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -0
  167. package/dist/esm/Inputs/TouchController.js +120 -0
  168. package/dist/esm/Inputs/TouchController.js.map +1 -0
  169. package/dist/esm/Inputs/TouchControllerFake.js +88 -0
  170. package/dist/esm/Inputs/TouchControllerFake.js.map +1 -0
  171. package/dist/esm/Inputs/XRGamepadController.js +121 -0
  172. package/dist/esm/Inputs/XRGamepadController.js.map +1 -0
  173. package/dist/esm/PeerConnectionController/AggregatedStats.js +249 -0
  174. package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -0
  175. package/dist/esm/PeerConnectionController/CandidatePairStats.js +7 -0
  176. package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -0
  177. package/dist/esm/PeerConnectionController/CandidateStat.js +7 -0
  178. package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -0
  179. package/dist/esm/PeerConnectionController/CodecStats.js +7 -0
  180. package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -0
  181. package/dist/esm/PeerConnectionController/DataChannelStats.js +7 -0
  182. package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -0
  183. package/dist/esm/PeerConnectionController/InboundRTPStats.js +17 -0
  184. package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -0
  185. package/dist/esm/PeerConnectionController/InboundTrackStats.js +7 -0
  186. package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -0
  187. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +12 -0
  188. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
  189. package/dist/esm/PeerConnectionController/PeerConnectionController.js +581 -0
  190. package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -0
  191. package/dist/esm/PeerConnectionController/SessionStats.js +7 -0
  192. package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -0
  193. package/dist/esm/PeerConnectionController/StreamStats.js +7 -0
  194. package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -0
  195. package/dist/esm/PixelStreaming/PixelStreaming.js +604 -0
  196. package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -0
  197. package/dist/esm/UI/OnScreenKeyboard.js +79 -0
  198. package/dist/esm/UI/OnScreenKeyboard.js.map +1 -0
  199. package/dist/esm/UeInstanceMessage/ResponseController.js +35 -0
  200. package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -0
  201. package/dist/esm/UeInstanceMessage/SendMessageController.js +117 -0
  202. package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -0
  203. package/dist/esm/UeInstanceMessage/StreamMessageController.js +206 -0
  204. package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -0
  205. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +46 -0
  206. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
  207. package/dist/esm/Util/EventEmitter.js +346 -0
  208. package/dist/esm/Util/EventEmitter.js.map +1 -0
  209. package/dist/esm/Util/FileUtil.js +104 -0
  210. package/dist/esm/Util/FileUtil.js.map +1 -0
  211. package/dist/esm/Util/IURLSearchParams.js +22 -0
  212. package/dist/esm/Util/IURLSearchParams.js.map +1 -0
  213. package/dist/esm/Util/InputCoordTranslator.js +46 -0
  214. package/dist/esm/Util/InputCoordTranslator.js.map +1 -0
  215. package/dist/esm/Util/RTCUtils.js +37 -0
  216. package/dist/esm/Util/RTCUtils.js.map +1 -0
  217. package/dist/esm/VideoPlayer/StreamController.js +64 -0
  218. package/dist/esm/VideoPlayer/StreamController.js.map +1 -0
  219. package/dist/esm/VideoPlayer/VideoPlayer.js +174 -0
  220. package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -0
  221. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1220 -0
  222. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
  223. package/dist/esm/WebXR/WebXRController.js +357 -0
  224. package/dist/esm/WebXR/WebXRController.js.map +1 -0
  225. package/dist/esm/pixelstreamingfrontend.js +25 -0
  226. package/dist/esm/pixelstreamingfrontend.js.map +1 -0
  227. package/{types → dist/types}/AFK/AFKController.d.ts +38 -39
  228. package/{types → dist/types}/Config/Config.d.ts +220 -219
  229. package/{types → dist/types}/Config/SettingBase.d.ts +43 -30
  230. package/{types → dist/types}/Config/SettingFlag.d.ts +24 -33
  231. package/{types → dist/types}/Config/SettingNumber.d.ts +41 -45
  232. package/{types → dist/types}/Config/SettingOption.d.ts +41 -43
  233. package/{types → dist/types}/Config/SettingText.d.ts +21 -29
  234. package/{types → dist/types}/DataChannel/DataChannelController.d.ts +59 -59
  235. package/{types → dist/types}/DataChannel/DataChannelLatencyTestController.d.ts +25 -26
  236. package/{types → dist/types}/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  237. package/{types → dist/types}/DataChannel/DataChannelSender.d.ts +21 -21
  238. package/{types → dist/types}/DataChannel/InitialSettings.d.ts +44 -44
  239. package/{types → dist/types}/DataChannel/LatencyTestResults.d.ts +31 -31
  240. package/{types → dist/types}/FreezeFrame/FreezeFrame.d.ts +36 -36
  241. package/{types → dist/types}/FreezeFrame/FreezeFrameController.d.ts +37 -37
  242. package/dist/types/Inputs/GamepadController.d.ts +61 -0
  243. package/dist/types/Inputs/GamepadTypes.d.ts +15 -0
  244. package/dist/types/Inputs/IInputController.d.ts +16 -0
  245. package/{types → dist/types}/Inputs/InputClassesFactory.d.ts +53 -54
  246. package/dist/types/Inputs/KeyCodes.d.ts +5 -0
  247. package/dist/types/Inputs/KeyboardController.d.ts +34 -0
  248. package/{types → dist/types}/Inputs/MouseButtons.d.ts +22 -22
  249. package/dist/types/Inputs/MouseController.d.ts +40 -0
  250. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -0
  251. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -0
  252. package/{types → dist/types}/Inputs/SpecialKeyCodes.d.ts +14 -14
  253. package/dist/types/Inputs/TouchController.d.ts +28 -0
  254. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -0
  255. package/{types → dist/types}/Inputs/XRGamepadController.d.ts +15 -22
  256. package/{types → dist/types}/PeerConnectionController/AggregatedStats.d.ts +82 -84
  257. package/{types → dist/types}/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  258. package/{types → dist/types}/PeerConnectionController/CandidateStat.d.ts +13 -13
  259. package/{types → dist/types}/PeerConnectionController/CodecStats.d.ts +14 -14
  260. package/{types → dist/types}/PeerConnectionController/DataChannelStats.d.ts +15 -15
  261. package/{types → dist/types}/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  262. package/{types → dist/types}/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  263. package/{types → dist/types}/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  264. package/{types → dist/types}/PeerConnectionController/PeerConnectionController.d.ts +143 -140
  265. package/{types → dist/types}/PeerConnectionController/SessionStats.d.ts +8 -8
  266. package/{types → dist/types}/PeerConnectionController/StreamStats.d.ts +9 -9
  267. package/{types → dist/types}/PixelStreaming/PixelStreaming.d.ts +271 -259
  268. package/{types → dist/types}/UI/OnScreenKeyboard.d.ts +30 -30
  269. package/{types → dist/types}/UeInstanceMessage/ResponseController.d.ts +19 -19
  270. package/{types → dist/types}/UeInstanceMessage/SendMessageController.d.ts +18 -18
  271. package/{types → dist/types}/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  272. package/{types → dist/types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  273. package/{types → dist/types}/Util/EventEmitter.d.ts +429 -429
  274. package/{types → dist/types}/Util/FileUtil.d.ts +32 -32
  275. package/dist/types/Util/IURLSearchParams.d.ts +9 -0
  276. package/dist/types/Util/InputCoordTranslator.d.ts +29 -0
  277. package/{types → dist/types}/Util/RTCUtils.d.ts +8 -8
  278. package/{types → dist/types}/VideoPlayer/StreamController.d.ts +22 -24
  279. package/{types → dist/types}/VideoPlayer/VideoPlayer.d.ts +78 -78
  280. package/{types → dist/types}/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -377
  281. package/{types → dist/types}/WebXR/WebXRController.d.ts +42 -42
  282. package/{types → dist/types}/pixelstreamingfrontend.d.ts +23 -22
  283. package/package.json +14 -17
  284. package/readme.md +9 -1
  285. package/src/AFK/AFKController.ts +10 -32
  286. package/src/Config/Config.ts +232 -205
  287. package/src/Config/SettingBase.ts +61 -2
  288. package/src/Config/SettingFlag.ts +10 -48
  289. package/src/Config/SettingNumber.ts +23 -33
  290. package/src/Config/SettingOption.ts +41 -56
  291. package/src/Config/SettingText.ts +9 -37
  292. package/src/DataChannel/DataChannelController.ts +6 -26
  293. package/src/DataChannel/DataChannelLatencyTestController.ts +43 -38
  294. package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
  295. package/src/DataChannel/DataChannelSender.ts +5 -15
  296. package/src/DataChannel/LatencyTestResults.ts +5 -15
  297. package/src/FreezeFrame/FreezeFrame.ts +7 -19
  298. package/src/FreezeFrame/FreezeFrameController.ts +3 -14
  299. package/src/Inputs/GamepadController.ts +123 -221
  300. package/src/Inputs/GamepadTypes.ts +23 -0
  301. package/src/Inputs/IInputController.ts +17 -0
  302. package/src/Inputs/InputClassesFactory.ts +38 -45
  303. package/src/Inputs/KeyCodes.ts +114 -0
  304. package/src/Inputs/KeyboardController.ts +49 -232
  305. package/src/Inputs/MouseController.ts +71 -297
  306. package/src/Inputs/MouseControllerHovering.ts +118 -0
  307. package/src/Inputs/MouseControllerLocked.ts +194 -0
  308. package/src/Inputs/TouchController.ts +49 -105
  309. package/src/Inputs/TouchControllerFake.ts +132 -0
  310. package/src/Inputs/XRGamepadController.ts +35 -44
  311. package/src/PeerConnectionController/AggregatedStats.ts +46 -75
  312. package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
  313. package/src/PeerConnectionController/CandidateStat.ts +1 -1
  314. package/src/PeerConnectionController/PeerConnectionController.ts +214 -170
  315. package/src/PixelStreaming/PixelStreaming.ts +174 -226
  316. package/src/UI/OnScreenKeyboard.ts +14 -9
  317. package/src/UeInstanceMessage/ResponseController.ts +6 -15
  318. package/src/UeInstanceMessage/SendMessageController.ts +16 -18
  319. package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
  320. package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
  321. package/src/Util/EventEmitter.ts +17 -22
  322. package/src/Util/FileUtil.ts +11 -34
  323. package/src/Util/IURLSearchParams.ts +25 -0
  324. package/src/Util/InputCoordTranslator.ts +73 -0
  325. package/src/Util/RTCUtils.ts +23 -15
  326. package/src/VideoPlayer/StreamController.ts +6 -23
  327. package/src/VideoPlayer/VideoPlayer.ts +9 -30
  328. package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
  329. package/src/WebXR/WebXRController.ts +82 -94
  330. package/src/pixelstreamingfrontend.ts +8 -6
  331. package/tsconfig.cjs.json +9 -0
  332. package/tsconfig.esm.json +7 -0
  333. package/tsconfig.json +4 -6
  334. package/dist/lib-pixelstreamingfrontend.esm.js +0 -1
  335. package/dist/lib-pixelstreamingfrontend.js +0 -1
  336. package/src/Inputs/FakeTouchController.ts +0 -199
  337. package/src/Inputs/HoveringMouseEvents.ts +0 -192
  338. package/src/Inputs/IMouseEvents.ts +0 -64
  339. package/src/Inputs/ITouchController.ts +0 -29
  340. package/src/Inputs/LockedMouseEvents.ts +0 -287
  341. package/src/Util/CoordinateConverter.ts +0 -290
  342. package/src/Util/EventListenerTracker.ts +0 -29
  343. package/types/Inputs/FakeTouchController.d.ts +0 -61
  344. package/types/Inputs/GamepadController.d.ts +0 -85
  345. package/types/Inputs/GamepadTypes.d.ts +0 -8
  346. package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
  347. package/types/Inputs/IMouseEvents.d.ts +0 -53
  348. package/types/Inputs/ITouchController.d.ts +0 -24
  349. package/types/Inputs/KeyboardController.d.ts +0 -62
  350. package/types/Inputs/LockedMouseEvents.d.ts +0 -80
  351. package/types/Inputs/MouseController.d.ts +0 -75
  352. package/types/Inputs/TouchController.d.ts +0 -53
  353. package/types/Util/CoordinateConverter.d.ts +0 -100
  354. package/types/Util/EventListenerTracker.d.ts +0 -14
  355. package/webpack.common.js +0 -35
  356. package/webpack.dev.js +0 -35
  357. package/webpack.prod.js +0 -36
@@ -1,249 +1,91 @@
1
- // Copyright Epic Games, Inc. All Rights Reserved.
2
-
3
1
  import { MouseButtonsMask, MouseButton } from './MouseButtons';
4
- import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
5
2
  import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
6
- import { CoordinateConverter } from '../Util/CoordinateConverter';
3
+ import { InputCoordTranslator } from '../Util/InputCoordTranslator';
7
4
  import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
8
- import { IMouseEvents } from './IMouseEvents';
9
- import { LockedMouseEvents } from './LockedMouseEvents';
10
- import { HoveringMouseEvents } from './HoveringMouseEvents';
11
5
  import type { ActiveKeys } from './InputClassesFactory';
12
- import { EventListenerTracker } from '../Util/EventListenerTracker';
6
+ import { IInputController } from './IInputController';
13
7
 
14
8
  /**
15
- * Handles the Mouse Inputs for the document
9
+ * Extra types for Document and WheelEvent
16
10
  */
17
- export class MouseController {
18
- videoElementProvider: VideoPlayer;
19
- toStreamerMessagesProvider: StreamMessageController;
20
- coordinateConverter: CoordinateConverter;
21
- activeKeysProvider: ActiveKeys;
22
-
23
- // Utility for keeping track of event handlers and to unregister them.
24
- private mouseEventListenerTracker = new EventListenerTracker();
25
-
26
- /**
27
- * @param toStreamerMessagesProvider - Stream message instance
28
- * @param videoElementProvider - Video Player instance
29
- * @param normalizeAndQuantize - A normalize and quantize instance
30
- */
31
- constructor(
32
- toStreamerMessagesProvider: StreamMessageController,
33
- videoElementProvider: VideoPlayer,
34
- coordinateConverter: CoordinateConverter,
35
- activeKeysProvider: ActiveKeys
36
- ) {
37
- this.toStreamerMessagesProvider = toStreamerMessagesProvider;
38
- this.coordinateConverter = coordinateConverter;
39
- this.videoElementProvider = videoElementProvider;
40
- this.activeKeysProvider = activeKeysProvider;
41
- this.registerMouseEnterAndLeaveEvents();
11
+ declare global {
12
+ interface Document {
13
+ mozPointerLockElement: unknown;
14
+ mozExitPointerLock?(): void;
42
15
  }
43
16
 
44
- /**
45
- * Clears all the click events on the current video element parent div
46
- */
47
- unregisterMouseEvents() {
48
- this.mouseEventListenerTracker.unregisterAll();
17
+ interface WheelEvent {
18
+ wheelDelta: number;
49
19
  }
20
+ }
50
21
 
51
- /**
52
- * Register a locked mouse class
53
- * @param mouseController - a mouse controller instance
54
- * @param playerStyleAttributesProvider - a player style attributes instance
55
- */
56
- registerLockedMouseEvents(mouseController: MouseController) {
57
- const videoElementParent =
58
- this.videoElementProvider.getVideoParentElement() as HTMLDivElement;
59
- const lockedMouseEvents: IMouseEvents = new LockedMouseEvents(
60
- this.videoElementProvider,
61
- mouseController,
62
- this.activeKeysProvider
63
- );
64
-
65
- videoElementParent.requestPointerLock =
66
- videoElementParent.requestPointerLock ||
67
- videoElementParent.mozRequestPointerLock;
68
- document.exitPointerLock =
69
- document.exitPointerLock || document.mozExitPointerLock;
70
-
71
- // minor hack to alleviate ios not supporting pointerlock
72
- if (videoElementParent.requestPointerLock) {
73
- const onclick = () => {
74
- videoElementParent.requestPointerLock();
75
- };
76
- videoElementParent.addEventListener('click', onclick);
77
- this.mouseEventListenerTracker.addUnregisterCallback(
78
- () => videoElementParent.removeEventListener('click', onclick)
79
- );
80
- }
22
+ /**
23
+ * The base class for mouse controllers. Since there is a bunch of shared behaviour between locked and
24
+ * hover mouse controllers this is where that shared behaviour lives.
25
+ */
26
+ export class MouseController implements IInputController {
27
+ videoPlayer: VideoPlayer;
28
+ streamMessageController: StreamMessageController;
29
+ coordinateConverter: InputCoordTranslator;
30
+ activeKeys: ActiveKeys;
81
31
 
82
- const lockStateChangeListener = () =>
83
- lockedMouseEvents.lockStateChange();
84
- document.addEventListener(
85
- 'pointerlockchange',
86
- lockStateChangeListener,
87
- false
88
- );
89
- document.addEventListener(
90
- 'mozpointerlockchange',
91
- lockStateChangeListener,
92
- false
93
- );
94
- this.mouseEventListenerTracker.addUnregisterCallback(
95
- () => document.removeEventListener(
96
- 'pointerlockchange',
97
- lockStateChangeListener,
98
- false
99
- )
100
- );
101
- this.mouseEventListenerTracker.addUnregisterCallback(
102
- () => document.removeEventListener(
103
- 'mozpointerlockchange',
104
- lockStateChangeListener,
105
- false
106
- )
107
- );
32
+ // bound listeners
33
+ onEnterListener: (event: MouseEvent) => void;
34
+ onLeaveListener: (event: MouseEvent) => void;
108
35
 
109
- const onmousedown = (mouseEvent: MouseEvent) =>
110
- lockedMouseEvents.handleMouseDown(mouseEvent);
111
- const onmouseup = (mouseEvent: MouseEvent) =>
112
- lockedMouseEvents.handleMouseUp(mouseEvent);
113
- const onwheel = (wheelEvent: WheelEvent) =>
114
- lockedMouseEvents.handleMouseWheel(wheelEvent);
115
- const ondblclick = (mouseEvent: MouseEvent) =>
116
- lockedMouseEvents.handleMouseDouble(mouseEvent);
117
- videoElementParent.addEventListener('mousedown', onmousedown);
118
- videoElementParent.addEventListener('mouseup', onmouseup);
119
- videoElementParent.addEventListener('wheel', onwheel);
120
- videoElementParent.addEventListener('dblclick', ondblclick);
36
+ constructor(
37
+ streamMessageController: StreamMessageController,
38
+ videoPlayer: VideoPlayer,
39
+ coordinateConverter: InputCoordTranslator,
40
+ activeKeys: ActiveKeys
41
+ ) {
42
+ this.streamMessageController = streamMessageController;
43
+ this.coordinateConverter = coordinateConverter;
44
+ this.videoPlayer = videoPlayer;
45
+ this.activeKeys = activeKeys;
121
46
 
122
- this.mouseEventListenerTracker.addUnregisterCallback(
123
- () => videoElementParent.removeEventListener('mousedown', onmousedown)
124
- );
125
- this.mouseEventListenerTracker.addUnregisterCallback(
126
- () => videoElementParent.removeEventListener('mouseup', onmouseup)
127
- );
128
- this.mouseEventListenerTracker.addUnregisterCallback(
129
- () => videoElementParent.removeEventListener('wheel', onwheel)
130
- );
131
- this.mouseEventListenerTracker.addUnregisterCallback(
132
- () => videoElementParent.removeEventListener('dblclick', ondblclick)
133
- );
134
- this.mouseEventListenerTracker.addUnregisterCallback(
135
- () => lockedMouseEvents.unregisterMouseEvents()
136
- );
137
- this.mouseEventListenerTracker.addUnregisterCallback(() => {
138
- if (
139
- document.exitPointerLock &&
140
- (document.pointerLockElement === videoElementParent ||
141
- document.mozPointerLockElement === videoElementParent)
142
- ) {
143
- document.exitPointerLock();
144
- }
145
- });
47
+ this.onEnterListener = this.onMouseEnter.bind(this);
48
+ this.onLeaveListener = this.onMouseLeave.bind(this);
146
49
  }
147
50
 
148
- /**
149
- * Register a hovering mouse class
150
- * @param mouseController - A mouse controller object
151
- */
152
- registerHoveringMouseEvents(mouseController: MouseController) {
153
- const videoElementParent =
154
- this.videoElementProvider.getVideoParentElement() as HTMLDivElement;
155
- const hoveringMouseEvents = new HoveringMouseEvents(mouseController);
156
-
157
- const onmousemove = (mouseEvent: MouseEvent) =>
158
- hoveringMouseEvents.updateMouseMovePosition(mouseEvent);
159
- const onmousedown = (mouseEvent: MouseEvent) =>
160
- hoveringMouseEvents.handleMouseDown(mouseEvent);
161
- const onmouseup = (mouseEvent: MouseEvent) =>
162
- hoveringMouseEvents.handleMouseUp(mouseEvent);
163
- const oncontextmenu = (mouseEvent: MouseEvent) =>
164
- hoveringMouseEvents.handleContextMenu(mouseEvent);
165
- const onwheel = (wheelEvent: WheelEvent) =>
166
- hoveringMouseEvents.handleMouseWheel(wheelEvent);
167
- const ondblclick = (mouseEvent: MouseEvent) =>
168
- hoveringMouseEvents.handleMouseDouble(mouseEvent);
169
- videoElementParent.addEventListener('mousemove', onmousemove);
170
- videoElementParent.addEventListener('mousedown', onmousedown);
171
- videoElementParent.addEventListener('mouseup', onmouseup);
172
- videoElementParent.addEventListener('contextmenu', oncontextmenu);
173
- videoElementParent.addEventListener('wheel', onwheel);
174
- videoElementParent.addEventListener('dblclick', ondblclick);
51
+ register() {
52
+ this.registerMouseEnterAndLeaveEvents();
53
+ }
175
54
 
176
- this.mouseEventListenerTracker.addUnregisterCallback(
177
- () => videoElementParent.removeEventListener('mousemove', onmousemove)
178
- );
179
- this.mouseEventListenerTracker.addUnregisterCallback(
180
- () => videoElementParent.removeEventListener('mousedown', onmousedown)
181
- );
182
- this.mouseEventListenerTracker.addUnregisterCallback(
183
- () => videoElementParent.removeEventListener('mouseup', onmouseup)
184
- );
185
- this.mouseEventListenerTracker.addUnregisterCallback(
186
- () => videoElementParent.removeEventListener('contextmenu', oncontextmenu)
187
- );
188
- this.mouseEventListenerTracker.addUnregisterCallback(
189
- () => videoElementParent.removeEventListener('wheel', onwheel)
190
- );
191
- this.mouseEventListenerTracker.addUnregisterCallback(
192
- () => videoElementParent.removeEventListener('dblclick', ondblclick)
193
- );
194
- this.mouseEventListenerTracker.addUnregisterCallback(
195
- () => hoveringMouseEvents.unregisterMouseEvents()
196
- );
55
+ unregister() {
56
+ this.unregisterMouseEnterAndLeaveEvents();
197
57
  }
198
58
 
199
- /**
200
- * Set the mouse enter and mouse leave events
201
- */
202
59
  registerMouseEnterAndLeaveEvents() {
203
- const videoElementParent =
204
- this.videoElementProvider.getVideoParentElement() as HTMLDivElement;
60
+ const videoElementParent = this.videoPlayer.getVideoParentElement() as HTMLDivElement;
61
+ videoElementParent.addEventListener('mouseenter', this.onEnterListener);
62
+ videoElementParent.addEventListener('mouseleave', this.onLeaveListener);
63
+ }
205
64
 
206
- // Handle when the Mouse has entered the element
207
- const onmouseenter = (event: MouseEvent) => {
208
- if (!this.videoElementProvider.isVideoReady()) {
209
- return;
210
- }
211
- Logger.Log(Logger.GetStackTrace(), 'Mouse Entered', 6);
212
- this.sendMouseEnter();
213
- this.pressMouseButtons(event.buttons, event.x, event.y);
214
- };
65
+ unregisterMouseEnterAndLeaveEvents() {
66
+ const videoElementParent = this.videoPlayer.getVideoParentElement() as HTMLDivElement;
67
+ videoElementParent.removeEventListener('mouseenter', this.onEnterListener);
68
+ videoElementParent.removeEventListener('mouseleave', this.onLeaveListener);
69
+ }
215
70
 
216
- // Handles when the mouse has left the element
217
- const onmouseleave = (event: MouseEvent) => {
218
- if (!this.videoElementProvider.isVideoReady()) {
219
- return;
220
- }
221
- Logger.Log(Logger.GetStackTrace(), 'Mouse Left', 6);
222
- this.sendMouseLeave();
223
- this.releaseMouseButtons(event.buttons, event.x, event.y);
224
- };
225
- videoElementParent.addEventListener('mouseenter', onmouseenter);
226
- videoElementParent.addEventListener('mouseleave', onmouseleave);
71
+ private onMouseEnter(event: MouseEvent) {
72
+ if (!this.videoPlayer.isVideoReady()) {
73
+ return;
74
+ }
75
+ this.streamMessageController.toStreamerHandlers.get('MouseEnter')();
76
+ this.pressMouseButtons(event.buttons, event.x, event.y);
77
+ }
227
78
 
228
- this.mouseEventListenerTracker.addUnregisterCallback(
229
- () => videoElementParent.removeEventListener('mouseenter', onmouseenter)
230
- );
231
- this.mouseEventListenerTracker.addUnregisterCallback(
232
- () => videoElementParent.removeEventListener('mouseleave', onmouseleave)
233
- );
79
+ private onMouseLeave(event: MouseEvent) {
80
+ if (!this.videoPlayer.isVideoReady()) {
81
+ return;
82
+ }
83
+ this.streamMessageController.toStreamerHandlers.get('MouseLeave')();
84
+ this.releaseMouseButtons(event.buttons, event.x, event.y);
234
85
  }
235
86
 
236
- /**
237
- * Handle when a mouse button is released
238
- * @param buttons - Mouse Button
239
- * @param X - Mouse pointer X coordinate
240
- * @param Y - Mouse pointer Y coordinate
241
- */
242
- releaseMouseButtons(buttons: number, X: number, Y: number) {
243
- const coord = this.coordinateConverter.normalizeAndQuantizeUnsigned(
244
- X,
245
- Y
246
- );
87
+ private releaseMouseButtons(buttons: number, X: number, Y: number) {
88
+ const coord = this.coordinateConverter.translateUnsigned(X, Y);
247
89
  if (buttons & MouseButtonsMask.primaryButton) {
248
90
  this.sendMouseUp(MouseButton.mainButton, coord.x, coord.y);
249
91
  }
@@ -261,20 +103,11 @@ export class MouseController {
261
103
  }
262
104
  }
263
105
 
264
- /**
265
- * Handle when a mouse button is pressed
266
- * @param buttons - Mouse Button
267
- * @param X - Mouse pointer X coordinate
268
- * @param Y - Mouse pointer Y coordinate
269
- */
270
- pressMouseButtons(buttons: number, X: number, Y: number) {
271
- if (!this.videoElementProvider.isVideoReady()) {
106
+ private pressMouseButtons(buttons: number, X: number, Y: number) {
107
+ if (!this.videoPlayer.isVideoReady()) {
272
108
  return;
273
109
  }
274
- const coord = this.coordinateConverter.normalizeAndQuantizeUnsigned(
275
- X,
276
- Y
277
- );
110
+ const coord = this.coordinateConverter.translateUnsigned(X, Y);
278
111
  if (buttons & MouseButtonsMask.primaryButton) {
279
112
  this.sendMouseDown(MouseButton.mainButton, coord.x, coord.y);
280
113
  }
@@ -292,71 +125,12 @@ export class MouseController {
292
125
  }
293
126
  }
294
127
 
295
- /**
296
- * Handles mouse enter
297
- */
298
- sendMouseEnter() {
299
- if (!this.videoElementProvider.isVideoReady()) {
300
- return;
301
- }
302
- const toStreamerHandlers =
303
- this.toStreamerMessagesProvider.toStreamerHandlers;
304
- toStreamerHandlers.get('MouseEnter')();
128
+ private sendMouseDown(button: number, X: number, Y: number) {
129
+ this.streamMessageController.toStreamerHandlers.get('MouseDown')?.([button, X, Y]);
305
130
  }
306
131
 
307
- /**
308
- * Handles mouse Leave
309
- */
310
- sendMouseLeave() {
311
- if (!this.videoElementProvider.isVideoReady()) {
312
- return;
313
- }
314
- const toStreamerHandlers =
315
- this.toStreamerMessagesProvider.toStreamerHandlers;
316
- toStreamerHandlers.get('MouseLeave')();
317
- }
318
-
319
- /**
320
- * Handles when a mouse button is pressed down
321
- * @param button - Mouse Button Pressed
322
- * @param X - Mouse X Coordinate
323
- * @param Y - Mouse Y Coordinate
324
- */
325
- sendMouseDown(button: number, X: number, Y: number) {
326
- if (!this.videoElementProvider.isVideoReady()) {
327
- return;
328
- }
329
- Logger.Log(
330
- Logger.GetStackTrace(),
331
- `mouse button ${button} down at (${X}, ${Y})`,
332
- 6
333
- );
334
- const toStreamerHandlers =
335
- this.toStreamerMessagesProvider.toStreamerHandlers;
336
- toStreamerHandlers.get('MouseDown')([button, X, Y]);
337
- }
338
-
339
- /**
340
- * Handles when a mouse button is pressed up
341
- * @param button - Mouse Button Pressed
342
- * @param X - Mouse X Coordinate
343
- * @param Y - Mouse Y Coordinate
344
- */
345
- sendMouseUp(button: number, X: number, Y: number) {
346
- if (!this.videoElementProvider.isVideoReady()) {
347
- return;
348
- }
349
- Logger.Log(
350
- Logger.GetStackTrace(),
351
- `mouse button ${button} up at (${X}, ${Y})`,
352
- 6
353
- );
354
- const coord = this.coordinateConverter.normalizeAndQuantizeUnsigned(
355
- X,
356
- Y
357
- );
358
- const toStreamerHandlers =
359
- this.toStreamerMessagesProvider.toStreamerHandlers;
360
- toStreamerHandlers.get('MouseUp')([button, coord.x, coord.y]);
132
+ private sendMouseUp(button: number, X: number, Y: number) {
133
+ const coord = this.coordinateConverter.translateUnsigned(X, Y);
134
+ this.streamMessageController.toStreamerHandlers.get('MouseUp')?.([button, coord.x, coord.y]);
361
135
  }
362
136
  }
@@ -0,0 +1,118 @@
1
+ import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
2
+ import { InputCoordTranslator } from '../Util/InputCoordTranslator';
3
+ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
4
+ import type { ActiveKeys } from './InputClassesFactory';
5
+ import { MouseController } from './MouseController';
6
+
7
+ /**
8
+ * A mouse controller that allows the mouse to freely float over the video document.
9
+ */
10
+ export class MouseControllerHovering extends MouseController {
11
+ videoElementParent: HTMLDivElement;
12
+
13
+ onMouseUpListener: (event: MouseEvent) => void;
14
+ onMouseDownListener: (event: MouseEvent) => void;
15
+ onMouseDblClickListener: (event: MouseEvent) => void;
16
+ onMouseWheelListener: (event: WheelEvent) => void;
17
+ onMouseMoveListener: (event: MouseEvent) => void;
18
+ onContextMenuListener: (event: MouseEvent) => void;
19
+
20
+ constructor(
21
+ streamMessageController: StreamMessageController,
22
+ videoPlayer: VideoPlayer,
23
+ coordinateConverter: InputCoordTranslator,
24
+ activeKeys: ActiveKeys
25
+ ) {
26
+ super(streamMessageController, videoPlayer, coordinateConverter, activeKeys);
27
+ this.videoElementParent = videoPlayer.getVideoParentElement() as HTMLDivElement;
28
+ this.onMouseUpListener = this.onMouseUp.bind(this);
29
+ this.onMouseDownListener = this.onMouseDown.bind(this);
30
+ this.onMouseDblClickListener = this.onMouseDblClick.bind(this);
31
+ this.onMouseWheelListener = this.onMouseWheel.bind(this);
32
+ this.onMouseMoveListener = this.onMouseMove.bind(this);
33
+ this.onContextMenuListener = this.onContextMenu.bind(this);
34
+ }
35
+
36
+ register(): void {
37
+ super.register();
38
+
39
+ this.videoElementParent.addEventListener('mousemove', this.onMouseMoveListener);
40
+ this.videoElementParent.addEventListener('mousedown', this.onMouseDownListener);
41
+ this.videoElementParent.addEventListener('mouseup', this.onMouseUpListener);
42
+ this.videoElementParent.addEventListener('contextmenu', this.onContextMenuListener);
43
+ this.videoElementParent.addEventListener('wheel', this.onMouseWheelListener);
44
+ this.videoElementParent.addEventListener('dblclick', this.onMouseDblClickListener);
45
+ }
46
+
47
+ unregister(): void {
48
+ this.videoElementParent.removeEventListener('mousemove', this.onMouseMoveListener);
49
+ this.videoElementParent.removeEventListener('mousedown', this.onMouseDownListener);
50
+ this.videoElementParent.removeEventListener('mouseup', this.onMouseUpListener);
51
+ this.videoElementParent.removeEventListener('contextmenu', this.onContextMenuListener);
52
+ this.videoElementParent.removeEventListener('wheel', this.onMouseWheelListener);
53
+ this.videoElementParent.removeEventListener('dblclick', this.onMouseDblClickListener);
54
+
55
+ super.unregister();
56
+ }
57
+
58
+ private onMouseDown(event: MouseEvent) {
59
+ if (!this.videoPlayer.isVideoReady()) {
60
+ return;
61
+ }
62
+ const coord = this.coordinateConverter.translateUnsigned(event.offsetX, event.offsetY);
63
+ this.streamMessageController.toStreamerHandlers.get('MouseDown')([event.button, coord.x, coord.y]);
64
+ event.preventDefault();
65
+ }
66
+
67
+ private onMouseUp(event: MouseEvent) {
68
+ if (!this.videoPlayer.isVideoReady()) {
69
+ return;
70
+ }
71
+ const coord = this.coordinateConverter.translateUnsigned(event.offsetX, event.offsetY);
72
+ this.streamMessageController.toStreamerHandlers.get('MouseUp')([event.button, coord.x, coord.y]);
73
+ event.preventDefault();
74
+ }
75
+
76
+ private onContextMenu(event: MouseEvent) {
77
+ if (!this.videoPlayer.isVideoReady()) {
78
+ return;
79
+ }
80
+ event.preventDefault();
81
+ }
82
+
83
+ private onMouseMove(event: MouseEvent) {
84
+ if (!this.videoPlayer.isVideoReady()) {
85
+ return;
86
+ }
87
+ const coord = this.coordinateConverter.translateUnsigned(event.offsetX, event.offsetY);
88
+ const delta = this.coordinateConverter.translateSigned(event.movementX, event.movementY);
89
+ this.streamMessageController.toStreamerHandlers.get('MouseMove')([
90
+ coord.x,
91
+ coord.y,
92
+ delta.x,
93
+ delta.y
94
+ ]);
95
+ event.preventDefault();
96
+ }
97
+
98
+ private onMouseWheel(event: WheelEvent) {
99
+ if (!this.videoPlayer.isVideoReady()) {
100
+ return;
101
+ }
102
+ const coord = this.coordinateConverter.translateUnsigned(event.offsetX, event.offsetY);
103
+ this.streamMessageController.toStreamerHandlers.get('MouseWheel')([
104
+ event.wheelDelta,
105
+ coord.x,
106
+ coord.y
107
+ ]);
108
+ event.preventDefault();
109
+ }
110
+
111
+ private onMouseDblClick(event: MouseEvent) {
112
+ if (!this.videoPlayer.isVideoReady()) {
113
+ return;
114
+ }
115
+ const coord = this.coordinateConverter.translateUnsigned(event.offsetX, event.offsetY);
116
+ this.streamMessageController.toStreamerHandlers.get('MouseDouble')([event.button, coord.x, coord.y]);
117
+ }
118
+ }