1
0
mirror of https://github.com/psychopy/psychojs.git synced 2025-05-12 08:38:10 +00:00

added support for PIXI.Container based stims and variable units support;

This commit is contained in:
lgtst 2022-06-02 21:27:55 +03:00
parent 9fae8aa653
commit d3fefa5016
2 changed files with 15 additions and 3 deletions

View File

@ -545,6 +545,7 @@ export class Window extends PsychObject
{ {
let i; let i;
let pickedPixi; let pickedPixi;
let tmpPoint = new PIXI.Point();
const cursorPos = new PIXI.Point(e.pageX, e.pageY); const cursorPos = new PIXI.Point(e.pageX, e.pageY);
for (i = this._stimsContainer.children.length - 1; i >= 0; i--) for (i = this._stimsContainer.children.length - 1; i >= 0; i--)
{ {
@ -554,6 +555,16 @@ export class Window extends PsychObject
pickedPixi = this._stimsContainer.children[i]; pickedPixi = this._stimsContainer.children[i];
break; 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", { this.emit("pointerdown", {
pixi: pickedPixi, pixi: pickedPixi,

View File

@ -285,11 +285,12 @@ export class VisualStim extends util.mix(MinimalStim).with(WindowMixin)
return; return;
} }
let relativePos = []; 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[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; relativePos[1] = -(e.originalEvent.pageY - this._win.size[1] * 0.5) - this._pixi.parent.position.y;
this._associatedPointerId = e.originalEvent.pointerId; this._associatedPointerId = e.originalEvent.pointerId;
this._initialPointerOffset[0] = relativePos[0] - this._pos[0]; this._initialPointerOffset[0] = relativePos[0] - pixPos[0];
this._initialPointerOffset[1] = relativePos[1] - this._pos[1]; this._initialPointerOffset[1] = relativePos[1] - pixPos[1];
this.emit("pointerdown", e); this.emit("pointerdown", e);
} }
@ -324,7 +325,7 @@ export class VisualStim extends util.mix(MinimalStim).with(WindowMixin)
let newPos = []; let newPos = [];
newPos[0] = e.originalEvent.pageX - this._win.size[0] * 0.5 - this._pixi.parent.position.x - this._initialPointerOffset[0]; 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]; 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); this.emit("pointermove", e);
} }
} }