Skip to content
Snippets Groups Projects
Commit 2ca3e061 authored by Pavel Dobryakov's avatar Pavel Dobryakov
Browse files

fix touches

parent 3c36a98b
No related branches found
No related tags found
No related merge requests found
...@@ -1423,6 +1423,8 @@ canvas.addEventListener('mousedown', e => { ...@@ -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 => { ...@@ -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 => { ...@@ -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) { ...@@ -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;
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment