@galacean/engine-physics-lite 2.0.0-alpha.17 → 2.0.0-alpha.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/browser.js CHANGED
@@ -916,21 +916,21 @@
916
916
  /**
917
917
  * A manager is a collection of colliders and constraints which can interact.
918
918
  */ var LitePhysicsScene = /*#__PURE__*/ function() {
919
- function LitePhysicsScene(physics, onContactEnter, onContactExit, onContactStay, onTriggerEnter, onTriggerExit, onTriggerStay) {
919
+ function LitePhysicsScene(physics) {
920
920
  this._staticColliders = [];
921
921
  this._dynamicColliders = [];
922
922
  this._sphere = new engine.BoundingSphere();
923
923
  this._box = new engine.BoundingBox();
924
- this._currentEvents = new engine.DisorderedArray();
924
+ this._activeTriggers = new engine.DisorderedArray();
925
925
  this._eventMap = {};
926
- this._eventPool = [];
926
+ this._triggerEventPool = [];
927
+ this._triggerEvents = [];
928
+ this._physicsEvents = {
929
+ contactEvents: [],
930
+ contactEventCount: 0,
931
+ triggerEvents: []
932
+ };
927
933
  this._physics = physics;
928
- this._onContactEnter = onContactEnter;
929
- this._onContactExit = onContactExit;
930
- this._onContactStay = onContactStay;
931
- this._onTriggerEnter = onTriggerEnter;
932
- this._onTriggerExit = onTriggerExit;
933
- this._onTriggerStay = onTriggerStay;
934
934
  }
935
935
  var _proto = LitePhysicsScene.prototype;
936
936
  _proto.overlapBox = function overlapBox(center, orientation, halfExtents, onOverlap, outHitResult) {
@@ -979,7 +979,29 @@
979
979
  this._collisionDetection(collider, this._staticColliders);
980
980
  this._collisionDetection(collider, dynamicColliders);
981
981
  }
982
- this._fireEvent();
982
+ };
983
+ /**
984
+ * {@inheritDoc IPhysicsScene.updateEvents }
985
+ */ _proto.updateEvents = function updateEvents() {
986
+ var _this = this;
987
+ var _this1 = this, triggerEventPool = _this1._triggerEventPool, activeTriggers = _this1._activeTriggers, triggerEvents = _this1._triggerEvents, physicsEvents = _this1._physicsEvents;
988
+ triggerEvents.length = 0;
989
+ activeTriggers.forEach(function(event, i) {
990
+ if (!event.alreadyInvoked) {
991
+ event.dispatchState = event.state;
992
+ triggerEvents.push(event);
993
+ event.alreadyInvoked = true;
994
+ } else {
995
+ event.state = 2;
996
+ event.dispatchState = 2;
997
+ _this._eventMap[event.index1][event.index2] = undefined;
998
+ activeTriggers.deleteByIndex(i);
999
+ triggerEvents.push(event);
1000
+ triggerEventPool.push(event);
1001
+ }
1002
+ });
1003
+ physicsEvents.triggerEvents = triggerEvents;
1004
+ return physicsEvents;
983
1005
  };
984
1006
  /**
985
1007
  * {@inheritDoc IPhysicsScene.raycast }
@@ -1046,6 +1068,9 @@
1046
1068
  throw new Error("Physics-lite doesn't support overlapCapsuleAll. Use Physics-PhysX instead!");
1047
1069
  };
1048
1070
  /**
1071
+ * {@inheritDoc IPhysicsScene.gc }
1072
+ */ _proto.gc = function gc() {};
1073
+ /**
1049
1074
  * {@inheritDoc IPhysicsScene.destroy }
1050
1075
  */ _proto.destroy = function destroy() {};
1051
1076
  /**
@@ -1056,15 +1081,15 @@
1056
1081
  /**
1057
1082
  * @internal
1058
1083
  */ _proto._removeColliderShape = function _removeColliderShape(colliderShape) {
1059
- var _this = this, eventPool = _this._eventPool, currentEvents = _this._currentEvents, eventMap = _this._eventMap;
1084
+ var _this = this, triggerEventPool = _this._triggerEventPool, activeTriggers = _this._activeTriggers, eventMap = _this._eventMap;
1060
1085
  var id = colliderShape._id;
1061
- currentEvents.forEach(function(event, i) {
1086
+ activeTriggers.forEach(function(event, i) {
1062
1087
  if (event.index1 == id) {
1063
- currentEvents.deleteByIndex(i);
1064
- eventPool.push(event);
1088
+ activeTriggers.deleteByIndex(i);
1089
+ triggerEventPool.push(event);
1065
1090
  } else if (event.index2 == id) {
1066
- currentEvents.deleteByIndex(i);
1067
- eventPool.push(event);
1091
+ activeTriggers.deleteByIndex(i);
1092
+ triggerEventPool.push(event);
1068
1093
  // If the shape is big index, should clear from the small index shape subMap
1069
1094
  eventMap[event.index1][id] = undefined;
1070
1095
  }
@@ -1073,8 +1098,8 @@
1073
1098
  };
1074
1099
  _proto._getTrigger = function _getTrigger(index1, index2) {
1075
1100
  var event;
1076
- if (this._eventPool.length) {
1077
- event = this._eventPool.pop();
1101
+ if (this._triggerEventPool.length) {
1102
+ event = this._triggerEventPool.pop();
1078
1103
  event.index1 = index1;
1079
1104
  event.index2 = index2;
1080
1105
  } else {
@@ -1109,7 +1134,7 @@
1109
1134
  var event1 = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);
1110
1135
  event1.state = 0;
1111
1136
  event1.alreadyInvoked = false;
1112
- this._currentEvents.add(event1);
1137
+ this._activeTriggers.add(event1);
1113
1138
  } else if (event.state === 0) {
1114
1139
  event.state = 1;
1115
1140
  event.alreadyInvoked = false;
@@ -1141,7 +1166,7 @@
1141
1166
  var event3 = index11 < index21 ? this._getTrigger(index11, index21) : this._getTrigger(index21, index11);
1142
1167
  event3.state = 0;
1143
1168
  event3.alreadyInvoked = false;
1144
- this._currentEvents.add(event3);
1169
+ this._activeTriggers.add(event3);
1145
1170
  } else if (event2.state === 0) {
1146
1171
  event2.state = 1;
1147
1172
  event2.alreadyInvoked = false;
@@ -1154,27 +1179,6 @@
1154
1179
  }
1155
1180
  }
1156
1181
  };
1157
- _proto._fireEvent = function _fireEvent() {
1158
- var _this = this;
1159
- var _this1 = this, eventPool = _this1._eventPool, currentEvents = _this1._currentEvents;
1160
- currentEvents.forEach(function(event, i) {
1161
- if (!event.alreadyInvoked) {
1162
- if (event.state == 0) {
1163
- _this._onTriggerEnter(event.index1, event.index2);
1164
- event.alreadyInvoked = true;
1165
- } else if (event.state == 1) {
1166
- _this._onTriggerStay(event.index1, event.index2);
1167
- event.alreadyInvoked = true;
1168
- }
1169
- } else {
1170
- event.state = 2;
1171
- _this._eventMap[event.index1][event.index2] = undefined;
1172
- currentEvents.deleteByIndex(i);
1173
- _this._onTriggerExit(event.index1, event.index2);
1174
- eventPool.push(event);
1175
- }
1176
- });
1177
- };
1178
1182
  _proto._boxCollision = function _boxCollision(other) {
1179
1183
  if (_instanceof(other, LiteBoxColliderShape)) {
1180
1184
  var box = LitePhysicsScene._tempBox;
@@ -1290,8 +1294,8 @@
1290
1294
  };
1291
1295
  /**
1292
1296
  * {@inheritDoc IPhysics.createPhysicsScene }
1293
- */ _proto.createPhysicsScene = function createPhysicsScene(physicsManager, onContactBegin, onContactEnd, onContactPersist, onTriggerBegin, onTriggerEnd, onTriggerPersist) {
1294
- return new LitePhysicsScene(this, onContactBegin, onContactEnd, onContactPersist, onTriggerBegin, onTriggerEnd, onTriggerPersist);
1297
+ */ _proto.createPhysicsScene = function createPhysicsScene(physicsManager) {
1298
+ return new LitePhysicsScene(this);
1295
1299
  };
1296
1300
  /**
1297
1301
  * {@inheritDoc IPhysics.createStaticCollider }
@@ -1394,7 +1398,7 @@
1394
1398
  }();
1395
1399
 
1396
1400
  //@ts-ignore
1397
- var version = "2.0.0-alpha.17";
1401
+ var version = "2.0.0-alpha.19";
1398
1402
  console.log("Galacean Engine Physics Lite Version: " + version);
1399
1403
 
1400
1404
  exports.LitePhysics = LitePhysics;