Update viewport transient state to support cone and torus brushes

This commit is contained in:
2026-04-15 09:08:38 +02:00
parent 65772870c6
commit 2feb5799b2

View File

@@ -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;
}