From d3fefa5016ecbec3faf1754c723f8bd5e0d76739 Mon Sep 17 00:00:00 2001 From: lgtst Date: Thu, 2 Jun 2022 21:27:55 +0300 Subject: [PATCH] added support for PIXI.Container based stims and variable units support; --- src/core/Window.js | 11 +++++++++++ src/visual/VisualStim.js | 7 ++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/core/Window.js b/src/core/Window.js index 26ee193..e4e7011 100644 --- a/src/core/Window.js +++ b/src/core/Window.js @@ -545,6 +545,7 @@ export class Window extends PsychObject { let i; let pickedPixi; + let tmpPoint = new PIXI.Point(); const cursorPos = new PIXI.Point(e.pageX, e.pageY); for (i = this._stimsContainer.children.length - 1; i >= 0; i--) { @@ -554,6 +555,16 @@ export class Window extends PsychObject pickedPixi = this._stimsContainer.children[i]; break; } + else if (this._stimsContainer.children[i].containsPoint === undefined && + this._stimsContainer.children[i] instanceof PIXI.DisplayObject) + { + this._stimsContainer.children[i].worldTransform.applyInverse(cursorPos, tmpPoint); + if (this._stimsContainer.children[i].getLocalBounds().contains(tmpPoint.x, tmpPoint.y)) + { + pickedPixi = this._stimsContainer.children[i]; + break; + } + } } this.emit("pointerdown", { pixi: pickedPixi, diff --git a/src/visual/VisualStim.js b/src/visual/VisualStim.js index 13a0015..1a162ac 100644 --- a/src/visual/VisualStim.js +++ b/src/visual/VisualStim.js @@ -285,11 +285,12 @@ export class VisualStim extends util.mix(MinimalStim).with(WindowMixin) return; } let relativePos = []; + let pixPos = util.to_unit(this._pos, this._units, this._win, "pix"); relativePos[0] = e.originalEvent.pageX - this._win.size[0] * 0.5 - this._pixi.parent.position.x; relativePos[1] = -(e.originalEvent.pageY - this._win.size[1] * 0.5) - this._pixi.parent.position.y; this._associatedPointerId = e.originalEvent.pointerId; - this._initialPointerOffset[0] = relativePos[0] - this._pos[0]; - this._initialPointerOffset[1] = relativePos[1] - this._pos[1]; + this._initialPointerOffset[0] = relativePos[0] - pixPos[0]; + this._initialPointerOffset[1] = relativePos[1] - pixPos[1]; this.emit("pointerdown", e); } @@ -324,7 +325,7 @@ export class VisualStim extends util.mix(MinimalStim).with(WindowMixin) let newPos = []; newPos[0] = e.originalEvent.pageX - this._win.size[0] * 0.5 - this._pixi.parent.position.x - this._initialPointerOffset[0]; newPos[1] = -(e.originalEvent.pageY - this._win.size[1] * 0.5) - this._pixi.parent.position.y - this._initialPointerOffset[1]; - this.setPos(newPos); + this.setPos(util.to_unit(newPos, "pix", this._win, this._units)); this.emit("pointermove", e); } }