123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- const LongPressMesh = [EMeshType.XAvatar];
- class StaticMeshEvent extends EventEmitter {
- constructor(e) {
- super();
- E(this, "scene");
- E(this, "_staringPointerTime", -1);
- E(this, "_pickedMeshID", "0");
- E(this, "_pointerDownTime", -1);
- E(this, "_currentPickPoint");
- E(this, "_longPressDelay", 500);
- E(this, "_pointerTapDelay", 200);
- E(this, "_pickedMeshType");
- E(this, "registerEvent", ()=>{
- this.scene.onPrePointerObservable.add(this.onDown, PointerEventTypes.POINTERDOWN),
- this.scene.onPrePointerObservable.add(this.onUp, PointerEventTypes.POINTERUP),
- this.scene.onPrePointerObservable.add(this.onDoubleTap, PointerEventTypes.POINTERDOUBLETAP),
- this.scene.onDispose = ()=>{
- this.scene.onPrePointerObservable.removeCallback(this.onUp),
- this.scene.onPrePointerObservable.removeCallback(this.onDown),
- this.scene.onPrePointerObservable.removeCallback(this.onDoubleTap)
- }
- }
- );
- E(this, "onUp", ()=>{
- if (Date.now() - this._pointerDownTime < this._pointerTapDelay && !this.scene._inputManager._isPointerSwiping()) {
- this.scene._inputManager._totalPointersPressed = 0;
- let e = this._currentPickPoint;
- e != null && LongPressMesh.indexOf(e.type) == -1 && this.scene._inputManager._totalPointersPressed == 0 && this.emit("pointTap", e),
- e != null && LongPressMesh.indexOf(e.type) != -1 && (e = this.onPointerTap(t=>t.isPickable && LongPressMesh.indexOf(t.xtype) == -1),
- e != null && this.emit("pointTap", e))
- }
- }
- );
- E(this, "onDown", ()=>{
- let e = this.onPointerTap(t=>t.isPickable);
- this._currentPickPoint = e,
- this._pointerDownTime = Date.now(),
- e != null && LongPressMesh.indexOf(e.type) != -1 && (this._staringPointerTime = Date.now(),
- this._pickedMeshID = e.id,
- this._pickedMeshType = e.type,
- window.setTimeout(()=>{
- e = this.onPointerTap(t=>t.isPickable && t.xtype == this._pickedMeshType && t.xid == this._pickedMeshID),
- e !== null && Date.now() - this._staringPointerTime > this._longPressDelay && !this.scene._inputManager._isPointerSwiping() && this.scene._inputManager._totalPointersPressed !== 0 && (this._staringPointerTime = 0,
- this.emit("longPress", e))
- }
- , this._longPressDelay))
- }
- );
- E(this, "onDoubleTap", ()=>{
- const e = this.onPointerTap(void 0);
- e != null && this.emit("pointDoubleTap", e)
- }
- );
- this.manager = e,
- this.scene = e.Scene,
- this.registerEvent(),
- this._currentPickPoint = null,
- this._pickedMeshType = null
- }
- onPointerTap(e, t=!1) {
- var n, o;
- let r = new PickingInfo;
- if (t) {
- const a = this.scene.multiPick(this.scene.pointerX, this.scene.pointerY, e, void 0, void 0);
- a && a.length > 1 ? r = a[1] : a && (r = a[0])
- } else
- r = this.scene.pick(this.scene.pointerX, this.scene.pointerY, e, !1, null);
- if (r.hit) {
- const a = (n = r == null ? void 0 : r.pickedPoint) == null ? void 0 : n.asArray();
- if (a) {
- const [s,l,u] = a
- , c = xversePosition2Ue4({
- x: s,
- y: l,
- z: u
- });
- return {
- name: (o = r.pickedMesh) == null ? void 0 : o.name,
- type: r.pickedMesh.xtype,
- id: r.pickedMesh.xid,
- point: c
- }
- }
- }
- return null
- }
- }
|