diff --git a/src/app/editor-store.ts b/src/app/editor-store.ts index aee868dd..9140d9d0 100644 --- a/src/app/editor-store.ts +++ b/src/app/editor-store.ts @@ -12,11 +12,13 @@ import { saveSceneDocumentDraft } from "../serialization/local-draft-storage"; import { parseSceneDocumentJson, serializeSceneDocument } from "../serialization/scene-document-json"; +import type { ViewportViewMode } from "../viewport-three/viewport-view-modes"; export interface EditorStoreState { document: SceneDocument; selection: EditorSelection; toolMode: ToolMode; + viewportViewMode: ViewportViewMode; canUndo: boolean; canRedo: boolean; lastCommandLabel: string | null; @@ -38,6 +40,7 @@ export class EditorStore { private document: SceneDocument; private selection: EditorSelection = { kind: "none" }; private toolMode: ToolMode = "select"; + private viewportViewMode: ViewportViewMode = "perspective"; private previousEditingToolMode: Exclude = "select"; private readonly history = new CommandHistory(); private readonly listeners = new Set(); @@ -91,6 +94,15 @@ export class EditorStore { this.emit(); } + setViewportViewMode(viewportViewMode: ViewportViewMode) { + if (this.viewportViewMode === viewportViewMode) { + return; + } + + this.viewportViewMode = viewportViewMode; + this.emit(); + } + enterPlayMode() { if (this.toolMode === "play") { return; @@ -211,6 +223,7 @@ export class EditorStore { document: this.document, selection: this.selection, toolMode: this.toolMode, + viewportViewMode: this.viewportViewMode, canUndo: this.history.canUndo(), canRedo: this.history.canRedo(), lastCommandLabel: this.lastCommandLabel,