Skip to content

Commit

Permalink
Merge pull request BabylonJS#10931 from Popov72/actionmanager-pickresult
Browse files Browse the repository at this point in the history
ActionManager: pass pickResult to pointer out / over triggers
  • Loading branch information
RaananW authored Aug 26, 2021
2 parents 8b76f80 + a32b198 commit 161ccf0
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
9 changes: 5 additions & 4 deletions src/Inputs/scene.inputManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ export class InputManager {

var isMeshPicked = pickResult && pickResult.hit && pickResult.pickedMesh ? true : false;
if (isMeshPicked) {
scene.setPointerOverMesh(pickResult!.pickedMesh, evt.pointerId);
scene.setPointerOverMesh(pickResult!.pickedMesh, evt.pointerId, pickResult);

if (this._pointerOverMesh && this._pointerOverMesh.actionManager && this._pointerOverMesh.actionManager.hasPointerTriggers) {
if (!scene.doNotHandleCursors && canvas) {
Expand All @@ -210,7 +210,7 @@ export class InputManager {
}
}
} else {
scene.setPointerOverMesh(null, evt.pointerId);
scene.setPointerOverMesh(null, evt.pointerId, pickResult);
}

for (let step of scene._pointerMoveStage) {
Expand Down Expand Up @@ -917,8 +917,9 @@ export class InputManager {
* Force the value of meshUnderPointer
* @param mesh defines the mesh to use
* @param pointerId optional pointer id when using more than one pointer. Defaults to 0
* @param pickResult optional pickingInfo data used to find mesh
*/
public setPointerOverMesh(mesh: Nullable<AbstractMesh>, pointerId: number = 0): void {
public setPointerOverMesh(mesh: Nullable<AbstractMesh>, pointerId: number = 0, pickResult?: Nullable<PickingInfo>): void {
if (this._meshUnderPointerId[pointerId] === mesh) {
return;
}
Expand All @@ -939,7 +940,7 @@ export class InputManager {

actionManager = mesh._getActionManagerForTrigger(Constants.ACTION_OnPointerOverTrigger);
if (actionManager) {
actionManager.processTrigger(Constants.ACTION_OnPointerOverTrigger, ActionEvent.CreateNew(mesh, undefined, { pointerId }));
actionManager.processTrigger(Constants.ACTION_OnPointerOverTrigger, ActionEvent.CreateNew(mesh, undefined, { pointerId, pickResult }));
}
} else {
delete this._meshUnderPointerId[pointerId];
Expand Down
5 changes: 3 additions & 2 deletions src/scene.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4937,9 +4937,10 @@ export class Scene extends AbstractScene implements IAnimatable, IClipPlanesHold
* Force the value of meshUnderPointer
* @param mesh defines the mesh to use
* @param pointerId optional pointer id when using more than one pointer
* @param pickResult optional pickingInfo data used to find mesh
*/
public setPointerOverMesh(mesh: Nullable<AbstractMesh>, pointerId?: number): void {
this._inputManager.setPointerOverMesh(mesh, pointerId);
public setPointerOverMesh(mesh: Nullable<AbstractMesh>, pointerId?: number, pickResult?: Nullable<PickingInfo>): void {
this._inputManager.setPointerOverMesh(mesh, pointerId, pickResult);
}

/**
Expand Down

0 comments on commit 161ccf0

Please sign in to comment.