-
Rotation
-
-
- X
- {
- const nextValue = event.currentTarget.value;
- setRotationDraft((draft) => ({ ...draft, x: nextValue }));
- }}
- onBlur={applyRotationChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
- />
-
-
- Y
- {
- const nextValue = event.currentTarget.value;
- setRotationDraft((draft) => ({ ...draft, y: nextValue }));
- }}
- onBlur={applyRotationChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
- />
-
-
- Z
- {
- const nextValue = event.currentTarget.value;
- setRotationDraft((draft) => ({ ...draft, z: nextValue }));
- }}
- onBlur={applyRotationChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
- />
-
+ {whiteboxSelectionMode !== "object" ? (
+
+ {whiteboxSelectionMode === "face"
+ ? "Face mode keeps whole-solid transforms out of the way. Select a face to edit its material or UV transform."
+ : whiteboxSelectionMode === "edge"
+ ? "Edge mode is selection-only in this slice. Edge transforms land next."
+ : "Vertex mode is selection-only in this slice. Vertex transforms land next."}
-
+ ) : (
+ <>
+
+
Center
+
+
+ X
+ {
+ const nextValue = event.currentTarget.value;
+ setPositionDraft((draft) => ({ ...draft, x: nextValue }));
+ }}
+ onBlur={applyPositionChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyPositionChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyPositionChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyPositionChange)}
+ />
+
+
+ Y
+ {
+ const nextValue = event.currentTarget.value;
+ setPositionDraft((draft) => ({ ...draft, y: nextValue }));
+ }}
+ onBlur={applyPositionChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyPositionChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyPositionChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyPositionChange)}
+ />
+
+
+ Z
+ {
+ const nextValue = event.currentTarget.value;
+ setPositionDraft((draft) => ({ ...draft, z: nextValue }));
+ }}
+ onBlur={applyPositionChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyPositionChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyPositionChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyPositionChange)}
+ />
+
+
+
-
-
Size
-
-
- X
- {
- const nextValue = event.currentTarget.value;
- setSizeDraft((draft) => ({ ...draft, x: nextValue }));
- }}
- onBlur={applySizeChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
- />
-
-
- Y
- {
- const nextValue = event.currentTarget.value;
- setSizeDraft((draft) => ({ ...draft, y: nextValue }));
- }}
- onBlur={applySizeChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
- />
-
-
- Z
- {
- const nextValue = event.currentTarget.value;
- setSizeDraft((draft) => ({ ...draft, z: nextValue }));
- }}
- onBlur={applySizeChange}
- onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
- onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
- onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
- />
-
-
-
+
+
Rotation
+
+
+ X
+ {
+ const nextValue = event.currentTarget.value;
+ setRotationDraft((draft) => ({ ...draft, x: nextValue }));
+ }}
+ onBlur={applyRotationChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
+ />
+
+
+ Y
+ {
+ const nextValue = event.currentTarget.value;
+ setRotationDraft((draft) => ({ ...draft, y: nextValue }));
+ }}
+ onBlur={applyRotationChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
+ />
+
+
+ Z
+ {
+ const nextValue = event.currentTarget.value;
+ setRotationDraft((draft) => ({ ...draft, z: nextValue }));
+ }}
+ onBlur={applyRotationChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applyRotationChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applyRotationChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applyRotationChange)}
+ />
+
+
+
+
+
+
Size
+
+
+ X
+ {
+ const nextValue = event.currentTarget.value;
+ setSizeDraft((draft) => ({ ...draft, x: nextValue }));
+ }}
+ onBlur={applySizeChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
+ />
+
+
+ Y
+ {
+ const nextValue = event.currentTarget.value;
+ setSizeDraft((draft) => ({ ...draft, y: nextValue }));
+ }}
+ onBlur={applySizeChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
+ />
+
+
+ Z
+ {
+ const nextValue = event.currentTarget.value;
+ setSizeDraft((draft) => ({ ...draft, z: nextValue }));
+ }}
+ onBlur={applySizeChange}
+ onKeyDown={(event) => handleDraftVectorKeyDown(event, applySizeChange)}
+ onKeyUp={(event) => handleNumberInputKeyUp(event, applySizeChange)}
+ onPointerUp={(event) => handleNumberInputPointerUp(event, applySizeChange)}
+ />
+
+
+
+ >
+ )}