From bec1c8d7bc09aa155078f8bb34535b513f2e1c6b Mon Sep 17 00:00:00 2001 From: yangfengzzz Date: Thu, 3 Mar 2022 15:52:09 +0800 Subject: [PATCH] fix: trigger event update (#673) * fix: trigger event update --- packages/physics-lite/src/LitePhysicsManager.ts | 11 +++++++++-- packages/physics-physx/src/PhysXPhysicsManager.ts | 9 ++++++++- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/physics-lite/src/LitePhysicsManager.ts b/packages/physics-lite/src/LitePhysicsManager.ts index f0ace2454f..bc23dfdd0b 100644 --- a/packages/physics-lite/src/LitePhysicsManager.ts +++ b/packages/physics-lite/src/LitePhysicsManager.ts @@ -166,7 +166,14 @@ export class LitePhysicsManager implements IPhysicsManager { } private _getTrigger(index1: number, index2: number): TriggerEvent { - const event = this._eventPool.length ? this._eventPool.pop() : new TriggerEvent(index1, index2); + let event: TriggerEvent; + if (this._eventPool.length) { + event = this._eventPool.pop(); + event.index1 = index1; + event.index2 = index2; + } else { + event = new TriggerEvent(index1, index2); + } this._eventMap[index1][index2] = event; return event; } @@ -237,7 +244,7 @@ export class LitePhysicsManager implements IPhysicsManager { private _fireEvent(): void { const { _eventPool: eventPool, _currentEvents: currentEvents } = this; - for (let i = 0, n = currentEvents.length; i < n; ) { + for (let i = 0, n = currentEvents.length; i < n;) { const event = currentEvents.get(i); if (!event.needUpdate) { if (event.state == TriggerEventState.Enter) { diff --git a/packages/physics-physx/src/PhysXPhysicsManager.ts b/packages/physics-physx/src/PhysXPhysicsManager.ts index 013f981adc..81110a3474 100644 --- a/packages/physics-physx/src/PhysXPhysicsManager.ts +++ b/packages/physics-physx/src/PhysXPhysicsManager.ts @@ -169,7 +169,14 @@ export class PhysXPhysicsManager implements IPhysicsManager { } private _getTrigger(index1: number, index2: number): TriggerEvent { - const event = this._eventPool.length ? this._eventPool.pop() : new TriggerEvent(index1, index2); + let event: TriggerEvent; + if (this._eventPool.length) { + event = this._eventPool.pop(); + event.index1 = index1; + event.index2 = index2; + } else { + event = new TriggerEvent(index1, index2); + } this._eventMap[index1][index2] = event; return event; }