|
@@ -7,7 +7,7 @@
|
|
import * as THREE from "../../libs/three.js/build/three.module.js";
|
|
import * as THREE from "../../libs/three.js/build/three.module.js";
|
|
import {KeyCodes} from "../KeyCodes.js";
|
|
import {KeyCodes} from "../KeyCodes.js";
|
|
import {Utils} from "../utils.js";
|
|
import {Utils} from "../utils.js";
|
|
-import {MOUSE} from "../defines.js";
|
|
|
|
|
|
+import {Buttons} from "../defines.js";
|
|
import {EventDispatcher} from "../EventDispatcher.js";
|
|
import {EventDispatcher} from "../EventDispatcher.js";
|
|
|
|
|
|
|
|
|
|
@@ -98,86 +98,105 @@ export class InputHandler extends EventDispatcher {
|
|
onTouchStart (e) {
|
|
onTouchStart (e) {
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchStart');
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchStart');
|
|
|
|
|
|
- e.preventDefault();
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ e.preventDefault();
|
|
|
|
|
|
- if (e.touches.length === 1) {
|
|
|
|
|
|
+ if (e.touches.length === 1) { //changedTouches?
|
|
let rect = this.domElement.getBoundingClientRect();
|
|
let rect = this.domElement.getBoundingClientRect();
|
|
- let x = e.touches[0].pageX - rect.left;
|
|
|
|
- let y = e.touches[0].pageY - rect.top;
|
|
|
|
- this.mouse.set(x, y);
|
|
|
|
-
|
|
|
|
- this.startDragging(null);
|
|
|
|
|
|
+ let x = e.touches[0].pageX
|
|
|
|
+ let y = e.touches[0].pageY
|
|
|
|
+
|
|
|
|
+ this.dealPointerDown(x,y,e,true)
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener */this.viewer.dispatchEvent({
|
|
|
|
- type: /* "global_"+ */e.type, // global_ 是否加上
|
|
|
|
- touches: e.touches,
|
|
|
|
- changedTouches: e.changedTouches
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+ this.viewer.dispatchEvent({
|
|
|
|
+ type: /* "global_"+ */e.type, // global_ 是否加上
|
|
|
|
+ touches: e.touches,
|
|
|
|
+ changedTouches: e.changedTouches
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
|
|
//add
|
|
//add
|
|
this.mouseDownMouse = this.mouse.clone()
|
|
this.mouseDownMouse = this.mouse.clone()
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
onTouchEnd (e) {
|
|
onTouchEnd (e) {
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchEnd');
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchEnd');
|
|
|
|
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
|
|
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
|
|
+ /* this.viewer.dispatchEvent({
|
|
type: 'global_drop',
|
|
type: 'global_drop',
|
|
drag: this.drag,
|
|
drag: this.drag,
|
|
viewer: this.viewer
|
|
viewer: this.viewer
|
|
});
|
|
});
|
|
- //}
|
|
|
|
|
|
+
|
|
|
|
|
|
this.drag = null;
|
|
this.drag = null;
|
|
|
|
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener */this.viewer.dispatchEvent({
|
|
|
|
|
|
+ this.viewer.dispatchEvent({
|
|
type: 'global_' + e.type,
|
|
type: 'global_' + e.type,
|
|
touches: e.touches,
|
|
touches: e.touches,
|
|
changedTouches: e.changedTouches
|
|
changedTouches: e.changedTouches
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+ }); */
|
|
|
|
+ if (e.touches.length === 0) {
|
|
|
|
+ let rect = this.domElement.getBoundingClientRect();
|
|
|
|
+ let x = e.changedTouches[0].pageX //万一一次松开两个指头的怎么办
|
|
|
|
+ let y = e.changedTouches[0].pageY
|
|
|
|
+
|
|
|
|
+ this.dealPointerUp(x,y,e,true)
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
onTouchMove (e) {
|
|
onTouchMove (e) {
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchMove');
|
|
if (this.logMessages) console.log(this.constructor.name + ': onTouchMove');
|
|
|
|
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
-
|
|
|
|
|
|
+
|
|
if (e.touches.length === 1) {
|
|
if (e.touches.length === 1) {
|
|
let rect = this.domElement.getBoundingClientRect();
|
|
let rect = this.domElement.getBoundingClientRect();
|
|
- let x = e.touches[0].pageX - rect.left;
|
|
|
|
- let y = e.touches[0].pageY - rect.top;
|
|
|
|
- this.mouse.set(x, y);
|
|
|
|
-
|
|
|
|
|
|
+ let x = e.touches[0].pageX;
|
|
|
|
+ let y = e.touches[0].pageY;
|
|
|
|
+ //this.mouse.set(x, y);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ this.dealPointerMove(x, y, e, true)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ /* var { camera, viewport } = this.getPointerInViewport(x, y )
|
|
|
|
+ this.hoverViewport = viewport
|
|
|
|
+ if(!viewport)return
|
|
|
|
+
|
|
|
|
+
|
|
if (this.drag) {
|
|
if (this.drag) {
|
|
this.drag.mouse = 1; //why??非左键也非右键的意思?
|
|
this.drag.mouse = 1; //why??非左键也非右键的意思?
|
|
|
|
|
|
- this.drag.mouseDelta.x = x - this.drag.end.x;
|
|
|
|
- this.drag.mouseDelta.y = y - this.drag.end.y;
|
|
|
|
|
|
+ this.drag.pointerDelta.set(this.pointer.x - this.drag.end.x, this.pointer.y - this.drag.end.y );
|
|
|
|
+ this.drag.end.set(this.pointer.x, this.pointer.y);
|
|
|
|
|
|
- this.drag.end.set(x, y);
|
|
|
|
|
|
+
|
|
|
|
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ');
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ');
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener */this.viewer.dispatchEvent({
|
|
|
|
|
|
+ this.viewer.dispatchEvent({
|
|
type: 'global_drag',
|
|
type: 'global_drag',
|
|
drag: this.drag,
|
|
drag: this.drag,
|
|
viewer: this.viewer
|
|
viewer: this.viewer
|
|
});
|
|
});
|
|
- //}
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ } */
|
|
}
|
|
}
|
|
|
|
|
|
/* for (let inputListener of this.getSortedListeners()) {
|
|
/* for (let inputListener of this.getSortedListeners()) {
|
|
@@ -276,29 +295,28 @@ export class InputHandler extends EventDispatcher {
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
}
|
|
}
|
|
|
|
|
|
- onMouseDown (e) {
|
|
|
|
-
|
|
|
|
- if (this.logMessages) console.log(this.constructor.name + ': onMouseDown');
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ dealPointerDown(x,y,e,isTouch){
|
|
//重新获取一下pointer, 因点击了浏览器的按钮展开列表时 move回来不会触发onmousemove,所以pointer是旧的
|
|
//重新获取一下pointer, 因点击了浏览器的按钮展开列表时 move回来不会触发onmousemove,所以pointer是旧的
|
|
- var { camera, viewport } = this.getPointerInViewport(e.clientX, e.clientY )
|
|
|
|
|
|
+ var { camera, viewport } = this.getPointerInViewport(x, y )
|
|
this.hoverViewport = viewport
|
|
this.hoverViewport = viewport
|
|
if(!viewport)return
|
|
if(!viewport)return
|
|
|
|
|
|
e.preventDefault();
|
|
e.preventDefault();
|
|
-
|
|
|
|
|
|
+
|
|
//this.onMouseMove(e)//add 重新获取一下mouse, 因在此前canvas可能失去侦听(不记得是什么了。如果一定要的话再写个加侦听的函数,但是直接调用mousemove的话会发送drag,导致magnifier停止渲染)
|
|
//this.onMouseMove(e)//add 重新获取一下mouse, 因在此前canvas可能失去侦听(不记得是什么了。如果一定要的话再写个加侦听的函数,但是直接调用mousemove的话会发送drag,导致magnifier停止渲染)
|
|
|
|
|
|
let consumed = false;
|
|
let consumed = false;
|
|
let consume = () => { return consumed = true; };
|
|
let consume = () => { return consumed = true; };
|
|
if (this.hoveredElements.length === 0) {
|
|
if (this.hoveredElements.length === 0) {
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_mousedown',
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- mouse: this.mouse
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+ this.viewer.dispatchEvent({
|
|
|
|
+ type: 'global_mousedown',
|
|
|
|
+ viewer: this.viewer,
|
|
|
|
+ mouse: this.mouse
|
|
|
|
+ });
|
|
|
|
+
|
|
}else{
|
|
}else{
|
|
for(let hovered of this.hoveredElements){
|
|
for(let hovered of this.hoveredElements){
|
|
let object = hovered.object;
|
|
let object = hovered.object;
|
|
@@ -319,7 +337,7 @@ export class InputHandler extends EventDispatcher {
|
|
|
|
|
|
|
|
|
|
if (!this.drag) {
|
|
if (!this.drag) {
|
|
- let target = e.button == THREE.MOUSE.LEFT && this.hoveredElements.find(el => (//只有左键能拖拽
|
|
|
|
|
|
+ let target = (isTouch||e.button == THREE.MOUSE.LEFT) && this.hoveredElements.find(el => (//只有左键能拖拽
|
|
el.object._listeners &&
|
|
el.object._listeners &&
|
|
el.object._listeners['drag'] &&
|
|
el.object._listeners['drag'] &&
|
|
el.object._listeners['drag'].length > 0));
|
|
el.object._listeners['drag'].length > 0));
|
|
@@ -337,10 +355,40 @@ export class InputHandler extends EventDispatcher {
|
|
this.drag.intersectStart = this.intersectPoint;
|
|
this.drag.intersectStart = this.intersectPoint;
|
|
this.mouseDownMouse = this.mouse.clone()
|
|
this.mouseDownMouse = this.mouse.clone()
|
|
this.dragViewport = this.hoverViewport;
|
|
this.dragViewport = this.hoverViewport;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ onMouseDown (e) {
|
|
|
|
+
|
|
|
|
+ if (this.logMessages) console.log(this.constructor.name + ': onMouseDown');
|
|
|
|
+ this.dealPointerDown(e.clientX, e.clientY,e)
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- onMouseUp (e) {
|
|
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ getEventDesc(e,isTouch){//搜集dispatchEvent要给的一般数据
|
|
|
|
+ return {
|
|
|
|
+ viewer: this.viewer,
|
|
|
|
+ mouse: this.mouse,
|
|
|
|
+ pointer:this.pointer,
|
|
|
|
+ drag :this.drag,
|
|
|
|
+ isAtDomElement: e.target == this.domElement,
|
|
|
|
+ dragViewport : this.dragViewport,
|
|
|
|
+ hoverViewport: this.hoverViewport,
|
|
|
|
+ button: isTouch ? 0 : e.button,
|
|
|
|
+ buttons: isTouch ? e.touches.length : e.buttons,
|
|
|
|
+ isTouch,
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ dealPointerUp(x,y,e,isTouch){
|
|
|
|
+
|
|
if(!this.drag){// 在canvas外mousedown
|
|
if(!this.drag){// 在canvas外mousedown
|
|
return
|
|
return
|
|
}
|
|
}
|
|
@@ -355,14 +403,14 @@ export class InputHandler extends EventDispatcher {
|
|
let consume = () => { return consumed = true; };
|
|
let consume = () => { return consumed = true; };
|
|
//if (this.hoveredElements.length === 0) {
|
|
//if (this.hoveredElements.length === 0) {
|
|
/* for (let inputListener of this.getSortedListeners()) {
|
|
/* for (let inputListener of this.getSortedListeners()) {
|
|
- inputListener */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_mouseup',
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- mouse: this.mouse,
|
|
|
|
- consume: consume,
|
|
|
|
- drag :this.drag,
|
|
|
|
- pressDistance
|
|
|
|
- });
|
|
|
|
|
|
+ inputListener */this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'global_mouseup',
|
|
|
|
+ pressDistance,
|
|
|
|
+ consume,
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
|
|
/* if(consumed){//??
|
|
/* if(consumed){//??
|
|
break;
|
|
break;
|
|
@@ -388,53 +436,48 @@ export class InputHandler extends EventDispatcher {
|
|
//拖拽结束
|
|
//拖拽结束
|
|
if (this.drag.object/* && e.button == THREE.MOUSE.LEFT */) {//add LEFT
|
|
if (this.drag.object/* && e.button == THREE.MOUSE.LEFT */) {//add LEFT
|
|
if (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`);
|
|
if (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`);
|
|
- this.drag.object.dispatchEvent({
|
|
|
|
- type: 'drop',
|
|
|
|
- drag: this.drag,
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- pressDistance,
|
|
|
|
- button : e.button,//add 放开的鼠标按键
|
|
|
|
- isAtDomElement: e.target == this.domElement,
|
|
|
|
- viewport:this.dragViewport
|
|
|
|
-
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_drop',
|
|
|
|
- drag: this.drag,
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- pressDistance,
|
|
|
|
- isAtDomElement: e.target == this.domElement,
|
|
|
|
- button: e.button //add
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+
|
|
|
|
+ this.drag.object.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'drop',
|
|
|
|
+ pressDistance,
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
|
|
|
|
|
|
+ } else {
|
|
|
|
+ this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'global_drop',
|
|
|
|
+ pressDistance
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
// check for a click
|
|
// check for a click
|
|
if(pressDistance < Potree.config.clickMaxDragDis){
|
|
if(pressDistance < Potree.config.clickMaxDragDis){
|
|
if(this.hoveredElements && this.hoveredElements[0]){
|
|
if(this.hoveredElements && this.hoveredElements[0]){
|
|
if (this.logMessages) console.log(`${this.constructor.name}: click ${clicked.name}`);
|
|
if (this.logMessages) console.log(`${this.constructor.name}: click ${clicked.name}`);
|
|
- this.hoveredElements[0].object.dispatchEvent({
|
|
|
|
- type: 'click',
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- consume: consume,
|
|
|
|
- viewport: this.hoverViewport,
|
|
|
|
- isAtDomElement: e.target == this.domElement,
|
|
|
|
- button: e.button //add
|
|
|
|
- });
|
|
|
|
|
|
+ this.hoveredElements[0].object.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'click',
|
|
|
|
+ pressDistance
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
}else{
|
|
}else{
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_click',
|
|
|
|
- drag: this.drag,
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- pressDistance,
|
|
|
|
- viewport: this.hoverViewport,
|
|
|
|
- isAtDomElement: e.target == this.domElement,
|
|
|
|
- button: e.button //add
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+ this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'global_click',
|
|
|
|
+ pressDistance
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -483,6 +526,10 @@ export class InputHandler extends EventDispatcher {
|
|
this.deselectAll();
|
|
this.deselectAll();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ onMouseUp (e) {
|
|
|
|
+ this.dealPointerUp(e.clientX, e.clientY, e )
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -546,12 +593,13 @@ export class InputHandler extends EventDispatcher {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ onMouseMove (e) {
|
|
|
|
+ this.dealPointerMove(e.clientX, e.clientY, e )
|
|
|
|
+ }
|
|
|
|
|
|
- onMouseMove (e) {
|
|
|
|
-
|
|
|
|
- var { camera, viewport } = this.getPointerInViewport(e.clientX, e.clientY, this.dragViewport)
|
|
|
|
|
|
+ dealPointerMove(x, y, e, isTouch){
|
|
|
|
+
|
|
|
|
+ var { camera, viewport } = this.getPointerInViewport(x, y, this.dragViewport)
|
|
this.hoverViewport = viewport
|
|
this.hoverViewport = viewport
|
|
if(!viewport)return//刚变化viewport时会找不到
|
|
if(!viewport)return//刚变化viewport时会找不到
|
|
|
|
|
|
@@ -589,22 +637,24 @@ export class InputHandler extends EventDispatcher {
|
|
|
|
|
|
|
|
|
|
if (this.drag) {//有拖拽(不一定拖拽了物体, 也不一定按下了鼠标)
|
|
if (this.drag) {//有拖拽(不一定拖拽了物体, 也不一定按下了鼠标)
|
|
- this.drag.mouse = e.buttons;
|
|
|
|
|
|
+ this.drag.mouse = isTouch ? 1 : e.buttons;
|
|
this.drag.hoverViewport = this.hoverViewport
|
|
this.drag.hoverViewport = this.hoverViewport
|
|
- /* this.drag.mouseDelta.x = this.mouse.x - this.drag.end.x;
|
|
|
|
- this.drag.mouseDelta.y = this.mouse.y - this.drag.end.y; */
|
|
|
|
this.drag.pointerDelta.set(this.pointer.x - this.drag.end.x, this.pointer.y - this.drag.end.y )
|
|
this.drag.pointerDelta.set(this.pointer.x - this.drag.end.x, this.pointer.y - this.drag.end.y )
|
|
this.drag.end.set(this.pointer.x, this.pointer.y);
|
|
this.drag.end.set(this.pointer.x, this.pointer.y);
|
|
|
|
|
|
|
|
|
|
- if (this.drag.object && (e.buttons == MOUSE.NONE || !this.drag.notPressMouse )){//add notPressMouse 如果标记是不需要按鼠标的拖拽,则一旦按下鼠标,就暂停拖拽物体(改为拖拽场景):(如添加测量时突然拖拽画面)
|
|
|
|
|
|
+ if (this.drag.object && (e.buttons == Buttons.NONE || !this.drag.notPressMouse )){//add notPressMouse 如果标记是不需要按鼠标的拖拽,则一旦按下鼠标,就暂停拖拽物体(改为拖拽场景):(如添加测量时突然拖拽画面)
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name);
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name);
|
|
- this.drag.object.dispatchEvent({
|
|
|
|
- type: 'drag',
|
|
|
|
- drag: this.drag,
|
|
|
|
- viewer: this.viewer,
|
|
|
|
- intersectPoint
|
|
|
|
- });
|
|
|
|
|
|
+
|
|
|
|
+ this.drag.object.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'drag',
|
|
|
|
+ intersectPoint,
|
|
|
|
+ }
|
|
|
|
+ ))
|
|
|
|
+
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
|
|
|
|
//add:
|
|
//add:
|
|
@@ -613,19 +663,16 @@ export class InputHandler extends EventDispatcher {
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ');
|
|
if (this.logMessages) console.log(this.constructor.name + ': drag: ');
|
|
|
|
|
|
let dragConsumed = false;
|
|
let dragConsumed = false;
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_drag',
|
|
|
|
- drag: this.drag,
|
|
|
|
- viewer: this.viewer,
|
|
|
|
|
|
+ this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'global_drag',
|
|
intersectPoint,
|
|
intersectPoint,
|
|
- consume: () => {dragConsumed = true;}
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- /* if(dragConsumed){
|
|
|
|
- break;
|
|
|
|
- } */
|
|
|
|
- //}
|
|
|
|
|
|
+ consume: () => {dragConsumed = true;}
|
|
|
|
+ }
|
|
|
|
+ ))
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
}else{
|
|
}else{
|
|
let curr = hoveredElements.map(a => a.object).find(a => true);
|
|
let curr = hoveredElements.map(a => a.object).find(a => true);
|
|
@@ -686,7 +733,7 @@ export class InputHandler extends EventDispatcher {
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -724,15 +771,18 @@ export class InputHandler extends EventDispatcher {
|
|
|
|
|
|
intersectPoint && (this.hoverViewport.lastIntersect = intersectPoint)
|
|
intersectPoint && (this.hoverViewport.lastIntersect = intersectPoint)
|
|
|
|
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
|
|
+
|
|
|
|
+ this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
type: 'global_mousemove',
|
|
type: 'global_mousemove',
|
|
intersectPoint,
|
|
intersectPoint,
|
|
- hoverViewport:this.hoverViewport,
|
|
|
|
- buttons: e.buttons,
|
|
|
|
- drag:this.drag,
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ ))
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
this.hoveredElements = hoveredElements;
|
|
this.hoveredElements = hoveredElements;
|
|
@@ -757,21 +807,24 @@ export class InputHandler extends EventDispatcher {
|
|
// this.wheelDelta += Math.sign(delta);
|
|
// this.wheelDelta += Math.sign(delta);
|
|
|
|
|
|
if (this.hoveredElement) {
|
|
if (this.hoveredElement) {
|
|
- this.hoveredElement.object.dispatchEvent({
|
|
|
|
- type: 'mousewheel',
|
|
|
|
- delta: ndelta,
|
|
|
|
- object: this.hoveredElement.object
|
|
|
|
- });
|
|
|
|
|
|
+ this.hoveredElement.object.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e,isTouch),
|
|
|
|
+ {
|
|
|
|
+ type: 'mousewheel',
|
|
|
|
+ delta: ndelta,
|
|
|
|
+ object: this.hoveredElement.object
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
- /* for (let inputListener of this.getSortedListeners()) {
|
|
|
|
- inputListener. */this.viewer.dispatchEvent({
|
|
|
|
- type: 'global_mousewheel',
|
|
|
|
- delta: ndelta,
|
|
|
|
- object: null,
|
|
|
|
- hoverViewport: this.hoverViewport
|
|
|
|
-
|
|
|
|
- });
|
|
|
|
- //}
|
|
|
|
|
|
+ this.viewer.dispatchEvent($.extend(
|
|
|
|
+ this.getEventDesc(e),
|
|
|
|
+ {
|
|
|
|
+ type: 'global_mousewheel',
|
|
|
|
+ delta: ndelta,
|
|
|
|
+ }
|
|
|
|
+ ));
|
|
|
|
+
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|