{
sprite = '/pet/pick.webp';
dragged = true;
},
onDrag: ({ offsetX, offsetY, event }) => {
position.x = offsetX;
position.y = offsetY;
const mouseXD = event.movementX * delta;
const mouseYD = event.movementY * delta;
deltaTravelled += Math.sqrt(mouseXD ** 2 + mouseYD ** 2);
// reset mouse movement if it's not moving in the same direction so it doesnt accumulate its weird!@!@
mouseX = Math.sign(mouseXD) != Math.sign(mouseX) ? mouseXD : mouseX + mouseXD;
mouseY = Math.sign(mouseYD) != Math.sign(mouseY) ? mouseYD : mouseY + mouseYD;
rotationVelocity += mouseXD + mouseYD;
lastDragged = Date.now();
},
onDragEnd: () => {
// reset mouse movement if we stopped for longer than some time
if (Date.now() - lastDragged > 50) {
mouseX = 0.0;
mouseY = 0.0;
}
// apply velocity based on rotation since we already keep track of that
velocityX = mouseX * 70.0;
velocityY = mouseY * 50.0;
updateDistanceTravelled();
// reset mouse movement we dont want it to accumulate
mouseX = 0.0;
mouseY = 0.0;
dragged = false;
}
}}
class="fixed bottom-[5vh] z-[1000] hover:animate-squiggle"
style="cursor: url('/icons/gaze.webp'), pointer;"
>