@galacean/engine-physics-lite 1.1.0-alpha.3 → 1.1.0-beta.0

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
@@ -90,6 +90,8 @@
90
90
  * Abstract class for collider shapes.
91
91
  */ var LiteColliderShape = /*#__PURE__*/ function() {
92
92
  function LiteColliderShape() {
93
+ /** @internal */ this._position = new engine.Vector3();
94
+ /** @internal */ this._worldScale = new engine.Vector3(1, 1, 1);
93
95
  /** @internal */ this._transform = new LiteTransform();
94
96
  /** @internal */ this._invModelMatrix = new engine.Matrix();
95
97
  this._transform.owner = this;
@@ -104,7 +106,18 @@
104
106
  /**
105
107
  * {@inheritDoc IColliderShape.setPosition }
106
108
  */ _proto.setPosition = function setPosition(position) {
107
- this._transform.setPosition(position.x, position.y, position.z);
109
+ if (position !== this._position) {
110
+ this._position.copyFrom(position);
111
+ }
112
+ this._setLocalPose();
113
+ };
114
+ /**
115
+ * {@inheritDoc IColliderShape.setWorldScale }
116
+ */ _proto.setWorldScale = function setWorldScale(scale) {
117
+ if (scale !== this._worldScale) {
118
+ this._worldScale.copyFrom(scale);
119
+ }
120
+ this._setLocalPose();
108
121
  };
109
122
  /**
110
123
  * {@inheritDoc IColliderShape.setContactOffset }
@@ -158,6 +171,11 @@
158
171
  }
159
172
  return this._invModelMatrix;
160
173
  };
174
+ _proto._setLocalPose = function _setLocalPose() {
175
+ var shapePosition = LiteColliderShape._tempPoint;
176
+ engine.Vector3.multiply(this._position, this._worldScale, shapePosition);
177
+ this._transform.position = shapePosition;
178
+ };
161
179
  return LiteColliderShape;
162
180
  }();
163
181
  (function() {
@@ -545,11 +563,11 @@
545
563
 
546
564
  /**
547
565
  * A dynamic collider can act with self-defined movement or physical force
548
- */ var LiteDynamicCollider = /*#__PURE__*/ function(LiteCollider) {
549
- _inherits(LiteDynamicCollider, LiteCollider);
566
+ */ var LiteDynamicCollider = /*#__PURE__*/ function(LiteCollider1) {
567
+ _inherits(LiteDynamicCollider, LiteCollider1);
550
568
  function LiteDynamicCollider(position, rotation) {
551
569
  var _this;
552
- _this = LiteCollider.call(this) || this;
570
+ _this = LiteCollider1.call(this) || this;
553
571
  _this._transform.setPosition(position.x, position.y, position.z);
554
572
  _this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);
555
573
  return _this;
@@ -747,13 +765,12 @@
747
765
 
748
766
  /**
749
767
  * Box collider shape in Lite.
750
- */ var LiteBoxColliderShape = /*#__PURE__*/ function(LiteColliderShape) {
751
- _inherits(LiteBoxColliderShape, LiteColliderShape);
768
+ */ var LiteBoxColliderShape = /*#__PURE__*/ function(LiteColliderShape1) {
769
+ _inherits(LiteBoxColliderShape, LiteColliderShape1);
752
770
  function LiteBoxColliderShape(uniqueID, size, material) {
753
771
  var _this;
754
- _this = LiteColliderShape.call(this) || this;
772
+ _this = LiteColliderShape1.call(this) || this;
755
773
  _this._halfSize = new engine.Vector3();
756
- _this._scale = new engine.Vector3(1, 1, 1);
757
774
  /** @internal */ _this._boxMin = new engine.Vector3(-0.5, -0.5, -0.5);
758
775
  /** @internal */ _this._boxMax = new engine.Vector3(0.5, 0.5, 0.5);
759
776
  _this._id = uniqueID;
@@ -765,14 +782,14 @@
765
782
  /**
766
783
  * {@inheritDoc IColliderShape.setPosition }
767
784
  */ _proto.setPosition = function setPosition(position) {
768
- LiteColliderShape.prototype.setPosition.call(this, position);
785
+ LiteColliderShape1.prototype.setPosition.call(this, position);
769
786
  this._setBondingBox();
770
787
  };
771
788
  /**
772
789
  * {@inheritDoc IColliderShape.setWorldScale }
773
790
  */ _proto.setWorldScale = function setWorldScale(scale) {
774
- this._transform.position = this._transform.position.multiply(scale);
775
- this._scale.copyFrom(scale);
791
+ LiteColliderShape1.prototype.setWorldScale.call(this, scale);
792
+ this._setBondingBox();
776
793
  };
777
794
  /**
778
795
  * {@inheritDoc IBoxColliderShape.setSize }
@@ -785,8 +802,8 @@
785
802
  */ _proto._raycast = function _raycast(ray, hit) {
786
803
  var localRay = this._getLocalRay(ray);
787
804
  var boundingBox = LiteBoxColliderShape._tempBox;
788
- boundingBox.min.set(-this._halfSize.x * this._scale.x, -this._halfSize.y * this._scale.y, -this._halfSize.z * this._scale.z);
789
- boundingBox.max.set(this._halfSize.x * this._scale.x, this._halfSize.y * this._scale.y, this._halfSize.z * this._scale.z);
805
+ boundingBox.min.set(-this._halfSize.x * this._worldScale.x, -this._halfSize.y * this._worldScale.y, -this._halfSize.z * this._worldScale.z);
806
+ boundingBox.max.set(this._halfSize.x * this._worldScale.x, this._halfSize.y * this._worldScale.y, this._halfSize.z * this._worldScale.z);
790
807
  var rayDistance = localRay.intersectBox(boundingBox);
791
808
  if (rayDistance !== -1) {
792
809
  this._updateHitResult(localRay, rayDistance, hit, ray.origin);
@@ -796,10 +813,11 @@
796
813
  }
797
814
  };
798
815
  _proto._setBondingBox = function _setBondingBox() {
799
- var _this__transform = this._transform, center = _this__transform.position;
816
+ var position = this._transform.position;
817
+ var scale = this._worldScale;
800
818
  var halfSize = this._halfSize;
801
- engine.Vector3.add(center, halfSize, this._boxMax);
802
- engine.Vector3.subtract(center, halfSize, this._boxMin);
819
+ this._boxMin.set(-halfSize.x * scale.x + position.x, -halfSize.y * scale.y + position.y, -halfSize.z * scale.z + position.z);
820
+ this._boxMax.set(halfSize.x * scale.x + position.x, halfSize.y * scale.y + position.y, halfSize.z * scale.z + position.z);
803
821
  };
804
822
  return LiteBoxColliderShape;
805
823
  }(LiteColliderShape);
@@ -809,11 +827,11 @@
809
827
 
810
828
  /**
811
829
  * Sphere collider shape in Lite.
812
- */ var LiteSphereColliderShape = /*#__PURE__*/ function(LiteColliderShape) {
813
- _inherits(LiteSphereColliderShape, LiteColliderShape);
830
+ */ var LiteSphereColliderShape = /*#__PURE__*/ function(LiteColliderShape1) {
831
+ _inherits(LiteSphereColliderShape, LiteColliderShape1);
814
832
  function LiteSphereColliderShape(uniqueID, radius, material) {
815
833
  var _this;
816
- _this = LiteColliderShape.call(this) || this;
834
+ _this = LiteColliderShape1.call(this) || this;
817
835
  _this._radius = 1;
818
836
  _this._maxScale = 1;
819
837
  _this._radius = radius;
@@ -829,6 +847,7 @@
829
847
  /**
830
848
  * {@inheritDoc IColliderShape.setWorldScale }
831
849
  */ _proto.setWorldScale = function setWorldScale(scale) {
850
+ LiteColliderShape1.prototype.setWorldScale.call(this, scale);
832
851
  this._maxScale = Math.max(scale.x, scale.y, scale.z);
833
852
  };
834
853
  /**
@@ -1140,11 +1159,11 @@
1140
1159
  /**
1141
1160
  * A static collider component that will not move.
1142
1161
  * @remarks Mostly used for object which always stays at the same place and never moves around.
1143
- */ var LiteStaticCollider = /*#__PURE__*/ function(LiteCollider) {
1144
- _inherits(LiteStaticCollider, LiteCollider);
1162
+ */ var LiteStaticCollider = /*#__PURE__*/ function(LiteCollider1) {
1163
+ _inherits(LiteStaticCollider, LiteCollider1);
1145
1164
  function LiteStaticCollider(position, rotation) {
1146
1165
  var _this;
1147
- _this = LiteCollider.call(this) || this;
1166
+ _this = LiteCollider1.call(this) || this;
1148
1167
  _this._transform.setPosition(position.x, position.y, position.z);
1149
1168
  _this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);
1150
1169
  return _this;
@@ -1 +1 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@galacean/engine")):"function"==typeof define&&define.amd?define(["exports","@galacean/engine"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Galacean=t.Galacean||{},t.Galacean.PhysicsLite={}),t.Galacean)}(this,function(t,e){"use strict";function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function n(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}function s(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function o(t,e,i){return e&&s(t.prototype,e),i&&s(t,i),t}function r(t,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](t):t instanceof e}var a,h,l,c,u=function(){function t(t){void 0===t&&(t=[]),this._flags=t,this.flag=!0,this._flags.push(this)}return t.prototype.destroy=function(){e.Utils.removeFromArray(this._flags,this),this._flags=null},t}(),d=function(){function t(){this._updateFlags=[]}var e=t.prototype;return e.register=function(){return new u(this._updateFlags)},e.distribute=function(){for(var t=this._updateFlags,e=t.length-1;e>=0;e--)t[e].flag=!0},t}(),_=function(){function t(){this._transform=new p,this._invModelMatrix=new e.Matrix,this._transform.owner=this,this._inverseWorldMatFlag=this._transform.registerWorldChangeFlag()}var i=t.prototype;return i.setRotation=function(t){console.log("Physics-lite don't support setRotation. Use Physics-PhysX instead!")},i.setPosition=function(t){this._transform.setPosition(t.x,t.y,t.z)},i.setContactOffset=function(t){console.log("Physics-lite don't support setContactOffset. Use Physics-PhysX instead!")},i.setMaterial=function(t){console.log("Physics-lite don't support setMaterial. Use Physics-PhysX instead!")},i.setUniqueID=function(t){this._id=t},i.setIsTrigger=function(t){console.log("Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!")},i.destroy=function(){},i._updateHitResult=function(i,n,s,o,r){void 0===r&&(r=!1);var a=t._tempPoint;i.getPoint(n,a),r||e.Vector3.transformCoordinate(a,this._transform.worldMatrix,a);var h=e.Vector3.distance(o,a);h<s.distance&&(s.point.copyFrom(a),s.distance=h,s.shapeID=this._id)},i._getLocalRay=function(i){var n=this._getInvModelMatrix(),s=t._ray;return e.Vector3.transformCoordinate(i.origin,n,s.origin),e.Vector3.transformNormal(i.direction,n,s.direction),s.direction.normalize(),s},i._getInvModelMatrix=function(){return this._inverseWorldMatFlag.flag&&(e.Matrix.invert(this._transform.worldMatrix,this._invModelMatrix),this._inverseWorldMatFlag.flag=!1),this._invModelMatrix},t}();_._ray=new e.Ray,_._tempPoint=new e.Vector3;var p=function(){function t(){this._position=new e.Vector3,this._rotation=new e.Vector3,this._rotationQuaternion=new e.Quaternion,this._scale=new e.Vector3(1,1,1),this._worldRotationQuaternion=new e.Quaternion,this._localMatrix=new e.Matrix,this._worldMatrix=new e.Matrix,this._updateFlagManager=new d,this._isParentDirty=!0,this._parentTransformCache=null,this._dirtyFlag=188}var i=t.prototype;return i.setPosition=function(t,e,i){this._position.set(t,e,i),this.position=this._position},i.setRotationQuaternion=function(t,e,i,n){this._rotationQuaternion.set(t,e,i,n),this.rotationQuaternion=this._rotationQuaternion},i.setScale=function(t,e,i){this._scale.set(t,e,i),this.scale=this._scale},i.registerWorldChangeFlag=function(){return this._updateFlagManager.register()},i._updateWorldPositionFlag=function(){if(!this._isContainDirtyFlags(132)&&(this._worldAssociatedChange(132),r(this._owner,f)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldPositionFlag()},i._updateWorldRotationFlag=function(){if(!this._isContainDirtyFlags(152)&&(this._worldAssociatedChange(152),r(this._owner,f)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldRotationFlag()},i._updateWorldScaleFlag=function(){if(!this._isContainDirtyFlags(160)&&(this._worldAssociatedChange(160),r(this._owner,f)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldScaleFlag()},i._updateAllWorldFlag=function(){if(!this._isContainDirtyFlags(188)&&(this._worldAssociatedChange(188),r(this._owner,f)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateAllWorldFlag()},i._getParentTransform=function(){if(!this._isParentDirty)return this._parentTransformCache;var t=null;return r(this._owner,_)&&(t=this._owner._collider._transform),this._parentTransformCache=t,this._isParentDirty=!1,t},i._isContainDirtyFlags=function(t){return(this._dirtyFlag&t)===t},i._isContainDirtyFlag=function(t){return(this._dirtyFlag&t)!=0},i._setDirtyFlagTrue=function(t){this._dirtyFlag|=t},i._setDirtyFlagFalse=function(t){this._dirtyFlag&=~t},i._worldAssociatedChange=function(t){this._dirtyFlag|=t,this._updateFlagManager.distribute()},o(t,[{key:"owner",set:function(t){this._owner=t}},{key:"position",get:function(){return this._position},set:function(t){this._position!==t&&this._position.copyFrom(t),this._setDirtyFlagTrue(64),this._updateWorldPositionFlag()}},{key:"rotationQuaternion",get:function(){return this._isContainDirtyFlag(2)&&(e.Quaternion.rotationEuler(e.MathUtil.degreeToRadian(this._rotation.x),e.MathUtil.degreeToRadian(this._rotation.y),e.MathUtil.degreeToRadian(this._rotation.z),this._rotationQuaternion),this._setDirtyFlagFalse(2)),this._rotationQuaternion},set:function(t){this._rotationQuaternion!==t&&this._rotationQuaternion.copyFrom(t),this._setDirtyFlagTrue(65),this._setDirtyFlagFalse(2),this._updateWorldRotationFlag()}},{key:"worldRotationQuaternion",get:function(){if(this._isContainDirtyFlag(16)){var t=this._getParentTransform();null!=t?e.Quaternion.multiply(t.worldRotationQuaternion,this.rotationQuaternion,this._worldRotationQuaternion):this._worldRotationQuaternion.copyFrom(this.rotationQuaternion),this._setDirtyFlagFalse(16)}return this._worldRotationQuaternion},set:function(i){this._worldRotationQuaternion!==i&&this._worldRotationQuaternion.copyFrom(i);var n=this._getParentTransform();n?(e.Quaternion.invert(n.worldRotationQuaternion,t._tempQuat0),e.Quaternion.multiply(i,t._tempQuat0,this._rotationQuaternion)):this._rotationQuaternion.copyFrom(i),this.rotationQuaternion=this._rotationQuaternion,this._setDirtyFlagFalse(16)}},{key:"scale",get:function(){return this._scale},set:function(t){this._scale!==t&&this._scale.copyFrom(t),this._setDirtyFlagTrue(64),this._updateWorldScaleFlag()}},{key:"localMatrix",get:function(){return this._isContainDirtyFlag(64)&&(e.Matrix.affineTransformation(this._scale,this.rotationQuaternion,this._position,this._localMatrix),this._setDirtyFlagFalse(64)),this._localMatrix},set:function(t){this._localMatrix!==t&&this._localMatrix.copyFrom(t),this._localMatrix.decompose(this._position,this._rotationQuaternion,this._scale),this._setDirtyFlagTrue(1),this._setDirtyFlagFalse(64),this._updateAllWorldFlag()}},{key:"worldMatrix",get:function(){if(this._isContainDirtyFlag(128)){var t=this._getParentTransform();t?e.Matrix.multiply(t.worldMatrix,this.localMatrix,this._worldMatrix):this._worldMatrix.copyFrom(this.localMatrix),this._setDirtyFlagFalse(128)}return this._worldMatrix},set:function(i){this._worldMatrix!==i&&this._worldMatrix.copyFrom(i);var n=this._getParentTransform();n?(e.Matrix.invert(n.worldMatrix,t._tempMat42),e.Matrix.multiply(t._tempMat42,i,this._localMatrix)):this._localMatrix.copyFrom(i),this.localMatrix=this._localMatrix,this._setDirtyFlagFalse(128)}}]),t}();p._tempQuat0=new e.Quaternion,p._tempMat42=new e.Matrix,(a=l||(l={}))[a.LocalEuler=1]="LocalEuler",a[a.LocalQuat=2]="LocalQuat",a[a.WorldPosition=4]="WorldPosition",a[a.WorldEuler=8]="WorldEuler",a[a.WorldQuat=16]="WorldQuat",a[a.WorldScale=32]="WorldScale",a[a.LocalMatrix=64]="LocalMatrix",a[a.WorldMatrix=128]="WorldMatrix",a[a.WmWp=132]="WmWp",a[a.WmWeWq=152]="WmWeWq",a[a.WmWpWeWq=156]="WmWpWeWq",a[a.WmWs=160]="WmWs",a[a.WmWpWs=164]="WmWpWs",a[a.WmWpWeWqWs=188]="WmWpWeWqWs";var f=function(){function t(){this._shapes=[],this._transform=new p,this._transform.owner=this}var e=t.prototype;return e.addShape=function(t){var e=t._collider;e!==this&&(e&&e.removeShape(t),this._shapes.push(t),t._collider=this)},e.removeShape=function(t){var e=this._shapes.indexOf(t);-1!==e&&(this._shapes.splice(e,1),t._collider=null)},e.setWorldTransform=function(t,e){this._transform.setPosition(t.x,t.y,t.z),this._transform.setRotationQuaternion(e.x,e.y,e.z,e.w)},e.getWorldTransform=function(t,e){var i=this._transform,n=i.position,s=i.rotationQuaternion;t.set(n.x,n.y,n.z),e.set(s.x,s.y,s.z,s.w)},e.destroy=function(){},e._raycast=function(t,e,i){i.distance=Number.MAX_VALUE;for(var n=this._shapes,s=0,o=n.length;s<o;s++){var r=n[s];e(r._id)&&r._raycast(t,i)}return i.distance!=Number.MAX_VALUE},t}(),y=function(t){function e(e,i){var n;return(n=t.call(this)||this)._transform.setPosition(e.x,e.y,e.z),n._transform.setRotationQuaternion(i.x,i.y,i.z,i.w),n}n(e,t);var i=e.prototype;return i.addForce=function(t){throw"Physics-lite don't support addForce. Use Physics-PhysX instead!"},i.addTorque=function(t){throw"Physics-lite don't support addTorque. Use Physics-PhysX instead!"},i.move=function(t,e){throw"Physics-lite don't support move. Use Physics-PhysX instead!"},i.sleep=function(){throw"Physics-lite don't support putToSleep. Use Physics-PhysX instead!"},i.setAngularDamping=function(t){throw"Physics-lite don't support setAngularDamping. Use Physics-PhysX instead!"},i.setAngularVelocity=function(t){throw"Physics-lite don't support setAngularVelocity. Use Physics-PhysX instead!"},i.setCenterOfMass=function(t){throw"Physics-lite don't support setCenterOfMass. Use Physics-PhysX instead!"},i.setCollisionDetectionMode=function(t){throw"Physics-lite don't support setCollisionDetectionMode. Use Physics-PhysX instead!"},i.setConstraints=function(t){throw"Physics-lite don't support setConstraints. Use Physics-PhysX instead!"},i.setInertiaTensor=function(t){throw"Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!"},i.setIsKinematic=function(t){throw"Physics-lite don't support setIsKinematic. Use Physics-PhysX instead!"},i.setLinearDamping=function(t){throw"Physics-lite don't support setLinearDamping. Use Physics-PhysX instead!"},i.setLinearVelocity=function(t){throw"Physics-lite don't support setLinearVelocity. Use Physics-PhysX instead!"},i.setMass=function(t){throw"Physics-lite don't support setMass. Use Physics-PhysX instead!"},i.setMaxAngularVelocity=function(t){throw"Physics-lite don't support setMaxAngularVelocity. Use Physics-PhysX instead!"},i.setMaxDepenetrationVelocity=function(t){throw"Physics-lite don't support setMaxDepenetrationVelocity. Use Physics-PhysX instead!"},i.setSleepThreshold=function(t){throw"Physics-lite don't support setSleepThreshold. Use Physics-PhysX instead!"},i.setSolverIterations=function(t){throw"Physics-lite don't support setSolverIterations. Use Physics-PhysX instead!"},i.wakeUp=function(){throw"Physics-lite don't support wakeUp. Use Physics-PhysX instead!"},e}(f),g=function(){function t(t,e,i,n,s){}var e=t.prototype;return e.setBounciness=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setDynamicFriction=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setStaticFriction=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setBounceCombine=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setFrictionCombine=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.destroy=function(){},t}(),m=function(){function t(t){void 0===t&&(t=0),this.length=0,this._elements=Array(t)}var e=t.prototype;return e.add=function(t){this.length===this._elements.length?this._elements.push(t):this._elements[this.length]=t,this.length++},e.delete=function(t){var e=this._elements.indexOf(t);this.deleteByIndex(e)},e.get=function(t){if(t>=this.length)throw"Index is out of range.";return this._elements[t]},e.deleteByIndex=function(t){var e=this._elements,i=null,n=this.length-1;return t!==n&&(i=e[n],e[t]=i),this.length--,i},e.garbageCollection=function(){this._elements.length=this.length},t}(),P=function(){this.shapeID=-1,this.distance=0,this.point=new e.Vector3,this.normal=new e.Vector3},x=function(t){function i(i,n,s){var o;return(o=t.call(this)||this)._halfSize=new e.Vector3,o._scale=new e.Vector3(1,1,1),o._boxMin=new e.Vector3(-.5,-.5,-.5),o._boxMax=new e.Vector3(.5,.5,.5),o._id=i,o._halfSize.set(.5*n.x,.5*n.y,.5*n.z),o._setBondingBox(),o}n(i,t);var s=i.prototype;return s.setPosition=function(e){t.prototype.setPosition.call(this,e),this._setBondingBox()},s.setWorldScale=function(t){this._transform.position=this._transform.position.multiply(t),this._scale.copyFrom(t)},s.setSize=function(t){this._halfSize.set(.5*t.x,.5*t.y,.5*t.z),this._setBondingBox()},s._raycast=function(t,e){var n=this._getLocalRay(t),s=i._tempBox;s.min.set(-this._halfSize.x*this._scale.x,-this._halfSize.y*this._scale.y,-this._halfSize.z*this._scale.z),s.max.set(this._halfSize.x*this._scale.x,this._halfSize.y*this._scale.y,this._halfSize.z*this._scale.z);var o=n.intersectBox(s);return -1!==o&&(this._updateHitResult(n,o,e,t.origin),!0)},s._setBondingBox=function(){var t=this._transform.position,i=this._halfSize;e.Vector3.add(t,i,this._boxMax),e.Vector3.subtract(t,i,this._boxMin)},i}(_);x._tempBox=new e.BoundingBox;var v=function(t){function i(e,i,n){var s;return(s=t.call(this)||this)._radius=1,s._maxScale=1,s._radius=i,s._id=e,s}n(i,t);var s=i.prototype;return s.setRadius=function(t){this._radius=t},s.setWorldScale=function(t){this._maxScale=Math.max(t.x,t.y,t.z)},s._raycast=function(t,n){var s=i._tempSphere;e.Vector3.transformCoordinate(this._transform.position,this._collider._transform.worldMatrix,s.center),s.radius=this.worldRadius;var o=t.intersectSphere(s);return -1!==o&&(this._updateHitResult(t,o,n,t.origin,!0),!0)},o(i,[{key:"worldRadius",get:function(){return this._radius*this._maxScale}}]),i}(_);v._tempSphere=new e.BoundingSphere;var w=function(){function t(t,i,n,s,o,r){this._colliders=[],this._sphere=new e.BoundingSphere,this._box=new e.BoundingBox,this._currentEvents=new m,this._eventMap={},this._eventPool=[],this._onContactEnter=t,this._onContactExit=i,this._onContactStay=n,this._onTriggerEnter=s,this._onTriggerExit=o,this._onTriggerStay=r}var i=t.prototype;return i.setGravity=function(t){console.log("Physics-lite don't support gravity. Use Physics-PhysX instead!")},i.addColliderShape=function(t){this._eventMap[t._id]={}},i.removeColliderShape=function(t){for(var e=this._eventPool,i=this._currentEvents,n=t._id,s=i.length-1;s>=0;s--){var o=i.get(s);(o.index1==n||o.index2==n)&&(i.deleteByIndex(s),e.push(o))}delete this._eventMap[n]},i.addCollider=function(t){this._colliders.push(t)},i.removeCollider=function(t){var e=this._colliders.indexOf(t);-1!==e&&this._colliders.splice(e,1)},i.update=function(t){for(var e=this._colliders,i=0,n=e.length;i<n;i++)this._collisionDetection(t,e[i]);this._fireEvent()},i.raycast=function(e,i,n,s){var o,r=this._colliders;s&&(o=t._hitResult);for(var a=!1,h=t._currentHit,l=0,c=r.length;l<c;l++)if(r[l]._raycast(e,n,h)&&(a=!0,h.distance<i)){if(!o)return!0;o.normal.copyFrom(h.normal),o.point.copyFrom(h.point),o.distance=h.distance,o.shapeID=h.shapeID,i=h.distance}return!a&&o?(o.shapeID=-1,o.distance=0,o.point.set(0,0,0),o.normal.set(0,0,0)):a&&o&&s(o.shapeID,o.distance,o.point,o.normal),a},i.addCharacterController=function(t){throw"Physics-lite don't support addCharacterController. Use Physics-PhysX instead!"},i.removeCharacterController=function(t){throw"Physics-lite don't support removeCharacterController. Use Physics-PhysX instead!"},i._getTrigger=function(t,e){var i;return this._eventPool.length?((i=this._eventPool.pop()).index1=t,i.index2=e):i=new M(t,e),this._eventMap[t][e]=i,i},i._collisionDetection=function(e,i){for(var n=this._colliders,s=i._shapes,o=0,a=s.length;o<a;o++){var h=s[o];if(r(h,x)){t._updateWorldBox(h,this._box);for(var l=0,c=n.length;l<c;l++)for(var u=n[l]._shapes,d=0,_=u.length;d<_;d++){var p=u[d],f=p._id,y=h._id,g=f<y?this._eventMap[f][y]:this._eventMap[y][f];if((void 0===g||g.alreadyInvoked)&&p!=h&&this._boxCollision(p)){if(void 0===g){var m=f<y?this._getTrigger(f,y):this._getTrigger(y,f);m.state=0,m.alreadyInvoked=!1,this._currentEvents.add(m)}else 0===g.state?(g.state=1,g.alreadyInvoked=!1):1===g.state&&(g.alreadyInvoked=!1)}}}else if(r(h,v)){t._upWorldSphere(h,this._sphere);for(var P=0,w=n.length;P<w;P++)for(var M=n[P]._shapes,F=0,C=M.length;F<C;F++){var W=M[F],S=W._id,U=h._id,D=S<U?this._eventMap[S][U]:this._eventMap[U][S];if((void 0===D||D.alreadyInvoked)&&W!=h&&this._sphereCollision(W)){if(void 0===D){var Q=S<U?this._getTrigger(S,U):this._getTrigger(U,S);Q.state=0,Q.alreadyInvoked=!1,this._currentEvents.add(Q)}else 0===D.state?(D.state=1,D.alreadyInvoked=!1):1===D.state&&(D.alreadyInvoked=!1)}}}}},i._fireEvent=function(){for(var t=this._eventPool,e=this._currentEvents,i=e.length-1;i>=0;i--){var n=e.get(i);n.alreadyInvoked?(n.state=2,this._eventMap[n.index1][n.index2]=void 0,this._onTriggerExit(n.index1,n.index2),e.deleteByIndex(i),t.push(n)):0==n.state?(this._onTriggerEnter(n.index1,n.index2),n.alreadyInvoked=!0):1==n.state&&(this._onTriggerStay(n.index1,n.index2),n.alreadyInvoked=!0)}},i._boxCollision=function(i){if(r(i,x)){var n=t._tempBox;return t._updateWorldBox(i,n),e.CollisionUtil.intersectsBoxAndBox(n,this._box)}if(r(i,v)){var s=t._tempSphere;return t._upWorldSphere(i,s),e.CollisionUtil.intersectsSphereAndBox(s,this._box)}return!1},i._sphereCollision=function(i){if(r(i,x)){var n=t._tempBox;return t._updateWorldBox(i,n),e.CollisionUtil.intersectsSphereAndBox(this._sphere,n)}if(r(i,v)){var s=t._tempSphere;return t._upWorldSphere(i,s),e.CollisionUtil.intersectsSphereAndSphere(s,this._sphere)}return!1},t._updateWorldBox=function(t,i){var n=t._transform.worldMatrix;i.min.copyFrom(t._boxMin),i.max.copyFrom(t._boxMax),e.BoundingBox.transform(i,n,i)},t._upWorldSphere=function(t,i){e.Vector3.transformCoordinate(t._transform.position,t._transform.worldMatrix,i.center),i.radius=t.worldRadius},t}();w._tempSphere=new e.BoundingSphere,w._tempBox=new e.BoundingBox,w._currentHit=new P,w._hitResult=new P,(h=c||(c={}))[h.Enter=0]="Enter",h[h.Stay=1]="Stay",h[h.Exit=2]="Exit";var M=function(t,e){this.alreadyInvoked=!1,this.index1=t,this.index2=e},F=function(t){function e(e,i){var n;return(n=t.call(this)||this)._transform.setPosition(e.x,e.y,e.z),n._transform.setRotationQuaternion(i.x,i.y,i.z,i.w),n}return n(e,t),e}(f),C=function(){function t(){}var e=t.prototype;return e.initialize=function(){return Promise.resolve()},e.createPhysicsManager=function(){return null},e.createPhysicsScene=function(t,e,i,n,s,o,r){return new w(e,i,n,s,o,r)},e.createStaticCollider=function(t,e){return new F(t,e)},e.createDynamicCollider=function(t,e){return new y(t,e)},e.createCharacterController=function(){throw"Physics-lite don't support createCharacterController. Use Physics-PhysX instead!"},e.createPhysicsMaterial=function(t,e,i,n,s){return new g(t,e,i,n,s)},e.createBoxColliderShape=function(t,e,i){return new x(t,e,i)},e.createSphereColliderShape=function(t,e,i){return new v(t,e,i)},e.createPlaneColliderShape=function(t,e){throw"Physics-lite don't support PlaneColliderShape. Use Physics-PhysX instead!"},e.createCapsuleColliderShape=function(t,e,i,n){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createFixedJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createHingeJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createSpringJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},t}();t.LitePhysics=C,Object.defineProperty(t,"__esModule",{value:!0})});
1
+ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@galacean/engine")):"function"==typeof define&&define.amd?define(["exports","@galacean/engine"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).Galacean=t.Galacean||{},t.Galacean.PhysicsLite={}),t.Galacean)}(this,function(t,e){"use strict";function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function n(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&i(t,e)}function s(t,e){for(var i=0;i<e.length;i++){var n=e[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,n.key,n)}}function o(t,e,i){return e&&s(t.prototype,e),i&&s(t,i),t}function r(t,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](t):t instanceof e}var a,l,h,c,u=function(){function t(t){void 0===t&&(t=[]),this._flags=t,this.flag=!0,this._flags.push(this)}return t.prototype.destroy=function(){e.Utils.removeFromArray(this._flags,this),this._flags=null},t}(),d=function(){function t(){this._updateFlags=[]}var e=t.prototype;return e.register=function(){return new u(this._updateFlags)},e.distribute=function(){for(var t=this._updateFlags,e=t.length-1;e>=0;e--)t[e].flag=!0},t}(),_=function(){function t(){this._position=new e.Vector3,this._worldScale=new e.Vector3(1,1,1),this._transform=new p,this._invModelMatrix=new e.Matrix,this._transform.owner=this,this._inverseWorldMatFlag=this._transform.registerWorldChangeFlag()}var i=t.prototype;return i.setRotation=function(t){console.log("Physics-lite don't support setRotation. Use Physics-PhysX instead!")},i.setPosition=function(t){t!==this._position&&this._position.copyFrom(t),this._setLocalPose()},i.setWorldScale=function(t){t!==this._worldScale&&this._worldScale.copyFrom(t),this._setLocalPose()},i.setContactOffset=function(t){console.log("Physics-lite don't support setContactOffset. Use Physics-PhysX instead!")},i.setMaterial=function(t){console.log("Physics-lite don't support setMaterial. Use Physics-PhysX instead!")},i.setUniqueID=function(t){this._id=t},i.setIsTrigger=function(t){console.log("Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!")},i.destroy=function(){},i._updateHitResult=function(i,n,s,o,r){void 0===r&&(r=!1);var a=t._tempPoint;i.getPoint(n,a),r||e.Vector3.transformCoordinate(a,this._transform.worldMatrix,a);var l=e.Vector3.distance(o,a);l<s.distance&&(s.point.copyFrom(a),s.distance=l,s.shapeID=this._id)},i._getLocalRay=function(i){var n=this._getInvModelMatrix(),s=t._ray;return e.Vector3.transformCoordinate(i.origin,n,s.origin),e.Vector3.transformNormal(i.direction,n,s.direction),s.direction.normalize(),s},i._getInvModelMatrix=function(){return this._inverseWorldMatFlag.flag&&(e.Matrix.invert(this._transform.worldMatrix,this._invModelMatrix),this._inverseWorldMatFlag.flag=!1),this._invModelMatrix},i._setLocalPose=function(){var i=t._tempPoint;e.Vector3.multiply(this._position,this._worldScale,i),this._transform.position=i},t}();_._ray=new e.Ray,_._tempPoint=new e.Vector3;var p=function(){function t(){this._position=new e.Vector3,this._rotation=new e.Vector3,this._rotationQuaternion=new e.Quaternion,this._scale=new e.Vector3(1,1,1),this._worldRotationQuaternion=new e.Quaternion,this._localMatrix=new e.Matrix,this._worldMatrix=new e.Matrix,this._updateFlagManager=new d,this._isParentDirty=!0,this._parentTransformCache=null,this._dirtyFlag=188}var i=t.prototype;return i.setPosition=function(t,e,i){this._position.set(t,e,i),this.position=this._position},i.setRotationQuaternion=function(t,e,i,n){this._rotationQuaternion.set(t,e,i,n),this.rotationQuaternion=this._rotationQuaternion},i.setScale=function(t,e,i){this._scale.set(t,e,i),this.scale=this._scale},i.registerWorldChangeFlag=function(){return this._updateFlagManager.register()},i._updateWorldPositionFlag=function(){if(!this._isContainDirtyFlags(132)&&(this._worldAssociatedChange(132),r(this._owner,y)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldPositionFlag()},i._updateWorldRotationFlag=function(){if(!this._isContainDirtyFlags(152)&&(this._worldAssociatedChange(152),r(this._owner,y)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldRotationFlag()},i._updateWorldScaleFlag=function(){if(!this._isContainDirtyFlags(160)&&(this._worldAssociatedChange(160),r(this._owner,y)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateWorldScaleFlag()},i._updateAllWorldFlag=function(){if(!this._isContainDirtyFlags(188)&&(this._worldAssociatedChange(188),r(this._owner,y)))for(var t=this._owner._shapes,e=0,i=t.length;e<i;e++)t[e]._transform._updateAllWorldFlag()},i._getParentTransform=function(){if(!this._isParentDirty)return this._parentTransformCache;var t=null;return r(this._owner,_)&&(t=this._owner._collider._transform),this._parentTransformCache=t,this._isParentDirty=!1,t},i._isContainDirtyFlags=function(t){return(this._dirtyFlag&t)===t},i._isContainDirtyFlag=function(t){return(this._dirtyFlag&t)!=0},i._setDirtyFlagTrue=function(t){this._dirtyFlag|=t},i._setDirtyFlagFalse=function(t){this._dirtyFlag&=~t},i._worldAssociatedChange=function(t){this._dirtyFlag|=t,this._updateFlagManager.distribute()},o(t,[{key:"owner",set:function(t){this._owner=t}},{key:"position",get:function(){return this._position},set:function(t){this._position!==t&&this._position.copyFrom(t),this._setDirtyFlagTrue(64),this._updateWorldPositionFlag()}},{key:"rotationQuaternion",get:function(){return this._isContainDirtyFlag(2)&&(e.Quaternion.rotationEuler(e.MathUtil.degreeToRadian(this._rotation.x),e.MathUtil.degreeToRadian(this._rotation.y),e.MathUtil.degreeToRadian(this._rotation.z),this._rotationQuaternion),this._setDirtyFlagFalse(2)),this._rotationQuaternion},set:function(t){this._rotationQuaternion!==t&&this._rotationQuaternion.copyFrom(t),this._setDirtyFlagTrue(65),this._setDirtyFlagFalse(2),this._updateWorldRotationFlag()}},{key:"worldRotationQuaternion",get:function(){if(this._isContainDirtyFlag(16)){var t=this._getParentTransform();null!=t?e.Quaternion.multiply(t.worldRotationQuaternion,this.rotationQuaternion,this._worldRotationQuaternion):this._worldRotationQuaternion.copyFrom(this.rotationQuaternion),this._setDirtyFlagFalse(16)}return this._worldRotationQuaternion},set:function(i){this._worldRotationQuaternion!==i&&this._worldRotationQuaternion.copyFrom(i);var n=this._getParentTransform();n?(e.Quaternion.invert(n.worldRotationQuaternion,t._tempQuat0),e.Quaternion.multiply(i,t._tempQuat0,this._rotationQuaternion)):this._rotationQuaternion.copyFrom(i),this.rotationQuaternion=this._rotationQuaternion,this._setDirtyFlagFalse(16)}},{key:"scale",get:function(){return this._scale},set:function(t){this._scale!==t&&this._scale.copyFrom(t),this._setDirtyFlagTrue(64),this._updateWorldScaleFlag()}},{key:"localMatrix",get:function(){return this._isContainDirtyFlag(64)&&(e.Matrix.affineTransformation(this._scale,this.rotationQuaternion,this._position,this._localMatrix),this._setDirtyFlagFalse(64)),this._localMatrix},set:function(t){this._localMatrix!==t&&this._localMatrix.copyFrom(t),this._localMatrix.decompose(this._position,this._rotationQuaternion,this._scale),this._setDirtyFlagTrue(1),this._setDirtyFlagFalse(64),this._updateAllWorldFlag()}},{key:"worldMatrix",get:function(){if(this._isContainDirtyFlag(128)){var t=this._getParentTransform();t?e.Matrix.multiply(t.worldMatrix,this.localMatrix,this._worldMatrix):this._worldMatrix.copyFrom(this.localMatrix),this._setDirtyFlagFalse(128)}return this._worldMatrix},set:function(i){this._worldMatrix!==i&&this._worldMatrix.copyFrom(i);var n=this._getParentTransform();n?(e.Matrix.invert(n.worldMatrix,t._tempMat42),e.Matrix.multiply(t._tempMat42,i,this._localMatrix)):this._localMatrix.copyFrom(i),this.localMatrix=this._localMatrix,this._setDirtyFlagFalse(128)}}]),t}();p._tempQuat0=new e.Quaternion,p._tempMat42=new e.Matrix,(a=h||(h={}))[a.LocalEuler=1]="LocalEuler",a[a.LocalQuat=2]="LocalQuat",a[a.WorldPosition=4]="WorldPosition",a[a.WorldEuler=8]="WorldEuler",a[a.WorldQuat=16]="WorldQuat",a[a.WorldScale=32]="WorldScale",a[a.LocalMatrix=64]="LocalMatrix",a[a.WorldMatrix=128]="WorldMatrix",a[a.WmWp=132]="WmWp",a[a.WmWeWq=152]="WmWeWq",a[a.WmWpWeWq=156]="WmWpWeWq",a[a.WmWs=160]="WmWs",a[a.WmWpWs=164]="WmWpWs",a[a.WmWpWeWqWs=188]="WmWpWeWqWs";var y=function(){function t(){this._shapes=[],this._transform=new p,this._transform.owner=this}var e=t.prototype;return e.addShape=function(t){var e=t._collider;e!==this&&(e&&e.removeShape(t),this._shapes.push(t),t._collider=this)},e.removeShape=function(t){var e=this._shapes.indexOf(t);-1!==e&&(this._shapes.splice(e,1),t._collider=null)},e.setWorldTransform=function(t,e){this._transform.setPosition(t.x,t.y,t.z),this._transform.setRotationQuaternion(e.x,e.y,e.z,e.w)},e.getWorldTransform=function(t,e){var i=this._transform,n=i.position,s=i.rotationQuaternion;t.set(n.x,n.y,n.z),e.set(s.x,s.y,s.z,s.w)},e.destroy=function(){},e._raycast=function(t,e,i){i.distance=Number.MAX_VALUE;for(var n=this._shapes,s=0,o=n.length;s<o;s++){var r=n[s];e(r._id)&&r._raycast(t,i)}return i.distance!=Number.MAX_VALUE},t}(),f=function(t){function e(e,i){var n;return(n=t.call(this)||this)._transform.setPosition(e.x,e.y,e.z),n._transform.setRotationQuaternion(i.x,i.y,i.z,i.w),n}n(e,t);var i=e.prototype;return i.addForce=function(t){throw"Physics-lite don't support addForce. Use Physics-PhysX instead!"},i.addTorque=function(t){throw"Physics-lite don't support addTorque. Use Physics-PhysX instead!"},i.move=function(t,e){throw"Physics-lite don't support move. Use Physics-PhysX instead!"},i.sleep=function(){throw"Physics-lite don't support putToSleep. Use Physics-PhysX instead!"},i.setAngularDamping=function(t){throw"Physics-lite don't support setAngularDamping. Use Physics-PhysX instead!"},i.setAngularVelocity=function(t){throw"Physics-lite don't support setAngularVelocity. Use Physics-PhysX instead!"},i.setCenterOfMass=function(t){throw"Physics-lite don't support setCenterOfMass. Use Physics-PhysX instead!"},i.setCollisionDetectionMode=function(t){throw"Physics-lite don't support setCollisionDetectionMode. Use Physics-PhysX instead!"},i.setConstraints=function(t){throw"Physics-lite don't support setConstraints. Use Physics-PhysX instead!"},i.setInertiaTensor=function(t){throw"Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!"},i.setIsKinematic=function(t){throw"Physics-lite don't support setIsKinematic. Use Physics-PhysX instead!"},i.setLinearDamping=function(t){throw"Physics-lite don't support setLinearDamping. Use Physics-PhysX instead!"},i.setLinearVelocity=function(t){throw"Physics-lite don't support setLinearVelocity. Use Physics-PhysX instead!"},i.setMass=function(t){throw"Physics-lite don't support setMass. Use Physics-PhysX instead!"},i.setMaxAngularVelocity=function(t){throw"Physics-lite don't support setMaxAngularVelocity. Use Physics-PhysX instead!"},i.setMaxDepenetrationVelocity=function(t){throw"Physics-lite don't support setMaxDepenetrationVelocity. Use Physics-PhysX instead!"},i.setSleepThreshold=function(t){throw"Physics-lite don't support setSleepThreshold. Use Physics-PhysX instead!"},i.setSolverIterations=function(t){throw"Physics-lite don't support setSolverIterations. Use Physics-PhysX instead!"},i.wakeUp=function(){throw"Physics-lite don't support wakeUp. Use Physics-PhysX instead!"},e}(y),g=function(){function t(t,e,i,n,s){}var e=t.prototype;return e.setBounciness=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setDynamicFriction=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setStaticFriction=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setBounceCombine=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.setFrictionCombine=function(t){throw"Physics-lite don't support physics material. Use Physics-PhysX instead!"},e.destroy=function(){},t}(),m=function(){function t(t){void 0===t&&(t=0),this.length=0,this._elements=Array(t)}var e=t.prototype;return e.add=function(t){this.length===this._elements.length?this._elements.push(t):this._elements[this.length]=t,this.length++},e.delete=function(t){var e=this._elements.indexOf(t);this.deleteByIndex(e)},e.get=function(t){if(t>=this.length)throw"Index is out of range.";return this._elements[t]},e.deleteByIndex=function(t){var e=this._elements,i=null,n=this.length-1;return t!==n&&(i=e[n],e[t]=i),this.length--,i},e.garbageCollection=function(){this._elements.length=this.length},t}(),P=function(){this.shapeID=-1,this.distance=0,this.point=new e.Vector3,this.normal=new e.Vector3},x=function(t){function i(i,n,s){var o;return(o=t.call(this)||this)._halfSize=new e.Vector3,o._boxMin=new e.Vector3(-.5,-.5,-.5),o._boxMax=new e.Vector3(.5,.5,.5),o._id=i,o._halfSize.set(.5*n.x,.5*n.y,.5*n.z),o._setBondingBox(),o}n(i,t);var s=i.prototype;return s.setPosition=function(e){t.prototype.setPosition.call(this,e),this._setBondingBox()},s.setWorldScale=function(e){t.prototype.setWorldScale.call(this,e),this._setBondingBox()},s.setSize=function(t){this._halfSize.set(.5*t.x,.5*t.y,.5*t.z),this._setBondingBox()},s._raycast=function(t,e){var n=this._getLocalRay(t),s=i._tempBox;s.min.set(-this._halfSize.x*this._worldScale.x,-this._halfSize.y*this._worldScale.y,-this._halfSize.z*this._worldScale.z),s.max.set(this._halfSize.x*this._worldScale.x,this._halfSize.y*this._worldScale.y,this._halfSize.z*this._worldScale.z);var o=n.intersectBox(s);return -1!==o&&(this._updateHitResult(n,o,e,t.origin),!0)},s._setBondingBox=function(){var t=this._transform.position,e=this._worldScale,i=this._halfSize;this._boxMin.set(-i.x*e.x+t.x,-i.y*e.y+t.y,-i.z*e.z+t.z),this._boxMax.set(i.x*e.x+t.x,i.y*e.y+t.y,i.z*e.z+t.z)},i}(_);x._tempBox=new e.BoundingBox;var v=function(t){function i(e,i,n){var s;return(s=t.call(this)||this)._radius=1,s._maxScale=1,s._radius=i,s._id=e,s}n(i,t);var s=i.prototype;return s.setRadius=function(t){this._radius=t},s.setWorldScale=function(e){t.prototype.setWorldScale.call(this,e),this._maxScale=Math.max(e.x,e.y,e.z)},s._raycast=function(t,n){var s=i._tempSphere;e.Vector3.transformCoordinate(this._transform.position,this._collider._transform.worldMatrix,s.center),s.radius=this.worldRadius;var o=t.intersectSphere(s);return -1!==o&&(this._updateHitResult(t,o,n,t.origin,!0),!0)},o(i,[{key:"worldRadius",get:function(){return this._radius*this._maxScale}}]),i}(_);v._tempSphere=new e.BoundingSphere;var w=function(){function t(t,i,n,s,o,r){this._colliders=[],this._sphere=new e.BoundingSphere,this._box=new e.BoundingBox,this._currentEvents=new m,this._eventMap={},this._eventPool=[],this._onContactEnter=t,this._onContactExit=i,this._onContactStay=n,this._onTriggerEnter=s,this._onTriggerExit=o,this._onTriggerStay=r}var i=t.prototype;return i.setGravity=function(t){console.log("Physics-lite don't support gravity. Use Physics-PhysX instead!")},i.addColliderShape=function(t){this._eventMap[t._id]={}},i.removeColliderShape=function(t){for(var e=this._eventPool,i=this._currentEvents,n=t._id,s=i.length-1;s>=0;s--){var o=i.get(s);(o.index1==n||o.index2==n)&&(i.deleteByIndex(s),e.push(o))}delete this._eventMap[n]},i.addCollider=function(t){this._colliders.push(t)},i.removeCollider=function(t){var e=this._colliders.indexOf(t);-1!==e&&this._colliders.splice(e,1)},i.update=function(t){for(var e=this._colliders,i=0,n=e.length;i<n;i++)this._collisionDetection(t,e[i]);this._fireEvent()},i.raycast=function(e,i,n,s){var o,r=this._colliders;s&&(o=t._hitResult);for(var a=!1,l=t._currentHit,h=0,c=r.length;h<c;h++)if(r[h]._raycast(e,n,l)&&(a=!0,l.distance<i)){if(!o)return!0;o.normal.copyFrom(l.normal),o.point.copyFrom(l.point),o.distance=l.distance,o.shapeID=l.shapeID,i=l.distance}return!a&&o?(o.shapeID=-1,o.distance=0,o.point.set(0,0,0),o.normal.set(0,0,0)):a&&o&&s(o.shapeID,o.distance,o.point,o.normal),a},i.addCharacterController=function(t){throw"Physics-lite don't support addCharacterController. Use Physics-PhysX instead!"},i.removeCharacterController=function(t){throw"Physics-lite don't support removeCharacterController. Use Physics-PhysX instead!"},i._getTrigger=function(t,e){var i;return this._eventPool.length?((i=this._eventPool.pop()).index1=t,i.index2=e):i=new M(t,e),this._eventMap[t][e]=i,i},i._collisionDetection=function(e,i){for(var n=this._colliders,s=i._shapes,o=0,a=s.length;o<a;o++){var l=s[o];if(r(l,x)){t._updateWorldBox(l,this._box);for(var h=0,c=n.length;h<c;h++)for(var u=n[h]._shapes,d=0,_=u.length;d<_;d++){var p=u[d],y=p._id,f=l._id,g=y<f?this._eventMap[y][f]:this._eventMap[f][y];if((void 0===g||g.alreadyInvoked)&&p!=l&&this._boxCollision(p)){if(void 0===g){var m=y<f?this._getTrigger(y,f):this._getTrigger(f,y);m.state=0,m.alreadyInvoked=!1,this._currentEvents.add(m)}else 0===g.state?(g.state=1,g.alreadyInvoked=!1):1===g.state&&(g.alreadyInvoked=!1)}}}else if(r(l,v)){t._upWorldSphere(l,this._sphere);for(var P=0,w=n.length;P<w;P++)for(var M=n[P]._shapes,F=0,S=M.length;F<S;F++){var W=M[F],C=W._id,U=l._id,D=C<U?this._eventMap[C][U]:this._eventMap[U][C];if((void 0===D||D.alreadyInvoked)&&W!=l&&this._sphereCollision(W)){if(void 0===D){var Q=C<U?this._getTrigger(C,U):this._getTrigger(U,C);Q.state=0,Q.alreadyInvoked=!1,this._currentEvents.add(Q)}else 0===D.state?(D.state=1,D.alreadyInvoked=!1):1===D.state&&(D.alreadyInvoked=!1)}}}}},i._fireEvent=function(){for(var t=this._eventPool,e=this._currentEvents,i=e.length-1;i>=0;i--){var n=e.get(i);n.alreadyInvoked?(n.state=2,this._eventMap[n.index1][n.index2]=void 0,this._onTriggerExit(n.index1,n.index2),e.deleteByIndex(i),t.push(n)):0==n.state?(this._onTriggerEnter(n.index1,n.index2),n.alreadyInvoked=!0):1==n.state&&(this._onTriggerStay(n.index1,n.index2),n.alreadyInvoked=!0)}},i._boxCollision=function(i){if(r(i,x)){var n=t._tempBox;return t._updateWorldBox(i,n),e.CollisionUtil.intersectsBoxAndBox(n,this._box)}if(r(i,v)){var s=t._tempSphere;return t._upWorldSphere(i,s),e.CollisionUtil.intersectsSphereAndBox(s,this._box)}return!1},i._sphereCollision=function(i){if(r(i,x)){var n=t._tempBox;return t._updateWorldBox(i,n),e.CollisionUtil.intersectsSphereAndBox(this._sphere,n)}if(r(i,v)){var s=t._tempSphere;return t._upWorldSphere(i,s),e.CollisionUtil.intersectsSphereAndSphere(s,this._sphere)}return!1},t._updateWorldBox=function(t,i){var n=t._transform.worldMatrix;i.min.copyFrom(t._boxMin),i.max.copyFrom(t._boxMax),e.BoundingBox.transform(i,n,i)},t._upWorldSphere=function(t,i){e.Vector3.transformCoordinate(t._transform.position,t._transform.worldMatrix,i.center),i.radius=t.worldRadius},t}();w._tempSphere=new e.BoundingSphere,w._tempBox=new e.BoundingBox,w._currentHit=new P,w._hitResult=new P,(l=c||(c={}))[l.Enter=0]="Enter",l[l.Stay=1]="Stay",l[l.Exit=2]="Exit";var M=function(t,e){this.alreadyInvoked=!1,this.index1=t,this.index2=e},F=function(t){function e(e,i){var n;return(n=t.call(this)||this)._transform.setPosition(e.x,e.y,e.z),n._transform.setRotationQuaternion(i.x,i.y,i.z,i.w),n}return n(e,t),e}(y),S=function(){function t(){}var e=t.prototype;return e.initialize=function(){return Promise.resolve()},e.createPhysicsManager=function(){return null},e.createPhysicsScene=function(t,e,i,n,s,o,r){return new w(e,i,n,s,o,r)},e.createStaticCollider=function(t,e){return new F(t,e)},e.createDynamicCollider=function(t,e){return new f(t,e)},e.createCharacterController=function(){throw"Physics-lite don't support createCharacterController. Use Physics-PhysX instead!"},e.createPhysicsMaterial=function(t,e,i,n,s){return new g(t,e,i,n,s)},e.createBoxColliderShape=function(t,e,i){return new x(t,e,i)},e.createSphereColliderShape=function(t,e,i){return new v(t,e,i)},e.createPlaneColliderShape=function(t,e){throw"Physics-lite don't support PlaneColliderShape. Use Physics-PhysX instead!"},e.createCapsuleColliderShape=function(t,e,i,n){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createFixedJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createHingeJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},e.createSpringJoint=function(t){throw"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!"},t}();t.LitePhysics=S,Object.defineProperty(t,"__esModule",{value:!0})});
package/dist/main.js CHANGED
@@ -90,6 +90,8 @@ function _instanceof(left, right) {
90
90
  * Abstract class for collider shapes.
91
91
  */ var LiteColliderShape = /*#__PURE__*/ function() {
92
92
  function LiteColliderShape() {
93
+ /** @internal */ this._position = new engine.Vector3();
94
+ /** @internal */ this._worldScale = new engine.Vector3(1, 1, 1);
93
95
  /** @internal */ this._transform = new LiteTransform();
94
96
  /** @internal */ this._invModelMatrix = new engine.Matrix();
95
97
  this._transform.owner = this;
@@ -104,7 +106,18 @@ function _instanceof(left, right) {
104
106
  /**
105
107
  * {@inheritDoc IColliderShape.setPosition }
106
108
  */ _proto.setPosition = function setPosition(position) {
107
- this._transform.setPosition(position.x, position.y, position.z);
109
+ if (position !== this._position) {
110
+ this._position.copyFrom(position);
111
+ }
112
+ this._setLocalPose();
113
+ };
114
+ /**
115
+ * {@inheritDoc IColliderShape.setWorldScale }
116
+ */ _proto.setWorldScale = function setWorldScale(scale) {
117
+ if (scale !== this._worldScale) {
118
+ this._worldScale.copyFrom(scale);
119
+ }
120
+ this._setLocalPose();
108
121
  };
109
122
  /**
110
123
  * {@inheritDoc IColliderShape.setContactOffset }
@@ -158,6 +171,11 @@ function _instanceof(left, right) {
158
171
  }
159
172
  return this._invModelMatrix;
160
173
  };
174
+ _proto._setLocalPose = function _setLocalPose() {
175
+ var shapePosition = LiteColliderShape._tempPoint;
176
+ engine.Vector3.multiply(this._position, this._worldScale, shapePosition);
177
+ this._transform.position = shapePosition;
178
+ };
161
179
  return LiteColliderShape;
162
180
  }();
163
181
  (function() {
@@ -545,11 +563,11 @@ var /**
545
563
 
546
564
  /**
547
565
  * A dynamic collider can act with self-defined movement or physical force
548
- */ var LiteDynamicCollider = /*#__PURE__*/ function(LiteCollider) {
549
- _inherits(LiteDynamicCollider, LiteCollider);
566
+ */ var LiteDynamicCollider = /*#__PURE__*/ function(LiteCollider1) {
567
+ _inherits(LiteDynamicCollider, LiteCollider1);
550
568
  function LiteDynamicCollider(position, rotation) {
551
569
  var _this;
552
- _this = LiteCollider.call(this) || this;
570
+ _this = LiteCollider1.call(this) || this;
553
571
  _this._transform.setPosition(position.x, position.y, position.z);
554
572
  _this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);
555
573
  return _this;
@@ -747,13 +765,12 @@ var /**
747
765
 
748
766
  /**
749
767
  * Box collider shape in Lite.
750
- */ var LiteBoxColliderShape = /*#__PURE__*/ function(LiteColliderShape) {
751
- _inherits(LiteBoxColliderShape, LiteColliderShape);
768
+ */ var LiteBoxColliderShape = /*#__PURE__*/ function(LiteColliderShape1) {
769
+ _inherits(LiteBoxColliderShape, LiteColliderShape1);
752
770
  function LiteBoxColliderShape(uniqueID, size, material) {
753
771
  var _this;
754
- _this = LiteColliderShape.call(this) || this;
772
+ _this = LiteColliderShape1.call(this) || this;
755
773
  _this._halfSize = new engine.Vector3();
756
- _this._scale = new engine.Vector3(1, 1, 1);
757
774
  /** @internal */ _this._boxMin = new engine.Vector3(-0.5, -0.5, -0.5);
758
775
  /** @internal */ _this._boxMax = new engine.Vector3(0.5, 0.5, 0.5);
759
776
  _this._id = uniqueID;
@@ -765,14 +782,14 @@ var /**
765
782
  /**
766
783
  * {@inheritDoc IColliderShape.setPosition }
767
784
  */ _proto.setPosition = function setPosition(position) {
768
- LiteColliderShape.prototype.setPosition.call(this, position);
785
+ LiteColliderShape1.prototype.setPosition.call(this, position);
769
786
  this._setBondingBox();
770
787
  };
771
788
  /**
772
789
  * {@inheritDoc IColliderShape.setWorldScale }
773
790
  */ _proto.setWorldScale = function setWorldScale(scale) {
774
- this._transform.position = this._transform.position.multiply(scale);
775
- this._scale.copyFrom(scale);
791
+ LiteColliderShape1.prototype.setWorldScale.call(this, scale);
792
+ this._setBondingBox();
776
793
  };
777
794
  /**
778
795
  * {@inheritDoc IBoxColliderShape.setSize }
@@ -785,8 +802,8 @@ var /**
785
802
  */ _proto._raycast = function _raycast(ray, hit) {
786
803
  var localRay = this._getLocalRay(ray);
787
804
  var boundingBox = LiteBoxColliderShape._tempBox;
788
- boundingBox.min.set(-this._halfSize.x * this._scale.x, -this._halfSize.y * this._scale.y, -this._halfSize.z * this._scale.z);
789
- boundingBox.max.set(this._halfSize.x * this._scale.x, this._halfSize.y * this._scale.y, this._halfSize.z * this._scale.z);
805
+ boundingBox.min.set(-this._halfSize.x * this._worldScale.x, -this._halfSize.y * this._worldScale.y, -this._halfSize.z * this._worldScale.z);
806
+ boundingBox.max.set(this._halfSize.x * this._worldScale.x, this._halfSize.y * this._worldScale.y, this._halfSize.z * this._worldScale.z);
790
807
  var rayDistance = localRay.intersectBox(boundingBox);
791
808
  if (rayDistance !== -1) {
792
809
  this._updateHitResult(localRay, rayDistance, hit, ray.origin);
@@ -796,10 +813,11 @@ var /**
796
813
  }
797
814
  };
798
815
  _proto._setBondingBox = function _setBondingBox() {
799
- var _this__transform = this._transform, center = _this__transform.position;
816
+ var position = this._transform.position;
817
+ var scale = this._worldScale;
800
818
  var halfSize = this._halfSize;
801
- engine.Vector3.add(center, halfSize, this._boxMax);
802
- engine.Vector3.subtract(center, halfSize, this._boxMin);
819
+ this._boxMin.set(-halfSize.x * scale.x + position.x, -halfSize.y * scale.y + position.y, -halfSize.z * scale.z + position.z);
820
+ this._boxMax.set(halfSize.x * scale.x + position.x, halfSize.y * scale.y + position.y, halfSize.z * scale.z + position.z);
803
821
  };
804
822
  return LiteBoxColliderShape;
805
823
  }(LiteColliderShape);
@@ -809,11 +827,11 @@ var /**
809
827
 
810
828
  /**
811
829
  * Sphere collider shape in Lite.
812
- */ var LiteSphereColliderShape = /*#__PURE__*/ function(LiteColliderShape) {
813
- _inherits(LiteSphereColliderShape, LiteColliderShape);
830
+ */ var LiteSphereColliderShape = /*#__PURE__*/ function(LiteColliderShape1) {
831
+ _inherits(LiteSphereColliderShape, LiteColliderShape1);
814
832
  function LiteSphereColliderShape(uniqueID, radius, material) {
815
833
  var _this;
816
- _this = LiteColliderShape.call(this) || this;
834
+ _this = LiteColliderShape1.call(this) || this;
817
835
  _this._radius = 1;
818
836
  _this._maxScale = 1;
819
837
  _this._radius = radius;
@@ -829,6 +847,7 @@ var /**
829
847
  /**
830
848
  * {@inheritDoc IColliderShape.setWorldScale }
831
849
  */ _proto.setWorldScale = function setWorldScale(scale) {
850
+ LiteColliderShape1.prototype.setWorldScale.call(this, scale);
832
851
  this._maxScale = Math.max(scale.x, scale.y, scale.z);
833
852
  };
834
853
  /**
@@ -1140,11 +1159,11 @@ var /**
1140
1159
  /**
1141
1160
  * A static collider component that will not move.
1142
1161
  * @remarks Mostly used for object which always stays at the same place and never moves around.
1143
- */ var LiteStaticCollider = /*#__PURE__*/ function(LiteCollider) {
1144
- _inherits(LiteStaticCollider, LiteCollider);
1162
+ */ var LiteStaticCollider = /*#__PURE__*/ function(LiteCollider1) {
1163
+ _inherits(LiteStaticCollider, LiteCollider1);
1145
1164
  function LiteStaticCollider(position, rotation) {
1146
1165
  var _this;
1147
- _this = LiteCollider.call(this) || this;
1166
+ _this = LiteCollider1.call(this) || this;
1148
1167
  _this._transform.setPosition(position.x, position.y, position.z);
1149
1168
  _this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);
1150
1169
  return _this;