DispatchTouchEvent.ts 2.1 Ko
Télécharger le fichier
import { GetRoomEngine, MouseEventType, TouchEventType } from '@octane/renderer';
let didMouseMove = false;
let lastClick = 0;
let clickCount = 0;
export const DispatchTouchEvent = (
event: TouchEvent,
canvasId: number = 1,
longTouch: boolean = false,
altKey: boolean = false,
ctrlKey: boolean = false,
shiftKey: boolean = false
) => {
let x = 0;
let y = 0;
if (event.touches[0]) {
x = event.touches[0].clientX;
y = event.touches[0].clientY;
} else if (event.changedTouches[0]) {
x = event.changedTouches[0].clientX;
y = event.changedTouches[0].clientY;
}
let eventType = event.type;
if (longTouch) eventType = TouchEventType.TOUCH_LONG;
if (eventType === MouseEventType.MOUSE_CLICK || eventType === TouchEventType.TOUCH_END) {
eventType = MouseEventType.MOUSE_CLICK;
if (lastClick) {
clickCount = 1;
if (lastClick >= Date.now() - 300) clickCount++;
}
lastClick = Date.now();
if (clickCount === 2) {
if (!didMouseMove) eventType = MouseEventType.DOUBLE_CLICK;
clickCount = 0;
lastClick = null;
}
}
switch (eventType) {
case MouseEventType.MOUSE_CLICK:
break;
case MouseEventType.DOUBLE_CLICK:
break;
case TouchEventType.TOUCH_START:
eventType = MouseEventType.MOUSE_DOWN;
didMouseMove = false;
break;
case TouchEventType.TOUCH_MOVE:
eventType = MouseEventType.MOUSE_MOVE;
didMouseMove = true;
break;
case TouchEventType.TOUCH_END:
eventType = MouseEventType.MOUSE_UP;
break;
case TouchEventType.TOUCH_LONG:
eventType = MouseEventType.MOUSE_DOWN_LONG;
break;
default:
return;
}
if (eventType === TouchEventType.TOUCH_START) {
GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false);
}
GetRoomEngine().dispatchMouseEvent(canvasId, x, y, eventType, altKey, ctrlKey, shiftKey, false);
};
