@iwer/devui 0.2.1 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/build/iwer-devui.js +5198 -2628
  2. package/build/iwer-devui.min.js +266 -130
  3. package/build/iwer-devui.module.js +5198 -2628
  4. package/build/iwer-devui.module.min.js +266 -130
  5. package/lib/components/analog.d.ts.map +1 -1
  6. package/lib/components/analog.js +11 -13
  7. package/lib/components/analog.js.map +1 -1
  8. package/lib/components/binary.d.ts.map +1 -1
  9. package/lib/components/binary.js +15 -17
  10. package/lib/components/binary.js.map +1 -1
  11. package/lib/components/controls.d.ts +11 -2
  12. package/lib/components/controls.d.ts.map +1 -1
  13. package/lib/components/controls.js +61 -27
  14. package/lib/components/controls.js.map +1 -1
  15. package/lib/components/fov.d.ts.map +1 -1
  16. package/lib/components/fov.js +0 -1
  17. package/lib/components/fov.js.map +1 -1
  18. package/lib/components/header.d.ts +0 -4
  19. package/lib/components/header.d.ts.map +1 -1
  20. package/lib/components/header.js +75 -61
  21. package/lib/components/header.js.map +1 -1
  22. package/lib/components/headset.d.ts +17 -0
  23. package/lib/components/headset.d.ts.map +1 -0
  24. package/lib/components/headset.js +91 -0
  25. package/lib/components/headset.js.map +1 -0
  26. package/lib/components/icons.d.ts +8 -1
  27. package/lib/components/icons.d.ts.map +1 -1
  28. package/lib/components/icons.js +53 -27
  29. package/lib/components/icons.js.map +1 -1
  30. package/lib/components/joystick.d.ts.map +1 -1
  31. package/lib/components/joystick.js +56 -60
  32. package/lib/components/joystick.js.map +1 -1
  33. package/lib/components/mapper.d.ts +7 -3
  34. package/lib/components/mapper.d.ts.map +1 -1
  35. package/lib/components/mapper.js +34 -60
  36. package/lib/components/mapper.js.map +1 -1
  37. package/lib/components/styled.d.ts +48 -7
  38. package/lib/components/styled.d.ts.map +1 -1
  39. package/lib/components/styled.js +213 -40
  40. package/lib/components/styled.js.map +1 -1
  41. package/lib/components/vec3.d.ts +25 -0
  42. package/lib/components/vec3.d.ts.map +1 -0
  43. package/lib/components/vec3.js +90 -0
  44. package/lib/components/vec3.js.map +1 -0
  45. package/lib/index.d.ts +8 -12
  46. package/lib/index.d.ts.map +1 -1
  47. package/lib/index.js +73 -51
  48. package/lib/index.js.map +1 -1
  49. package/lib/package.json +55 -0
  50. package/lib/scene.d.ts +23 -40
  51. package/lib/scene.d.ts.map +1 -1
  52. package/lib/scene.js +160 -192
  53. package/lib/scene.js.map +1 -1
  54. package/lib/src/components/analog.d.ts +17 -0
  55. package/lib/src/components/analog.d.ts.map +1 -0
  56. package/lib/src/components/analog.js +111 -0
  57. package/lib/src/components/analog.js.map +1 -0
  58. package/lib/src/components/binary.d.ts +17 -0
  59. package/lib/src/components/binary.d.ts.map +1 -0
  60. package/lib/src/components/binary.js +77 -0
  61. package/lib/src/components/binary.js.map +1 -0
  62. package/lib/src/components/controls.d.ts +29 -0
  63. package/lib/src/components/controls.d.ts.map +1 -0
  64. package/lib/src/components/controls.js +139 -0
  65. package/lib/src/components/controls.js.map +1 -0
  66. package/lib/src/components/fov.d.ts +16 -0
  67. package/lib/src/components/fov.d.ts.map +1 -0
  68. package/lib/src/components/fov.js +30 -0
  69. package/lib/src/components/fov.js.map +1 -0
  70. package/lib/src/components/header.d.ts +20 -0
  71. package/lib/src/components/header.d.ts.map +1 -0
  72. package/lib/src/components/header.js +47 -0
  73. package/lib/src/components/header.js.map +1 -0
  74. package/lib/src/components/headset.d.ts +17 -0
  75. package/lib/src/components/headset.d.ts.map +1 -0
  76. package/lib/src/components/headset.js +29 -0
  77. package/lib/src/components/headset.js.map +1 -0
  78. package/lib/src/components/icons.d.ts +37 -0
  79. package/lib/src/components/icons.d.ts.map +1 -0
  80. package/lib/src/components/icons.js +265 -0
  81. package/lib/src/components/icons.js.map +1 -0
  82. package/lib/src/components/joystick.d.ts +21 -0
  83. package/lib/src/components/joystick.d.ts.map +1 -0
  84. package/lib/src/components/joystick.js +245 -0
  85. package/lib/src/components/joystick.js.map +1 -0
  86. package/lib/src/components/keys.d.ts +10 -0
  87. package/lib/src/components/keys.d.ts.map +1 -0
  88. package/lib/src/components/keys.js +74 -0
  89. package/lib/src/components/keys.js.map +1 -0
  90. package/lib/src/components/mapper.d.ts +22 -0
  91. package/lib/src/components/mapper.d.ts.map +1 -0
  92. package/lib/src/components/mapper.js +108 -0
  93. package/lib/src/components/mapper.js.map +1 -0
  94. package/lib/src/components/styled.d.ts +70 -0
  95. package/lib/src/components/styled.d.ts.map +1 -0
  96. package/lib/src/components/styled.js +272 -0
  97. package/lib/src/components/styled.js.map +1 -0
  98. package/lib/src/components/vec3.d.ts +22 -0
  99. package/lib/src/components/vec3.d.ts.map +1 -0
  100. package/lib/src/components/vec3.js +123 -0
  101. package/lib/src/components/vec3.js.map +1 -0
  102. package/lib/src/index.d.ts +22 -0
  103. package/lib/src/index.d.ts.map +1 -0
  104. package/lib/src/index.js +92 -0
  105. package/lib/src/index.js.map +1 -0
  106. package/lib/src/scene.d.ts +51 -0
  107. package/lib/src/scene.d.ts.map +1 -0
  108. package/lib/src/scene.js +250 -0
  109. package/lib/src/scene.js.map +1 -0
  110. package/lib/version.d.ts +2 -0
  111. package/lib/version.d.ts.map +1 -0
  112. package/lib/version.js +2 -0
  113. package/lib/version.js.map +1 -0
  114. package/package.json +6 -3
  115. package/build/iwe.min.js +0 -180
  116. package/lib/components/settings.d.ts +0 -50
  117. package/lib/components/settings.d.ts.map +0 -1
  118. package/lib/components/settings.js +0 -103
  119. package/lib/components/settings.js.map +0 -1
package/lib/scene.js CHANGED
@@ -4,81 +4,87 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { BoxGeometry, FrontSide, Group, Mesh, MeshBasicMaterial, PerspectiveCamera, Quaternion, RingGeometry, Scene, Vector3, WebGLRenderer, } from 'three';
8
- import { TransformControls } from 'three/examples/jsm/controls/TransformControls.js';
9
- const PRIVATE = Symbol('@@iwer/devui/input-scene');
10
- const FREE_MOVEMENT_SPEED = 0.016;
7
+ import { FrontSide, Group, Mesh, MeshBasicMaterial, PerspectiveCamera, Quaternion, RingGeometry, Scene, Vector3, WebGLRenderer, } from 'three';
8
+ import { TransformHandles } from '@pmndrs/handle';
9
+ import { forwardHtmlEvents } from '@pmndrs/pointer-events';
10
+ export const PRIVATE = Symbol('@@iwer/devui/input-scene');
11
+ const FREE_MOVEMENT_SPEED = 2;
11
12
  export class InputLayer {
12
13
  constructor(xrDevice) {
13
- const canvasContainer = xrDevice.canvasContainer;
14
- // Create a scene
15
- const scene = new Scene();
16
- // Create a camera
17
- const camera = new PerspectiveCamera((xrDevice.fovy / Math.PI) * 180, canvasContainer.offsetWidth / canvasContainer.offsetHeight, 0.1, 1000);
18
- const playerRig = new Group();
19
- const cameraRig = new Group();
20
- scene.add(playerRig);
21
- playerRig.add(cameraRig);
22
- cameraRig.position.fromArray(xrDevice.position.vec3);
23
- cameraRig.quaternion.fromArray(xrDevice.quaternion.quat);
24
- cameraRig.add(camera);
25
- camera.position.x -= xrDevice.ipd / 2;
26
- const leftControllerIndicator = new Mesh(new BoxGeometry(0.1, 0.1, 0.1));
27
- const rightControllerIndicator = leftControllerIndicator.clone();
28
- leftControllerIndicator.position.fromArray(xrDevice.controllers.left.position.vec3);
29
- leftControllerIndicator.quaternion.fromArray(xrDevice.controllers.left.quaternion.quat);
30
- rightControllerIndicator.position.fromArray(xrDevice.controllers.right.position.vec3);
31
- rightControllerIndicator.quaternion.fromArray(xrDevice.controllers.right.quaternion.quat);
32
- cameraRig.attach(leftControllerIndicator);
33
- cameraRig.attach(rightControllerIndicator);
34
- leftControllerIndicator.visible = false;
35
- rightControllerIndicator.visible = false;
14
+ this.xrDevice = xrDevice;
15
+ this.combinedCameraPosition = new Vector3();
16
+ this.isPointerLocked = false;
17
+ this.vec3 = new Vector3();
18
+ this.quat = new Quaternion();
19
+ this.keyState = {
20
+ ShiftLeft: false,
21
+ KeyW: false,
22
+ KeyA: false,
23
+ KeyS: false,
24
+ KeyD: false,
25
+ ArrowUp: false,
26
+ ArrowDown: false,
27
+ };
28
+ this.lastTime = 0;
29
+ this.scene = new Scene();
30
+ this.camera = new PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0.1, 40);
31
+ this.playerRig = new Group();
32
+ this.cameraRig = new Group();
33
+ this.scene.add(this.playerRig);
34
+ this.playerRig.add(this.cameraRig);
35
+ this.cameraRig.position.fromArray(xrDevice.position.vec3);
36
+ this.cameraRig.quaternion.fromArray(xrDevice.quaternion.quat);
37
+ this.cameraRig.add(this.camera);
38
+ this.camera.position.x -= xrDevice.ipd / 2;
36
39
  const spaceOriginIndicator = new Mesh(new RingGeometry(0.25, 0.27, 32), new MeshBasicMaterial({
37
40
  color: 0xffffff,
38
41
  side: FrontSide,
39
42
  }));
40
43
  spaceOriginIndicator.rotateX(-Math.PI / 2);
41
- scene.add(spaceOriginIndicator);
44
+ this.scene.add(spaceOriginIndicator);
42
45
  // Create a renderer
43
- const renderer = new WebGLRenderer({ alpha: true });
44
- renderer.setSize(canvasContainer.offsetWidth, canvasContainer.offsetHeight);
45
- renderer.setClearColor(0x000000, 0);
46
- canvasContainer.appendChild(renderer.domElement);
47
- const leftTransformControls = new TransformControls(camera, renderer.domElement);
48
- leftTransformControls.attach(leftControllerIndicator);
49
- scene.add(leftTransformControls);
50
- const rightTransformControls = new TransformControls(camera, renderer.domElement);
51
- rightTransformControls.attach(rightControllerIndicator);
52
- scene.add(rightTransformControls);
53
- const resizeObserver = new ResizeObserver(() => {
54
- this.resize();
55
- });
56
- resizeObserver.observe(canvasContainer);
57
- // Event listeners for TransformControls
58
- const setupTransformControls = (controls) => {
59
- controls.addEventListener('mouseDown', () => {
60
- controls.userData.pressStart = performance.now();
61
- });
62
- controls.addEventListener('mouseUp', () => {
63
- const pressTime = performance.now() - controls.userData.pressStart;
64
- controls.userData.pressStart = null;
65
- if (pressTime < 200) {
66
- if (controls.mode === 'rotate') {
67
- controls.setMode('translate');
68
- }
69
- else {
70
- controls.setMode('rotate');
71
- }
46
+ this.renderer = new WebGLRenderer({ alpha: true });
47
+ this.renderer.setPixelRatio(window.devicePixelRatio);
48
+ this.renderer.setSize(window.innerWidth, window.innerHeight);
49
+ this.renderer.setClearColor(0x000000, 0);
50
+ this.renderer.domElement.style.position = 'fixed';
51
+ this.renderer.domElement.style.top = '50vh';
52
+ this.renderer.domElement.style.left = '50vw';
53
+ this.renderer.domElement.style.transform = 'translate(-50%, -50%)';
54
+ this.transformHandles = new Map();
55
+ ['left', 'right'].forEach((handedness) => {
56
+ const transformHandle = new TransformHandles();
57
+ transformHandle.scale.setScalar(0.1);
58
+ transformHandle.position.fromArray(xrDevice.controllers[handedness].position.vec3);
59
+ transformHandle.quaternion.fromArray(xrDevice.controllers[handedness].quaternion.quat);
60
+ this.cameraRig.attach(transformHandle);
61
+ transformHandle.userData = {
62
+ defaultPosition: transformHandle.position.toArray(),
63
+ defaultQuaternion: transformHandle.quaternion.toArray(),
64
+ };
65
+ transformHandle.userData.setMode = (mode) => {
66
+ var _a, _b;
67
+ (_b = (_a = transformHandle.userData).modeCleanup) === null || _b === void 0 ? void 0 : _b.call(_a);
68
+ transformHandle.userData.modeCleanup = transformHandle.bind(mode);
69
+ transformHandle.userData.mode = mode;
70
+ };
71
+ transformHandle.userData.setMode('translate');
72
+ transformHandle.space = 'local';
73
+ this.transformHandles.set(handedness, transformHandle);
74
+ transformHandle.addEventListener('click', () => {
75
+ console.log('click');
76
+ if (transformHandle.userData.mode === 'translate') {
77
+ transformHandle.userData.setMode('rotate');
78
+ }
79
+ else {
80
+ transformHandle.userData.setMode('translate');
72
81
  }
73
82
  });
74
- controls.addEventListener('change', () => {
75
- this.renderScene();
76
- });
77
- };
78
- setupTransformControls(leftTransformControls);
79
- setupTransformControls(rightTransformControls);
80
- const mouseMoveHandler = (event) => {
81
- if (!this[PRIVATE].isPointerLocked)
83
+ });
84
+ // @ts-ignore
85
+ window.transformHandles = this.transformHandles;
86
+ this.mouseMoveHandler = (event) => {
87
+ if (!this.isPointerLocked)
82
88
  return;
83
89
  const movementX =
84
90
  // @ts-ignore
@@ -86,54 +92,14 @@ export class InputLayer {
86
92
  const movementY =
87
93
  // @ts-ignore
88
94
  event.movementY || event.mozMovementY || event.webkitMovementY || 0;
89
- playerRig.rotation.y -= movementX * 0.002;
90
- cameraRig.rotation.x -= movementY * 0.002;
91
- xrDevice.quaternion.copy(cameraRig.getWorldQuaternion(new Quaternion()));
92
- this.renderScene();
93
- };
94
- this[PRIVATE] = {
95
- canvasContainer,
96
- renderer,
97
- scene,
98
- camera,
99
- playerRig,
100
- cameraRig,
101
- xrDevice,
102
- controllerIndicators: {
103
- left: leftControllerIndicator,
104
- right: rightControllerIndicator,
105
- },
106
- transformControls: {
107
- left: leftTransformControls,
108
- right: rightTransformControls,
109
- },
110
- headsetDefaultPosition: cameraRig.position.clone(),
111
- headsetDefaultQuaternion: cameraRig.quaternion.clone(),
112
- controllerDefaultPositions: {
113
- left: leftControllerIndicator.position.clone(),
114
- right: rightControllerIndicator.position.clone(),
115
- },
116
- controllerDefaultQuaternions: {
117
- left: leftControllerIndicator.quaternion.clone(),
118
- right: rightControllerIndicator.quaternion.clone(),
119
- },
120
- resizeObserver,
121
- isPointerLocked: false,
122
- vec3: new Vector3(),
123
- quat: new Quaternion(),
124
- mouseMoveHandler,
125
- keyState: {
126
- ShiftLeft: false,
127
- KeyW: false,
128
- KeyA: false,
129
- KeyS: false,
130
- KeyD: false,
131
- ArrowUp: false,
132
- ArrowDown: false,
133
- },
134
- movePlayerRig: () => this.movePlayerRig(),
135
- moveInterval: null,
95
+ this.playerRig.rotation.y -= movementX * 0.002;
96
+ this.cameraRig.rotation.x -= movementY * 0.002;
97
+ xrDevice.quaternion.copy(this.cameraRig.getWorldQuaternion(new Quaternion()));
136
98
  };
99
+ this.cameraRig.getWorldPosition(this.combinedCameraPosition);
100
+ this.headsetDefaultPosition = this.cameraRig.position.clone();
101
+ this.headsetDefaultQuaternion = this.cameraRig.quaternion.clone();
102
+ this.forwardHtmlEvents = forwardHtmlEvents(this.renderer.domElement, () => this.camera, this.scene).update;
137
103
  document.addEventListener('pointerlockchange', this.pointerLockChangeHandler.bind(this), false);
138
104
  document.addEventListener('mozpointerlockchange', this.pointerLockChangeHandler.bind(this), false);
139
105
  document.addEventListener('webkitpointerlockchange', this.pointerLockChangeHandler.bind(this), false);
@@ -141,135 +107,137 @@ export class InputLayer {
141
107
  document.addEventListener('keyup', this.keyUpHandler.bind(this), false);
142
108
  }
143
109
  lockPointer() {
144
- this[PRIVATE].renderer.domElement.requestPointerLock =
145
- this[PRIVATE].renderer.domElement.requestPointerLock ||
110
+ this.renderer.domElement.requestPointerLock =
111
+ this.renderer.domElement.requestPointerLock ||
146
112
  // @ts-ignore
147
- this[PRIVATE].renderer.domElement.mozRequestPointerLock ||
113
+ this.renderer.domElement.mozRequestPointerLock ||
148
114
  // @ts-ignore
149
- this[PRIVATE].renderer.domElement.webkitRequestPointerLock;
150
- this[PRIVATE].renderer.domElement.requestPointerLock();
115
+ this.renderer.domElement.webkitRequestPointerLock;
116
+ this.renderer.domElement.requestPointerLock();
151
117
  }
152
118
  pointerLockChangeHandler() {
153
- this[PRIVATE].isPointerLocked =
154
- document.pointerLockElement === this[PRIVATE].renderer.domElement ||
119
+ this.isPointerLocked =
120
+ document.pointerLockElement === this.renderer.domElement ||
155
121
  // @ts-ignore
156
- document.mozPointerLockElement === this[PRIVATE].renderer.domElement ||
122
+ document.mozPointerLockElement === this.renderer.domElement ||
157
123
  // @ts-ignore
158
- document.webkitPointerLockElement === this[PRIVATE].renderer.domElement;
159
- if (this[PRIVATE].isPointerLocked) {
160
- document.addEventListener('mousemove', this[PRIVATE].mouseMoveHandler, false);
161
- Object.values(this[PRIVATE].transformControls).forEach((transformControls) => {
162
- transformControls.enabled = false;
163
- transformControls.visible = false;
124
+ document.webkitPointerLockElement === this.renderer.domElement;
125
+ if (this.isPointerLocked) {
126
+ document.addEventListener('mousemove', this.mouseMoveHandler, false);
127
+ Object.values(this.transformHandles).forEach((transformHandle) => {
128
+ transformHandle.visible = false;
164
129
  });
165
130
  }
166
131
  else {
167
- document.removeEventListener('mousemove', this[PRIVATE].mouseMoveHandler, false);
168
- Object.values(this[PRIVATE].transformControls).forEach((transformControls) => {
169
- transformControls.enabled = true;
170
- transformControls.visible = true;
132
+ document.removeEventListener('mousemove', this.mouseMoveHandler, false);
133
+ Object.values(this.transformHandles).forEach((transformHandle) => {
134
+ transformHandle.visible = true;
171
135
  });
172
136
  }
173
137
  }
174
138
  keyDownHandler(event) {
175
- const { keyState, movePlayerRig, moveInterval } = this[PRIVATE];
139
+ const { keyState } = this;
176
140
  if (event.code in keyState) {
177
141
  keyState[event.code] = true;
178
142
  }
179
- if (keyState.ShiftLeft &&
180
- (keyState.KeyW || keyState.KeyA || keyState.KeyS || keyState.KeyD)) {
181
- if (!moveInterval) {
182
- this[PRIVATE].moveInterval = window.setInterval(movePlayerRig, 16);
183
- }
184
- }
185
143
  if (keyState.ShiftLeft && keyState.ArrowUp) {
186
- this[PRIVATE].cameraRig.position.y += 0.05;
187
- this.renderScene();
144
+ this.cameraRig.position.y += 0.05;
188
145
  }
189
146
  if (keyState.ShiftLeft && keyState.ArrowDown) {
190
- this[PRIVATE].cameraRig.position.y -= 0.05;
191
- this.renderScene();
147
+ this.cameraRig.position.y -= 0.05;
192
148
  }
193
149
  }
194
150
  keyUpHandler(event) {
195
- const { keyState, moveInterval } = this[PRIVATE];
151
+ const { keyState } = this;
196
152
  if (event.code in keyState) {
197
153
  keyState[event.code] = false;
198
154
  }
199
- if (!keyState.ShiftLeft ||
200
- !(keyState.KeyW || keyState.KeyA || keyState.KeyS || keyState.KeyD)) {
201
- if (moveInterval) {
202
- window.clearInterval(moveInterval);
203
- this[PRIVATE].moveInterval = null;
204
- }
205
- }
206
155
  }
207
- movePlayerRig() {
208
- const { playerRig, keyState, vec3 } = this[PRIVATE];
156
+ movePlayerRig(delta) {
157
+ const { playerRig, keyState, vec3 } = this;
209
158
  vec3.set((keyState.KeyD ? 1 : 0) - (keyState.KeyA ? 1 : 0), 0, (keyState.KeyS ? 1 : 0) - (keyState.KeyW ? 1 : 0));
210
- if (vec3.lengthSq() > 0) {
159
+ if (vec3.lengthSq() > 0 && keyState.ShiftLeft) {
211
160
  vec3
212
161
  .normalize()
213
- .multiplyScalar(FREE_MOVEMENT_SPEED)
162
+ .multiplyScalar(FREE_MOVEMENT_SPEED * delta)
214
163
  .applyQuaternion(playerRig.quaternion);
215
164
  playerRig.position.add(vec3);
216
- this.renderScene();
217
165
  }
218
166
  }
219
- syncFovy() {
220
- this[PRIVATE].camera.fov = (this[PRIVATE].xrDevice.fovy / Math.PI) * 180;
221
- this[PRIVATE].camera.updateProjectionMatrix();
222
- }
223
167
  resetDeviceTransforms() {
224
- const { playerRig, cameraRig, controllerIndicators } = this[PRIVATE];
225
- cameraRig.position.copy(this[PRIVATE].headsetDefaultPosition);
226
- cameraRig.quaternion.set(0, 0, 0, 1);
168
+ const { playerRig, cameraRig, transformHandles } = this;
169
+ cameraRig.position.copy(this.headsetDefaultPosition);
170
+ cameraRig.quaternion.copy(this.headsetDefaultQuaternion);
227
171
  playerRig.position.set(0, 0, 0);
228
172
  playerRig.quaternion.set(0, 0, 0, 1);
229
- Object.entries(controllerIndicators).forEach(([handedness, controllerIndicator]) => {
230
- controllerIndicator.position.copy(
231
- // @ts-ignore
232
- this[PRIVATE].controllerDefaultPositions[handedness]);
233
- controllerIndicator.quaternion.copy(
234
- // @ts-ignore
235
- this[PRIVATE].controllerDefaultQuaternions[handedness]);
173
+ transformHandles.forEach((transformHandle) => {
174
+ transformHandle.position.fromArray(transformHandle.userData.defaultPosition);
175
+ transformHandle.quaternion.fromArray(transformHandle.userData.defaultQuaternion);
236
176
  });
237
- this.syncDeviceTransforms();
238
- this.renderScene();
239
177
  }
240
178
  syncDeviceTransforms() {
241
- const { xrDevice, cameraRig, controllerIndicators } = this[PRIVATE];
242
- xrDevice.position.copy(cameraRig.getWorldPosition(this[PRIVATE].vec3));
243
- xrDevice.quaternion.copy(cameraRig.getWorldQuaternion(this[PRIVATE].quat));
244
- Object.entries(controllerIndicators).forEach(([handedness, controllerIndicator]) => {
245
- // @ts-ignore
246
- xrDevice.controllers[handedness].position.copy(controllerIndicator.getWorldPosition(this[PRIVATE].vec3));
247
- // @ts-ignore
248
- xrDevice.controllers[handedness].quaternion.copy(controllerIndicator.getWorldQuaternion(this[PRIVATE].quat));
179
+ const { xrDevice, cameraRig, transformHandles } = this;
180
+ xrDevice.position.copy(cameraRig.getWorldPosition(this.vec3));
181
+ xrDevice.quaternion.copy(cameraRig.getWorldQuaternion(this.quat));
182
+ transformHandles.forEach((transformHandle, handedness) => {
183
+ xrDevice.controllers[handedness].position.copy(transformHandle.getWorldPosition(this.vec3));
184
+ xrDevice.controllers[handedness].quaternion.copy(transformHandle.getWorldQuaternion(this.quat));
249
185
  });
250
186
  }
251
- renderScene() {
187
+ renderScene(time) {
188
+ const xrDeviceFOV = (this.xrDevice.fovy / Math.PI) * 180;
189
+ let cameraMatrixNeedsUpdate = false;
190
+ if (this.camera.fov !== xrDeviceFOV) {
191
+ this.camera.fov = xrDeviceFOV;
192
+ cameraMatrixNeedsUpdate = true;
193
+ }
194
+ const iwerCanvasDimension = this.xrDevice.canvasDimensions;
195
+ if (iwerCanvasDimension) {
196
+ const canvas = this.renderer.domElement;
197
+ const resizeNeeded = canvas.width !== iwerCanvasDimension.width ||
198
+ canvas.height !== iwerCanvasDimension.height;
199
+ if (resizeNeeded) {
200
+ this.camera.aspect =
201
+ iwerCanvasDimension.width / iwerCanvasDimension.height;
202
+ this.renderer.setSize(iwerCanvasDimension.width, iwerCanvasDimension.height);
203
+ cameraMatrixNeedsUpdate = true;
204
+ }
205
+ }
206
+ if (cameraMatrixNeedsUpdate) {
207
+ this.camera.updateProjectionMatrix();
208
+ }
209
+ if (!this.isPointerLocked) {
210
+ this.cameraRig.position.y = this.combinedCameraPosition.y;
211
+ this.playerRig.position.x = this.combinedCameraPosition.x;
212
+ this.playerRig.position.z = this.combinedCameraPosition.z;
213
+ }
214
+ else {
215
+ this.cameraRig.getWorldPosition(this.combinedCameraPosition);
216
+ }
217
+ this.forwardHtmlEvents();
218
+ this.transformHandles.forEach((transformHandle, handedness) => {
219
+ var _a;
220
+ const connected = Boolean((_a = this.xrDevice.controllers[handedness]) === null || _a === void 0 ? void 0 : _a.connected);
221
+ transformHandle.visible = connected && !this.isPointerLocked;
222
+ if (connected) {
223
+ transformHandle.update(time, this.camera);
224
+ }
225
+ });
226
+ const delta = Math.min((time - this.lastTime) / 1000, 0.1);
227
+ this.movePlayerRig(delta);
252
228
  this.syncDeviceTransforms();
253
- this[PRIVATE].renderer.render(this[PRIVATE].scene, this[PRIVATE].camera);
229
+ this.renderer.render(this.scene, this.camera);
230
+ this.lastTime = time;
254
231
  }
255
232
  get domElement() {
256
- return this[PRIVATE].renderer.domElement;
257
- }
258
- resize() {
259
- const width = this[PRIVATE].canvasContainer.offsetWidth;
260
- const height = this[PRIVATE].canvasContainer.offsetHeight;
261
- this[PRIVATE].renderer.setSize(width, height);
262
- this[PRIVATE].camera.aspect = width / height;
263
- this[PRIVATE].camera.updateProjectionMatrix();
264
- this.renderScene();
233
+ return this.renderer.domElement;
265
234
  }
266
235
  dispose() {
267
- this[PRIVATE].resizeObserver.disconnect();
268
- this[PRIVATE].renderer.dispose();
236
+ this.renderer.dispose();
269
237
  document.removeEventListener('pointerlockchange', this.pointerLockChangeHandler.bind(this), false);
270
238
  document.removeEventListener('mozpointerlockchange', this.pointerLockChangeHandler.bind(this), false);
271
239
  document.removeEventListener('webkitpointerlockchange', this.pointerLockChangeHandler.bind(this), false);
272
- document.removeEventListener('mousemove', this[PRIVATE].mouseMoveHandler, false);
240
+ document.removeEventListener('mousemove', this.mouseMoveHandler, false);
273
241
  document.removeEventListener('keydown', this.keyDownHandler.bind(this), false);
274
242
  document.removeEventListener('keyup', this.keyUpHandler.bind(this), false);
275
243
  }
package/lib/scene.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scene.js","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scene.js","sourceRoot":"","sources":["../src/scene.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import React from 'react';
8
+ import { XRController } from 'iwer/lib/device/XRController';
9
+ interface AnalogButtonProps {
10
+ xrController: XRController;
11
+ buttonId: string;
12
+ pointerLocked: boolean;
13
+ mappedKey: string;
14
+ }
15
+ export declare const AnalogButton: React.FC<AnalogButtonProps>;
16
+ export {};
17
+ //# sourceMappingURL=analog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analog.d.ts","sourceRoot":"","sources":["../../../src/components/analog.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAI5D,UAAU,iBAAiB;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA0IpD,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
4
+ *
5
+ * This source code is licensed under the MIT license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+ import { Button, ButtonContainer, ButtonGroup, Colors, ControlButtonStyles, FAIcon, MappedKeyBlock, RangeSelector, } from './styled.js';
9
+ import { useEffect, useState } from 'react';
10
+ import { GamepadIcon } from './icons.js';
11
+ import { MappedKeyDisplay } from './keys.js';
12
+ import { faFingerprint } from '@fortawesome/free-solid-svg-icons';
13
+ import { useDevUIConfig } from '../index.js';
14
+ export const AnalogButton = ({ xrController, buttonId, pointerLocked, mappedKey, }) => {
15
+ const devuiConfig = useDevUIConfig();
16
+ const [isTouched, setIsTouched] = useState(false);
17
+ const [isPressed, setIsPressed] = useState(false);
18
+ const [isKeyPressed, setIsKeyPressed] = useState(false);
19
+ const [analogValue, setAnalogValue] = useState(0);
20
+ const handedness = xrController.inputSource.handedness;
21
+ useEffect(() => {
22
+ const handleKeyDown = (event) => {
23
+ if (event.code === mappedKey) {
24
+ xrController.updateButtonValue(buttonId, 1);
25
+ setIsKeyPressed(true);
26
+ }
27
+ };
28
+ const handleKeyUp = (event) => {
29
+ if (event.code === mappedKey) {
30
+ xrController.updateButtonValue(buttonId, 0);
31
+ setIsKeyPressed(false);
32
+ }
33
+ };
34
+ const handleMouseDown = (event) => {
35
+ if (mappedKey === 'MouseLeft' && event.button === 0) {
36
+ xrController.updateButtonValue(buttonId, 1);
37
+ setIsKeyPressed(true);
38
+ }
39
+ else if (mappedKey === 'MouseRight' && event.button === 2) {
40
+ xrController.updateButtonValue(buttonId, 1);
41
+ setIsKeyPressed(true);
42
+ }
43
+ };
44
+ const handleMouseUp = (event) => {
45
+ if (mappedKey === 'MouseLeft' && event.button === 0) {
46
+ xrController.updateButtonValue(buttonId, 0);
47
+ setIsKeyPressed(false);
48
+ }
49
+ else if (mappedKey === 'MouseRight' && event.button === 2) {
50
+ xrController.updateButtonValue(buttonId, 0);
51
+ setIsKeyPressed(false);
52
+ }
53
+ };
54
+ if (pointerLocked) {
55
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
56
+ window.addEventListener('mousedown', handleMouseDown);
57
+ window.addEventListener('mouseup', handleMouseUp);
58
+ }
59
+ else {
60
+ window.addEventListener('keydown', handleKeyDown);
61
+ window.addEventListener('keyup', handleKeyUp);
62
+ }
63
+ }
64
+ else {
65
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
66
+ window.removeEventListener('mousedown', handleMouseDown);
67
+ window.removeEventListener('mouseup', handleMouseUp);
68
+ }
69
+ else {
70
+ window.removeEventListener('keydown', handleKeyDown);
71
+ window.removeEventListener('keyup', handleKeyUp);
72
+ }
73
+ }
74
+ return () => {
75
+ if (mappedKey === 'MouseLeft' || mappedKey === 'MouseRight') {
76
+ window.removeEventListener('mousedown', handleMouseDown);
77
+ window.removeEventListener('mouseup', handleMouseUp);
78
+ }
79
+ else {
80
+ window.removeEventListener('keydown', handleKeyDown);
81
+ window.removeEventListener('keyup', handleKeyUp);
82
+ }
83
+ };
84
+ }, [mappedKey, pointerLocked, buttonId, xrController]);
85
+ return (_jsxs(ButtonContainer, { "$reverse": handedness === 'right', children: [_jsx(GamepadIcon, { buttonName: buttonId, handedness: handedness }), _jsx(ButtonGroup, { "$reverse": handedness === 'right', children: pointerLocked ? (_jsx(MappedKeyBlock, { "$pressed": isKeyPressed, children: MappedKeyDisplay[mappedKey] })) : (_jsxs(_Fragment, { children: [_jsx(Button, { "$reverse": handedness === 'right', style: {
86
+ background: isPressed
87
+ ? Colors.gradientLightGreyTranslucent
88
+ : Colors.gradientGreyTranslucent,
89
+ width: ControlButtonStyles.widthLong,
90
+ }, onClick: () => {
91
+ setIsPressed(true);
92
+ xrController.updateButtonValue(buttonId, 1);
93
+ setTimeout(() => {
94
+ setIsPressed(false);
95
+ xrController.updateButtonValue(buttonId, 0);
96
+ }, devuiConfig.buttonPressDuration);
97
+ }, children: "Press" }), _jsx(Button, { "$reverse": handedness === 'right', style: {
98
+ background: isTouched
99
+ ? Colors.gradientLightGreyTranslucent
100
+ : Colors.gradientGreyTranslucent,
101
+ width: ControlButtonStyles.widthShort,
102
+ }, onClick: () => {
103
+ setIsTouched(!isTouched);
104
+ xrController.updateButtonTouch(buttonId, !isTouched);
105
+ }, children: _jsx(FAIcon, { icon: faFingerprint }) }), _jsx(RangeSelector, { "$reverse": handedness === 'right', value: analogValue, onChange: (e) => {
106
+ const value = Number(e.target.value);
107
+ setAnalogValue(value);
108
+ xrController.updateButtonValue(buttonId, value / 100);
109
+ }, min: "0", max: "100" })] })) })] }));
110
+ };
111
+ //# sourceMappingURL=analog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analog.js","sourceRoot":"","sources":["../../../src/components/analog.tsx"],"names":[],"mappings":"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"}