var mouse = {}; mouse.wasClick = true; mouse.raycaster = new THREE.Raycaster(); mouse.onFreeMove = function(){console.log("Free move");}; mouse.onDrag = function(){console.log("Drag");}; mouse.onClick = function(){console.log("Click");}; mouse.onCtrlClick = function(){console.log("Ctrl-click");}; mouse.onShiftClick = function(){console.log("Shift-click");}; mouse.prepare = function(){ var el = gui.renderer.domElement; el.addEventListener("mousedown", mouse.onDown); el.addEventListener("mouseup", mouse.onUp); el.addEventListener("mousemove", mouse.onMove); }; mouse.onDown = function(event){ mouse.wasClick = true; mouse.pressed = true; }; mouse.onUp = function(event){ if (!mouse.wasClick){return;} mouse.pressed = false; if (event.ctrlKey){mouse.onCtrlClick();} else if (event.shiftKey){mouse.onShiftClick();} else { mouse.onClick(); } }; mouse.onMove = function(event) { mouse.wasClick = false; mouse.position_absolute = {x: event.clientX, y:event.clientY}; mouse.position_relative = {x: (event.clientX / window.innerWidth) * 2 - 1, y: -(event.clientY / window.innerHeight) * 2 + 1}; gui.setInfoPosition(mouse.position_absolute); mouse.raycaster.setFromCamera(mouse.position_relative, gui.camera); mouse.ray = mouse.raycaster.ray; if (mouse.pressed){ mouse.onDrag(); } else { mouse.onFreeMove(); } };