t(() => {
				clearTimeout(debounceTimeout);
				debounceTimeout = null;

				mouse.x = (event.clientX / window.innerWidth) * 2 - 1;
				mouse.y = -(event.clientY / window.innerHeight) * 2 + 1;

				ray.origin.setFromMatrixPosition(camera.worldMatrix);
				ray.direction.set(mouse.x, mouse.y, 0.5).unproject(camera).sub(ray.origin).normalize();

				const interSect = ray.intersectBox(water.geometry.boundingBox);

				if (interSect) {
					const pointOnPlane = ray.origin.add(ray.direction.multiplyScalar(-ray.o