114 lines
1.6 KiB
JavaScript
114 lines
1.6 KiB
JavaScript
// eventManager.js
|
|
|
|
export default class EventManager {
|
|
|
|
isDragging = false;
|
|
|
|
lastX = 0;
|
|
|
|
lastY = 0;
|
|
|
|
camera;
|
|
|
|
canvas;
|
|
|
|
setCanvas( canvas ) {
|
|
|
|
this.canvas = canvas;
|
|
|
|
|
|
//this.registerEventListeners();
|
|
|
|
//this.handleResize();
|
|
|
|
}
|
|
|
|
setup( canvas, camera ) {
|
|
|
|
this.canvas = canvas;
|
|
|
|
this.camera = camera;
|
|
|
|
//this.registerEventListeners();
|
|
|
|
//this.handleResize();
|
|
|
|
}
|
|
|
|
registerEventListeners() {
|
|
|
|
this.canvas.addEventListener( "mousedown", this.onMouseDown.bind(this) );
|
|
|
|
this.canvas.addEventListener( "mouseup", this.onMouseUp.bind(this) );
|
|
|
|
this.canvas.addEventListener( "mouseleave", this.onMouseLeave.bind(this) );
|
|
|
|
this.canvas.addEventListener( "mousemove", this.onMouseMove.bind(this) );
|
|
|
|
this.canvas.addEventListener( "wheel", this.onWheel.bind(this), { passive: false } );
|
|
|
|
}
|
|
|
|
resize( event ) {
|
|
|
|
this.canvas.width = event.width;
|
|
|
|
this.canvas.height = event.height;
|
|
|
|
//this.canvas.width = window.innerWidth;
|
|
|
|
//this.canvas.height = window.innerHeight;
|
|
|
|
}
|
|
|
|
mousedown( event ) {
|
|
|
|
console.log("mouseDownHandler");
|
|
|
|
this.isDragging = true;
|
|
|
|
this.lastX = event.clientX;
|
|
|
|
this.lastY = event.clientY;
|
|
|
|
}
|
|
|
|
mouseup( event ) {
|
|
|
|
this.isDragging = false;
|
|
|
|
}
|
|
|
|
mouseleave( event ) {
|
|
|
|
this.isDragging = false;
|
|
|
|
}
|
|
|
|
mousemove( event ) {
|
|
|
|
if ( !this.isDragging ) return;
|
|
|
|
const deltaX = ( event.clientX - this.lastX ) * 0.005;
|
|
|
|
const deltaY = ( event.clientY - this.lastY ) * 0.005;
|
|
|
|
this.camera.rotate( deltaX, -deltaY );
|
|
|
|
this.lastX = event.clientX;
|
|
|
|
this.lastY = event.clientY;
|
|
|
|
}
|
|
|
|
wheel( event ) {
|
|
|
|
|
|
const delta = event.deltaY * 0.01;
|
|
|
|
this.camera.zoom( delta );
|
|
|
|
}
|
|
|
|
}
|