@galacean/engine-physics-lite 1.2.0-beta.5 → 1.2.0-beta.7
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 +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
- package/types/StaticInterfaceImplement.d.ts +0 -5
package/dist/browser.js
CHANGED
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../src/LiteUpdateFlag.ts","../src/LiteUpdateFlagManager.ts","../src/shape/LiteColliderShape.ts","../src/LiteTransform.ts","../src/LiteCollider.ts","../src/LiteDynamicCollider.ts","../src/LitePhysicsMaterial.ts","../src/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsScene.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.ts","../src/index.ts"],"sourcesContent":["export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport function _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { Utils } from \"@galacean/engine\";\n\n/**\n * Used to update tags.\n */\nexport class LiteUpdateFlag {\n /** Flag. */\n flag = true;\n\n constructor(private _flags: LiteUpdateFlag[] = []) {\n this._flags.push(this);\n }\n\n /**\n * Destroy.\n */\n destroy(): void {\n Utils.removeFromArray(this._flags, this);\n this._flags = null;\n }\n}\n","import { LiteUpdateFlag } from \"./LiteUpdateFlag\";\n\n/**\n * @internal\n */\nexport class LiteUpdateFlagManager {\n private _updateFlags: LiteUpdateFlag[] = [];\n\n register(): LiteUpdateFlag {\n return new LiteUpdateFlag(this._updateFlags);\n }\n\n distribute(): void {\n const updateFlags = this._updateFlags;\n for (let i = updateFlags.length - 1; i >= 0; i--) {\n updateFlags[i].flag = true;\n }\n }\n}\n","import { Matrix, Ray, Vector3 } from \"@galacean/engine\";\nimport { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"../LiteCollider\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LiteTransform } from \"../LiteTransform\";\nimport { LiteUpdateFlag } from \"../LiteUpdateFlag\";\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class LiteColliderShape implements IColliderShape {\n private static _ray = new Ray();\n private static _tempPoint = new Vector3();\n\n /** @internal */\n _id: number;\n /** @internal */\n _collider: LiteCollider;\n /** @internal */\n _position: Vector3 = new Vector3();\n /** @internal */\n _worldScale: Vector3 = new Vector3(1, 1, 1);\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n /** @internal */\n _invModelMatrix: Matrix = new Matrix();\n /** @internal */\n _inverseWorldMatFlag: LiteUpdateFlag;\n\n protected constructor() {\n this._transform.owner = this;\n this._inverseWorldMatFlag = this._transform.registerWorldChangeFlag();\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n setRotation(rotation: Vector3): void {\n console.log(\"Physics-lite don't support setRotation. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n setPosition(position: Vector3): void {\n if (position !== this._position) {\n this._position.copyFrom(position);\n }\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._worldScale.copyFrom(scale);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setContactOffset }\n */\n setContactOffset(offset: number): void {\n console.log(\"Physics-lite don't support setContactOffset. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setMaterial }\n */\n setMaterial(material: IPhysicsMaterial): void {\n console.log(\"Physics-lite don't support setMaterial. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setUniqueID }\n */\n setUniqueID(id: number): void {\n this._id = id;\n }\n\n /**\n * {@inheritDoc IColliderShape.setIsTrigger }\n */\n setIsTrigger(value: boolean): void {\n console.log(\"Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n abstract _raycast(ray: Ray, hit: LiteHitResult): boolean;\n\n protected _updateHitResult(\n ray: Ray,\n rayDistance: number,\n outHit: LiteHitResult,\n origin: Vector3,\n isWorldRay: boolean = false\n ): void {\n const hitPoint = LiteColliderShape._tempPoint;\n ray.getPoint(rayDistance, hitPoint);\n if (!isWorldRay) {\n Vector3.transformCoordinate(hitPoint, this._transform.worldMatrix, hitPoint);\n }\n\n const distance = Vector3.distance(origin, hitPoint);\n\n if (distance < outHit.distance) {\n outHit.point.copyFrom(hitPoint);\n outHit.distance = distance;\n outHit.shapeID = this._id;\n }\n }\n\n protected _getLocalRay(ray: Ray): Ray {\n const worldToLocal = this._getInvModelMatrix();\n const outRay = LiteColliderShape._ray;\n\n Vector3.transformCoordinate(ray.origin, worldToLocal, outRay.origin);\n Vector3.transformNormal(ray.direction, worldToLocal, outRay.direction);\n outRay.direction.normalize();\n\n return outRay;\n }\n\n private _getInvModelMatrix(): Matrix {\n if (this._inverseWorldMatFlag.flag) {\n Matrix.invert(this._transform.worldMatrix, this._invModelMatrix);\n this._inverseWorldMatFlag.flag = false;\n }\n return this._invModelMatrix;\n }\n\n private _setLocalPose() {\n const shapePosition = LiteColliderShape._tempPoint;\n Vector3.multiply(this._position, this._worldScale, shapePosition);\n this._transform.position = shapePosition;\n }\n}\n","import { MathUtil, Matrix, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteUpdateFlag } from \"./LiteUpdateFlag\";\nimport { LiteUpdateFlagManager } from \"./LiteUpdateFlagManager\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\n\n/**\n * Used to implement transformation related functions.\n */\nexport class LiteTransform {\n private static _tempQuat0: Quaternion = new Quaternion();\n private static _tempMat42: Matrix = new Matrix();\n\n private _position: Vector3 = new Vector3();\n private _rotation: Vector3 = new Vector3();\n private _rotationQuaternion: Quaternion = new Quaternion();\n private _scale: Vector3 = new Vector3(1, 1, 1);\n private _worldRotationQuaternion: Quaternion = new Quaternion();\n private _localMatrix: Matrix = new Matrix();\n private _worldMatrix: Matrix = new Matrix();\n private _updateFlagManager: LiteUpdateFlagManager = new LiteUpdateFlagManager();\n private _isParentDirty: boolean = true;\n private _parentTransformCache: LiteTransform = null;\n private _dirtyFlag: number = TransformFlag.WmWpWeWqWs;\n\n private _owner: LiteColliderShape | LiteCollider;\n\n set owner(value: LiteColliderShape | LiteCollider) {\n this._owner = value;\n }\n\n /**\n * Local position.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get position(): Vector3 {\n return this._position;\n }\n\n set position(value: Vector3) {\n if (this._position !== value) {\n this._position.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldPositionFlag();\n }\n\n /**\n * Local rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get rotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.LocalQuat)) {\n Quaternion.rotationEuler(\n MathUtil.degreeToRadian(this._rotation.x),\n MathUtil.degreeToRadian(this._rotation.y),\n MathUtil.degreeToRadian(this._rotation.z),\n this._rotationQuaternion\n );\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n }\n return this._rotationQuaternion;\n }\n\n set rotationQuaternion(value: Quaternion) {\n if (this._rotationQuaternion !== value) {\n this._rotationQuaternion.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix | TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n this._updateWorldRotationFlag();\n }\n\n /**\n * World rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldRotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.WorldQuat)) {\n const parent = this._getParentTransform();\n if (parent != null) {\n Quaternion.multiply(parent.worldRotationQuaternion, this.rotationQuaternion, this._worldRotationQuaternion);\n } else {\n this._worldRotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n return this._worldRotationQuaternion;\n }\n\n set worldRotationQuaternion(value: Quaternion) {\n if (this._worldRotationQuaternion !== value) {\n this._worldRotationQuaternion.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Quaternion.invert(parent.worldRotationQuaternion, LiteTransform._tempQuat0);\n Quaternion.multiply(value, LiteTransform._tempQuat0, this._rotationQuaternion);\n } else {\n this._rotationQuaternion.copyFrom(value);\n }\n this.rotationQuaternion = this._rotationQuaternion;\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n\n /**\n * Local scaling.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get scale(): Vector3 {\n return this._scale;\n }\n\n set scale(value: Vector3) {\n if (this._scale !== value) {\n this._scale.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldScaleFlag();\n }\n\n /**\n * Local matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get localMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.LocalMatrix)) {\n Matrix.affineTransformation(this._scale, this.rotationQuaternion, this._position, this._localMatrix);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n }\n return this._localMatrix;\n }\n\n set localMatrix(value: Matrix) {\n if (this._localMatrix !== value) {\n this._localMatrix.copyFrom(value);\n }\n this._localMatrix.decompose(this._position, this._rotationQuaternion, this._scale);\n this._setDirtyFlagTrue(TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n this._updateAllWorldFlag();\n }\n\n /**\n * World matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.WorldMatrix)) {\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.multiply(parent.worldMatrix, this.localMatrix, this._worldMatrix);\n } else {\n this._worldMatrix.copyFrom(this.localMatrix);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n return this._worldMatrix;\n }\n\n set worldMatrix(value: Matrix) {\n if (this._worldMatrix !== value) {\n this._worldMatrix.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.invert(parent.worldMatrix, LiteTransform._tempMat42);\n Matrix.multiply(LiteTransform._tempMat42, value, this._localMatrix);\n } else {\n this._localMatrix.copyFrom(value);\n }\n this.localMatrix = this._localMatrix;\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n\n /**\n * Set local position by X, Y, Z value.\n * @param x - X coordinate\n * @param y - Y coordinate\n * @param z - Z coordinate\n */\n setPosition(x: number, y: number, z: number): void {\n this._position.set(x, y, z);\n this.position = this._position;\n }\n\n /**\n * Set local rotation by the X, Y, Z, and W components of the quaternion.\n * @param x - X component of quaternion\n * @param y - Y component of quaternion\n * @param z - Z component of quaternion\n * @param w - W component of quaternion\n */\n setRotationQuaternion(x: number, y: number, z: number, w: number): void {\n this._rotationQuaternion.set(x, y, z, w);\n this.rotationQuaternion = this._rotationQuaternion;\n }\n\n /**\n * Set local scaling by scaling values along X, Y, Z axis.\n * @param x - Scaling along X axis\n * @param y - Scaling along Y axis\n * @param z - Scaling along Z axis\n */\n setScale(x: number, y: number, z: number): void {\n this._scale.set(x, y, z);\n this.scale = this._scale;\n }\n\n /**\n * Register world transform change flag.\n * @returns Change flag\n */\n registerWorldChangeFlag(): LiteUpdateFlag {\n return this._updateFlagManager.register();\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldPositionFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWp)) {\n this._worldAssociatedChange(TransformFlag.WmWp);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldPositionFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldRotationQuaternion: Will trigger the world rotation (in quaternion) update of itself and all parent entities.\n * Get worldRotation: Will trigger the world rotation(in euler and quaternion) update of itself and world rotation(in quaternion) update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldRotationFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWeWq)) {\n this._worldAssociatedChange(TransformFlag.WmWeWq);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldRotationFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldScale: Will trigger the scaling update of itself and all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix) to be false.\n */\n private _updateWorldScaleFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWs)) {\n this._worldAssociatedChange(TransformFlag.WmWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldScaleFlag();\n }\n }\n }\n }\n\n /**\n * Update all world transform property dirty flag, the principle is the same as above.\n */\n private _updateAllWorldFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWpWeWqWs)) {\n this._worldAssociatedChange(TransformFlag.WmWpWeWqWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateAllWorldFlag();\n }\n }\n }\n }\n\n private _getParentTransform(): LiteTransform | null {\n if (!this._isParentDirty) {\n return this._parentTransformCache;\n }\n let parentCache: LiteTransform = null;\n if (this._owner instanceof LiteColliderShape) {\n let parent = this._owner._collider;\n parentCache = parent._transform;\n }\n\n this._parentTransformCache = parentCache;\n this._isParentDirty = false;\n return parentCache;\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._dirtyFlag & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyFlag & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._dirtyFlag |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._dirtyFlag &= ~type;\n }\n\n private _worldAssociatedChange(type: number): void {\n this._dirtyFlag |= type;\n this._updateFlagManager.distribute();\n }\n}\n\n/**\n * Dirty flag of transform.\n */\nenum TransformFlag {\n LocalEuler = 0x1,\n LocalQuat = 0x2,\n WorldPosition = 0x4,\n WorldEuler = 0x8,\n WorldQuat = 0x10,\n WorldScale = 0x20,\n LocalMatrix = 0x40,\n WorldMatrix = 0x80,\n\n /** WorldMatrix | WorldPosition */\n WmWp = 0x84,\n /** WorldMatrix | WorldEuler | WorldQuat */\n WmWeWq = 0x98,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat */\n WmWpWeWq = 0x9c,\n /** WorldMatrix | WorldScale */\n WmWs = 0xa0,\n /** WorldMatrix | WorldPosition | WorldScale */\n WmWpWs = 0xa4,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat | WorldScale */\n WmWpWeWqWs = 0xbc\n}\n","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Ray, Vector3 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteTransform } from \"./LiteTransform\";\n\n/**\n * Abstract class of physical collider.\n */\nexport abstract class LiteCollider implements ICollider {\n /** @internal */\n _shapes: LiteColliderShape[] = [];\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n\n protected constructor() {\n this._transform.owner = this;\n }\n\n /**\n * {@inheritDoc ICollider.addShape }\n */\n addShape(shape: LiteColliderShape): void {\n const oldCollider = shape._collider;\n if (oldCollider !== this) {\n if (oldCollider) {\n oldCollider.removeShape(shape);\n }\n this._shapes.push(shape);\n shape._collider = this;\n }\n }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: LiteColliderShape): void {\n const index = this._shapes.indexOf(shape);\n if (index !== -1) {\n this._shapes.splice(index, 1);\n shape._collider = null;\n }\n }\n\n /**\n * {@inheritDoc ICollider.setWorldTransform }\n */\n setWorldTransform(position: Vector3, rotation: Quaternion): void {\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n\n /**\n * {@inheritDoc ICollider.getWorldTransform }\n */\n getWorldTransform(outPosition: Vector3, outRotation: Quaternion): void {\n const { position, rotationQuaternion } = this._transform;\n outPosition.set(position.x, position.y, position.z);\n outRotation.set(rotationQuaternion.x, rotationQuaternion.y, rotationQuaternion.z, rotationQuaternion.w);\n }\n\n /**\n * {@inheritDoc ICollider.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n _raycast(ray: Ray, onRaycast: (obj: number) => boolean, hit: LiteHitResult): boolean {\n hit.distance = Number.MAX_VALUE;\n const shapes = this._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n const shape = shapes[i];\n onRaycast(shape._id) && shape._raycast(ray, hit);\n }\n\n return hit.distance != Number.MAX_VALUE;\n }\n}\n","import { LiteCollider } from \"./LiteCollider\";\nimport { IDynamicCollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A dynamic collider can act with self-defined movement or physical force\n */\nexport class LiteDynamicCollider extends LiteCollider implements IDynamicCollider {\n /**\n * Initialize dynamic actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addForce }\n */\n addForce(force: Vector3): void {\n throw \"Physics-lite don't support addForce. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addTorque }\n */\n addTorque(torque: Vector3): void {\n throw \"Physics-lite don't support addTorque. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.move }\n */\n move(positionOrRotation: Vector3 | Quaternion, rotation?: Quaternion): void {\n throw \"Physics-lite don't support move. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.sleep }\n */\n sleep(): void {\n throw \"Physics-lite don't support putToSleep. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularDamping }\n */\n setAngularDamping(value: number): void {\n throw \"Physics-lite don't support setAngularDamping. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n throw \"Physics-lite don't support setAngularVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCenterOfMass }\n */\n setCenterOfMass(value: Vector3): void {\n throw \"Physics-lite don't support setCenterOfMass. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCollisionDetectionMode }\n */\n setCollisionDetectionMode(value: number): void {\n throw \"Physics-lite don't support setCollisionDetectionMode. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setConstraints }\n */\n setConstraints(flags: number): void {\n throw \"Physics-lite don't support setConstraints. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setInertiaTensor }\n */\n setInertiaTensor(value: Vector3): void {\n throw \"Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setIsKinematic }\n */\n setIsKinematic(value: boolean): void {\n throw \"Physics-lite don't support setIsKinematic. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearDamping }\n */\n setLinearDamping(value: number): void {\n throw \"Physics-lite don't support setLinearDamping. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n throw \"Physics-lite don't support setLinearVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMass }\n */\n setMass(value: number): void {\n throw \"Physics-lite don't support setMass. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n throw \"Physics-lite don't support setMaxAngularVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }\n */\n setMaxDepenetrationVelocity(value: number): void {\n throw \"Physics-lite don't support setMaxDepenetrationVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSleepThreshold }\n */\n setSleepThreshold(value: number): void {\n throw \"Physics-lite don't support setSleepThreshold. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSolverIterations }\n */\n setSolverIterations(value: number): void {\n throw \"Physics-lite don't support setSolverIterations. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.wakeUp }\n */\n wakeUp(): void {\n throw \"Physics-lite don't support wakeUp. Use Physics-PhysX instead!\";\n }\n}\n","import { IPhysicsMaterial } from \"@galacean/engine-design\";\n\n/**\n * Physics material describes how to handle colliding objects (friction, bounciness).\n */\nexport class LitePhysicsMaterial implements IPhysicsMaterial {\n constructor(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ) {}\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounciness }\n */\n setBounciness(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setDynamicFriction }\n */\n setDynamicFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setStaticFriction }\n */\n setStaticFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounceCombine }\n */\n setBounceCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setFrictionCombine }\n */\n setFrictionCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.destroy }\n */\n destroy(): void {}\n}\n","/**\n * High-performance unordered array, delete uses exchange method to improve performance, internal capacity only increases.\n */\nexport class DisorderedArray<T> {\n _elements: T[];\n\n length: number = 0;\n\n constructor(count: number = 0) {\n this._elements = new Array<T>(count);\n }\n\n add(element: T): void {\n if (this.length === this._elements.length) this._elements.push(element);\n else this._elements[this.length] = element;\n this.length++;\n }\n\n delete(element: T): void {\n //TODO: It can be optimized for custom binary search and other algorithms, currently this._elements>=this.length wastes performance.\n const index = this._elements.indexOf(element);\n this.deleteByIndex(index);\n }\n\n get(index: number): T {\n if (index >= this.length) {\n throw \"Index is out of range.\";\n }\n return this._elements[index];\n }\n\n /**\n *\n * @param index\n * @returns The replaced item is used to reset its index.\n */\n deleteByIndex(index: number): T {\n var elements: T[] = this._elements;\n let end: T = null;\n const lastIndex = this.length - 1;\n if (index !== lastIndex) {\n end = elements[lastIndex];\n elements[index] = end;\n }\n this.length--;\n return end;\n }\n\n garbageCollection(): void {\n this._elements.length = this.length;\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\n\n/**\n * Structure used to get information back from a raycast or a sweep.\n * @internal\n */\nexport class LiteHitResult {\n /** The collider that was hit. */\n shapeID: number = -1;\n /** The distance from the origin to the hit point. */\n distance: number = 0;\n /** The hit point of the collider that was hit in world space. */\n point: Vector3 = new Vector3();\n /** The hit normal of the collider that was hit in world space. */\n normal: Vector3 = new Vector3();\n}\n","import { BoundingBox, Ray, Vector3 } from \"@galacean/engine\";\nimport { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LitePhysicsMaterial } from \"../LitePhysicsMaterial\";\nimport { LiteColliderShape } from \"./LiteColliderShape\";\n\n/**\n * Box collider shape in Lite.\n */\nexport class LiteBoxColliderShape extends LiteColliderShape implements IBoxColliderShape {\n private static _tempBox: BoundingBox = new BoundingBox();\n private _halfSize: Vector3 = new Vector3();\n private _sizeScale: Vector3 = new Vector3(1, 1, 1);\n\n /** @internal */\n _boxMin: Vector3 = new Vector3(-0.5, -0.5, -0.5);\n /** @internal */\n _boxMax: Vector3 = new Vector3(0.5, 0.5, 0.5);\n\n /**\n * Init Box Shape.\n * @param uniqueID - UniqueID mark Shape.\n * @param size - Size of Shape.\n * @param material - Material of PhysXCollider.\n */\n constructor(uniqueID: number, size: Vector3, material: LitePhysicsMaterial) {\n super();\n this._id = uniqueID;\n this._halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n override setPosition(position: Vector3): void {\n super.setPosition(position);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n this._halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, hit: LiteHitResult): boolean {\n const localRay = this._getLocalRay(ray);\n const sizeScale = this._sizeScale;\n const halfSize = this._halfSize;\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(-halfSize.x * sizeScale.x, -halfSize.y * sizeScale.y, -halfSize.z * sizeScale.z);\n boundingBox.max.set(halfSize.x * sizeScale.x, halfSize.y * sizeScale.y, halfSize.z * sizeScale.z);\n const rayDistance = localRay.intersectBox(boundingBox);\n if (rayDistance !== -1) {\n this._updateHitResult(localRay, rayDistance, hit, ray.origin);\n return true;\n } else {\n return false;\n }\n }\n\n private _setBondingBox(): void {\n const { position } = this._transform;\n const scale = this._sizeScale;\n const halfSize = this._halfSize;\n\n this._boxMin.set(\n -halfSize.x * scale.x + position.x,\n -halfSize.y * scale.y + position.y,\n -halfSize.z * scale.z + position.z\n );\n this._boxMax.set(\n halfSize.x * scale.x + position.x,\n halfSize.y * scale.y + position.y,\n halfSize.z * scale.z + position.z\n );\n }\n}\n","import { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { LiteColliderShape } from \"./LiteColliderShape\";\nimport { BoundingSphere, Quaternion, Ray, Vector3 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LitePhysicsMaterial } from \"../LitePhysicsMaterial\";\n\n/**\n * Sphere collider shape in Lite.\n */\nexport class LiteSphereColliderShape extends LiteColliderShape implements ISphereColliderShape {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n\n private _radius: number = 1;\n private _maxScale: number = 1;\n\n get worldRadius(): number {\n return this._radius * this._maxScale;\n }\n\n /**\n * Init sphere shape.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Size of SphereCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, material: LitePhysicsMaterial) {\n super();\n this._radius = radius;\n this._id = uniqueID;\n }\n\n /**\n * {@inheritDoc ISphereColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, hit: LiteHitResult): boolean {\n const boundingSphere = LiteSphereColliderShape._tempSphere;\n Vector3.transformCoordinate(this._transform.position, this._collider._transform.worldMatrix, boundingSphere.center);\n boundingSphere.radius = this.worldRadius;\n\n const rayDistance = ray.intersectSphere(boundingSphere);\n if (rayDistance !== -1) {\n this._updateHitResult(ray, rayDistance, hit, ray.origin, true);\n return true;\n } else {\n return false;\n }\n }\n}\n","import { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\nimport { ICharacterController, IPhysicsScene } from \"@galacean/engine-design\";\nimport { DisorderedArray } from \"./DisorderedArray\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class LitePhysicsScene implements IPhysicsScene {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n private static _tempBox: BoundingBox = new BoundingBox();\n private static _currentHit: LiteHitResult = new LiteHitResult();\n private static _hitResult: LiteHitResult = new LiteHitResult();\n\n private readonly _onContactEnter?: (obj1: number, obj2: number) => void;\n private readonly _onContactExit?: (obj1: number, obj2: number) => void;\n private readonly _onContactStay?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerExit?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerStay?: (obj1: number, obj2: number) => void;\n\n private _colliders: LiteCollider[] = [];\n private _sphere: BoundingSphere = new BoundingSphere();\n private _box: BoundingBox = new BoundingBox();\n\n private _currentEvents: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n private _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._onContactEnter = onContactEnter;\n this._onContactExit = onContactExit;\n this._onContactStay = onContactStay;\n this._onTriggerEnter = onTriggerEnter;\n this._onTriggerExit = onTriggerExit;\n this._onTriggerStay = onTriggerStay;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.setGravity }\n */\n setGravity(value: Vector3): void {\n console.log(\"Physics-lite don't support gravity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addColliderShape }\n */\n addColliderShape(colliderShape: LiteColliderShape): void {\n this._eventMap[colliderShape._id] = {};\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeColliderShape }\n */\n removeColliderShape(colliderShape: LiteColliderShape): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents, _eventMap: eventMap } = this;\n const { _id: id } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n } else if (event.index2 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n // If the shape is big index, should clear from the small index shape subMap\n eventMap[event.index1][id] = undefined;\n }\n }\n delete eventMap[id];\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(actor: LiteCollider): void {\n this._colliders.push(actor);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCollider }\n */\n removeCollider(collider: LiteCollider): void {\n const index = this._colliders.indexOf(collider);\n if (index !== -1) {\n this._colliders.splice(index, 1);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsManager.update }\n */\n update(deltaTime: number): void {\n let colliders = this._colliders;\n for (let i = 0, len = colliders.length; i < len; i++) {\n this._collisionDetection(deltaTime, colliders[i]);\n }\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsManager.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const colliders = this._colliders;\n\n let hitResult: LiteHitResult;\n if (hit) {\n hitResult = LitePhysicsScene._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsScene._currentHit;\n for (let i = 0, len = colliders.length; i < len; i++) {\n const collider = colliders[i];\n\n if (collider._raycast(ray, onRaycast, curHit)) {\n isHit = true;\n if (curHit.distance < distance) {\n if (hitResult) {\n hitResult.normal.copyFrom(curHit.normal);\n hitResult.point.copyFrom(curHit.point);\n hitResult.distance = curHit.distance;\n hitResult.shapeID = curHit.shapeID;\n } else {\n return true;\n }\n distance = curHit.distance;\n }\n }\n }\n\n if (!isHit && hitResult) {\n hitResult.shapeID = -1;\n hitResult.distance = 0;\n hitResult.point.set(0, 0, 0);\n hitResult.normal.set(0, 0, 0);\n } else if (isHit && hitResult) {\n hit(hitResult.shapeID, hitResult.distance, hitResult.point, hitResult.normal);\n }\n return isHit;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCharacterController }\n */\n addCharacterController(characterController: ICharacterController): void {\n throw \"Physics-lite don't support addCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCharacterController }\n */\n removeCharacterController(characterController: ICharacterController): void {\n throw \"Physics-lite don't support removeCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * Calculate the bounding box in world space from boxCollider.\n * @param boxCollider - The boxCollider to calculate\n * @param out - The calculated boundingBox\n */\n private static _updateWorldBox(boxCollider: LiteBoxColliderShape, out: BoundingBox): void {\n const mat = boxCollider._transform.worldMatrix;\n out.min.copyFrom(boxCollider._boxMin);\n out.max.copyFrom(boxCollider._boxMax);\n BoundingBox.transform(out, mat, out);\n }\n\n /**\n * Get the sphere info of the given sphere collider in world space.\n * @param sphereCollider - The given sphere collider\n * @param out - The calculated boundingSphere\n */\n private static _upWorldSphere(sphereCollider: LiteSphereColliderShape, out: BoundingSphere): void {\n Vector3.transformCoordinate(sphereCollider._transform.position, sphereCollider._transform.worldMatrix, out.center);\n out.radius = sphereCollider.worldRadius;\n }\n\n private _getTrigger(index1: number, index2: number): TriggerEvent {\n let event: TriggerEvent;\n if (this._eventPool.length) {\n event = this._eventPool.pop();\n event.index1 = index1;\n event.index2 = index2;\n } else {\n event = new TriggerEvent(index1, index2);\n }\n this._eventMap[index1][index2] = event;\n return event;\n }\n\n private _collisionDetection(deltaTime: number, myCollider: LiteCollider): void {\n const colliders = this._colliders;\n\n const myColliderShapes = myCollider._shapes;\n for (let i = 0, len = myColliderShapes.length; i < len; i++) {\n const myShape = myColliderShapes[i];\n if (myShape instanceof LiteBoxColliderShape) {\n LitePhysicsScene._updateWorldBox(myShape, this._box);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const colliderShape = colliders[j]._shapes;\n for (let k = 0, len = colliderShape.length; k < len; k++) {\n const shape = colliderShape[k];\n const index1 = shape._id;\n const index2 = myShape._id;\n const event = index1 < index2 ? this._eventMap[index1][index2] : this._eventMap[index2][index1];\n if (event !== undefined && !event.alreadyInvoked) {\n continue;\n }\n if (shape != myShape && this._boxCollision(shape)) {\n if (event === undefined) {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n event.alreadyInvoked = false;\n this._currentEvents.add(event);\n } else if (event.state === TriggerEventState.Enter) {\n event.state = TriggerEventState.Stay;\n event.alreadyInvoked = false;\n } else if (event.state === TriggerEventState.Stay) {\n event.alreadyInvoked = false;\n }\n }\n }\n }\n } else if (myShape instanceof LiteSphereColliderShape) {\n LitePhysicsScene._upWorldSphere(myShape, this._sphere);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const colliderShape = colliders[j]._shapes;\n for (let k = 0, len = colliderShape.length; k < len; k++) {\n const shape = colliderShape[k];\n const index1 = shape._id;\n const index2 = myShape._id;\n const event = index1 < index2 ? this._eventMap[index1][index2] : this._eventMap[index2][index1];\n if (event !== undefined && !event.alreadyInvoked) {\n continue;\n }\n if (shape != myShape && this._sphereCollision(shape)) {\n if (event === undefined) {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n event.alreadyInvoked = false;\n this._currentEvents.add(event);\n } else if (event.state === TriggerEventState.Enter) {\n event.state = TriggerEventState.Stay;\n event.alreadyInvoked = false;\n } else if (event.state === TriggerEventState.Stay) {\n event.alreadyInvoked = false;\n }\n }\n }\n }\n }\n }\n }\n\n private _fireEvent(): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (!event.alreadyInvoked) {\n if (event.state == TriggerEventState.Enter) {\n this._onTriggerEnter(event.index1, event.index2);\n event.alreadyInvoked = true;\n } else if (event.state == TriggerEventState.Stay) {\n this._onTriggerStay(event.index1, event.index2);\n event.alreadyInvoked = true;\n }\n } else {\n event.state = TriggerEventState.Exit;\n this._eventMap[event.index1][event.index2] = undefined;\n\n this._onTriggerExit(event.index1, event.index2);\n\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n }\n\n private _boxCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndBox(sphere, this._box);\n }\n return false;\n }\n\n private _sphereCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndSphere(sphere, this._sphere);\n }\n return false;\n }\n}\n\n/**\n * Physics state\n */\nenum TriggerEventState {\n Enter,\n Stay,\n Exit\n}\n\n/**\n * Trigger event to store interactive object ids and state.\n */\nclass TriggerEvent {\n state: TriggerEventState;\n index1: number;\n index2: number;\n alreadyInvoked: boolean = false;\n\n constructor(index1: number, index2: number) {\n this.index1 = index1;\n this.index2 = index2;\n }\n}\n","import { IStaticCollider } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A static collider component that will not move.\n * @remarks Mostly used for object which always stays at the same place and never moves around.\n */\nexport class LiteStaticCollider extends LiteCollider implements IStaticCollider {\n /**\n * Initialize static actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LitePhysicsScene } from \"./LitePhysicsScene\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\n\nexport class LitePhysics implements IPhysics {\n /**\n * {@inheritDoc IPhysics.initialize }\n */\n initialize(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n createPhysicsManager(): IPhysicsManager {\n return null;\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsScene }\n */\n createPhysicsScene(\n physicsManager: LitePhysicsManager,\n onContactBegin?: (obj1: number, obj2: number) => void,\n onContactEnd?: (obj1: number, obj2: number) => void,\n onContactPersist?: (obj1: number, obj2: number) => void,\n onTriggerBegin?: (obj1: number, obj2: number) => void,\n onTriggerEnd?: (obj1: number, obj2: number) => void,\n onTriggerPersist?: (obj1: number, obj2: number) => void\n ): LitePhysicsScene {\n return new LitePhysicsScene(\n onContactBegin,\n onContactEnd,\n onContactPersist,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerPersist\n );\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new LiteStaticCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new LiteDynamicCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n createCharacterController(): ICharacterController {\n throw \"Physics-lite don't support createCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsMaterial }\n */\n createPhysicsMaterial(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ): IPhysicsMaterial {\n return new LitePhysicsMaterial(staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n createBoxColliderShape(uniqueID: number, size: Vector3, material: LitePhysicsMaterial): IBoxColliderShape {\n return new LiteBoxColliderShape(uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n createSphereColliderShape(uniqueID: number, radius: number, material: LitePhysicsMaterial): ISphereColliderShape {\n return new LiteSphereColliderShape(uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n createPlaneColliderShape(uniqueID: number, material: LitePhysicsMaterial): IPlaneColliderShape {\n throw \"Physics-lite don't support PlaneColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: LitePhysicsMaterial\n ): ICapsuleColliderShape {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n createFixedJoint(collider: LiteCollider): IFixedJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n createHingeJoint(collider: LiteCollider): IHingeJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n createSpringJoint(collider: LiteCollider): ISpringJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n}\n","export { LitePhysics } from \"./LitePhysics\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean PhysicsLite version: ${version}`);\n"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_position","Vector3","_worldScale","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","copyFrom","_setLocalPose","setWorldScale","scale","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","transformCoordinate","worldMatrix","distance","point","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","shapePosition","multiply","Ray","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","x","y","z","set","setRotationQuaternion","w","rotationQuaternion","setScale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","_tempQuat0","localMatrix","affineTransformation","decompose","_tempMat42","TransformFlag","LocalEuler","LocalQuat","WorldPosition","WorldEuler","WorldQuat","WorldScale","LocalMatrix","WorldMatrix","WmWp","WmWeWq","WmWpWeWq","WmWs","WmWpWs","WmWpWeWqWs","addShape","shape","oldCollider","removeShape","index","indexOf","splice","setWorldTransform","getWorldTransform","outPosition","outRotation","_raycast","onRaycast","hit","Number","MAX_VALUE","LiteDynamicCollider","addForce","force","addTorque","torque","move","positionOrRotation","sleep","setAngularDamping","setAngularVelocity","setCenterOfMass","setCollisionDetectionMode","setConstraints","flags","setInertiaTensor","setIsKinematic","setLinearDamping","setLinearVelocity","setMass","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","wakeUp","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_sizeScale","_boxMin","_boxMax","_setBondingBox","Math","abs","setSize","localRay","sizeScale","halfSize","boundingBox","_tempBox","min","max","intersectBox","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","boundingSphere","_tempSphere","center","worldRadius","intersectSphere","BoundingSphere","LitePhysicsScene","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","eventMap","event","index1","index2","undefined","addCollider","actor","removeCollider","collider","update","deltaTime","colliders","len","_collisionDetection","_fireEvent","raycast","hitResult","_hitResult","isHit","curHit","_currentHit","addCharacterController","characterController","removeCharacterController","_getTrigger","pop","TriggerEvent","myCollider","myColliderShapes","myShape","_updateWorldBox","j","k","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","createPhysicsScene","physicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint","version"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../src/LiteUpdateFlag.ts","../src/LiteUpdateFlagManager.ts","../src/shape/LiteColliderShape.ts","../src/LiteTransform.ts","../src/LiteCollider.ts","../src/LiteDynamicCollider.ts","../src/LitePhysicsMaterial.ts","../src/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsScene.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.ts","../src/index.ts"],"sourcesContent":["export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nexport function _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","import { Utils } from \"@galacean/engine\";\n\n/**\n * Used to update tags.\n */\nexport class LiteUpdateFlag {\n /** Flag. */\n flag = true;\n\n constructor(private _flags: LiteUpdateFlag[] = []) {\n this._flags.push(this);\n }\n\n /**\n * Destroy.\n */\n destroy(): void {\n Utils.removeFromArray(this._flags, this);\n this._flags = null;\n }\n}\n","import { LiteUpdateFlag } from \"./LiteUpdateFlag\";\n\n/**\n * @internal\n */\nexport class LiteUpdateFlagManager {\n private _updateFlags: LiteUpdateFlag[] = [];\n\n register(): LiteUpdateFlag {\n return new LiteUpdateFlag(this._updateFlags);\n }\n\n distribute(): void {\n const updateFlags = this._updateFlags;\n for (let i = updateFlags.length - 1; i >= 0; i--) {\n updateFlags[i].flag = true;\n }\n }\n}\n","import { Matrix, Ray, Vector3 } from \"@galacean/engine\";\nimport { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"../LiteCollider\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LiteTransform } from \"../LiteTransform\";\nimport { LiteUpdateFlag } from \"../LiteUpdateFlag\";\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class LiteColliderShape implements IColliderShape {\n private static _ray = new Ray();\n private static _tempPoint = new Vector3();\n\n /** @internal */\n _id: number;\n /** @internal */\n _collider: LiteCollider;\n /** @internal */\n _position: Vector3 = new Vector3();\n /** @internal */\n _worldScale: Vector3 = new Vector3(1, 1, 1);\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n /** @internal */\n _invModelMatrix: Matrix = new Matrix();\n /** @internal */\n _inverseWorldMatFlag: LiteUpdateFlag;\n\n protected constructor() {\n this._transform.owner = this;\n this._inverseWorldMatFlag = this._transform.registerWorldChangeFlag();\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n setRotation(rotation: Vector3): void {\n console.log(\"Physics-lite don't support setRotation. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n setPosition(position: Vector3): void {\n if (position !== this._position) {\n this._position.copyFrom(position);\n }\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._worldScale.copyFrom(scale);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setContactOffset }\n */\n setContactOffset(offset: number): void {\n console.log(\"Physics-lite don't support setContactOffset. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setMaterial }\n */\n setMaterial(material: IPhysicsMaterial): void {\n console.log(\"Physics-lite don't support setMaterial. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setUniqueID }\n */\n setUniqueID(id: number): void {\n this._id = id;\n }\n\n /**\n * {@inheritDoc IColliderShape.setIsTrigger }\n */\n setIsTrigger(value: boolean): void {\n console.log(\"Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n abstract _raycast(ray: Ray, hit: LiteHitResult): boolean;\n\n protected _updateHitResult(\n ray: Ray,\n rayDistance: number,\n outHit: LiteHitResult,\n origin: Vector3,\n isWorldRay: boolean = false\n ): void {\n const hitPoint = LiteColliderShape._tempPoint;\n ray.getPoint(rayDistance, hitPoint);\n if (!isWorldRay) {\n Vector3.transformCoordinate(hitPoint, this._transform.worldMatrix, hitPoint);\n }\n\n const distance = Vector3.distance(origin, hitPoint);\n\n if (distance < outHit.distance) {\n outHit.point.copyFrom(hitPoint);\n outHit.distance = distance;\n outHit.shapeID = this._id;\n }\n }\n\n protected _getLocalRay(ray: Ray): Ray {\n const worldToLocal = this._getInvModelMatrix();\n const outRay = LiteColliderShape._ray;\n\n Vector3.transformCoordinate(ray.origin, worldToLocal, outRay.origin);\n Vector3.transformNormal(ray.direction, worldToLocal, outRay.direction);\n outRay.direction.normalize();\n\n return outRay;\n }\n\n private _getInvModelMatrix(): Matrix {\n if (this._inverseWorldMatFlag.flag) {\n Matrix.invert(this._transform.worldMatrix, this._invModelMatrix);\n this._inverseWorldMatFlag.flag = false;\n }\n return this._invModelMatrix;\n }\n\n private _setLocalPose() {\n const shapePosition = LiteColliderShape._tempPoint;\n Vector3.multiply(this._position, this._worldScale, shapePosition);\n this._transform.position = shapePosition;\n }\n}\n","import { MathUtil, Matrix, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteUpdateFlag } from \"./LiteUpdateFlag\";\nimport { LiteUpdateFlagManager } from \"./LiteUpdateFlagManager\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\n\n/**\n * Used to implement transformation related functions.\n */\nexport class LiteTransform {\n private static _tempQuat0: Quaternion = new Quaternion();\n private static _tempMat42: Matrix = new Matrix();\n\n private _position: Vector3 = new Vector3();\n private _rotation: Vector3 = new Vector3();\n private _rotationQuaternion: Quaternion = new Quaternion();\n private _scale: Vector3 = new Vector3(1, 1, 1);\n private _worldRotationQuaternion: Quaternion = new Quaternion();\n private _localMatrix: Matrix = new Matrix();\n private _worldMatrix: Matrix = new Matrix();\n private _updateFlagManager: LiteUpdateFlagManager = new LiteUpdateFlagManager();\n private _isParentDirty: boolean = true;\n private _parentTransformCache: LiteTransform = null;\n private _dirtyFlag: number = TransformFlag.WmWpWeWqWs;\n\n private _owner: LiteColliderShape | LiteCollider;\n\n set owner(value: LiteColliderShape | LiteCollider) {\n this._owner = value;\n }\n\n /**\n * Local position.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get position(): Vector3 {\n return this._position;\n }\n\n set position(value: Vector3) {\n if (this._position !== value) {\n this._position.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldPositionFlag();\n }\n\n /**\n * Local rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get rotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.LocalQuat)) {\n Quaternion.rotationEuler(\n MathUtil.degreeToRadian(this._rotation.x),\n MathUtil.degreeToRadian(this._rotation.y),\n MathUtil.degreeToRadian(this._rotation.z),\n this._rotationQuaternion\n );\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n }\n return this._rotationQuaternion;\n }\n\n set rotationQuaternion(value: Quaternion) {\n if (this._rotationQuaternion !== value) {\n this._rotationQuaternion.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix | TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n this._updateWorldRotationFlag();\n }\n\n /**\n * World rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldRotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.WorldQuat)) {\n const parent = this._getParentTransform();\n if (parent != null) {\n Quaternion.multiply(parent.worldRotationQuaternion, this.rotationQuaternion, this._worldRotationQuaternion);\n } else {\n this._worldRotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n return this._worldRotationQuaternion;\n }\n\n set worldRotationQuaternion(value: Quaternion) {\n if (this._worldRotationQuaternion !== value) {\n this._worldRotationQuaternion.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Quaternion.invert(parent.worldRotationQuaternion, LiteTransform._tempQuat0);\n Quaternion.multiply(value, LiteTransform._tempQuat0, this._rotationQuaternion);\n } else {\n this._rotationQuaternion.copyFrom(value);\n }\n this.rotationQuaternion = this._rotationQuaternion;\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n\n /**\n * Local scaling.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get scale(): Vector3 {\n return this._scale;\n }\n\n set scale(value: Vector3) {\n if (this._scale !== value) {\n this._scale.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldScaleFlag();\n }\n\n /**\n * Local matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get localMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.LocalMatrix)) {\n Matrix.affineTransformation(this._scale, this.rotationQuaternion, this._position, this._localMatrix);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n }\n return this._localMatrix;\n }\n\n set localMatrix(value: Matrix) {\n if (this._localMatrix !== value) {\n this._localMatrix.copyFrom(value);\n }\n this._localMatrix.decompose(this._position, this._rotationQuaternion, this._scale);\n this._setDirtyFlagTrue(TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n this._updateAllWorldFlag();\n }\n\n /**\n * World matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.WorldMatrix)) {\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.multiply(parent.worldMatrix, this.localMatrix, this._worldMatrix);\n } else {\n this._worldMatrix.copyFrom(this.localMatrix);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n return this._worldMatrix;\n }\n\n set worldMatrix(value: Matrix) {\n if (this._worldMatrix !== value) {\n this._worldMatrix.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.invert(parent.worldMatrix, LiteTransform._tempMat42);\n Matrix.multiply(LiteTransform._tempMat42, value, this._localMatrix);\n } else {\n this._localMatrix.copyFrom(value);\n }\n this.localMatrix = this._localMatrix;\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n\n /**\n * Set local position by X, Y, Z value.\n * @param x - X coordinate\n * @param y - Y coordinate\n * @param z - Z coordinate\n */\n setPosition(x: number, y: number, z: number): void {\n this._position.set(x, y, z);\n this.position = this._position;\n }\n\n /**\n * Set local rotation by the X, Y, Z, and W components of the quaternion.\n * @param x - X component of quaternion\n * @param y - Y component of quaternion\n * @param z - Z component of quaternion\n * @param w - W component of quaternion\n */\n setRotationQuaternion(x: number, y: number, z: number, w: number): void {\n this._rotationQuaternion.set(x, y, z, w);\n this.rotationQuaternion = this._rotationQuaternion;\n }\n\n /**\n * Set local scaling by scaling values along X, Y, Z axis.\n * @param x - Scaling along X axis\n * @param y - Scaling along Y axis\n * @param z - Scaling along Z axis\n */\n setScale(x: number, y: number, z: number): void {\n this._scale.set(x, y, z);\n this.scale = this._scale;\n }\n\n /**\n * Register world transform change flag.\n * @returns Change flag\n */\n registerWorldChangeFlag(): LiteUpdateFlag {\n return this._updateFlagManager.register();\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldPositionFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWp)) {\n this._worldAssociatedChange(TransformFlag.WmWp);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldPositionFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldRotationQuaternion: Will trigger the world rotation (in quaternion) update of itself and all parent entities.\n * Get worldRotation: Will trigger the world rotation(in euler and quaternion) update of itself and world rotation(in quaternion) update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldRotationFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWeWq)) {\n this._worldAssociatedChange(TransformFlag.WmWeWq);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldRotationFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldScale: Will trigger the scaling update of itself and all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix) to be false.\n */\n private _updateWorldScaleFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWs)) {\n this._worldAssociatedChange(TransformFlag.WmWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldScaleFlag();\n }\n }\n }\n }\n\n /**\n * Update all world transform property dirty flag, the principle is the same as above.\n */\n private _updateAllWorldFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWpWeWqWs)) {\n this._worldAssociatedChange(TransformFlag.WmWpWeWqWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateAllWorldFlag();\n }\n }\n }\n }\n\n private _getParentTransform(): LiteTransform | null {\n if (!this._isParentDirty) {\n return this._parentTransformCache;\n }\n let parentCache: LiteTransform = null;\n if (this._owner instanceof LiteColliderShape) {\n let parent = this._owner._collider;\n parentCache = parent._transform;\n }\n\n this._parentTransformCache = parentCache;\n this._isParentDirty = false;\n return parentCache;\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._dirtyFlag & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyFlag & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._dirtyFlag |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._dirtyFlag &= ~type;\n }\n\n private _worldAssociatedChange(type: number): void {\n this._dirtyFlag |= type;\n this._updateFlagManager.distribute();\n }\n}\n\n/**\n * Dirty flag of transform.\n */\nenum TransformFlag {\n LocalEuler = 0x1,\n LocalQuat = 0x2,\n WorldPosition = 0x4,\n WorldEuler = 0x8,\n WorldQuat = 0x10,\n WorldScale = 0x20,\n LocalMatrix = 0x40,\n WorldMatrix = 0x80,\n\n /** WorldMatrix | WorldPosition */\n WmWp = 0x84,\n /** WorldMatrix | WorldEuler | WorldQuat */\n WmWeWq = 0x98,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat */\n WmWpWeWq = 0x9c,\n /** WorldMatrix | WorldScale */\n WmWs = 0xa0,\n /** WorldMatrix | WorldPosition | WorldScale */\n WmWpWs = 0xa4,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat | WorldScale */\n WmWpWeWqWs = 0xbc\n}\n","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Ray, Vector3 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteTransform } from \"./LiteTransform\";\n\n/**\n * Abstract class of physical collider.\n */\nexport abstract class LiteCollider implements ICollider {\n /** @internal */\n _shapes: LiteColliderShape[] = [];\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n\n protected constructor() {\n this._transform.owner = this;\n }\n\n /**\n * {@inheritDoc ICollider.addShape }\n */\n addShape(shape: LiteColliderShape): void {\n const oldCollider = shape._collider;\n if (oldCollider !== this) {\n if (oldCollider) {\n oldCollider.removeShape(shape);\n }\n this._shapes.push(shape);\n shape._collider = this;\n }\n }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: LiteColliderShape): void {\n const index = this._shapes.indexOf(shape);\n if (index !== -1) {\n this._shapes.splice(index, 1);\n shape._collider = null;\n }\n }\n\n /**\n * {@inheritDoc ICollider.setWorldTransform }\n */\n setWorldTransform(position: Vector3, rotation: Quaternion): void {\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n\n /**\n * {@inheritDoc ICollider.getWorldTransform }\n */\n getWorldTransform(outPosition: Vector3, outRotation: Quaternion): void {\n const { position, rotationQuaternion } = this._transform;\n outPosition.set(position.x, position.y, position.z);\n outRotation.set(rotationQuaternion.x, rotationQuaternion.y, rotationQuaternion.z, rotationQuaternion.w);\n }\n\n /**\n * {@inheritDoc ICollider.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n _raycast(ray: Ray, onRaycast: (obj: number) => boolean, hit: LiteHitResult): boolean {\n hit.distance = Number.MAX_VALUE;\n const shapes = this._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n const shape = shapes[i];\n onRaycast(shape._id) && shape._raycast(ray, hit);\n }\n\n return hit.distance != Number.MAX_VALUE;\n }\n}\n","import { LiteCollider } from \"./LiteCollider\";\nimport { IDynamicCollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A dynamic collider can act with self-defined movement or physical force\n */\nexport class LiteDynamicCollider extends LiteCollider implements IDynamicCollider {\n /**\n * Initialize dynamic actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addForce }\n */\n addForce(force: Vector3): void {\n throw \"Physics-lite don't support addForce. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addTorque }\n */\n addTorque(torque: Vector3): void {\n throw \"Physics-lite don't support addTorque. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.move }\n */\n move(positionOrRotation: Vector3 | Quaternion, rotation?: Quaternion): void {\n throw \"Physics-lite don't support move. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.sleep }\n */\n sleep(): void {\n throw \"Physics-lite don't support putToSleep. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularDamping }\n */\n setAngularDamping(value: number): void {\n throw \"Physics-lite don't support setAngularDamping. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n throw \"Physics-lite don't support setAngularVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCenterOfMass }\n */\n setCenterOfMass(value: Vector3): void {\n throw \"Physics-lite don't support setCenterOfMass. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCollisionDetectionMode }\n */\n setCollisionDetectionMode(value: number): void {\n throw \"Physics-lite don't support setCollisionDetectionMode. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setConstraints }\n */\n setConstraints(flags: number): void {\n throw \"Physics-lite don't support setConstraints. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setInertiaTensor }\n */\n setInertiaTensor(value: Vector3): void {\n throw \"Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setIsKinematic }\n */\n setIsKinematic(value: boolean): void {\n throw \"Physics-lite don't support setIsKinematic. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearDamping }\n */\n setLinearDamping(value: number): void {\n throw \"Physics-lite don't support setLinearDamping. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n throw \"Physics-lite don't support setLinearVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMass }\n */\n setMass(value: number): void {\n throw \"Physics-lite don't support setMass. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n throw \"Physics-lite don't support setMaxAngularVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }\n */\n setMaxDepenetrationVelocity(value: number): void {\n throw \"Physics-lite don't support setMaxDepenetrationVelocity. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSleepThreshold }\n */\n setSleepThreshold(value: number): void {\n throw \"Physics-lite don't support setSleepThreshold. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSolverIterations }\n */\n setSolverIterations(value: number): void {\n throw \"Physics-lite don't support setSolverIterations. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.wakeUp }\n */\n wakeUp(): void {\n throw \"Physics-lite don't support wakeUp. Use Physics-PhysX instead!\";\n }\n}\n","import { IPhysicsMaterial } from \"@galacean/engine-design\";\n\n/**\n * Physics material describes how to handle colliding objects (friction, bounciness).\n */\nexport class LitePhysicsMaterial implements IPhysicsMaterial {\n constructor(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ) {}\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounciness }\n */\n setBounciness(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setDynamicFriction }\n */\n setDynamicFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setStaticFriction }\n */\n setStaticFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounceCombine }\n */\n setBounceCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setFrictionCombine }\n */\n setFrictionCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.destroy }\n */\n destroy(): void {}\n}\n","/**\n * High-performance unordered array, delete uses exchange method to improve performance, internal capacity only increases.\n */\nexport class DisorderedArray<T> {\n _elements: T[];\n\n length: number = 0;\n\n constructor(count: number = 0) {\n this._elements = new Array<T>(count);\n }\n\n add(element: T): void {\n if (this.length === this._elements.length) this._elements.push(element);\n else this._elements[this.length] = element;\n this.length++;\n }\n\n delete(element: T): void {\n //TODO: It can be optimized for custom binary search and other algorithms, currently this._elements>=this.length wastes performance.\n const index = this._elements.indexOf(element);\n this.deleteByIndex(index);\n }\n\n get(index: number): T {\n if (index >= this.length) {\n throw \"Index is out of range.\";\n }\n return this._elements[index];\n }\n\n /**\n *\n * @param index\n * @returns The replaced item is used to reset its index.\n */\n deleteByIndex(index: number): T {\n var elements: T[] = this._elements;\n let end: T = null;\n const lastIndex = this.length - 1;\n if (index !== lastIndex) {\n end = elements[lastIndex];\n elements[index] = end;\n }\n this.length--;\n return end;\n }\n\n garbageCollection(): void {\n this._elements.length = this.length;\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\n\n/**\n * Structure used to get information back from a raycast or a sweep.\n * @internal\n */\nexport class LiteHitResult {\n /** The collider that was hit. */\n shapeID: number = -1;\n /** The distance from the origin to the hit point. */\n distance: number = 0;\n /** The hit point of the collider that was hit in world space. */\n point: Vector3 = new Vector3();\n /** The hit normal of the collider that was hit in world space. */\n normal: Vector3 = new Vector3();\n}\n","import { BoundingBox, Ray, Vector3 } from \"@galacean/engine\";\nimport { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LitePhysicsMaterial } from \"../LitePhysicsMaterial\";\nimport { LiteColliderShape } from \"./LiteColliderShape\";\n\n/**\n * Box collider shape in Lite.\n */\nexport class LiteBoxColliderShape extends LiteColliderShape implements IBoxColliderShape {\n private static _tempBox: BoundingBox = new BoundingBox();\n private _halfSize: Vector3 = new Vector3();\n private _sizeScale: Vector3 = new Vector3(1, 1, 1);\n\n /** @internal */\n _boxMin: Vector3 = new Vector3(-0.5, -0.5, -0.5);\n /** @internal */\n _boxMax: Vector3 = new Vector3(0.5, 0.5, 0.5);\n\n /**\n * Init Box Shape.\n * @param uniqueID - UniqueID mark Shape.\n * @param size - Size of Shape.\n * @param material - Material of PhysXCollider.\n */\n constructor(uniqueID: number, size: Vector3, material: LitePhysicsMaterial) {\n super();\n this._id = uniqueID;\n this._halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n override setPosition(position: Vector3): void {\n super.setPosition(position);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n this._halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, hit: LiteHitResult): boolean {\n const localRay = this._getLocalRay(ray);\n const sizeScale = this._sizeScale;\n const halfSize = this._halfSize;\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(-halfSize.x * sizeScale.x, -halfSize.y * sizeScale.y, -halfSize.z * sizeScale.z);\n boundingBox.max.set(halfSize.x * sizeScale.x, halfSize.y * sizeScale.y, halfSize.z * sizeScale.z);\n const rayDistance = localRay.intersectBox(boundingBox);\n if (rayDistance !== -1) {\n this._updateHitResult(localRay, rayDistance, hit, ray.origin);\n return true;\n } else {\n return false;\n }\n }\n\n private _setBondingBox(): void {\n const { position } = this._transform;\n const scale = this._sizeScale;\n const halfSize = this._halfSize;\n\n this._boxMin.set(\n -halfSize.x * scale.x + position.x,\n -halfSize.y * scale.y + position.y,\n -halfSize.z * scale.z + position.z\n );\n this._boxMax.set(\n halfSize.x * scale.x + position.x,\n halfSize.y * scale.y + position.y,\n halfSize.z * scale.z + position.z\n );\n }\n}\n","import { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { LiteColliderShape } from \"./LiteColliderShape\";\nimport { BoundingSphere, Quaternion, Ray, Vector3 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LitePhysicsMaterial } from \"../LitePhysicsMaterial\";\n\n/**\n * Sphere collider shape in Lite.\n */\nexport class LiteSphereColliderShape extends LiteColliderShape implements ISphereColliderShape {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n\n private _radius: number = 1;\n private _maxScale: number = 1;\n\n get worldRadius(): number {\n return this._radius * this._maxScale;\n }\n\n /**\n * Init sphere shape.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Size of SphereCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, material: LitePhysicsMaterial) {\n super();\n this._radius = radius;\n this._id = uniqueID;\n }\n\n /**\n * {@inheritDoc ISphereColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, hit: LiteHitResult): boolean {\n const boundingSphere = LiteSphereColliderShape._tempSphere;\n Vector3.transformCoordinate(this._transform.position, this._collider._transform.worldMatrix, boundingSphere.center);\n boundingSphere.radius = this.worldRadius;\n\n const rayDistance = ray.intersectSphere(boundingSphere);\n if (rayDistance !== -1) {\n this._updateHitResult(ray, rayDistance, hit, ray.origin, true);\n return true;\n } else {\n return false;\n }\n }\n}\n","import { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\nimport { ICharacterController, IPhysicsScene } from \"@galacean/engine-design\";\nimport { DisorderedArray } from \"./DisorderedArray\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class LitePhysicsScene implements IPhysicsScene {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n private static _tempBox: BoundingBox = new BoundingBox();\n private static _currentHit: LiteHitResult = new LiteHitResult();\n private static _hitResult: LiteHitResult = new LiteHitResult();\n\n private readonly _onContactEnter?: (obj1: number, obj2: number) => void;\n private readonly _onContactExit?: (obj1: number, obj2: number) => void;\n private readonly _onContactStay?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerExit?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerStay?: (obj1: number, obj2: number) => void;\n\n private _colliders: LiteCollider[] = [];\n private _sphere: BoundingSphere = new BoundingSphere();\n private _box: BoundingBox = new BoundingBox();\n\n private _currentEvents: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n private _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._onContactEnter = onContactEnter;\n this._onContactExit = onContactExit;\n this._onContactStay = onContactStay;\n this._onTriggerEnter = onTriggerEnter;\n this._onTriggerExit = onTriggerExit;\n this._onTriggerStay = onTriggerStay;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.setGravity }\n */\n setGravity(value: Vector3): void {\n console.log(\"Physics-lite don't support gravity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addColliderShape }\n */\n addColliderShape(colliderShape: LiteColliderShape): void {\n this._eventMap[colliderShape._id] = {};\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeColliderShape }\n */\n removeColliderShape(colliderShape: LiteColliderShape): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents, _eventMap: eventMap } = this;\n const { _id: id } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n } else if (event.index2 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n // If the shape is big index, should clear from the small index shape subMap\n eventMap[event.index1][id] = undefined;\n }\n }\n delete eventMap[id];\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(actor: LiteCollider): void {\n this._colliders.push(actor);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCollider }\n */\n removeCollider(collider: LiteCollider): void {\n const index = this._colliders.indexOf(collider);\n if (index !== -1) {\n this._colliders.splice(index, 1);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsManager.update }\n */\n update(deltaTime: number): void {\n let colliders = this._colliders;\n for (let i = 0, len = colliders.length; i < len; i++) {\n this._collisionDetection(deltaTime, colliders[i]);\n }\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsManager.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const colliders = this._colliders;\n\n let hitResult: LiteHitResult;\n if (hit) {\n hitResult = LitePhysicsScene._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsScene._currentHit;\n for (let i = 0, len = colliders.length; i < len; i++) {\n const collider = colliders[i];\n\n if (collider._raycast(ray, onRaycast, curHit)) {\n isHit = true;\n if (curHit.distance < distance) {\n if (hitResult) {\n hitResult.normal.copyFrom(curHit.normal);\n hitResult.point.copyFrom(curHit.point);\n hitResult.distance = curHit.distance;\n hitResult.shapeID = curHit.shapeID;\n } else {\n return true;\n }\n distance = curHit.distance;\n }\n }\n }\n\n if (!isHit && hitResult) {\n hitResult.shapeID = -1;\n hitResult.distance = 0;\n hitResult.point.set(0, 0, 0);\n hitResult.normal.set(0, 0, 0);\n } else if (isHit && hitResult) {\n hit(hitResult.shapeID, hitResult.distance, hitResult.point, hitResult.normal);\n }\n return isHit;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCharacterController }\n */\n addCharacterController(characterController: ICharacterController): void {\n throw \"Physics-lite don't support addCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCharacterController }\n */\n removeCharacterController(characterController: ICharacterController): void {\n throw \"Physics-lite don't support removeCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * Calculate the bounding box in world space from boxCollider.\n * @param boxCollider - The boxCollider to calculate\n * @param out - The calculated boundingBox\n */\n private static _updateWorldBox(boxCollider: LiteBoxColliderShape, out: BoundingBox): void {\n const mat = boxCollider._transform.worldMatrix;\n out.min.copyFrom(boxCollider._boxMin);\n out.max.copyFrom(boxCollider._boxMax);\n BoundingBox.transform(out, mat, out);\n }\n\n /**\n * Get the sphere info of the given sphere collider in world space.\n * @param sphereCollider - The given sphere collider\n * @param out - The calculated boundingSphere\n */\n private static _upWorldSphere(sphereCollider: LiteSphereColliderShape, out: BoundingSphere): void {\n Vector3.transformCoordinate(sphereCollider._transform.position, sphereCollider._transform.worldMatrix, out.center);\n out.radius = sphereCollider.worldRadius;\n }\n\n private _getTrigger(index1: number, index2: number): TriggerEvent {\n let event: TriggerEvent;\n if (this._eventPool.length) {\n event = this._eventPool.pop();\n event.index1 = index1;\n event.index2 = index2;\n } else {\n event = new TriggerEvent(index1, index2);\n }\n this._eventMap[index1][index2] = event;\n return event;\n }\n\n private _collisionDetection(deltaTime: number, myCollider: LiteCollider): void {\n const colliders = this._colliders;\n\n const myColliderShapes = myCollider._shapes;\n for (let i = 0, len = myColliderShapes.length; i < len; i++) {\n const myShape = myColliderShapes[i];\n if (myShape instanceof LiteBoxColliderShape) {\n LitePhysicsScene._updateWorldBox(myShape, this._box);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const colliderShape = colliders[j]._shapes;\n for (let k = 0, len = colliderShape.length; k < len; k++) {\n const shape = colliderShape[k];\n const index1 = shape._id;\n const index2 = myShape._id;\n const event = index1 < index2 ? this._eventMap[index1][index2] : this._eventMap[index2][index1];\n if (event !== undefined && !event.alreadyInvoked) {\n continue;\n }\n if (shape != myShape && this._boxCollision(shape)) {\n if (event === undefined) {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n event.alreadyInvoked = false;\n this._currentEvents.add(event);\n } else if (event.state === TriggerEventState.Enter) {\n event.state = TriggerEventState.Stay;\n event.alreadyInvoked = false;\n } else if (event.state === TriggerEventState.Stay) {\n event.alreadyInvoked = false;\n }\n }\n }\n }\n } else if (myShape instanceof LiteSphereColliderShape) {\n LitePhysicsScene._upWorldSphere(myShape, this._sphere);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const colliderShape = colliders[j]._shapes;\n for (let k = 0, len = colliderShape.length; k < len; k++) {\n const shape = colliderShape[k];\n const index1 = shape._id;\n const index2 = myShape._id;\n const event = index1 < index2 ? this._eventMap[index1][index2] : this._eventMap[index2][index1];\n if (event !== undefined && !event.alreadyInvoked) {\n continue;\n }\n if (shape != myShape && this._sphereCollision(shape)) {\n if (event === undefined) {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n event.alreadyInvoked = false;\n this._currentEvents.add(event);\n } else if (event.state === TriggerEventState.Enter) {\n event.state = TriggerEventState.Stay;\n event.alreadyInvoked = false;\n } else if (event.state === TriggerEventState.Stay) {\n event.alreadyInvoked = false;\n }\n }\n }\n }\n }\n }\n }\n\n private _fireEvent(): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (!event.alreadyInvoked) {\n if (event.state == TriggerEventState.Enter) {\n this._onTriggerEnter(event.index1, event.index2);\n event.alreadyInvoked = true;\n } else if (event.state == TriggerEventState.Stay) {\n this._onTriggerStay(event.index1, event.index2);\n event.alreadyInvoked = true;\n }\n } else {\n event.state = TriggerEventState.Exit;\n this._eventMap[event.index1][event.index2] = undefined;\n\n this._onTriggerExit(event.index1, event.index2);\n\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n }\n\n private _boxCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndBox(sphere, this._box);\n }\n return false;\n }\n\n private _sphereCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndSphere(sphere, this._sphere);\n }\n return false;\n }\n}\n\n/**\n * Physics state\n */\nenum TriggerEventState {\n Enter,\n Stay,\n Exit\n}\n\n/**\n * Trigger event to store interactive object ids and state.\n */\nclass TriggerEvent {\n state: TriggerEventState;\n index1: number;\n index2: number;\n alreadyInvoked: boolean = false;\n\n constructor(index1: number, index2: number) {\n this.index1 = index1;\n this.index2 = index2;\n }\n}\n","import { IStaticCollider } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A static collider component that will not move.\n * @remarks Mostly used for object which always stays at the same place and never moves around.\n */\nexport class LiteStaticCollider extends LiteCollider implements IStaticCollider {\n /**\n * Initialize static actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n}\n","import { Quaternion, Vector3 } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LitePhysicsScene } from \"./LitePhysicsScene\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\n\nexport class LitePhysics implements IPhysics {\n /**\n * {@inheritDoc IPhysics.initialize }\n */\n initialize(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n createPhysicsManager(): IPhysicsManager {\n return null;\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsScene }\n */\n createPhysicsScene(\n physicsManager: LitePhysicsManager,\n onContactBegin?: (obj1: number, obj2: number) => void,\n onContactEnd?: (obj1: number, obj2: number) => void,\n onContactPersist?: (obj1: number, obj2: number) => void,\n onTriggerBegin?: (obj1: number, obj2: number) => void,\n onTriggerEnd?: (obj1: number, obj2: number) => void,\n onTriggerPersist?: (obj1: number, obj2: number) => void\n ): LitePhysicsScene {\n return new LitePhysicsScene(\n onContactBegin,\n onContactEnd,\n onContactPersist,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerPersist\n );\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new LiteStaticCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new LiteDynamicCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n createCharacterController(): ICharacterController {\n throw \"Physics-lite don't support createCharacterController. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsMaterial }\n */\n createPhysicsMaterial(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ): IPhysicsMaterial {\n return new LitePhysicsMaterial(staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n createBoxColliderShape(uniqueID: number, size: Vector3, material: LitePhysicsMaterial): IBoxColliderShape {\n return new LiteBoxColliderShape(uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n createSphereColliderShape(uniqueID: number, radius: number, material: LitePhysicsMaterial): ISphereColliderShape {\n return new LiteSphereColliderShape(uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n createPlaneColliderShape(uniqueID: number, material: LitePhysicsMaterial): IPlaneColliderShape {\n throw \"Physics-lite don't support PlaneColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: LitePhysicsMaterial\n ): ICapsuleColliderShape {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n createFixedJoint(collider: LiteCollider): IFixedJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n createHingeJoint(collider: LiteCollider): IHingeJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n createSpringJoint(collider: LiteCollider): ISpringJoint {\n throw \"Physics-lite don't support CapsuleColliderShape. Use Physics-PhysX instead!\";\n }\n}\n","export { LitePhysics } from \"./LitePhysics\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean PhysicsLite version: ${version}`);\n"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_position","Vector3","_worldScale","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","copyFrom","_setLocalPose","setWorldScale","scale","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","transformCoordinate","worldMatrix","distance","point","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","shapePosition","multiply","Ray","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","x","y","z","set","setRotationQuaternion","w","rotationQuaternion","setScale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","_tempQuat0","localMatrix","affineTransformation","decompose","_tempMat42","TransformFlag","LocalEuler","LocalQuat","WorldPosition","WorldEuler","WorldQuat","WorldScale","LocalMatrix","WorldMatrix","WmWp","WmWeWq","WmWpWeWq","WmWs","WmWpWs","WmWpWeWqWs","addShape","shape","oldCollider","removeShape","index","indexOf","splice","setWorldTransform","getWorldTransform","outPosition","outRotation","_raycast","onRaycast","hit","Number","MAX_VALUE","LiteDynamicCollider","addForce","force","addTorque","torque","move","positionOrRotation","sleep","setAngularDamping","setAngularVelocity","setCenterOfMass","setCollisionDetectionMode","setConstraints","flags","setInertiaTensor","setIsKinematic","setLinearDamping","setLinearVelocity","setMass","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","wakeUp","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_sizeScale","_boxMin","_boxMax","_setBondingBox","Math","abs","setSize","localRay","sizeScale","halfSize","boundingBox","_tempBox","min","max","intersectBox","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","boundingSphere","_tempSphere","center","worldRadius","intersectSphere","BoundingSphere","LitePhysicsScene","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","eventMap","event","index1","index2","undefined","addCollider","actor","removeCollider","collider","update","deltaTime","colliders","len","_collisionDetection","_fireEvent","raycast","hitResult","_hitResult","isHit","curHit","_currentHit","addCharacterController","characterController","removeCharacterController","_getTrigger","pop","TriggerEvent","myCollider","myColliderShapes","myShape","_updateWorldBox","j","k","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","createPhysicsScene","physicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint","version"],"mappings":"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"}
|