@@ -3,6 +3,15 @@ import { EditorFreeCameraPanInput } from "./camera-pan-input";
33
44import { 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+
615export 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
126151Node . AddNodeConstructor ( "EditorCamera" , ( name , scene ) => {
0 commit comments