b62b460f0901e3bcd865e1e2a8ce687dbe3b680b7865e2c5c618bae80a50cdb2.json 14 KB

1
  1. {"ast":null,"code":"import { Observable } from \"../Misc/observable.js\";\nimport { WebXRInputSource } from \"./webXRInputSource.js\";\nimport { WebXRMotionControllerManager } from \"./motionController/webXRMotionControllerManager.js\";\n/**\n * XR input used to track XR inputs such as controllers/rays\n */\nexport class WebXRInput {\n /**\n * Initializes the WebXRInput\n * @param xrSessionManager the xr session manager for this session\n * @param xrCamera the WebXR camera for this session. Mainly used for teleportation\n * @param _options = initialization options for this xr input\n */\n constructor(\n /**\n * the xr session manager for this session\n */\n xrSessionManager,\n /**\n * the WebXR camera for this session. Mainly used for teleportation\n */\n xrCamera, _options = {}) {\n this.xrSessionManager = xrSessionManager;\n this.xrCamera = xrCamera;\n this._options = _options;\n /**\n * XR controllers being tracked\n */\n this.controllers = [];\n /**\n * Event when a controller has been connected/added\n */\n this.onControllerAddedObservable = new Observable();\n /**\n * Event when a controller has been removed/disconnected\n */\n this.onControllerRemovedObservable = new Observable();\n this._onInputSourcesChange = event => {\n this._addAndRemoveControllers(event.added, event.removed);\n };\n // Remove controllers when exiting XR\n this._sessionEndedObserver = this.xrSessionManager.onXRSessionEnded.add(() => {\n this._addAndRemoveControllers([], this.controllers.map(c => {\n return c.inputSource;\n }));\n });\n this._sessionInitObserver = this.xrSessionManager.onXRSessionInit.add(session => {\n session.addEventListener(\"inputsourceschange\", this._onInputSourcesChange);\n });\n this._frameObserver = this.xrSessionManager.onXRFrameObservable.add(frame => {\n // Update controller pose info\n this.controllers.forEach(controller => {\n controller.updateFromXRFrame(frame, this.xrSessionManager.referenceSpace, this.xrCamera, this.xrSessionManager);\n });\n });\n if (this._options.customControllersRepositoryURL) {\n WebXRMotionControllerManager.BaseRepositoryUrl = this._options.customControllersRepositoryURL;\n }\n WebXRMotionControllerManager.UseOnlineRepository = !this._options.disableOnlineControllerRepository;\n if (WebXRMotionControllerManager.UseOnlineRepository) {\n // pre-load the profiles list to load the controllers quicker afterwards\n try {\n WebXRMotionControllerManager.UpdateProfilesList().catch(() => {\n WebXRMotionControllerManager.UseOnlineRepository = false;\n });\n } catch (e) {\n WebXRMotionControllerManager.UseOnlineRepository = false;\n }\n }\n }\n _addAndRemoveControllers(addInputs, removeInputs) {\n // Add controllers if they don't already exist\n const sources = this.controllers.map(c => {\n return c.inputSource;\n });\n for (const input of addInputs) {\n if (sources.indexOf(input) === -1) {\n const controller = new WebXRInputSource(this.xrSessionManager.scene, input, {\n ...(this._options.controllerOptions || {}),\n forceControllerProfile: this._options.forceInputProfile,\n doNotLoadControllerMesh: this._options.doNotLoadControllerMeshes,\n disableMotionControllerAnimation: this._options.disableControllerAnimation\n });\n this.controllers.push(controller);\n this.onControllerAddedObservable.notifyObservers(controller);\n }\n }\n // Remove and dispose of controllers to be disposed\n const keepControllers = [];\n const removedControllers = [];\n this.controllers.forEach(c => {\n if (removeInputs.indexOf(c.inputSource) === -1) {\n keepControllers.push(c);\n } else {\n removedControllers.push(c);\n }\n });\n this.controllers = keepControllers;\n removedControllers.forEach(c => {\n this.onControllerRemovedObservable.notifyObservers(c);\n c.dispose();\n });\n }\n /**\n * Disposes of the object\n */\n dispose() {\n this.controllers.forEach(c => {\n c.dispose();\n });\n this.xrSessionManager.onXRFrameObservable.remove(this._frameObserver);\n this.xrSessionManager.onXRSessionInit.remove(this._sessionInitObserver);\n this.xrSessionManager.onXRSessionEnded.remove(this._sessionEndedObserver);\n this.onControllerAddedObservable.clear();\n this.onControllerRemovedObservable.clear();\n // clear the controller cache\n WebXRMotionControllerManager.ClearControllerCache();\n }\n}","map":{"version":3,"names":["Observable","WebXRInputSource","WebXRMotionControllerManager","WebXRInput","constructor","xrSessionManager","xrCamera","_options","controllers","onControllerAddedObservable","onControllerRemovedObservable","_onInputSourcesChange","event","_addAndRemoveControllers","added","removed","_sessionEndedObserver","onXRSessionEnded","add","map","c","inputSource","_sessionInitObserver","onXRSessionInit","session","addEventListener","_frameObserver","onXRFrameObservable","frame","forEach","controller","updateFromXRFrame","referenceSpace","customControllersRepositoryURL","BaseRepositoryUrl","UseOnlineRepository","disableOnlineControllerRepository","UpdateProfilesList","catch","e","addInputs","removeInputs","sources","input","indexOf","scene","controllerOptions","forceControllerProfile","forceInputProfile","doNotLoadControllerMesh","doNotLoadControllerMeshes","disableMotionControllerAnimation","disableControllerAnimation","push","notifyObservers","keepControllers","removedControllers","dispose","remove","clear","ClearControllerCache"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/XR/webXRInput.js"],"sourcesContent":["import { Observable } from \"../Misc/observable.js\";\nimport { WebXRInputSource } from \"./webXRInputSource.js\";\nimport { WebXRMotionControllerManager } from \"./motionController/webXRMotionControllerManager.js\";\n/**\n * XR input used to track XR inputs such as controllers/rays\n */\nexport class WebXRInput {\n /**\n * Initializes the WebXRInput\n * @param xrSessionManager the xr session manager for this session\n * @param xrCamera the WebXR camera for this session. Mainly used for teleportation\n * @param _options = initialization options for this xr input\n */\n constructor(\n /**\n * the xr session manager for this session\n */\n xrSessionManager, \n /**\n * the WebXR camera for this session. Mainly used for teleportation\n */\n xrCamera, _options = {}) {\n this.xrSessionManager = xrSessionManager;\n this.xrCamera = xrCamera;\n this._options = _options;\n /**\n * XR controllers being tracked\n */\n this.controllers = [];\n /**\n * Event when a controller has been connected/added\n */\n this.onControllerAddedObservable = new Observable();\n /**\n * Event when a controller has been removed/disconnected\n */\n this.onControllerRemovedObservable = new Observable();\n this._onInputSourcesChange = (event) => {\n this._addAndRemoveControllers(event.added, event.removed);\n };\n // Remove controllers when exiting XR\n this._sessionEndedObserver = this.xrSessionManager.onXRSessionEnded.add(() => {\n this._addAndRemoveControllers([], this.controllers.map((c) => {\n return c.inputSource;\n }));\n });\n this._sessionInitObserver = this.xrSessionManager.onXRSessionInit.add((session) => {\n session.addEventListener(\"inputsourceschange\", this._onInputSourcesChange);\n });\n this._frameObserver = this.xrSessionManager.onXRFrameObservable.add((frame) => {\n // Update controller pose info\n this.controllers.forEach((controller) => {\n controller.updateFromXRFrame(frame, this.xrSessionManager.referenceSpace, this.xrCamera, this.xrSessionManager);\n });\n });\n if (this._options.customControllersRepositoryURL) {\n WebXRMotionControllerManager.BaseRepositoryUrl = this._options.customControllersRepositoryURL;\n }\n WebXRMotionControllerManager.UseOnlineRepository = !this._options.disableOnlineControllerRepository;\n if (WebXRMotionControllerManager.UseOnlineRepository) {\n // pre-load the profiles list to load the controllers quicker afterwards\n try {\n WebXRMotionControllerManager.UpdateProfilesList().catch(() => {\n WebXRMotionControllerManager.UseOnlineRepository = false;\n });\n }\n catch (e) {\n WebXRMotionControllerManager.UseOnlineRepository = false;\n }\n }\n }\n _addAndRemoveControllers(addInputs, removeInputs) {\n // Add controllers if they don't already exist\n const sources = this.controllers.map((c) => {\n return c.inputSource;\n });\n for (const input of addInputs) {\n if (sources.indexOf(input) === -1) {\n const controller = new WebXRInputSource(this.xrSessionManager.scene, input, {\n ...(this._options.controllerOptions || {}),\n forceControllerProfile: this._options.forceInputProfile,\n doNotLoadControllerMesh: this._options.doNotLoadControllerMeshes,\n disableMotionControllerAnimation: this._options.disableControllerAnimation,\n });\n this.controllers.push(controller);\n this.onControllerAddedObservable.notifyObservers(controller);\n }\n }\n // Remove and dispose of controllers to be disposed\n const keepControllers = [];\n const removedControllers = [];\n this.controllers.forEach((c) => {\n if (removeInputs.indexOf(c.inputSource) === -1) {\n keepControllers.push(c);\n }\n else {\n removedControllers.push(c);\n }\n });\n this.controllers = keepControllers;\n removedControllers.forEach((c) => {\n this.onControllerRemovedObservable.notifyObservers(c);\n c.dispose();\n });\n }\n /**\n * Disposes of the object\n */\n dispose() {\n this.controllers.forEach((c) => {\n c.dispose();\n });\n this.xrSessionManager.onXRFrameObservable.remove(this._frameObserver);\n this.xrSessionManager.onXRSessionInit.remove(this._sessionInitObserver);\n this.xrSessionManager.onXRSessionEnded.remove(this._sessionEndedObserver);\n this.onControllerAddedObservable.clear();\n this.onControllerRemovedObservable.clear();\n // clear the controller cache\n WebXRMotionControllerManager.ClearControllerCache();\n }\n}\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,uBAAuB;AAClD,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,4BAA4B,QAAQ,oDAAoD;AACjG;AACA;AACA;AACA,OAAO,MAAMC,UAAU,CAAC;EACpB;AACJ;AACA;AACA;AACA;AACA;EACIC,WAAWA;EACX;AACJ;AACA;EACIC,gBAAgB;EAChB;AACJ;AACA;EACIC,QAAQ,EAAEC,QAAQ,GAAG,CAAC,CAAC,EAAE;IACrB,IAAI,CAACF,gBAAgB,GAAGA,gBAAgB;IACxC,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACC,QAAQ,GAAGA,QAAQ;IACxB;AACR;AACA;IACQ,IAAI,CAACC,WAAW,GAAG,EAAE;IACrB;AACR;AACA;IACQ,IAAI,CAACC,2BAA2B,GAAG,IAAIT,UAAU,CAAC,CAAC;IACnD;AACR;AACA;IACQ,IAAI,CAACU,6BAA6B,GAAG,IAAIV,UAAU,CAAC,CAAC;IACrD,IAAI,CAACW,qBAAqB,GAAIC,KAAK,IAAK;MACpC,IAAI,CAACC,wBAAwB,CAACD,KAAK,CAACE,KAAK,EAAEF,KAAK,CAACG,OAAO,CAAC;IAC7D,CAAC;IACD;IACA,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACX,gBAAgB,CAACY,gBAAgB,CAACC,GAAG,CAAC,MAAM;MAC1E,IAAI,CAACL,wBAAwB,CAAC,EAAE,EAAE,IAAI,CAACL,WAAW,CAACW,GAAG,CAAEC,CAAC,IAAK;QAC1D,OAAOA,CAAC,CAACC,WAAW;MACxB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACjB,gBAAgB,CAACkB,eAAe,CAACL,GAAG,CAAEM,OAAO,IAAK;MAC/EA,OAAO,CAACC,gBAAgB,CAAC,oBAAoB,EAAE,IAAI,CAACd,qBAAqB,CAAC;IAC9E,CAAC,CAAC;IACF,IAAI,CAACe,cAAc,GAAG,IAAI,CAACrB,gBAAgB,CAACsB,mBAAmB,CAACT,GAAG,CAAEU,KAAK,IAAK;MAC3E;MACA,IAAI,CAACpB,WAAW,CAACqB,OAAO,CAAEC,UAAU,IAAK;QACrCA,UAAU,CAACC,iBAAiB,CAACH,KAAK,EAAE,IAAI,CAACvB,gBAAgB,CAAC2B,cAAc,EAAE,IAAI,CAAC1B,QAAQ,EAAE,IAAI,CAACD,gBAAgB,CAAC;MACnH,CAAC,CAAC;IACN,CAAC,CAAC;IACF,IAAI,IAAI,CAACE,QAAQ,CAAC0B,8BAA8B,EAAE;MAC9C/B,4BAA4B,CAACgC,iBAAiB,GAAG,IAAI,CAAC3B,QAAQ,CAAC0B,8BAA8B;IACjG;IACA/B,4BAA4B,CAACiC,mBAAmB,GAAG,CAAC,IAAI,CAAC5B,QAAQ,CAAC6B,iCAAiC;IACnG,IAAIlC,4BAA4B,CAACiC,mBAAmB,EAAE;MAClD;MACA,IAAI;QACAjC,4BAA4B,CAACmC,kBAAkB,CAAC,CAAC,CAACC,KAAK,CAAC,MAAM;UAC1DpC,4BAA4B,CAACiC,mBAAmB,GAAG,KAAK;QAC5D,CAAC,CAAC;MACN,CAAC,CACD,OAAOI,CAAC,EAAE;QACNrC,4BAA4B,CAACiC,mBAAmB,GAAG,KAAK;MAC5D;IACJ;EACJ;EACAtB,wBAAwBA,CAAC2B,SAAS,EAAEC,YAAY,EAAE;IAC9C;IACA,MAAMC,OAAO,GAAG,IAAI,CAAClC,WAAW,CAACW,GAAG,CAAEC,CAAC,IAAK;MACxC,OAAOA,CAAC,CAACC,WAAW;IACxB,CAAC,CAAC;IACF,KAAK,MAAMsB,KAAK,IAAIH,SAAS,EAAE;MAC3B,IAAIE,OAAO,CAACE,OAAO,CAACD,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/B,MAAMb,UAAU,GAAG,IAAI7B,gBAAgB,CAAC,IAAI,CAACI,gBAAgB,CAACwC,KAAK,EAAEF,KAAK,EAAE;UACxE,IAAI,IAAI,CAACpC,QAAQ,CAACuC,iBAAiB,IAAI,CAAC,CAAC,CAAC;UAC1CC,sBAAsB,EAAE,IAAI,CAACxC,QAAQ,CAACyC,iBAAiB;UACvDC,uBAAuB,EAAE,IAAI,CAAC1C,QAAQ,CAAC2C,yBAAyB;UAChEC,gCAAgC,EAAE,IAAI,CAAC5C,QAAQ,CAAC6C;QACpD,CAAC,CAAC;QACF,IAAI,CAAC5C,WAAW,CAAC6C,IAAI,CAACvB,UAAU,CAAC;QACjC,IAAI,CAACrB,2BAA2B,CAAC6C,eAAe,CAACxB,UAAU,CAAC;MAChE;IACJ;IACA;IACA,MAAMyB,eAAe,GAAG,EAAE;IAC1B,MAAMC,kBAAkB,GAAG,EAAE;IAC7B,IAAI,CAAChD,WAAW,CAACqB,OAAO,CAAET,CAAC,IAAK;MAC5B,IAAIqB,YAAY,CAACG,OAAO,CAACxB,CAAC,CAACC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE;QAC5CkC,eAAe,CAACF,IAAI,CAACjC,CAAC,CAAC;MAC3B,CAAC,MACI;QACDoC,kBAAkB,CAACH,IAAI,CAACjC,CAAC,CAAC;MAC9B;IACJ,CAAC,CAAC;IACF,IAAI,CAACZ,WAAW,GAAG+C,eAAe;IAClCC,kBAAkB,CAAC3B,OAAO,CAAET,CAAC,IAAK;MAC9B,IAAI,CAACV,6BAA6B,CAAC4C,eAAe,CAAClC,CAAC,CAAC;MACrDA,CAAC,CAACqC,OAAO,CAAC,CAAC;IACf,CAAC,CAAC;EACN;EACA;AACJ;AACA;EACIA,OAAOA,CAAA,EAAG;IACN,IAAI,CAACjD,WAAW,CAACqB,OAAO,CAAET,CAAC,IAAK;MAC5BA,CAAC,CAACqC,OAAO,CAAC,CAAC;IACf,CAAC,CAAC;IACF,IAAI,CAACpD,gBAAgB,CAACsB,mBAAmB,CAAC+B,MAAM,CAAC,IAAI,CAAChC,cAAc,CAAC;IACrE,IAAI,CAACrB,gBAAgB,CAACkB,eAAe,CAACmC,MAAM,CAAC,IAAI,CAACpC,oBAAoB,CAAC;IACvE,IAAI,CAACjB,gBAAgB,CAACY,gBAAgB,CAACyC,MAAM,CAAC,IAAI,CAAC1C,qBAAqB,CAAC;IACzE,IAAI,CAACP,2BAA2B,CAACkD,KAAK,CAAC,CAAC;IACxC,IAAI,CAACjD,6BAA6B,CAACiD,KAAK,CAAC,CAAC;IAC1C;IACAzD,4BAA4B,CAAC0D,oBAAoB,CAAC,CAAC;EACvD;AACJ","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}