|
@@ -519,25 +519,45 @@
|
|
|
// Meshes
|
|
|
if (!this.onPointerDown) {
|
|
|
predicate = (mesh: AbstractMesh): boolean => {
|
|
|
- return mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPickTriggers;
|
|
|
+ return mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasPointerTriggers;
|
|
|
};
|
|
|
}
|
|
|
var pickResult = this.pick(this._pointerX, this._pointerY, predicate, false, this.cameraToUseForPointers);
|
|
|
|
|
|
if (pickResult.hit && pickResult.pickedMesh) {
|
|
|
if (pickResult.pickedMesh.actionManager) {
|
|
|
- switch (evt.button) {
|
|
|
- case 0:
|
|
|
- pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnLeftPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnCenterPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnRightPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
- break;
|
|
|
+ if (pickResult.pickedMesh.actionManager.hasPickTriggers) {
|
|
|
+ switch (evt.button) {
|
|
|
+ case 0:
|
|
|
+ pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnLeftPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnCenterPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnRightPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnPickDownTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (pickResult.pickedMesh.actionManager.hasSpecificTrigger(ActionManager.OnLongPressTrigger)) {
|
|
|
+ var that = this;
|
|
|
+ window.setTimeout( function() {
|
|
|
+ var pickResult = that.pick(that._pointerX, that._pointerY,
|
|
|
+ (mesh: AbstractMesh): boolean => mesh.isPickable && mesh.isVisible && mesh.isReady() && mesh.actionManager && mesh.actionManager.hasSpecificTrigger(ActionManager.OnLongPressTrigger),
|
|
|
+ false, that.cameraToUseForPointers);
|
|
|
+
|
|
|
+ if (pickResult.hit && pickResult.pickedMesh) {
|
|
|
+ if (pickResult.pickedMesh.actionManager) {
|
|
|
+ if (that._startingPointerTime !== 0 && ((new Date().getTime() - that._startingPointerTime) > ActionManager.LongPressDelay) && (Math.abs(that._startingPointerPosition.x - that._pointerX) < ActionManager.DragMovementThreshold && Math.abs(that._startingPointerPosition.y - that._pointerY) < ActionManager.DragMovementThreshold)) {
|
|
|
+ that._startingPointerTime = 0;
|
|
|
+ pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnLongPressTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }, ActionManager.LongPressDelay);
|
|
|
}
|
|
|
- pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnPickDownTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -592,12 +612,7 @@
|
|
|
|
|
|
if (Math.abs(this._startingPointerPosition.x - this._pointerX) < ActionManager.DragMovementThreshold && Math.abs(this._startingPointerPosition.y - this._pointerY) < ActionManager.DragMovementThreshold) {
|
|
|
pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnPickTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));
|
|
|
-
|
|
|
- if ((new Date().getTime() - this._startingPointerTime) > ActionManager.LongPressDelay) {
|
|
|
- pickResult.pickedMesh.actionManager.processTrigger(ActionManager.OnLongPressTrigger, ActionEvent.CreateNew(pickResult.pickedMesh, evt));;
|
|
|
- }
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -605,6 +620,8 @@
|
|
|
this.onPointerUp(evt, pickResult);
|
|
|
}
|
|
|
|
|
|
+ this._startingPointerTime = 0;
|
|
|
+
|
|
|
// Sprites
|
|
|
if (this.spriteManagers.length > 0) {
|
|
|
pickResult = this.pickSprite(this._pointerX, this._pointerY, spritePredicate, false, this.cameraToUseForPointers);
|