mirror of
https://github.com/redphx/better-xcloud.git
synced 2025-06-06 23:57:19 +02:00
Update better-xcloud.user.js
This commit is contained in:
parent
fb1ce5306d
commit
03d5550f05
114
dist/better-xcloud.user.js
vendored
114
dist/better-xcloud.user.js
vendored
@ -3041,6 +3041,7 @@ class PointerClient {
|
|||||||
this.#socket?.close();
|
this.#socket?.close();
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
}
|
}
|
||||||
|
this.#socket = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3062,7 +3063,6 @@ class NativeMkbHandler extends MkbHandler {
|
|||||||
}
|
}
|
||||||
static instance;
|
static instance;
|
||||||
#pointerClient;
|
#pointerClient;
|
||||||
#connected = false;
|
|
||||||
#enabled = false;
|
#enabled = false;
|
||||||
#currentButtons = 0;
|
#currentButtons = 0;
|
||||||
#inputSink;
|
#inputSink;
|
||||||
@ -3126,22 +3126,39 @@ class NativeMkbHandler extends MkbHandler {
|
|||||||
document.documentElement.appendChild(this.#$message);
|
document.documentElement.appendChild(this.#$message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
handleEvent(event) {
|
||||||
|
switch (event.type) {
|
||||||
|
case "keyup":
|
||||||
|
this.#onKeyboardEvent(event);
|
||||||
|
break;
|
||||||
|
case BxEvent.XCLOUD_DIALOG_SHOWN:
|
||||||
|
this.#onDialogShown();
|
||||||
|
break;
|
||||||
|
case BxEvent.POINTER_LOCK_REQUESTED:
|
||||||
|
this.#onPointerLockRequested(event);
|
||||||
|
break;
|
||||||
|
case BxEvent.POINTER_LOCK_EXITED:
|
||||||
|
this.#onPointerLockExited(event);
|
||||||
|
break;
|
||||||
|
case BxEvent.XCLOUD_POLLING_MODE_CHANGED:
|
||||||
|
this.#onPollingModeChanged(event);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
init() {
|
init() {
|
||||||
this.#pointerClient = PointerClient.getInstance();
|
this.#pointerClient = PointerClient.getInstance();
|
||||||
this.#connected = false;
|
|
||||||
this.#inputSink = window.BX_EXPOSED.inputSink;
|
this.#inputSink = window.BX_EXPOSED.inputSink;
|
||||||
this.#updateInputConfigurationAsync(false);
|
this.#updateInputConfigurationAsync(false);
|
||||||
try {
|
try {
|
||||||
this.#pointerClient.start(this);
|
this.#pointerClient.start(this);
|
||||||
this.#connected = true;
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Toast.show("Cannot enable Mouse & Keyboard feature");
|
Toast.show("Cannot enable Mouse & Keyboard feature");
|
||||||
}
|
}
|
||||||
window.addEventListener("keyup", this.#onKeyboardEvent.bind(this));
|
window.addEventListener("keyup", this);
|
||||||
window.addEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this.#onDialogShown.bind(this));
|
window.addEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this);
|
||||||
window.addEventListener(BxEvent.POINTER_LOCK_REQUESTED, this.#onPointerLockRequested.bind(this));
|
window.addEventListener(BxEvent.POINTER_LOCK_REQUESTED, this);
|
||||||
window.addEventListener(BxEvent.POINTER_LOCK_EXITED, this.#onPointerLockExited.bind(this));
|
window.addEventListener(BxEvent.POINTER_LOCK_EXITED, this);
|
||||||
window.addEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this.#onPollingModeChanged);
|
window.addEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this);
|
||||||
this.#initMessage();
|
this.#initMessage();
|
||||||
if (AppInterface) {
|
if (AppInterface) {
|
||||||
Toast.show(t("press-key-to-toggle-mkb", { key: `<b>F8</b>` }), t("native-mkb"), { html: true });
|
Toast.show(t("press-key-to-toggle-mkb", { key: `<b>F8</b>` }), t("native-mkb"), { html: true });
|
||||||
@ -3167,6 +3184,7 @@ class NativeMkbHandler extends MkbHandler {
|
|||||||
window.BX_EXPOSED.streamSession.updateInputConfigurationAsync({
|
window.BX_EXPOSED.streamSession.updateInputConfigurationAsync({
|
||||||
enableKeyboardInput: enabled,
|
enableKeyboardInput: enabled,
|
||||||
enableMouseInput: enabled,
|
enableMouseInput: enabled,
|
||||||
|
enableAbsoluteMouse: false,
|
||||||
enableTouchInput: false
|
enableTouchInput: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -3185,13 +3203,13 @@ class NativeMkbHandler extends MkbHandler {
|
|||||||
this.#$message?.classList.remove("bx-gone");
|
this.#$message?.classList.remove("bx-gone");
|
||||||
}
|
}
|
||||||
destroy() {
|
destroy() {
|
||||||
window.removeEventListener("keyup", this.#onKeyboardEvent);
|
this.#pointerClient?.stop();
|
||||||
window.removeEventListener(BxEvent.POINTER_LOCK_REQUESTED, this.#onPointerLockRequested);
|
window.removeEventListener("keyup", this);
|
||||||
window.removeEventListener(BxEvent.POINTER_LOCK_EXITED, this.#onPointerLockExited);
|
window.removeEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this);
|
||||||
window.removeEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this.#onPollingModeChanged);
|
window.removeEventListener(BxEvent.POINTER_LOCK_REQUESTED, this);
|
||||||
window.removeEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this.#onDialogShown);
|
window.removeEventListener(BxEvent.POINTER_LOCK_EXITED, this);
|
||||||
|
window.removeEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this);
|
||||||
this.#$message?.classList.add("bx-gone");
|
this.#$message?.classList.add("bx-gone");
|
||||||
this.#connected && this.#pointerClient?.stop();
|
|
||||||
}
|
}
|
||||||
handleMouseMove(data) {
|
handleMouseMove(data) {
|
||||||
this.#sendMouseInput({
|
this.#sendMouseInput({
|
||||||
@ -3639,6 +3657,16 @@ class EmulatedMkbHandler extends MkbHandler {
|
|||||||
#onPointerLockExited = () => {
|
#onPointerLockExited = () => {
|
||||||
this.#mouseDataProvider?.stop();
|
this.#mouseDataProvider?.stop();
|
||||||
};
|
};
|
||||||
|
handleEvent(event) {
|
||||||
|
switch (event.type) {
|
||||||
|
case BxEvent.POINTER_LOCK_REQUESTED:
|
||||||
|
this.#onPointerLockRequested();
|
||||||
|
break;
|
||||||
|
case BxEvent.POINTER_LOCK_EXITED:
|
||||||
|
this.#onPointerLockExited();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
init = () => {
|
init = () => {
|
||||||
this.refreshPresetData();
|
this.refreshPresetData();
|
||||||
this.#enabled = false;
|
this.#enabled = false;
|
||||||
@ -3653,8 +3681,8 @@ class EmulatedMkbHandler extends MkbHandler {
|
|||||||
window.addEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this.#onPollingModeChanged);
|
window.addEventListener(BxEvent.XCLOUD_POLLING_MODE_CHANGED, this.#onPollingModeChanged);
|
||||||
window.addEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this.#onDialogShown);
|
window.addEventListener(BxEvent.XCLOUD_DIALOG_SHOWN, this.#onDialogShown);
|
||||||
if (AppInterface) {
|
if (AppInterface) {
|
||||||
window.addEventListener(BxEvent.POINTER_LOCK_REQUESTED, this.#onPointerLockRequested.bind(this));
|
window.addEventListener(BxEvent.POINTER_LOCK_REQUESTED, this);
|
||||||
window.addEventListener(BxEvent.POINTER_LOCK_EXITED, this.#onPointerLockExited.bind(this));
|
window.addEventListener(BxEvent.POINTER_LOCK_EXITED, this);
|
||||||
} else {
|
} else {
|
||||||
document.addEventListener("pointerlockchange", this.#onPointerLockChange);
|
document.addEventListener("pointerlockchange", this.#onPointerLockChange);
|
||||||
document.addEventListener("pointerlockerror", this.#onPointerLockError);
|
document.addEventListener("pointerlockerror", this.#onPointerLockError);
|
||||||
@ -3677,8 +3705,8 @@ class EmulatedMkbHandler extends MkbHandler {
|
|||||||
window.removeEventListener("keydown", this.#onKeyboardEvent);
|
window.removeEventListener("keydown", this.#onKeyboardEvent);
|
||||||
window.removeEventListener("keyup", this.#onKeyboardEvent);
|
window.removeEventListener("keyup", this.#onKeyboardEvent);
|
||||||
if (AppInterface) {
|
if (AppInterface) {
|
||||||
window.removeEventListener(BxEvent.POINTER_LOCK_REQUESTED, this.#onPointerLockRequested.bind(this));
|
window.removeEventListener(BxEvent.POINTER_LOCK_REQUESTED, this);
|
||||||
window.removeEventListener(BxEvent.POINTER_LOCK_EXITED, this.#onPointerLockExited.bind(this));
|
window.removeEventListener(BxEvent.POINTER_LOCK_EXITED, this);
|
||||||
} else {
|
} else {
|
||||||
document.removeEventListener("pointerlockchange", this.#onPointerLockChange);
|
document.removeEventListener("pointerlockchange", this.#onPointerLockChange);
|
||||||
document.removeEventListener("pointerlockerror", this.#onPointerLockError);
|
document.removeEventListener("pointerlockerror", this.#onPointerLockError);
|
||||||
@ -8012,7 +8040,7 @@ window.dispatchEvent(new Event("${BxEvent.TOUCH_LAYOUT_MANAGER_READY}"));
|
|||||||
const newCode = `
|
const newCode = `
|
||||||
if (window.BX_EXPOSED.stopTakRendering) {
|
if (window.BX_EXPOSED.stopTakRendering) {
|
||||||
try {
|
try {
|
||||||
document.getElementById('BabylonCanvasContainer-main')?.parentElement.remove();
|
document.getElementById('BabylonCanvasContainer-main')?.parentElement.classList.add('bx-offscreen');
|
||||||
|
|
||||||
${rendererVar}.current.dispose();
|
${rendererVar}.current.dispose();
|
||||||
} catch (e) {}
|
} catch (e) {}
|
||||||
@ -9124,17 +9152,13 @@ function patchPointerLockApi() {
|
|||||||
return pointerLockElement;
|
return pointerLockElement;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const nativeRequestPointerLock = HTMLElement.prototype.requestPointerLock;
|
|
||||||
HTMLElement.prototype.requestPointerLock = function() {
|
HTMLElement.prototype.requestPointerLock = function() {
|
||||||
pointerLockElement = document.documentElement;
|
pointerLockElement = document.documentElement;
|
||||||
window.dispatchEvent(new Event(BxEvent.POINTER_LOCK_REQUESTED));
|
window.dispatchEvent(new Event(BxEvent.POINTER_LOCK_REQUESTED));
|
||||||
nativeRequestPointerLock.apply(this, arguments);
|
|
||||||
};
|
};
|
||||||
const nativeExitPointerLock = Document.prototype.exitPointerLock;
|
|
||||||
Document.prototype.exitPointerLock = function() {
|
Document.prototype.exitPointerLock = function() {
|
||||||
pointerLockElement = null;
|
pointerLockElement = null;
|
||||||
window.dispatchEvent(new Event(BxEvent.POINTER_LOCK_EXITED));
|
window.dispatchEvent(new Event(BxEvent.POINTER_LOCK_EXITED));
|
||||||
nativeExitPointerLock.apply(this);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9344,6 +9368,27 @@ class GameBar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// src/index.ts
|
// src/index.ts
|
||||||
|
var unload = function() {
|
||||||
|
if (!STATES.isPlaying) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
STATES.isPlaying = false;
|
||||||
|
STATES.currentStream = {};
|
||||||
|
window.BX_EXPOSED.shouldShowSensorControls = false;
|
||||||
|
window.BX_EXPOSED.stopTakRendering = false;
|
||||||
|
EmulatedMkbHandler.INSTANCE.destroy();
|
||||||
|
NativeMkbHandler.getInstance().destroy();
|
||||||
|
const $streamSettingsDialog = document.querySelector(".bx-stream-settings-dialog");
|
||||||
|
if ($streamSettingsDialog) {
|
||||||
|
$streamSettingsDialog.classList.add("bx-gone");
|
||||||
|
}
|
||||||
|
STATES.currentStream.audioGainNode = null;
|
||||||
|
STATES.currentStream.$video = null;
|
||||||
|
StreamStats.getInstance().onStoppedPlaying();
|
||||||
|
MouseCursorHider.stop();
|
||||||
|
TouchController.reset();
|
||||||
|
GameBar.getInstance().disable();
|
||||||
|
};
|
||||||
var observeRootDialog = function($root) {
|
var observeRootDialog = function($root) {
|
||||||
let currentShown = false;
|
let currentShown = false;
|
||||||
const observer = new MutationObserver((mutationList) => {
|
const observer = new MutationObserver((mutationList) => {
|
||||||
@ -9519,27 +9564,8 @@ window.addEventListener(BxEvent.STREAM_PLAYING, (e) => {
|
|||||||
window.addEventListener(BxEvent.STREAM_ERROR_PAGE, (e) => {
|
window.addEventListener(BxEvent.STREAM_ERROR_PAGE, (e) => {
|
||||||
BxEvent.dispatch(window, BxEvent.STREAM_STOPPED);
|
BxEvent.dispatch(window, BxEvent.STREAM_STOPPED);
|
||||||
});
|
});
|
||||||
window.addEventListener(BxEvent.STREAM_STOPPED, (e) => {
|
window.addEventListener(BxEvent.STREAM_STOPPED, unload);
|
||||||
if (!STATES.isPlaying) {
|
window.addEventListener("beforeunload", unload);
|
||||||
return;
|
|
||||||
}
|
|
||||||
STATES.isPlaying = false;
|
|
||||||
STATES.currentStream = {};
|
|
||||||
window.BX_EXPOSED.shouldShowSensorControls = false;
|
|
||||||
window.BX_EXPOSED.stopTakRendering = false;
|
|
||||||
EmulatedMkbHandler.INSTANCE.destroy();
|
|
||||||
NativeMkbHandler.getInstance().destroy();
|
|
||||||
const $streamSettingsDialog = document.querySelector(".bx-stream-settings-dialog");
|
|
||||||
if ($streamSettingsDialog) {
|
|
||||||
$streamSettingsDialog.classList.add("bx-gone");
|
|
||||||
}
|
|
||||||
STATES.currentStream.audioGainNode = null;
|
|
||||||
STATES.currentStream.$video = null;
|
|
||||||
StreamStats.getInstance().onStoppedPlaying();
|
|
||||||
MouseCursorHider.stop();
|
|
||||||
TouchController.reset();
|
|
||||||
GameBar.getInstance().disable();
|
|
||||||
});
|
|
||||||
window.addEventListener(BxEvent.CAPTURE_SCREENSHOT, (e) => {
|
window.addEventListener(BxEvent.CAPTURE_SCREENSHOT, (e) => {
|
||||||
Screenshot.takeScreenshot();
|
Screenshot.takeScreenshot();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user