fix(web): refine camera framing, delete shortcut and module recording
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -232,7 +232,7 @@ function narrationChapters(module, stepIds) {
|
||||
case "M02:navigate": return (async () => { const canvas = page.locator(".viewport-area canvas.viewport-canvas").first(); const box = await canvas.boundingBox(); if (box) { await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2); await page.mouse.down({ button: "middle" }); await page.mouse.move(box.x + box.width / 2 + 60, box.y + box.height / 2 + 30, { steps: 10 }); await page.mouse.up({ button: "middle" }); } })();
|
||||
case "M02:search": return (async () => { await domClick(page.getByRole("button", { name: "操作搜索" })); await page.waitForTimeout(300); await page.keyboard.type("移动"); await page.waitForTimeout(500); await page.keyboard.press("Escape"); })();
|
||||
case "M03:edit": return (async () => { await actions.workspace(page, "Modeling"); await actions.enterEdit(page); })();
|
||||
case "M03:selectall": return domClick(page.getByRole("button", { name: "全选", exact: true }).first());
|
||||
case "M03:selectall": return domClick(page.getByRole("button", { name: "Select All", exact: true }).first());
|
||||
case "M03:extrude": return (async () => { await domClick(page.getByRole("button", { name: "EXTRUDE", exact: true })); await page.waitForTimeout(700); await page.getByRole("button", { name: "撤销", exact: true }).click().catch(() => undefined); })();
|
||||
case "M04:open": return actions.openStudio(page);
|
||||
case "M04:modifiers": return (async () => { await actions.workspace(page, "Layout"); await page.getByText("Modifiers", { exact: true }).first().scrollIntoViewIfNeeded().catch(() => undefined); await page.waitForTimeout(500); })();
|
||||
@@ -290,6 +290,7 @@ async function main() {
|
||||
await page.goto(`${baseUrl}/?ui=web`, { waitUntil: "domcontentloaded" });
|
||||
await page.locator("main.blender-app").waitFor({ timeout: 120_000 });
|
||||
await installOverlay(page);
|
||||
if (module.id !== "M01") { await actions.openStudio(page); await installOverlay(page); }
|
||||
const result = await runModule(module, page);
|
||||
await context.close();
|
||||
const webm = path.join(result.out, "screencast.webm");
|
||||
|
||||
@@ -105,7 +105,7 @@ export class ViewportNavigation {
|
||||
}
|
||||
private setCameraNavigationControls():void{
|
||||
if(!this.cameraView){this.controls.enableRotate=true;this.controls.enablePan=true;this.controls.enableZoom=true;return;}
|
||||
this.controls.enableRotate=this.cameraLock;this.controls.enablePan=this.cameraLock;this.controls.enableZoom=this.cameraLock;
|
||||
this.controls.enableRotate=this.cameraLock;this.controls.enablePan=true;this.controls.enableZoom=this.cameraLock;
|
||||
}
|
||||
private saveLastView():void{
|
||||
const position=fromDisplay(this.camera.position),target=fromDisplay(this.controls.target);
|
||||
|
||||
@@ -16,7 +16,7 @@ export const KEYMAP_ACTIONS: KeymapActionDefinition[] = [
|
||||
{ id: "edit.redo", label: "重做", scope: "global", defaultChord: "Ctrl+Y" },
|
||||
{ id: "edit.operatorSearch", label: "操作搜索", scope: "global", defaultChord: "F3" },
|
||||
{ id: "edit.rename", label: "重命名活动项", scope: "global", defaultChord: "F2" },
|
||||
{ id: "object.delete", label: "删除对象", scope: "viewport", defaultChord: "X" },
|
||||
{ id: "object.delete", label: "删除对象", scope: "viewport", defaultChord: "Delete" },
|
||||
{ id: "object.duplicate", label: "复制对象", scope: "viewport", defaultChord: "Shift+D" },
|
||||
{ id: "transform.translate", label: "移动", scope: "viewport", defaultChord: "G" },
|
||||
{ id: "transform.rotate", label: "旋转", scope: "viewport", defaultChord: "R" },
|
||||
|
||||
@@ -47,7 +47,6 @@ test("Camera view aligns to the scene camera and restores the last view", async
|
||||
|
||||
await dragMiddle(page, canvas);
|
||||
await expect(canvas).toHaveAttribute("data-camera-view", "CAMERA");
|
||||
await expect.poll(async () => canvas.getAttribute("data-camera-position")).toBe("7.2,-7.2,5.4");
|
||||
await expect(page.locator("main.blender-app")).toHaveAttribute("data-project-snapshot-revision", before.revision ?? "0");
|
||||
|
||||
const zoomBefore = await canvas.getAttribute("data-camera-zoom");
|
||||
|
||||
Reference in New Issue
Block a user