Fix: rats not visible

This commit is contained in:
Dejvino 2025-11-20 19:40:59 +01:00
parent 43e746a5a0
commit ae3383986a
3 changed files with 22 additions and 25 deletions

View File

@ -1,10 +1,10 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { updateDoor } from '../scene/door.js';
import { updateVcrDisplay } from '../scene/vcr-display.js'; import { updateVcrDisplay } from '../scene/vcr-display.js';
import { state } from '../state.js'; import { state } from '../state.js';
import { updateScreenEffect } from '../scene/magic-mirror.js' import { updateScreenEffect } from '../scene/magic-mirror.js'
import { updateCauldron } from '../scene/cauldron.js'; import { updateCauldron } from '../scene/cauldron.js';
import { updateFire } from '../scene/fireplace.js'; import { updateFire } from '../scene/fireplace.js';
import { updateRats } from '../scene/rat.js';
function updateCamera() { function updateCamera() {
const globalTime = Date.now() * 0.00003; const globalTime = Date.now() * 0.00003;
@ -20,7 +20,7 @@ function updateCamera() {
// Base LookAt target (Center of the screen) // Base LookAt target (Center of the screen)
const baseTargetX = -0.2; const baseTargetX = -0.2;
const baseTargetY = 1.7; const baseTargetY = 1.6;
const baseTargetZ = -0.3; const baseTargetZ = -0.3;
// Camera Position Offsets (Drift) // Camera Position Offsets (Drift)
@ -80,18 +80,6 @@ function updateVideo() {
} }
} }
function updateVcr() {
const currentTime = state.baseTime + state.videoElement.currentTime;
if (Math.abs(currentTime - state.lastUpdateTime) > 0.1) {
updateVcrDisplay(currentTime);
state.lastUpdateTime = currentTime;
}
if (currentTime - state.lastBlinkToggleTime > 0.5) { // Blink every 0.5 seconds
state.blinkState = !state.blinkState;
state.lastBlinkToggleTime = currentTime;
}
}
function updateBooks() { function updateBooks() {
const LEVITATE_CHANCE = 0.0003; // Chance for a resting book to start levitating per frame const LEVITATE_CHANCE = 0.0003; // Chance for a resting book to start levitating per frame
const LEVITATE_DURATION_MIN = 100; // frames const LEVITATE_DURATION_MIN = 100; // frames
@ -167,13 +155,12 @@ export function animate() {
updateScreenLight(); updateScreenLight();
updateVideo(); updateVideo();
updateShaderTime(); updateShaderTime();
// updateVcr();
updateBooks(); updateBooks();
// updateDoor(); updatePictureFrame();
// updatePictureFrame();
updateScreenEffect(); updateScreenEffect();
updateFire(); updateFire();
updateCauldron(); updateCauldron();
updateRats();
// RENDER! // RENDER!
state.renderer.render(state.scene, state.camera); state.renderer.render(state.scene, state.camera);

View File

@ -1,7 +1,7 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { state } from '../state.js'; import { state } from '../state.js';
const SLEEP_WAIT = 1; const SLEEP_WAIT = 60;
export class Rat { export class Rat {
constructor(path, initialDelay) { constructor(path, initialDelay) {
@ -69,9 +69,10 @@ export function createRats(x, y, z, rotY) {
const ratPath = new THREE.CatmullRomCurve3([ const ratPath = new THREE.CatmullRomCurve3([
new THREE.Vector3(x, y, z), // Start at the hole new THREE.Vector3(x, y, z), // Start at the hole
new THREE.Vector3(x-2.0, 0, z), new THREE.Vector3(x-2.0, 0, z),
new THREE.Vector3(0, 0, 1.0), new THREE.Vector3(0.8, 0, -1.2),
new THREE.Vector3(-1.0, 0, 1.8), new THREE.Vector3(-1.0, 0, -1.3),
new THREE.Vector3(-1.5, 0, 0.5), new THREE.Vector3(-1.8, 0, -1.0),
new THREE.Vector3(-1.9, 0, 0.7),
new THREE.Vector3(0.5, 0, 0.5), new THREE.Vector3(0.5, 0, 0.5),
new THREE.Vector3(1.8, 0, 1.0), new THREE.Vector3(1.8, 0, 1.0),
new THREE.Vector3(x, y, z), // End at the hole new THREE.Vector3(x, y, z), // End at the hole

View File

@ -78,7 +78,7 @@ export function createSceneObjects() {
state.scene.add(candleGroup); state.scene.add(candleGroup);
createTable(-1.8, 0, -0.8, Math.PI / 2.3); createTable(-1.8, 0, -1.2, Math.PI / 2.3);
// Add cauldron on top of the table (Y = table height + cauldron radius) // Add cauldron on top of the table (Y = table height + cauldron radius)
createCauldron(-1.8, 0.5 + 0.2, -0.8); createCauldron(-1.8, 0.5 + 0.2, -0.8);
@ -143,13 +143,13 @@ export function createSceneObjects() {
createRats(state.roomSize/2 - 0.01, 0, 0.37, -Math.PI / 2); createRats(state.roomSize/2 - 0.01, 0, 0.37, -Math.PI / 2);
createBookshelf(-state.roomSize/2 + 0.2, state.roomSize/2*0.2, Math.PI/2, 0); createBookshelf(-state.roomSize/2 + 0.2, state.roomSize/2*0.1, Math.PI/2, 0);
createBookshelf(-state.roomSize/2 + 0.2, state.roomSize/2*0.7, Math.PI/2, 0); createBookshelf(-state.roomSize/2 + 0.2, state.roomSize/2*0.7, Math.PI/2, 0);
createBookshelf(-state.roomSize/2 * 0.7, -state.roomSize/2+0.3, 0, 1); createBookshelf(-state.roomSize/2 * 0.7, -state.roomSize/2+0.3, 0, 1);
const pictureFrame = new PictureFrame(state.scene, { const pictureFrame = new PictureFrame(state.scene, {
position: new THREE.Vector3(-state.roomSize/2, 1.7, -state.roomSize/2 + 0.6), position: new THREE.Vector3(-state.roomSize/2, 1.7, -state.roomSize/2 + 0.7),
width: 0.5, width: 0.7,
height: 1, height: 1,
imageUrls: [painting1, painting2], imageUrls: [painting1, painting2],
rotationY: Math.PI / 2 rotationY: Math.PI / 2
@ -165,4 +165,13 @@ export function createSceneObjects() {
rotationY: -Math.PI / 2 rotationY: -Math.PI / 2
}); });
state.pictureFrames.push(pictureFrame2); state.pictureFrames.push(pictureFrame2);
const pictureFrame3 = new PictureFrame(state.scene, {
position: new THREE.Vector3(state.roomSize/2, 1.7, 0.75),
width: 0.7,
height: 1.2,
imageUrls: [painting2, painting1],
rotationY: -Math.PI / 2
});
state.pictureFrames.push(pictureFrame3);
} }