{ 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;" >