@polygonjs/polygonjs
Version:
node-based WebGL 3D engine https://polygonjs.com
41 lines (40 loc) • 1.38 kB
JavaScript
;
export class EventHelper {
constructor(element) {
this.element = element;
}
setElement(element) {
this.element = element;
}
static elementPosition(event, element, position) {
const dim = element.getBoundingClientRect();
if (event.changedTouches) {
event = event;
const touch = event.changedTouches[0];
position.x = touch.pageX - dim.x;
position.y = touch.pageY - dim.y;
} else {
event = event;
position.x = event.pageX - dim.x;
position.y = event.pageY - dim.y;
}
}
static normalizedPosition(event, element, position) {
this.elementPosition(event, element, position);
const dim = element.getBoundingClientRect();
position.x = (position.x - globalThis.scrollX) / dim.width * 2 - 1;
position.y = -((position.y - globalThis.scrollY) / dim.height * 2 - 1);
}
static normalized_position_0_1(event, element, position) {
this.elementPosition(event, element, position);
const dim = element.getBoundingClientRect();
position.x = (position.x - globalThis.scrollX) / dim.width;
position.y = (position.y - globalThis.scrollY) / dim.height;
}
elementPosition(event, position) {
EventHelper.elementPosition(event, this.element, position);
}
normalizedPosition(event, position) {
EventHelper.normalizedPosition(event, this.element, position);
}
}