// eventManager.js import sdl from '@kmamal/sdl' var isNode = true; if ( typeof window === 'undefined' ) { //isNode = false; } console.log("isNode", isNode); 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 } ); } registerEventListenersNode() { var that = this; this.canvas.on('mouseMove', function( event ) { that.mousemove( event ) }); this.canvas.on('mouseButtonDown', function( event ) { that.mousedown( event ) }); this.canvas.on('mouseButtonUp', function( event ) { that.mouseup( event ) }); /* this.canvas.on( "mouseButtonDown", this.onMouseDown.bind(this) ); this.canvas.on( "mouseButtonUp", this.onMouseUp.bind(this) ); //this.canvas.on( "mouseleave", this.onMouseLeave.bind(this) ); this.canvas.on( "mouseMove", this.onMouseMove.bind(this) ); this.canvas.on( "mouseWheel", 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 ) { this.isDragging = true; if( isNode ) { var mouseX = event.x; var mouseY = event.y; } else { var mouseX = event.clientX; var mouseY = event.clientY; } //console.log("mouseDownHandler", mouseX, mouseY); if( isNode ) { this.lastX = mouseX; this.lastY = mouseY; } else { this.lastX = mouseX; this.lastY = mouseY; } } mouseup( event ) { this.isDragging = false; } mouseleave( event ) { this.isDragging = false; } mousemove( event ) { if( isNode ) { var mouseX = event.x; var mouseY = event.y; } else { var mouseX = event.clientX; var mouseY = event.clientY; } if ( !this.isDragging ) return; const deltaX = ( mouseX - this.lastX ) * 0.005; const deltaY = ( mouseY - this.lastY ) * 0.005; //console.log("mousemove", mouseX, mouseY); this.camera.rotate( deltaX, -deltaY ); this.lastX = mouseX; this.lastY = mouseY; } wheel( event ) { const delta = event.deltaY * 0.01; this.camera.zoom( delta ); } }