Update brush handling logic in viewport-host.ts

This commit is contained in:
2026-04-15 07:58:26 +02:00
parent 18bc0997ac
commit 99b0c3723f

View File

@@ -1626,11 +1626,17 @@ export class ViewportHost {
session: ActiveTransformSession session: ActiveTransformSession
): TransformAxis { ): TransformAxis {
if (session.target.kind === "brushFace") { if (session.target.kind === "brushFace") {
return getBoxBrushFaceAxis(session.target.faceId); const previewBrush = this.createPreviewBrushForSession(session);
return previewBrush === null
? "y"
: getBrushFaceAxis(previewBrush, session.target.faceId);
} }
if (session.target.kind === "brushEdge") { if (session.target.kind === "brushEdge") {
return getBoxBrushEdgeAxis(session.target.edgeId); const previewBrush = this.createPreviewBrushForSession(session);
return previewBrush === null
? "y"
: getBrushEdgeAxis(previewBrush, session.target.edgeId);
} }
if ( if (
@@ -1649,21 +1655,16 @@ export class ViewportHost {
if (previewBrush !== null) { if (previewBrush !== null) {
if (session.target.kind === "brushFace") { if (session.target.kind === "brushFace") {
return getBoxBrushFaceWorldCenter( return getBrushFaceWorldCenter(previewBrush, session.target.faceId);
previewBrush,
session.target.faceId
);
} }
if (session.target.kind === "brushEdge") { if (session.target.kind === "brushEdge") {
return getBoxBrushEdgeWorldSegment( return getBrushEdgeWorldSegment(previewBrush, session.target.edgeId)
previewBrush, .center;
session.target.edgeId
).center;
} }
if (session.target.kind === "brushVertex") { if (session.target.kind === "brushVertex") {
return getBoxBrushVertexWorldPosition( return getBrushVertexWorldPosition(
previewBrush, previewBrush,
session.target.vertexId session.target.vertexId
); );
@@ -1685,7 +1686,7 @@ export class ViewportHost {
private createPreviewBrushForSession( private createPreviewBrushForSession(
session: ActiveTransformSession session: ActiveTransformSession
): BoxBrush | null { ): Brush | null {
if (session.preview.kind !== "brush") { if (session.preview.kind !== "brush") {
return null; return null;
} }
@@ -1701,12 +1702,11 @@ export class ViewportHost {
const currentBrush = this.currentDocument?.brushes[session.target.brushId]; const currentBrush = this.currentDocument?.brushes[session.target.brushId];
if (currentBrush === undefined || currentBrush.kind !== "box") { if (currentBrush === undefined) {
return null; return null;
} }
return { return updateBrush(currentBrush, {
...currentBrush,
center: { center: {
...session.preview.center ...session.preview.center
}, },
@@ -1716,8 +1716,8 @@ export class ViewportHost {
size: { size: {
...session.preview.size ...session.preview.size
}, },
geometry: cloneBoxBrushGeometry(session.preview.geometry) geometry: cloneBrushGeometry(session.preview.geometry)
}; });
} }
private clearTransformGizmo() { private clearTransformGizmo() {