diff --git a/src/scenes/airfryer.ts b/src/scenes/airfryer.ts index 41b6c6d..186e6b2 100644 --- a/src/scenes/airfryer.ts +++ b/src/scenes/airfryer.ts @@ -17,6 +17,7 @@ import { } from '../sim/airfryer'; import { el, Panel } from '../ui/hud'; import { loadBackdrop } from './props'; +import { loadProp } from './assets'; const TRAY_Y = 0.5; const TRAY_W = 3.2; // world size of the 1×1 tray space @@ -92,6 +93,14 @@ export class AirFryerView implements View { this.body.position.set(0, 0.5, -2.6); this.body.castShadow = true; this.root.add(this.body); + // The real machine, when it loads. The block above is the understudy. + void loadProp('/assets/models/air_fryer.glb', 2.3) + .then((prop) => { + prop.position.set(0, 0.0, -3.1); + this.body.visible = false; + this.root.add(prop); + }) + .catch(() => undefined); // The basket tray: a dark wire square, seen from above. this.tray = new THREE.Mesh( @@ -147,8 +156,10 @@ export class AirFryerView implements View { } update(dt: number): void { - this.app.camera.position.set(0, 4.4, 2.3); - this.app.camera.lookAt(0, TRAY_Y, 0.1); + // Back and up: the basket still fills the working area, but the machine it + // slides out of is in the shot. You should see what you are cooking IN. + this.app.camera.position.set(0, 5.4, 3.5); + this.app.camera.lookAt(0, TRAY_Y, -0.55); const s = this.session; if (!s) return; const inp = this.app.input;