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
|
||||
//=============================================================================
|
||||
VirtualGamepad.replaceNavigator = function() {
|
||||
var gamepads = navigator.getGamepads();
|
||||
VirtualGamepad._originalNavigator = navigator.getGamepads;
|
||||
VirtualGamepad.updateNavigator = function() {
|
||||
var gamepads = VirtualGamepad._originalNavigator.call(navigator);
|
||||
console.log(gamepads);
|
||||
navigator.getGamepads = function() {
|
||||
var index = ONSControls.options.gamepadIndex;
|
||||
gamepads[index] = VirtualGamepad.gamepad;
|
||||
return gamepads;
|
||||
}
|
||||
console.log("ONSControls: Navigator updated");
|
||||
}
|
||||
//=============================================================================
|
||||
// * Connect virtual gamepad
|
||||
//=============================================================================
|
||||
VirtualGamepad.originalNavigator = navigator.getGamepads;
|
||||
VirtualGamepad.connect = function () {
|
||||
this.replaceNavigator();
|
||||
const event = new Event("gamepadconnected");
|
||||
event.gamepad = this.gamepad;
|
||||
window.dispatchEvent(event);
|
||||
this.updateNavigator();
|
||||
console.log(`ONSControls: Virtual gamepad connected with index ${this.gamepad.index}`);
|
||||
}
|
||||
//=============================================================================
|
||||
// * Disconnect virtual gamepad
|
||||
//=============================================================================
|
||||
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.buttons = Array.apply(0, Array(17)).map(function () {
|
||||
return {
|
||||
|
@ -508,19 +514,15 @@ VirtualGamepad.disconnect = function () {
|
|||
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() {
|
||||
for (button of VirtualGamepad.gamepad.buttons) {
|
||||
button.pressed = false;
|
||||
button.touched = false;
|
||||
button.value = 0;
|
||||
}
|
||||
VirtualGamepad.initialize = function() {
|
||||
this._originalNavigator.call(navigator);
|
||||
this.connect();
|
||||
window.addEventListener('gamepadconnected', this.updateNavigator);
|
||||
window.addEventListener('gamepaddisconnected', this.updateNavigator);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1001,6 +1003,6 @@ ONSControls.initialize = function() {
|
|||
this.setupInteractive();
|
||||
this.disableTouch();
|
||||
this.replaceBackEvent();
|
||||
VirtualGamepad.connect();
|
||||
VirtualGamepad.initialize();
|
||||
Window_OmoMenuOptionsONSControls.prototype.add();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue