diff --git a/src/viewport-three/viewport-transient-state.ts b/src/viewport-three/viewport-transient-state.ts index 1ff68b0f..5ed7f513 100644 --- a/src/viewport-three/viewport-transient-state.ts +++ b/src/viewport-three/viewport-transient-state.ts @@ -20,6 +20,15 @@ export type CreationTarget = kind: "cylinder-brush"; sideCount: number; } + | { + kind: "cone-brush"; + sideCount: number; + } + | { + kind: "torus-brush"; + majorSegmentCount: number; + tubeSegmentCount: number; + } | { kind: "entity"; entityKind: EntityKind; @@ -84,6 +93,17 @@ export function cloneViewportToolPreview(toolPreview: ViewportToolPreview): View kind: "cylinder-brush", sideCount: toolPreview.target.sideCount } + : toolPreview.target.kind === "cone-brush" + ? { + kind: "cone-brush", + sideCount: toolPreview.target.sideCount + } + : toolPreview.target.kind === "torus-brush" + ? { + kind: "torus-brush", + majorSegmentCount: toolPreview.target.majorSegmentCount, + tubeSegmentCount: toolPreview.target.tubeSegmentCount + } : { kind: "box-brush" }, @@ -134,6 +154,23 @@ export function areViewportToolPreviewsEqual(left: ViewportToolPreview, right: V return false; } + if ( + left.target.kind === "cone-brush" && + right.target.kind === "cone-brush" && + left.target.sideCount !== right.target.sideCount + ) { + return false; + } + + if ( + left.target.kind === "torus-brush" && + right.target.kind === "torus-brush" && + (left.target.majorSegmentCount !== right.target.majorSegmentCount || + left.target.tubeSegmentCount !== right.target.tubeSegmentCount) + ) { + return false; + } + if (left.center === null || right.center === null) { return left.center === right.center; }