diff --git a/src/viewport-three/transform-pointer-intent.ts b/src/viewport-three/transform-pointer-intent.ts new file mode 100644 index 00000000..9e28d40a --- /dev/null +++ b/src/viewport-three/transform-pointer-intent.ts @@ -0,0 +1,31 @@ +import type { TransformSessionState } from "../core/transform-session"; +import type { ViewportPanelId } from "./viewport-layout"; + +export interface TransformPointerDownIntent { + commitActiveTransform: boolean; + allowGizmoInteraction: boolean; +} + +export function resolveTransformPointerDownIntent( + transformSession: TransformSessionState, + panelId: ViewportPanelId +): TransformPointerDownIntent { + if (transformSession.kind !== "active") { + return { + commitActiveTransform: false, + allowGizmoInteraction: true + }; + } + + if (transformSession.sourcePanelId !== panelId) { + return { + commitActiveTransform: false, + allowGizmoInteraction: false + }; + } + + return { + commitActiveTransform: true, + allowGizmoInteraction: false + }; +}