Update box brush UVs handling and add error checking
This commit is contained in:
@@ -3,6 +3,7 @@ import { createOpaqueId } from "../core/ids";
|
|||||||
import type { EditorSelection } from "../core/selection";
|
import type { EditorSelection } from "../core/selection";
|
||||||
import {
|
import {
|
||||||
cloneFaceUvState,
|
cloneFaceUvState,
|
||||||
|
updateBrush,
|
||||||
type FaceUvState,
|
type FaceUvState,
|
||||||
type WhiteboxFaceId
|
type WhiteboxFaceId
|
||||||
} from "../document/brushes";
|
} from "../document/brushes";
|
||||||
@@ -39,7 +40,7 @@ export function createUpdateBoxBrushAllFaceUvsCommand(
|
|||||||
previousUvStates = Object.fromEntries(
|
previousUvStates = Object.fromEntries(
|
||||||
getBrushFaceIds(currentBrush).map((faceId) => [
|
getBrushFaceIds(currentBrush).map((faceId) => [
|
||||||
faceId,
|
faceId,
|
||||||
cloneFaceUvState(currentBrush.faces[faceId].uv)
|
cloneFaceUvState(currentBrush.faces[faceId]?.uv)
|
||||||
])
|
])
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -53,20 +54,22 @@ export function createUpdateBoxBrushAllFaceUvsCommand(
|
|||||||
}
|
}
|
||||||
|
|
||||||
context.setDocument(
|
context.setDocument(
|
||||||
replaceBrush(currentDocument, {
|
replaceBrush(
|
||||||
...currentBrush,
|
currentDocument,
|
||||||
faces: Object.fromEntries(
|
updateBrush(currentBrush, {
|
||||||
getBrushFaceIds(currentBrush).map((faceId) => [
|
faces: Object.fromEntries(
|
||||||
faceId,
|
getBrushFaceIds(currentBrush).map((faceId) => [
|
||||||
{
|
faceId,
|
||||||
...currentBrush.faces[faceId],
|
{
|
||||||
uv: cloneFaceUvState(
|
...currentBrush.faces[faceId],
|
||||||
options.updateUvState(currentBrush.faces[faceId].uv, faceId)
|
uv: cloneFaceUvState(
|
||||||
)
|
options.updateUvState(currentBrush.faces[faceId].uv, faceId)
|
||||||
}
|
)
|
||||||
])
|
}
|
||||||
) as typeof currentBrush.faces
|
])
|
||||||
})
|
) as typeof currentBrush.faces
|
||||||
|
})
|
||||||
|
)
|
||||||
);
|
);
|
||||||
context.setToolMode("select");
|
context.setToolMode("select");
|
||||||
},
|
},
|
||||||
@@ -77,20 +80,23 @@ export function createUpdateBoxBrushAllFaceUvsCommand(
|
|||||||
|
|
||||||
const currentDocument = context.getDocument();
|
const currentDocument = context.getDocument();
|
||||||
const currentBrush = getBoxBrushOrThrow(currentDocument, options.brushId);
|
const currentBrush = getBoxBrushOrThrow(currentDocument, options.brushId);
|
||||||
|
const restoredUvStates = previousUvStates;
|
||||||
|
|
||||||
context.setDocument(
|
context.setDocument(
|
||||||
replaceBrush(currentDocument, {
|
replaceBrush(
|
||||||
...currentBrush,
|
currentDocument,
|
||||||
faces: Object.fromEntries(
|
updateBrush(currentBrush, {
|
||||||
getBrushFaceIds(currentBrush).map((faceId) => [
|
faces: Object.fromEntries(
|
||||||
faceId,
|
getBrushFaceIds(currentBrush).map((faceId) => [
|
||||||
{
|
faceId,
|
||||||
...currentBrush.faces[faceId],
|
{
|
||||||
uv: cloneFaceUvState(previousUvStates[faceId])
|
...currentBrush.faces[faceId],
|
||||||
}
|
uv: cloneFaceUvState(restoredUvStates[faceId])
|
||||||
])
|
}
|
||||||
) as typeof currentBrush.faces
|
])
|
||||||
})
|
) as typeof currentBrush.faces
|
||||||
|
})
|
||||||
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (previousSelection !== null) {
|
if (previousSelection !== null) {
|
||||||
|
|||||||
Reference in New Issue
Block a user