Skip to content

Commit 3e5b312

Browse files
authored
Merge pull request #184 from dli7319/modetoggle
Allow configuring the simulator mode toggler order.
2 parents f2d7cdf + af4abb9 commit 3e5b312

File tree

4 files changed

+22
-10
lines changed

4 files changed

+22
-10
lines changed

src/addons/simulator/ui/EnterXRButton.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ export class EnterXRButton extends LitElement {
3434
}
3535

3636
onClick() {
37-
this.setSimulatorMode(xb.NEXT_SIMULATOR_MODE[this.simulatorMode]);
37+
this.setSimulatorMode(
38+
xb.core.options.simulator.modeToggle.toggleOrder[this.simulatorMode]
39+
);
3840
this.blur(); // Removes focus from the button after click
3941
}
4042

src/addons/simulator/ui/ModeIndicator.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ export class SimulatorModeIndicator extends LitElement {
3838
}
3939

4040
onClick() {
41-
this.setSimulatorMode(xb.NEXT_SIMULATOR_MODE[this.simulatorMode]);
41+
this.setSimulatorMode(
42+
xb.core.options.simulator.modeToggle.toggleOrder[this.simulatorMode]
43+
);
4244
this.blur(); // Removes focus from the button after click
4345
}
4446

src/simulator/SimulatorControls.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,7 @@ import {SimulatorRenderMode} from './SimulatorConstants';
1313
import {SimulatorControllerState} from './SimulatorControllerState';
1414
import {SimulatorHands} from './SimulatorHands';
1515
import {SimulatorInterface} from './SimulatorInterface';
16-
import {
17-
NEXT_SIMULATOR_MODE,
18-
SimulatorMode,
19-
SimulatorOptions,
20-
} from './SimulatorOptions';
16+
import {SimulatorMode, SimulatorOptions} from './SimulatorOptions';
2117

2218
function preventDefault(event: Event) {
2319
event.preventDefault();
@@ -39,6 +35,7 @@ export class SimulatorControls {
3935
simulatorModeControls: SimulatorControlMode;
4036
simulatorModes: {[key: string]: SimulatorControlMode};
4137
renderer!: THREE.WebGLRenderer;
38+
private simulatorOptions?: SimulatorOptions;
4239

4340
private _onPointerDown = this.onPointerDown.bind(this);
4441
private _onPointerUp = this.onPointerUp.bind(this);
@@ -112,6 +109,7 @@ export class SimulatorControls {
112109
this.setSimulatorMode(simulatorOptions.defaultMode);
113110
this.simulatorControllerState.currentControllerIndex =
114111
simulatorOptions.defaultHand === Handedness.LEFT ? 0 : 1;
112+
this.simulatorOptions = simulatorOptions;
115113
this.connect();
116114
}
117115

@@ -157,8 +155,13 @@ export class SimulatorControls {
157155
return;
158156
}
159157
this.downKeys.add(event.code as Keycodes);
160-
if (event.code == Keycodes.LEFT_SHIFT_CODE) {
161-
this.setSimulatorMode(NEXT_SIMULATOR_MODE[this.simulatorMode]);
158+
if (
159+
this.simulatorOptions &&
160+
event.code === this.simulatorOptions.modeToggle.toggleKey
161+
) {
162+
this.setSimulatorMode(
163+
this.simulatorOptions.modeToggle.toggleOrder[this.simulatorMode]
164+
);
162165
}
163166
this.simulatorModeControls.onKeyDown(event);
164167
}

src/simulator/SimulatorOptions.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ import {XR_BLOCKS_ASSETS_PATH} from '../constants';
44
import {Handedness} from '../input/Hands';
55
import {deepMerge} from '../utils/OptionsUtils';
66
import {DeepPartial, DeepReadonly} from '../utils/Types';
7+
import {Keycodes} from '../utils/Keycodes';
78

89
export enum SimulatorMode {
910
USER = 'User',
1011
POSE = 'Navigation',
1112
CONTROLLER = 'Hands',
1213
}
1314

14-
export const NEXT_SIMULATOR_MODE = {
15+
const DEFAULT_MODE_TOGGLE_ORDER = {
1516
[SimulatorMode.USER]: SimulatorMode.POSE,
1617
[SimulatorMode.POSE]: SimulatorMode.CONTROLLER,
1718
[SimulatorMode.CONTROLLER]: SimulatorMode.USER,
@@ -34,6 +35,10 @@ export class SimulatorOptions {
3435
initialScenePosition = {x: -1.6, y: 0.3, z: 0};
3536
defaultMode = SimulatorMode.USER;
3637
defaultHand = Handedness.LEFT;
38+
modeToggle = {
39+
toggleKey: Keycodes.LEFT_SHIFT_CODE as Keycodes | null,
40+
toggleOrder: DEFAULT_MODE_TOGGLE_ORDER,
41+
};
3742
modeIndicator = {
3843
enabled: true,
3944
element: 'xrblocks-simulator-mode-indicator',

0 commit comments

Comments
 (0)