Add support for 'brushes', 'modelInstances', and 'entities' in transform session comparison

This commit is contained in:
2026-04-15 14:41:58 +02:00
parent c32997b710
commit fb8da5f531

View File

@@ -1032,6 +1032,26 @@ export function doesTransformSessionChangeTarget(
session.target.initialGeometry
))
);
case "brushes":
return (
session.preview.kind === "brushes" &&
(!areVec3Equal(session.preview.pivot, session.target.initialPivot) ||
session.preview.items.length !== session.target.items.length ||
session.preview.items.some((item, index) => {
const targetItem = session.target.items[index];
return (
item.brushId !== targetItem.brushId ||
!areVec3Equal(item.center, targetItem.initialCenter) ||
!areVec3Equal(
item.rotationDegrees,
targetItem.initialRotationDegrees
) ||
!areVec3Equal(item.size, targetItem.initialSize) ||
!areBrushGeometriesEqual(item.geometry, targetItem.initialGeometry)
);
}))
);
case "modelInstance":
return (
session.preview.kind === "modelInstance" &&
@@ -1045,6 +1065,25 @@ export function doesTransformSessionChangeTarget(
) ||
!areVec3Equal(session.preview.scale, session.target.initialScale))
);
case "modelInstances":
return (
session.preview.kind === "modelInstances" &&
(!areVec3Equal(session.preview.pivot, session.target.initialPivot) ||
session.preview.items.length !== session.target.items.length ||
session.preview.items.some((item, index) => {
const targetItem = session.target.items[index];
return (
item.modelInstanceId !== targetItem.modelInstanceId ||
!areVec3Equal(item.position, targetItem.initialPosition) ||
!areVec3Equal(
item.rotationDegrees,
targetItem.initialRotationDegrees
) ||
!areVec3Equal(item.scale, targetItem.initialScale)
);
}))
);
case "pathPoint":
return (
session.preview.kind === "pathPoint" &&
@@ -1065,6 +1104,24 @@ export function doesTransformSessionChangeTarget(
session.target.initialRotation
))
);
case "entities":
return (
session.preview.kind === "entities" &&
(!areVec3Equal(session.preview.pivot, session.target.initialPivot) ||
session.preview.items.length !== session.target.items.length ||
session.preview.items.some((item, index) => {
const targetItem = session.target.items[index];
return (
item.entityId !== targetItem.entityId ||
!areVec3Equal(item.position, targetItem.initialPosition) ||
!areEntityTransformRotationsEqual(
item.rotation,
targetItem.initialRotation
)
);
}))
);
}
}