UNPKG

polygonjs-engine

Version:

node-based webgl 3D engine https://polygonjs.com

64 lines (52 loc) 2.05 kB
import {Vector2} from 'three/src/math/Vector2'; export class EventHelper { constructor(private element: HTMLElement) {} set_element(element: HTMLElement) { this.element = element; } static element_position(event: MouseEvent | TouchEvent, element: HTMLElement, position: Vector2) { const dim = element.getBoundingClientRect(); if ((event as TouchEvent).changedTouches) { event = event as TouchEvent; const touch = event.changedTouches[0]; position.x = touch.pageX - dim.x; position.y = touch.pageY - dim.y; } else { event = event as MouseEvent; position.x = event.pageX - dim.x; position.y = event.pageY - dim.y; } } // static element_position_old(event: MouseEvent, element: HTMLElement) { // const dim = element.getBoundingClientRect(); // const x = event.pageX - dim.x; // const y = event.pageY - dim.y; // // console.log(event, x, y) // return new Vector2(x, y); // } static normalized_position(event: MouseEvent, element: HTMLElement, position: Vector2) { this.element_position(event, element, position); const dim = element.getBoundingClientRect(); // const mouse = new Vector2(); position.x = ((position.x - window.scrollX) / dim.width) * 2 - 1; position.y = -(((position.y - window.scrollY) / dim.height) * 2 - 1); // return mouse; } static normalized_position_0_1(event: MouseEvent, element: HTMLElement, position: Vector2) { this.element_position(event, element, position); const dim = element.getBoundingClientRect(); // const mouse = new Vector2(); position.x = (position.x - window.scrollX) / dim.width; position.y = (position.y - window.scrollY) / dim.height; // return mouse; } element_position(event: MouseEvent, position: Vector2) { EventHelper.element_position(event, this.element, position); } // element_position_old(event: MouseEvent) { // return EventHelper.element_position_old(event, this.element); // } normalized_position(event: MouseEvent, position: Vector2) { EventHelper.normalized_position(event, this.element, position); } }