Skip to content

Commit 2c86281

Browse files
authored
fix: use wasd to move camera as default (#593)
1 parent fe230d9 commit 2c86281

File tree

1 file changed

+33
-8
lines changed

1 file changed

+33
-8
lines changed

editor/src/editor/nodes/camera.ts

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,15 @@ import { EditorFreeCameraPanInput } from "./camera-pan-input";
33

44
import { isDomTextInputFocused } from "../../tools/dom";
55

6+
const DEFAULT_KEYS = {
7+
keysUp: [87], // W - Forward
8+
keysDown: [83], // S - Backward
9+
keysLeft: [65], // A - Left
10+
keysRight: [68], // D - Right
11+
keysUpward: [69], // E - Up
12+
keysDownward: [81], // Q - Down
13+
};
14+
615
export class EditorCamera extends FreeCamera {
716
private _savedSpeed: number | null = null;
817
private _panInput: EditorFreeCameraPanInput;
@@ -20,6 +29,8 @@ export class EditorCamera extends FreeCamera {
2029
public constructor(name: string, position: Vector3, scene: Scene, setActiveOnSceneIfNoneActive?: boolean) {
2130
super(name, position, scene, setActiveOnSceneIfNoneActive);
2231

32+
this._setDefaultKeys();
33+
2334
this.inputs.addMouseWheel();
2435
this._panInput = new EditorFreeCameraPanInput();
2536

@@ -72,19 +83,24 @@ export class EditorCamera extends FreeCamera {
7283
public configureFromPreferences(): void {
7384
try {
7485
const keys = JSON.parse(localStorage.getItem("editor-camera-controls") as string);
75-
this.keysUp = keys.keysUp;
76-
this.keysDown = keys.keysDown;
77-
this.keysLeft = keys.keysLeft;
78-
this.keysRight = keys.keysRight;
79-
this.keysUpward = keys.keysUpward;
80-
this.keysDownward = keys.keysDownward;
86+
if (keys && keys.keysUp && keys.keysDown && keys.keysLeft && keys.keysRight && keys.keysUpward && keys.keysDownward) {
87+
this.keysUp = keys.keysUp;
88+
this.keysDown = keys.keysDown;
89+
this.keysLeft = keys.keysLeft;
90+
this.keysRight = keys.keysRight;
91+
this.keysUpward = keys.keysUpward;
92+
this.keysDownward = keys.keysDownward;
93+
} else {
94+
this._setDefaultKeys();
95+
}
8196

8297
// Load pan sensitivity multiplier if available
83-
if (keys.panSensitivityMultiplier !== undefined) {
98+
if (keys && keys.panSensitivityMultiplier !== undefined) {
8499
this.panSensitivityMultiplier = keys.panSensitivityMultiplier;
85100
}
86101
} catch (e) {
87-
// Catch silently.
102+
// If no preferences found or error occurred, use defaults
103+
this._setDefaultKeys();
88104
}
89105
}
90106

@@ -121,6 +137,15 @@ export class EditorCamera extends FreeCamera {
121137
public set panSensitivityMultiplier(value: number) {
122138
this._panInput.panSensitivityMultiplier = value;
123139
}
140+
141+
private _setDefaultKeys() {
142+
this.keysUp = DEFAULT_KEYS.keysUp;
143+
this.keysDown = DEFAULT_KEYS.keysDown;
144+
this.keysLeft = DEFAULT_KEYS.keysLeft;
145+
this.keysRight = DEFAULT_KEYS.keysRight;
146+
this.keysUpward = DEFAULT_KEYS.keysUpward;
147+
this.keysDownward = DEFAULT_KEYS.keysDownward;
148+
}
124149
}
125150

126151
Node.AddNodeConstructor("EditorCamera", (name, scene) => {

0 commit comments

Comments
 (0)