4e5df68b76f5d44f0b7cff18eb10d00a695a4b7e65754bbaee605393e98ec46d.json 23 KB

1
  1. {"ast":null,"code":"import { Observable } from \"../Misc/observable.js\";\nimport { IsWindowObjectExist } from \"../Misc/domManagement.js\";\nimport { Xbox360Pad } from \"./xboxGamepad.js\";\nimport { Gamepad, GenericPad } from \"./gamepad.js\";\nimport { DualShockPad } from \"./dualShockGamepad.js\";\nimport { Tools } from \"../Misc/tools.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * Manager for handling gamepads\n */\nexport class GamepadManager {\n /**\n * Initializes the gamepad manager\n * @param _scene BabylonJS scene\n */\n constructor(_scene) {\n this._scene = _scene;\n this._babylonGamepads = [];\n this._oneGamepadConnected = false;\n /** @internal */\n this._isMonitoring = false;\n /**\n * observable to be triggered when the gamepad controller has been disconnected\n */\n this.onGamepadDisconnectedObservable = new Observable();\n if (!IsWindowObjectExist()) {\n this._gamepadEventSupported = false;\n } else {\n this._gamepadEventSupported = \"GamepadEvent\" in window;\n this._gamepadSupport = navigator && navigator.getGamepads;\n }\n this.onGamepadConnectedObservable = new Observable(observer => {\n // This will be used to raise the onGamepadConnected for all gamepads ALREADY connected\n for (const i in this._babylonGamepads) {\n const gamepad = this._babylonGamepads[i];\n if (gamepad && gamepad._isConnected) {\n this.onGamepadConnectedObservable.notifyObserver(observer, gamepad);\n }\n }\n });\n this._onGamepadConnectedEvent = evt => {\n const gamepad = evt.gamepad;\n if (gamepad.index in this._babylonGamepads) {\n if (this._babylonGamepads[gamepad.index].isConnected) {\n return;\n }\n }\n let newGamepad;\n if (this._babylonGamepads[gamepad.index]) {\n newGamepad = this._babylonGamepads[gamepad.index];\n newGamepad.browserGamepad = gamepad;\n newGamepad._isConnected = true;\n } else {\n newGamepad = this._addNewGamepad(gamepad);\n }\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\n this._startMonitoringGamepads();\n };\n this._onGamepadDisconnectedEvent = evt => {\n const gamepad = evt.gamepad;\n // Remove the gamepad from the list of gamepads to monitor.\n for (const i in this._babylonGamepads) {\n if (this._babylonGamepads[i].index === gamepad.index) {\n const disconnectedGamepad = this._babylonGamepads[i];\n disconnectedGamepad._isConnected = false;\n this.onGamepadDisconnectedObservable.notifyObservers(disconnectedGamepad);\n disconnectedGamepad.dispose && disconnectedGamepad.dispose();\n break;\n }\n }\n };\n if (this._gamepadSupport) {\n //first add already-connected gamepads\n this._updateGamepadObjects();\n if (this._babylonGamepads.length) {\n this._startMonitoringGamepads();\n }\n // Checking if the gamepad connected event is supported (like in Firefox)\n if (this._gamepadEventSupported) {\n const hostWindow = this._scene ? this._scene.getEngine().getHostWindow() : window;\n if (hostWindow) {\n hostWindow.addEventListener(\"gamepadconnected\", this._onGamepadConnectedEvent, false);\n hostWindow.addEventListener(\"gamepaddisconnected\", this._onGamepadDisconnectedEvent, false);\n }\n } else {\n this._startMonitoringGamepads();\n }\n }\n }\n /**\n * The gamepads in the game pad manager\n */\n get gamepads() {\n return this._babylonGamepads;\n }\n /**\n * Get the gamepad controllers based on type\n * @param type The type of gamepad controller\n * @returns Nullable gamepad\n */\n getGamepadByType(type = Gamepad.XBOX) {\n for (const gamepad of this._babylonGamepads) {\n if (gamepad && gamepad.type === type) {\n return gamepad;\n }\n }\n return null;\n }\n /**\n * Disposes the gamepad manager\n */\n dispose() {\n if (this._gamepadEventSupported) {\n if (this._onGamepadConnectedEvent) {\n window.removeEventListener(\"gamepadconnected\", this._onGamepadConnectedEvent);\n }\n if (this._onGamepadDisconnectedEvent) {\n window.removeEventListener(\"gamepaddisconnected\", this._onGamepadDisconnectedEvent);\n }\n this._onGamepadConnectedEvent = null;\n this._onGamepadDisconnectedEvent = null;\n }\n this._babylonGamepads.forEach(gamepad => {\n gamepad.dispose();\n });\n this.onGamepadConnectedObservable.clear();\n this.onGamepadDisconnectedObservable.clear();\n this._oneGamepadConnected = false;\n this._stopMonitoringGamepads();\n this._babylonGamepads = [];\n }\n _addNewGamepad(gamepad) {\n if (!this._oneGamepadConnected) {\n this._oneGamepadConnected = true;\n }\n let newGamepad;\n const dualShock = gamepad.id.search(\"054c\") !== -1 && gamepad.id.search(\"0ce6\") === -1;\n const xboxOne = gamepad.id.search(\"Xbox One\") !== -1;\n if (xboxOne || gamepad.id.search(\"Xbox 360\") !== -1 || gamepad.id.search(\"xinput\") !== -1 || gamepad.id.search(\"045e\") !== -1 && gamepad.id.search(\"Surface Dock\") === -1) {\n // make sure the Surface Dock Extender is not detected as an xbox controller\n newGamepad = new Xbox360Pad(gamepad.id, gamepad.index, gamepad, xboxOne);\n } else if (dualShock) {\n newGamepad = new DualShockPad(gamepad.id, gamepad.index, gamepad);\n } else {\n newGamepad = new GenericPad(gamepad.id, gamepad.index, gamepad);\n }\n this._babylonGamepads[newGamepad.index] = newGamepad;\n return newGamepad;\n }\n _startMonitoringGamepads() {\n if (!this._isMonitoring) {\n this._isMonitoring = true;\n //back-comp\n this._checkGamepadsStatus();\n }\n }\n _stopMonitoringGamepads() {\n this._isMonitoring = false;\n }\n /** @internal */\n _checkGamepadsStatus() {\n // Hack to be compatible Chrome\n this._updateGamepadObjects();\n for (const i in this._babylonGamepads) {\n const gamepad = this._babylonGamepads[i];\n if (!gamepad || !gamepad.isConnected) {\n continue;\n }\n try {\n gamepad.update();\n } catch {\n if (this._loggedErrors.indexOf(gamepad.index) === -1) {\n Tools.Warn(`Error updating gamepad ${gamepad.id}`);\n this._loggedErrors.push(gamepad.index);\n }\n }\n }\n if (this._isMonitoring) {\n AbstractEngine.QueueNewFrame(() => {\n this._checkGamepadsStatus();\n });\n }\n }\n // This function is called only on Chrome, which does not properly support\n // connection/disconnection events and forces you to recopy again the gamepad object\n _updateGamepadObjects() {\n const gamepads = navigator.getGamepads ? navigator.getGamepads() : [];\n for (let i = 0; i < gamepads.length; i++) {\n const gamepad = gamepads[i];\n if (gamepad) {\n if (!this._babylonGamepads[gamepad.index]) {\n const newGamepad = this._addNewGamepad(gamepad);\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\n } else {\n // Forced to copy again this object for Chrome for unknown reason\n this._babylonGamepads[i].browserGamepad = gamepad;\n if (!this._babylonGamepads[i].isConnected) {\n this._babylonGamepads[i]._isConnected = true;\n this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[i]);\n }\n }\n }\n }\n }\n}","map":{"version":3,"names":["Observable","IsWindowObjectExist","Xbox360Pad","Gamepad","GenericPad","DualShockPad","Tools","AbstractEngine","GamepadManager","constructor","_scene","_babylonGamepads","_oneGamepadConnected","_isMonitoring","onGamepadDisconnectedObservable","_gamepadEventSupported","window","_gamepadSupport","navigator","getGamepads","onGamepadConnectedObservable","observer","i","gamepad","_isConnected","notifyObserver","_onGamepadConnectedEvent","evt","index","isConnected","newGamepad","browserGamepad","_addNewGamepad","notifyObservers","_startMonitoringGamepads","_onGamepadDisconnectedEvent","disconnectedGamepad","dispose","_updateGamepadObjects","length","hostWindow","getEngine","getHostWindow","addEventListener","gamepads","getGamepadByType","type","XBOX","removeEventListener","forEach","clear","_stopMonitoringGamepads","dualShock","id","search","xboxOne","_checkGamepadsStatus","update","_loggedErrors","indexOf","Warn","push","QueueNewFrame"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Gamepads/gamepadManager.js"],"sourcesContent":["import { Observable } from \"../Misc/observable.js\";\nimport { IsWindowObjectExist } from \"../Misc/domManagement.js\";\nimport { Xbox360Pad } from \"./xboxGamepad.js\";\nimport { Gamepad, GenericPad } from \"./gamepad.js\";\nimport { DualShockPad } from \"./dualShockGamepad.js\";\nimport { Tools } from \"../Misc/tools.js\";\nimport { AbstractEngine } from \"../Engines/abstractEngine.js\";\n/**\n * Manager for handling gamepads\n */\nexport class GamepadManager {\n /**\n * Initializes the gamepad manager\n * @param _scene BabylonJS scene\n */\n constructor(_scene) {\n this._scene = _scene;\n this._babylonGamepads = [];\n this._oneGamepadConnected = false;\n /** @internal */\n this._isMonitoring = false;\n /**\n * observable to be triggered when the gamepad controller has been disconnected\n */\n this.onGamepadDisconnectedObservable = new Observable();\n if (!IsWindowObjectExist()) {\n this._gamepadEventSupported = false;\n }\n else {\n this._gamepadEventSupported = \"GamepadEvent\" in window;\n this._gamepadSupport = navigator && navigator.getGamepads;\n }\n this.onGamepadConnectedObservable = new Observable((observer) => {\n // This will be used to raise the onGamepadConnected for all gamepads ALREADY connected\n for (const i in this._babylonGamepads) {\n const gamepad = this._babylonGamepads[i];\n if (gamepad && gamepad._isConnected) {\n this.onGamepadConnectedObservable.notifyObserver(observer, gamepad);\n }\n }\n });\n this._onGamepadConnectedEvent = (evt) => {\n const gamepad = evt.gamepad;\n if (gamepad.index in this._babylonGamepads) {\n if (this._babylonGamepads[gamepad.index].isConnected) {\n return;\n }\n }\n let newGamepad;\n if (this._babylonGamepads[gamepad.index]) {\n newGamepad = this._babylonGamepads[gamepad.index];\n newGamepad.browserGamepad = gamepad;\n newGamepad._isConnected = true;\n }\n else {\n newGamepad = this._addNewGamepad(gamepad);\n }\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\n this._startMonitoringGamepads();\n };\n this._onGamepadDisconnectedEvent = (evt) => {\n const gamepad = evt.gamepad;\n // Remove the gamepad from the list of gamepads to monitor.\n for (const i in this._babylonGamepads) {\n if (this._babylonGamepads[i].index === gamepad.index) {\n const disconnectedGamepad = this._babylonGamepads[i];\n disconnectedGamepad._isConnected = false;\n this.onGamepadDisconnectedObservable.notifyObservers(disconnectedGamepad);\n disconnectedGamepad.dispose && disconnectedGamepad.dispose();\n break;\n }\n }\n };\n if (this._gamepadSupport) {\n //first add already-connected gamepads\n this._updateGamepadObjects();\n if (this._babylonGamepads.length) {\n this._startMonitoringGamepads();\n }\n // Checking if the gamepad connected event is supported (like in Firefox)\n if (this._gamepadEventSupported) {\n const hostWindow = this._scene ? this._scene.getEngine().getHostWindow() : window;\n if (hostWindow) {\n hostWindow.addEventListener(\"gamepadconnected\", this._onGamepadConnectedEvent, false);\n hostWindow.addEventListener(\"gamepaddisconnected\", this._onGamepadDisconnectedEvent, false);\n }\n }\n else {\n this._startMonitoringGamepads();\n }\n }\n }\n /**\n * The gamepads in the game pad manager\n */\n get gamepads() {\n return this._babylonGamepads;\n }\n /**\n * Get the gamepad controllers based on type\n * @param type The type of gamepad controller\n * @returns Nullable gamepad\n */\n getGamepadByType(type = Gamepad.XBOX) {\n for (const gamepad of this._babylonGamepads) {\n if (gamepad && gamepad.type === type) {\n return gamepad;\n }\n }\n return null;\n }\n /**\n * Disposes the gamepad manager\n */\n dispose() {\n if (this._gamepadEventSupported) {\n if (this._onGamepadConnectedEvent) {\n window.removeEventListener(\"gamepadconnected\", this._onGamepadConnectedEvent);\n }\n if (this._onGamepadDisconnectedEvent) {\n window.removeEventListener(\"gamepaddisconnected\", this._onGamepadDisconnectedEvent);\n }\n this._onGamepadConnectedEvent = null;\n this._onGamepadDisconnectedEvent = null;\n }\n this._babylonGamepads.forEach((gamepad) => {\n gamepad.dispose();\n });\n this.onGamepadConnectedObservable.clear();\n this.onGamepadDisconnectedObservable.clear();\n this._oneGamepadConnected = false;\n this._stopMonitoringGamepads();\n this._babylonGamepads = [];\n }\n _addNewGamepad(gamepad) {\n if (!this._oneGamepadConnected) {\n this._oneGamepadConnected = true;\n }\n let newGamepad;\n const dualShock = gamepad.id.search(\"054c\") !== -1 && gamepad.id.search(\"0ce6\") === -1;\n const xboxOne = gamepad.id.search(\"Xbox One\") !== -1;\n if (xboxOne ||\n gamepad.id.search(\"Xbox 360\") !== -1 ||\n gamepad.id.search(\"xinput\") !== -1 ||\n (gamepad.id.search(\"045e\") !== -1 && gamepad.id.search(\"Surface Dock\") === -1)) {\n // make sure the Surface Dock Extender is not detected as an xbox controller\n newGamepad = new Xbox360Pad(gamepad.id, gamepad.index, gamepad, xboxOne);\n }\n else if (dualShock) {\n newGamepad = new DualShockPad(gamepad.id, gamepad.index, gamepad);\n }\n else {\n newGamepad = new GenericPad(gamepad.id, gamepad.index, gamepad);\n }\n this._babylonGamepads[newGamepad.index] = newGamepad;\n return newGamepad;\n }\n _startMonitoringGamepads() {\n if (!this._isMonitoring) {\n this._isMonitoring = true;\n //back-comp\n this._checkGamepadsStatus();\n }\n }\n _stopMonitoringGamepads() {\n this._isMonitoring = false;\n }\n /** @internal */\n _checkGamepadsStatus() {\n // Hack to be compatible Chrome\n this._updateGamepadObjects();\n for (const i in this._babylonGamepads) {\n const gamepad = this._babylonGamepads[i];\n if (!gamepad || !gamepad.isConnected) {\n continue;\n }\n try {\n gamepad.update();\n }\n catch {\n if (this._loggedErrors.indexOf(gamepad.index) === -1) {\n Tools.Warn(`Error updating gamepad ${gamepad.id}`);\n this._loggedErrors.push(gamepad.index);\n }\n }\n }\n if (this._isMonitoring) {\n AbstractEngine.QueueNewFrame(() => {\n this._checkGamepadsStatus();\n });\n }\n }\n // This function is called only on Chrome, which does not properly support\n // connection/disconnection events and forces you to recopy again the gamepad object\n _updateGamepadObjects() {\n const gamepads = navigator.getGamepads ? navigator.getGamepads() : [];\n for (let i = 0; i < gamepads.length; i++) {\n const gamepad = gamepads[i];\n if (gamepad) {\n if (!this._babylonGamepads[gamepad.index]) {\n const newGamepad = this._addNewGamepad(gamepad);\n this.onGamepadConnectedObservable.notifyObservers(newGamepad);\n }\n else {\n // Forced to copy again this object for Chrome for unknown reason\n this._babylonGamepads[i].browserGamepad = gamepad;\n if (!this._babylonGamepads[i].isConnected) {\n this._babylonGamepads[i]._isConnected = true;\n this.onGamepadConnectedObservable.notifyObservers(this._babylonGamepads[i]);\n }\n }\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}