Add transform session management to EditorStore and ViewportTransientState
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
import type { Vec3 } from "../core/vector";
|
||||
import type { ToolMode } from "../core/tool-mode";
|
||||
import {
|
||||
areTransformSessionsEqual,
|
||||
cloneTransformSession,
|
||||
createInactiveTransformSession,
|
||||
type TransformSessionState
|
||||
} from "../core/transform-session";
|
||||
import type { EntityKind } from "../entities/entity-instances";
|
||||
import type { ViewportPanelId } from "./viewport-layout";
|
||||
|
||||
@@ -28,13 +34,15 @@ export type ViewportToolPreview = CreationViewportToolPreview | { kind: "none" }
|
||||
|
||||
export interface ViewportTransientState {
|
||||
toolPreview: ViewportToolPreview;
|
||||
transformSession: TransformSessionState;
|
||||
}
|
||||
|
||||
export function createDefaultViewportTransientState(): ViewportTransientState {
|
||||
return {
|
||||
toolPreview: {
|
||||
kind: "none"
|
||||
}
|
||||
},
|
||||
transformSession: createInactiveTransformSession()
|
||||
};
|
||||
}
|
||||
|
||||
@@ -110,3 +118,14 @@ export function isViewportToolPreviewCompatible(toolMode: ToolMode, toolPreview:
|
||||
|
||||
return toolMode === "create" && toolPreview.kind === "create";
|
||||
}
|
||||
|
||||
export function cloneViewportTransientState(transientState: ViewportTransientState): ViewportTransientState {
|
||||
return {
|
||||
toolPreview: cloneViewportToolPreview(transientState.toolPreview),
|
||||
transformSession: cloneTransformSession(transientState.transformSession)
|
||||
};
|
||||
}
|
||||
|
||||
export function areViewportTransientStatesEqual(left: ViewportTransientState, right: ViewportTransientState): boolean {
|
||||
return areViewportToolPreviewsEqual(left.toolPreview, right.toolPreview) && areTransformSessionsEqual(left.transformSession, right.transformSession);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user