PIXI Controls: Improve physical gamepads support
This commit is contained in:
parent
c5b1581019
commit
a7d628416f
1 changed files with 21 additions and 19 deletions
|
@ -476,30 +476,36 @@ VirtualGamepad.gamepad = {
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// * Replace first gamepad with virtual
|
// * Replace first gamepad with virtual
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
VirtualGamepad.replaceNavigator = function() {
|
VirtualGamepad._originalNavigator = navigator.getGamepads;
|
||||||
var gamepads = navigator.getGamepads();
|
VirtualGamepad.updateNavigator = function() {
|
||||||
|
var gamepads = VirtualGamepad._originalNavigator.call(navigator);
|
||||||
|
console.log(gamepads);
|
||||||
navigator.getGamepads = function() {
|
navigator.getGamepads = function() {
|
||||||
var index = ONSControls.options.gamepadIndex;
|
var index = ONSControls.options.gamepadIndex;
|
||||||
gamepads[index] = VirtualGamepad.gamepad;
|
gamepads[index] = VirtualGamepad.gamepad;
|
||||||
return gamepads;
|
return gamepads;
|
||||||
}
|
}
|
||||||
|
console.log("ONSControls: Navigator updated");
|
||||||
}
|
}
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// * Connect virtual gamepad
|
// * Connect virtual gamepad
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
VirtualGamepad.originalNavigator = navigator.getGamepads;
|
|
||||||
VirtualGamepad.connect = function () {
|
VirtualGamepad.connect = function () {
|
||||||
this.replaceNavigator();
|
this.updateNavigator();
|
||||||
const event = new Event("gamepadconnected");
|
|
||||||
event.gamepad = this.gamepad;
|
|
||||||
window.dispatchEvent(event);
|
|
||||||
console.log(`ONSControls: Virtual gamepad connected with index ${this.gamepad.index}`);
|
console.log(`ONSControls: Virtual gamepad connected with index ${this.gamepad.index}`);
|
||||||
}
|
}
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// * Disconnect virtual gamepad
|
// * Disconnect virtual gamepad
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
VirtualGamepad.disconnect = function () {
|
VirtualGamepad.disconnect = function () {
|
||||||
const event = new Event("gamepaddisconnected");
|
this.clearState();
|
||||||
|
//VirtualGamepad.originalNavigator.getGamepads.call();
|
||||||
|
console.log(`ONSControls: Virtual gamepad disconnected with index ${this.gamepad.index}`);
|
||||||
|
}
|
||||||
|
//=============================================================================
|
||||||
|
// * Clear state of all buttons
|
||||||
|
//=============================================================================
|
||||||
|
VirtualGamepad.clearState = function() {
|
||||||
this.gamepad.axes = [0, 0, 0, 0];
|
this.gamepad.axes = [0, 0, 0, 0];
|
||||||
this.gamepad.buttons = Array.apply(0, Array(17)).map(function () {
|
this.gamepad.buttons = Array.apply(0, Array(17)).map(function () {
|
||||||
return {
|
return {
|
||||||
|
@ -508,19 +514,15 @@ VirtualGamepad.disconnect = function () {
|
||||||
value: 0
|
value: 0
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
window.dispatchEvent(event);
|
|
||||||
//VirtualGamepad.originalNavigator.getGamepads.call();
|
|
||||||
console.log(`ONSControls: Virtual gamepad disconnected with index ${this.gamepad.index}`);
|
|
||||||
}
|
}
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// * Clear state of all buttons
|
// * Initialize virtual gamepad
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
VirtualGamepad.clearState = function() {
|
VirtualGamepad.initialize = function() {
|
||||||
for (button of VirtualGamepad.gamepad.buttons) {
|
this._originalNavigator.call(navigator);
|
||||||
button.pressed = false;
|
this.connect();
|
||||||
button.touched = false;
|
window.addEventListener('gamepadconnected', this.updateNavigator);
|
||||||
button.value = 0;
|
window.addEventListener('gamepaddisconnected', this.updateNavigator);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1001,6 +1003,6 @@ ONSControls.initialize = function() {
|
||||||
this.setupInteractive();
|
this.setupInteractive();
|
||||||
this.disableTouch();
|
this.disableTouch();
|
||||||
this.replaceBackEvent();
|
this.replaceBackEvent();
|
||||||
VirtualGamepad.connect();
|
VirtualGamepad.initialize();
|
||||||
Window_OmoMenuOptionsONSControls.prototype.add();
|
Window_OmoMenuOptionsONSControls.prototype.add();
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue