mirror of
https://github.com/PavelDoGreat/WebGL-Fluid-Simulation.git
synced 2025-10-04 09:51:38 +02:00
fix touches
This commit is contained in:
21
script.js
21
script.js
@@ -1423,6 +1423,8 @@ canvas.addEventListener('mousedown', e => {
|
|||||||
let posX = scaleByPixelRatio(e.offsetX);
|
let posX = scaleByPixelRatio(e.offsetX);
|
||||||
let posY = scaleByPixelRatio(e.offsetY);
|
let posY = scaleByPixelRatio(e.offsetY);
|
||||||
let pointer = pointers.find(p => p.id == -1);
|
let pointer = pointers.find(p => p.id == -1);
|
||||||
|
if (pointer == null)
|
||||||
|
pointer = new pointerPrototype();
|
||||||
updatePointerDownData(pointer, -1, posX, posY);
|
updatePointerDownData(pointer, -1, posX, posY);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1433,18 +1435,18 @@ canvas.addEventListener('mousemove', e => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('mouseup', () => {
|
window.addEventListener('mouseup', () => {
|
||||||
updatePoinerUpData(pointers[0]);
|
updatePointerUpData(pointers[0]);
|
||||||
});
|
});
|
||||||
|
|
||||||
canvas.addEventListener('touchstart', e => {
|
canvas.addEventListener('touchstart', e => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
const touches = e.targetTouches;
|
const touches = e.targetTouches;
|
||||||
for (let i = 0; i < touches.length; i++) {
|
while (touches.length >= pointers.length)
|
||||||
if (i >= pointers.length)
|
|
||||||
pointers.push(new pointerPrototype());
|
pointers.push(new pointerPrototype());
|
||||||
|
for (let i = 0; i < touches.length; i++) {
|
||||||
let posX = scaleByPixelRatio(touches[i].pageX);
|
let posX = scaleByPixelRatio(touches[i].pageX);
|
||||||
let posY = scaleByPixelRatio(touches[i].pageY);
|
let posY = scaleByPixelRatio(touches[i].pageY);
|
||||||
updatePointerDownData(pointers[i], touches[i].identifier, posX, posY);
|
updatePointerDownData(pointers[i + 1], touches[i].identifier, posX, posY);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1454,16 +1456,17 @@ canvas.addEventListener('touchmove', e => {
|
|||||||
for (let i = 0; i < touches.length; i++) {
|
for (let i = 0; i < touches.length; i++) {
|
||||||
let posX = scaleByPixelRatio(touches[i].pageX);
|
let posX = scaleByPixelRatio(touches[i].pageX);
|
||||||
let posY = scaleByPixelRatio(touches[i].pageY);
|
let posY = scaleByPixelRatio(touches[i].pageY);
|
||||||
updatePointerMoveData(pointers[i], posX, posY);
|
updatePointerMoveData(pointers[i + 1], posX, posY);
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
window.addEventListener('touchend', e => {
|
window.addEventListener('touchend', e => {
|
||||||
const touches = e.changedTouches;
|
const touches = e.changedTouches;
|
||||||
for (let i = 0; i < touches.length; i++)
|
for (let i = 0; i < touches.length; i++)
|
||||||
for (let j = 0; j < pointers.length; j++)
|
{
|
||||||
if (touches[i].identifier == pointers[j].id)
|
let pointer = pointers.find(p => p.id == touches[i].identifier);
|
||||||
updatePoinerUpData(pointers[j]);
|
updatePointerUpData(pointer);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('keydown', e => {
|
window.addEventListener('keydown', e => {
|
||||||
@@ -1496,7 +1499,7 @@ function updatePointerMoveData (pointer, posX, posY) {
|
|||||||
pointer.deltaY = correctDeltaY(pointer.texcoordY - pointer.prevTexcoordY);
|
pointer.deltaY = correctDeltaY(pointer.texcoordY - pointer.prevTexcoordY);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updatePoinerUpData (pointer) {
|
function updatePointerUpData (pointer) {
|
||||||
pointer.down = false;
|
pointer.down = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user