|
@@ -3,6 +3,7 @@ import { WindowsMotionController } from '../../Gamepads/Controllers/windowsMotio
|
|
|
import { OculusTouchController } from '../../Gamepads/Controllers/oculusTouchController';
|
|
|
import { WebXRInput } from './webXRInput';
|
|
|
import { ViveController } from '../../Gamepads/Controllers/viveController';
|
|
|
+import { WebVRController } from '../../Gamepads';
|
|
|
|
|
|
/**
|
|
|
* Loads a controller model and adds it as a child of the WebXRControllers grip when the controller is created
|
|
@@ -14,11 +15,13 @@ export class WebXRControllerModelLoader {
|
|
|
*/
|
|
|
constructor(input: WebXRInput) {
|
|
|
input.onControllerAddedObservable.add((c) => {
|
|
|
+ console.log("controller added");
|
|
|
+ let controllerModel: WebVRController;
|
|
|
if (c.inputSource.gamepad && c.inputSource.gamepad.id === "htc-vive") {
|
|
|
- let controllerModel = new ViveController(c.inputSource.gamepad);
|
|
|
+ controllerModel = new ViveController(c.inputSource.gamepad);
|
|
|
controllerModel.hand = c.inputSource.handedness;
|
|
|
controllerModel.isXR = true;
|
|
|
- controllerModel.initControllerMesh(c.grip!.getScene(), (m) => {
|
|
|
+ controllerModel.initControllerMesh(c.getScene(), (m) => {
|
|
|
m.isPickable = false;
|
|
|
m.getChildMeshes(false).forEach((m) => {
|
|
|
m.isPickable = false;
|
|
@@ -27,10 +30,10 @@ export class WebXRControllerModelLoader {
|
|
|
controllerModel.mesh!.rotationQuaternion = Quaternion.FromEulerAngles(0, Math.PI, 0);
|
|
|
});
|
|
|
} else if (c.inputSource.gamepad && c.inputSource.gamepad.id === "oculus-touch") {
|
|
|
- let controllerModel = new OculusTouchController(c.inputSource.gamepad);
|
|
|
+ controllerModel = new OculusTouchController(c.inputSource.gamepad);
|
|
|
controllerModel.hand = c.inputSource.handedness;
|
|
|
controllerModel.isXR = true;
|
|
|
- controllerModel.initControllerMesh(c.grip!.getScene(), (m) => {
|
|
|
+ controllerModel.initControllerMesh(c.getScene(), (m) => {
|
|
|
controllerModel.mesh!.parent = c.grip!;
|
|
|
controllerModel.mesh!.rotationQuaternion = Quaternion.FromEulerAngles(0, Math.PI, 0);
|
|
|
controllerModel.mesh!.position.y = 0.034;
|
|
@@ -38,22 +41,23 @@ export class WebXRControllerModelLoader {
|
|
|
});
|
|
|
} else if (c.inputSource.gamepad && c.inputSource.gamepad.id === "oculus-quest") {
|
|
|
OculusTouchController._IsQuest = true;
|
|
|
- let controllerModel = new OculusTouchController(c.inputSource.gamepad);
|
|
|
+ controllerModel = new OculusTouchController(c.inputSource.gamepad);
|
|
|
controllerModel.hand = c.inputSource.handedness;
|
|
|
controllerModel.isXR = true;
|
|
|
- controllerModel.initControllerMesh(c.grip!.getScene(), (m) => {
|
|
|
+ controllerModel.initControllerMesh(c.getScene(), (m) => {
|
|
|
controllerModel.mesh!.parent = c.grip!;
|
|
|
controllerModel.mesh!.rotationQuaternion = Quaternion.FromEulerAngles(Math.PI / -4, Math.PI, 0);
|
|
|
});
|
|
|
} else {
|
|
|
- let controllerModel = new WindowsMotionController(c.inputSource.gamepad);
|
|
|
+ controllerModel = new WindowsMotionController(c.inputSource.gamepad);
|
|
|
controllerModel.hand = c.inputSource.handedness;
|
|
|
controllerModel.isXR = true;
|
|
|
- controllerModel.initControllerMesh(c.grip!.getScene(), (m) => {
|
|
|
+ controllerModel.initControllerMesh(c.getScene(), (m) => {
|
|
|
controllerModel.mesh!.parent = c.grip!;
|
|
|
controllerModel.mesh!.rotationQuaternion = Quaternion.FromEulerAngles(0, Math.PI, 0);
|
|
|
});
|
|
|
}
|
|
|
+ c.gamepadController = controllerModel;
|
|
|
});
|
|
|
}
|
|
|
}
|