Add geometry to transform session command and update box brush transform command

This commit is contained in:
2026-04-05 02:54:51 +02:00
parent c5f4f99598
commit 667849750c
2 changed files with 10 additions and 3 deletions

View File

@@ -92,6 +92,7 @@ export function createCommitTransformSessionCommand(document: SceneDocument, ses
center: session.preview.center,
rotationDegrees: session.preview.rotationDegrees,
size: session.preview.size,
geometry: session.preview.geometry,
label: createTransformCommandLabel(session)
});
case "brushEdge":
@@ -108,6 +109,7 @@ export function createCommitTransformSessionCommand(document: SceneDocument, ses
center: session.preview.center,
rotationDegrees: session.preview.rotationDegrees,
size: session.preview.size,
geometry: session.preview.geometry,
label: createTransformCommandLabel(session)
});
case "brushVertex":
@@ -124,6 +126,7 @@ export function createCommitTransformSessionCommand(document: SceneDocument, ses
center: session.preview.center,
rotationDegrees: session.preview.rotationDegrees,
size: session.preview.size,
geometry: session.preview.geometry,
label: createTransformCommandLabel(session)
});
case "modelInstance": {

View File

@@ -3,7 +3,7 @@ import type { ToolMode } from "../core/tool-mode";
import { createOpaqueId } from "../core/ids";
import type { EditorSelection } from "../core/selection";
import type { Vec3 } from "../core/vector";
import { cloneBoxBrushGeometry, scaleBoxBrushGeometryToSize } from "../document/brushes";
import { cloneBoxBrushGeometry, deriveBoxBrushSizeFromGeometry, scaleBoxBrushGeometryToSize, type BoxBrushGeometry } from "../document/brushes";
import {
cloneSelectionForCommand,
@@ -28,6 +28,7 @@ interface SetBoxBrushTransformCommandOptions {
center: Vec3;
rotationDegrees: Vec3;
size: Vec3;
geometry?: BoxBrushGeometry;
label?: string;
}
@@ -105,14 +106,17 @@ export function createSetBoxBrushTransformCommand(options: SetBoxBrushTransformC
previousToolMode = context.getToolMode();
}
const nextGeometry = scaleBoxBrushGeometryToSize(brush.geometry, options.size);
const nextGeometry = options.geometry === undefined ? scaleBoxBrushGeometryToSize(brush.geometry, options.size) : cloneBoxBrushGeometry(options.geometry);
const nextSize = deriveBoxBrushSizeFromGeometry(nextGeometry);
assertPositiveSize(nextSize);
context.setDocument(
replaceBrush(currentDocument, {
...brush,
center: cloneVec3(options.center),
rotationDegrees: cloneVec3(options.rotationDegrees),
size: cloneVec3(options.size),
size: nextSize,
geometry: nextGeometry
})
);