@galacean/engine-physics-lite 1.0.0-beta.11 → 1.0.0-beta.12

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/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/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/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsManager.ts","../src/LitePhysicsMaterial.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.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 { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { Matrix, Ray, Vector3 } from \"@galacean/engine\";\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 _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 this._transform.setPosition(position.x, position.y, position.z);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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","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","/**\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 _scale: 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 setWorldScale(scale: Vector3): void {\n this._transform.position = this._transform.position.multiply(scale);\n this._scale.copyFrom(scale);\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\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(\n -this._halfSize.x * this._scale.x,\n -this._halfSize.y * this._scale.y,\n -this._halfSize.z * this._scale.z\n );\n boundingBox.max.set(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\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: center } = this._transform;\n const halfSize = this._halfSize;\n\n Vector3.add(center, halfSize, this._boxMax);\n Vector3.subtract(center, halfSize, this._boxMin);\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 setWorldScale(scale: Vector3): void {\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\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 { ICharacterController, IPhysicsManager } from \"@galacean/engine-design\";\nimport { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\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 LitePhysicsManager implements IPhysicsManager {\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 } = this;\n const { _id: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\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 = LitePhysicsManager._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsManager._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 LitePhysicsManager._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 LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 { 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","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 {\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 { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\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(\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 ): IPhysicsManager {\n return new LitePhysicsManager(\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"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","x","y","z","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","Vector3","transformCoordinate","worldMatrix","distance","point","copyFrom","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","Ray","_position","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","set","setRotationQuaternion","w","rotationQuaternion","setScale","scale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","multiply","_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","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_boxMin","_boxMax","_setBondingBox","setWorldScale","setSize","localRay","boundingBox","_tempBox","min","max","intersectBox","center","halfSize","subtract","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","Math","boundingSphere","_tempSphere","worldRadius","intersectSphere","BoundingSphere","LitePhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","event","index1","index2","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","undefined","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/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/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsManager.ts","../src/LitePhysicsMaterial.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.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 { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { Matrix, Ray, Vector3 } from \"@galacean/engine\";\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 _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 this._transform.setPosition(position.x, position.y, position.z);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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","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","/**\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 _scale: 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 setWorldScale(scale: Vector3): void {\n this._transform.position = this._transform.position.multiply(scale);\n this._scale.copyFrom(scale);\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\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(\n -this._halfSize.x * this._scale.x,\n -this._halfSize.y * this._scale.y,\n -this._halfSize.z * this._scale.z\n );\n boundingBox.max.set(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\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: center } = this._transform;\n const halfSize = this._halfSize;\n\n Vector3.add(center, halfSize, this._boxMax);\n Vector3.subtract(center, halfSize, this._boxMin);\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 setWorldScale(scale: Vector3): void {\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\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 { ICharacterController, IPhysicsManager } from \"@galacean/engine-design\";\nimport { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\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 LitePhysicsManager implements IPhysicsManager {\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 } = this;\n const { _id: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\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 = LitePhysicsManager._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsManager._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 LitePhysicsManager._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 LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 { 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","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 {\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 { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\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(\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 ): IPhysicsManager {\n return new LitePhysicsManager(\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"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","x","y","z","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","Vector3","transformCoordinate","worldMatrix","distance","point","copyFrom","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","Ray","_position","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","set","setRotationQuaternion","w","rotationQuaternion","setScale","scale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","multiply","_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","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_boxMin","_boxMax","_setBondingBox","setWorldScale","setSize","localRay","boundingBox","_tempBox","min","max","intersectBox","center","halfSize","subtract","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","Math","boundingSphere","_tempSphere","worldRadius","intersectSphere","BoundingSphere","LitePhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","event","index1","index2","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","undefined","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint"],"mappings":"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"}
@@ -842,6 +842,13 @@ __decorate$1([
842
842
  TextureFormat[TextureFormat[/** 16-bit depth + 8-bit stencil format. */ "Depth24Stencil8"] = 30] = "Depth24Stencil8";
843
843
  TextureFormat[TextureFormat[/** 32-bit depth + 8-bit stencil format. */ "Depth32Stencil8"] = 31] = "Depth32Stencil8";
844
844
  })(exports.TextureFormat || (exports.TextureFormat = {}));
845
+ /**
846
+ * Texture usage.
847
+ */ exports.TextureUsage = void 0;
848
+ (function(TextureUsage) {
849
+ TextureUsage[TextureUsage[/** The content of the texture is intended to be specified once. */ "Static"] = 0] = "Static";
850
+ TextureUsage[TextureUsage[/** The content of the texture is intended to be updated frequently, with better performance. */ "Dynamic"] = 1] = "Dynamic";
851
+ })(exports.TextureUsage || (exports.TextureUsage = {}));
845
852
  /**
846
853
  * Wrapping mode of the texture.
847
854
  */ exports.TextureWrapMode = void 0;
@@ -979,6 +986,14 @@ var Logger = {
979
986
  return this._height;
980
987
  }
981
988
  },
989
+ {
990
+ key: "usage",
991
+ get: /**
992
+ * The usage of the texture.
993
+ */ function get() {
994
+ return this._usage;
995
+ }
996
+ },
982
997
  {
983
998
  key: "wrapModeU",
984
999
  get: /**
@@ -1219,14 +1234,16 @@ var Logger = {
1219
1234
  /**
1220
1235
  * Two-dimensional texture.
1221
1236
  */ var Texture2D = /*#__PURE__*/ function(Texture) {
1222
- var Texture2D = function Texture2D(engine, width, height, format, mipmap) {
1237
+ var Texture2D = function Texture2D(engine, width, height, format, mipmap, usage) {
1223
1238
  if (format === void 0) format = exports.TextureFormat.R8G8B8A8;
1224
1239
  if (mipmap === void 0) mipmap = true;
1240
+ if (usage === void 0) usage = exports.TextureUsage.Static;
1225
1241
  var _this;
1226
1242
  _this = Texture.call(this, engine) || this;
1227
1243
  _this._mipmap = mipmap;
1228
1244
  _this._width = width;
1229
1245
  _this._height = height;
1246
+ _this._usage = usage;
1230
1247
  _this._format = format;
1231
1248
  _this._mipmapCount = _this._getMipmapCount();
1232
1249
  _this._isDepthTexture = format == exports.TextureFormat.Depth || format == exports.TextureFormat.DepthStencil || format == exports.TextureFormat.Depth16 || format == exports.TextureFormat.Depth24 || format == exports.TextureFormat.Depth32 || format == exports.TextureFormat.Depth24Stencil8 || format == exports.TextureFormat.Depth32Stencil8;
@@ -36716,9 +36733,9 @@ var GLBuffer = /*#__PURE__*/ function() {
36716
36733
  var isWebGL2 = this._isWebGL2;
36717
36734
  var _this__formatDetail = this._formatDetail, internalFormat = _this__formatDetail.internalFormat, baseFormat = _this__formatDetail.baseFormat, dataType = _this__formatDetail.dataType;
36718
36735
  // @ts-ignore
36719
- var _this__texture = this._texture, mipmapCount = _this__texture.mipmapCount, width = _this__texture.width, height = _this__texture.height, _isDepthTexture = _this__texture._isDepthTexture;
36736
+ var _this__texture = this._texture, mipmapCount = _this__texture.mipmapCount, width = _this__texture.width, height = _this__texture.height, usage = _this__texture.usage, _isDepthTexture = _this__texture._isDepthTexture;
36720
36737
  this._bind();
36721
- if (isWebGL2 && !(baseFormat === gl.LUMINANCE_ALPHA || baseFormat === gl.ALPHA)) {
36738
+ if (isWebGL2 && !(baseFormat === gl.LUMINANCE_ALPHA || baseFormat === gl.ALPHA) && usage !== miniprogram$1$1.TextureUsage.Dynamic) {
36722
36739
  gl.texStorage2D(this._target, mipmapCount, internalFormat, width, height);
36723
36740
  } else {
36724
36741
  if (!isCube) {
@@ -37510,11 +37527,15 @@ var GLBuffer = /*#__PURE__*/ function() {
37510
37527
  * {@inheritDoc IPlatformTexture2D.setImageSource}
37511
37528
  */ _proto.setImageSource = function setImageSource(imageSource, mipLevel, flipY, premultiplyAlpha, x, y) {
37512
37529
  var gl = this._gl;
37513
- var _this__formatDetail = this._formatDetail, baseFormat = _this__formatDetail.baseFormat, dataType = _this__formatDetail.dataType;
37530
+ var _this__formatDetail = this._formatDetail, internalFormat = _this__formatDetail.internalFormat, baseFormat = _this__formatDetail.baseFormat, dataType = _this__formatDetail.dataType;
37514
37531
  this._bind();
37515
37532
  gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, +flipY);
37516
37533
  gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, +premultiplyAlpha);
37517
- gl.texSubImage2D(this._target, mipLevel, x || 0, y || 0, baseFormat, dataType, imageSource);
37534
+ if (this._texture.usage === miniprogram$1$1.TextureUsage.Dynamic) {
37535
+ gl.texImage2D(this._target, mipLevel, internalFormat, baseFormat, dataType, imageSource);
37536
+ } else {
37537
+ gl.texSubImage2D(this._target, mipLevel, x || 0, y || 0, baseFormat, dataType, imageSource);
37538
+ }
37518
37539
  };
37519
37540
  /**
37520
37541
  * {@inheritDoc IPlatformTexture2D.getPixelBuffer }
@@ -38019,7 +38040,7 @@ function _interopNamespace(e) {
38019
38040
  }
38020
38041
  var CoreObjects__namespace = /*#__PURE__*/ _interopNamespace(CoreObjects);
38021
38042
  //@ts-ignore
38022
- var version = "1.0.0-beta.11";
38043
+ var version = "1.0.0-beta.12";
38023
38044
  console.log("Galacean engine version: " + version);
38024
38045
  for(var key in CoreObjects__namespace){
38025
38046
  CoreObjects.Loader.registerClass(key, CoreObjects__namespace[key]);
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/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/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsManager.ts","../src/LitePhysicsMaterial.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.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 { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { Matrix, Ray, Vector3 } from \"@galacean/engine\";\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 _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 this._transform.setPosition(position.x, position.y, position.z);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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","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","/**\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 _scale: 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 setWorldScale(scale: Vector3): void {\n this._transform.position = this._transform.position.multiply(scale);\n this._scale.copyFrom(scale);\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\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(\n -this._halfSize.x * this._scale.x,\n -this._halfSize.y * this._scale.y,\n -this._halfSize.z * this._scale.z\n );\n boundingBox.max.set(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\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: center } = this._transform;\n const halfSize = this._halfSize;\n\n Vector3.add(center, halfSize, this._boxMax);\n Vector3.subtract(center, halfSize, this._boxMin);\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 setWorldScale(scale: Vector3): void {\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\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 { ICharacterController, IPhysicsManager } from \"@galacean/engine-design\";\nimport { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\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 LitePhysicsManager implements IPhysicsManager {\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 } = this;\n const { _id: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\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 = LitePhysicsManager._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsManager._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 LitePhysicsManager._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 LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 { 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","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 {\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 { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\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(\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 ): IPhysicsManager {\n return new LitePhysicsManager(\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"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","x","y","z","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","Vector3","transformCoordinate","worldMatrix","distance","point","copyFrom","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","Ray","_position","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","set","setRotationQuaternion","w","rotationQuaternion","setScale","scale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","multiply","_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","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_boxMin","_boxMax","_setBondingBox","setWorldScale","setSize","localRay","boundingBox","_tempBox","min","max","intersectBox","center","halfSize","subtract","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","Math","boundingSphere","_tempSphere","worldRadius","intersectSphere","BoundingSphere","LitePhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","event","index1","index2","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","undefined","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint"],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.0/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/DisorderedArray.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsManager.ts","../src/LitePhysicsMaterial.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.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 { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { Matrix, Ray, Vector3 } from \"@galacean/engine\";\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 _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 this._transform.setPosition(position.x, position.y, position.z);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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","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","/**\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 _scale: 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 setWorldScale(scale: Vector3): void {\n this._transform.position = this._transform.position.multiply(scale);\n this._scale.copyFrom(scale);\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\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(\n -this._halfSize.x * this._scale.x,\n -this._halfSize.y * this._scale.y,\n -this._halfSize.z * this._scale.z\n );\n boundingBox.max.set(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\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: center } = this._transform;\n const halfSize = this._halfSize;\n\n Vector3.add(center, halfSize, this._boxMax);\n Vector3.subtract(center, halfSize, this._boxMin);\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 setWorldScale(scale: Vector3): void {\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\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 { ICharacterController, IPhysicsManager } from \"@galacean/engine-design\";\nimport { BoundingBox, BoundingSphere, CollisionUtil, Ray, Vector3 } from \"@galacean/engine\";\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 LitePhysicsManager implements IPhysicsManager {\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 } = this;\n const { _id: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\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 = LitePhysicsManager._hitResult;\n }\n\n let isHit = false;\n const curHit = LitePhysicsManager._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 LitePhysicsManager._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 LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 = LitePhysicsManager._tempBox;\n LitePhysicsManager._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsManager._tempSphere;\n LitePhysicsManager._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 { 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","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 {\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 { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\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(\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 ): IPhysicsManager {\n return new LitePhysicsManager(\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"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_transform","LiteTransform","_invModelMatrix","Matrix","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","console","log","setPosition","position","x","y","z","setContactOffset","offset","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","Vector3","transformCoordinate","worldMatrix","distance","point","copyFrom","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","Ray","_position","_rotation","_rotationQuaternion","Quaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","set","setRotationQuaternion","w","rotationQuaternion","setScale","scale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","rotationEuler","MathUtil","degreeToRadian","worldRotationQuaternion","multiply","_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","DisorderedArray","count","_elements","Array","add","element","delete","deleteByIndex","get","elements","end","lastIndex","garbageCollection","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_boxMin","_boxMax","_setBondingBox","setWorldScale","setSize","localRay","boundingBox","_tempBox","min","max","intersectBox","center","halfSize","subtract","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","Math","boundingSphere","_tempSphere","worldRadius","intersectSphere","BoundingSphere","LitePhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_colliders","_sphere","_box","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","event","index1","index2","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","undefined","alreadyInvoked","_boxCollision","state","Enter","Stay","_upWorldSphere","_sphereCollision","Exit","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","boxCollider","out","mat","transform","sphereCollider","TriggerEventState","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","LiteStaticCollider","LitePhysics","initialize","Promise","resolve","createPhysicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","height","createFixedJoint","createHingeJoint","createSpringJoint"],"mappings":";;AAAO,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;AACxC,IAAI,iBAAiB,GAAG,MAAM,CAAC,cAAc,IAAI,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;AAC/E,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;AACxB;AACA,QAAQ,OAAO,CAAC,CAAC;AACjB,KAAK,CAAC;AACN;AACA,IAAI,OAAO,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC;;ACNO,SAAS,SAAS,CAAC,QAAQ,EAAE,UAAU,EAAE;AAChD,IAAI,IAAI,OAAO,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,IAAI,EAAE;AACjE,QAAQ,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;AAClF,KAAK;AACL;AACA,IAAI,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACrJ;AACA,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5D;;ACVA,SAAS,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE;AAC1C,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAQ,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAClC,QAAQ,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,IAAI,KAAK,CAAC;AAC/D,QAAQ,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;AACvC;AACA,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC9D;AACA,QAAQ,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AAClE,KAAK;AACL,CAAC;AACM,SAAS,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE;AACpE,IAAI,IAAI,UAAU,EAAE,iBAAiB,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACzE,IAAI,IAAI,WAAW,EAAE,iBAAiB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AACjE;AACA,IAAI,OAAO,WAAW,CAAC;AACvB;;AChBO,SAAS,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE;AACzC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AACrF,QAAQ,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC;AACjD,KAAK,MAAM,OAAO,IAAI,YAAY,KAAK,CAAC;AACxC;;ACFA;;IAGO,IAAMA,cAAN,iBAAA,WAAA;aAAMA,cAISC,CAAAA,MAAAA,EAAAA;AAAAA,QAAAA,IAAAA,MAAAA,KAAAA,KAAAA,CAAAA,EAAAA,SAA2B,EAAE,CAAA;AAA7BA,QAAAA,IAAAA,CAAAA,MAAAA,GAAAA,MAAAA,CAAAA;0BAFpBC,OAAO,IAAI,CAAA;AAGT,QAAA,IAAI,CAACD,MAAM,CAACE,IAAI,CAAC,IAAI,CAAA,CAAA;;AALZH,IAAAA,IAAAA,MAAAA,GAAAA,cAAAA,CAAAA,SAAAA,CAAAA;AAQX;;AAEC,MACDI,MAAAA,CAAAA,OAGC,GAHDA,SAAAA,OAAgB,GAAA;AACdC,QAAAA,KAAAA,CAAMC,eAAe,CAAC,IAAI,CAACL,MAAM,EAAE,IAAI,CAAA,CAAA;QACvC,IAAI,CAACA,MAAM,GAAG,IAAI,CAAA;AACpB,KAAA,CAAA;AAdWD,IAAAA,OAAAA,cAAAA,CAAAA;AAeZ,CAAA,EAAA;;AClBD;;IAGO,IAAMO,qBAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,qBAAAA,GAAAA;AACHC,QAAAA,IAAAA,CAAAA,YAAAA,GAAiC,EAAE,CAAA;;AADhCD,IAAAA,IAAAA,MAAAA,GAAAA,qBAAAA,CAAAA,SAAAA,CAAAA;IAGXE,MAAAA,CAAAA,QAEC,GAFDA,SAAAA,QAA2B,GAAA;AACzB,QAAA,OAAO,IAAIT,cAAAA,CAAe,IAAI,CAACQ,YAAY,CAAA,CAAA;AAC7C,KAAA,CAAA;IAEAE,MAAAA,CAAAA,UAKC,GALDA,SAAAA,UAAmB,GAAA;QACjB,IAAMC,WAAAA,GAAc,IAAI,CAACH,YAAY,CAAA;QACrC,IAAK,IAAII,IAAID,WAAYE,CAAAA,MAAM,GAAG,CAAGD,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;AAChDD,YAAAA,WAAW,CAACC,CAAAA,CAAE,CAACV,IAAI,GAAG,IAAI,CAAA;AAC5B,SAAA;AACF,KAAA,CAAA;AAZWK,IAAAA,OAAAA,qBAAAA,CAAAA;AAaZ,CAAA,EAAA;;ACXD;;IAGO,IAAeO,iBAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,iBAAAA,GAAAA;yBAQN,IAAA,CACdC,aAA4B,IAAIC,aAAAA,EAAAA,CAAAA;yBAClB,IAAA,CACdC,kBAA0B,IAAIC,MAAAA,EAAAA,CAAAA;AAK5B,QAAA,IAAI,CAACH,UAAU,CAACI,KAAK,GAAG,IAAI,CAAA;AAC5B,QAAA,IAAI,CAACC,oBAAoB,GAAG,IAAI,CAACL,UAAU,CAACM,uBAAuB,EAAA,CAAA;;AAjBjDP,IAAAA,IAAAA,MAAAA,GAAAA,iBAAAA,CAAAA,SAAAA,CAAAA;AAoBpB;;AAEC,MACDQ,OAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYC,QAAiB,EAAQ;AACnCC,QAAAA,OAAAA,CAAQC,GAAG,CAAC,oEAAA,CAAA,CAAA;AACd,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYC,QAAiB,EAAQ;AACnC,QAAA,IAAI,CAACZ,UAAU,CAACW,WAAW,CAACC,QAAAA,CAASC,CAAC,EAAED,QAASE,CAAAA,CAAC,EAAEF,QAAAA,CAASG,CAAC,CAAA,CAAA;AAChE,KAAA,CAAA;AAOA;;AAEC,MACDC,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiBC,MAAc,EAAQ;AACrCR,QAAAA,OAAAA,CAAQC,GAAG,CAAC,yEAAA,CAAA,CAAA;AACd,KAAA,CAAA;AAEA;;AAEC,MACDQ,OAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYC,QAA0B,EAAQ;AAC5CV,QAAAA,OAAAA,CAAQC,GAAG,CAAC,oEAAA,CAAA,CAAA;AACd,KAAA,CAAA;AAEA;;AAEC,MACDU,OAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYC,EAAU,EAAQ;QAC5B,IAAI,CAACC,GAAG,GAAGD,EAAAA,CAAAA;AACb,KAAA,CAAA;AAEA;;AAEC,MACDE,OAAAA,YAEC,GAFDA,SAAAA,YAAAA,CAAaC,KAAc,EAAQ;AACjCf,QAAAA,OAAAA,CAAQC,GAAG,CAAC,qEAAA,CAAA,CAAA;AACd,KAAA,CAAA;AAEA;;AAEC,MACDrB,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,UAAgB,EAAC,CAAA;AAOjB,IAAA,MAAA,CAAUoC,gBAoBT,GApBD,SAAUA,gBAAAA,CACRC,GAAQ,EACRC,WAAmB,EACnBC,MAAqB,EACrBC,MAAe,EACfC,UAA2B,EACrB;QADNA,IAAAA,UAAAA,KAAAA,KAAAA,CAAAA,EAAAA,aAAsB,KAAK,CAAA;QAE3B,IAAMC,QAAAA,GAAWhC,iBApFCA,CAoFiBiC,UAAU,CAAA;QAC7CN,GAAIO,CAAAA,QAAQ,CAACN,WAAaI,EAAAA,QAAAA,CAAAA,CAAAA;AAC1B,QAAA,IAAI,CAACD,UAAY,EAAA;YACfI,OAAQC,CAAAA,mBAAmB,CAACJ,QAAU,EAAA,IAAI,CAAC/B,UAAU,CAACoC,WAAW,EAAEL,QAAAA,CAAAA,CAAAA;SACpE;AAED,QAAA,IAAMM,QAAWH,GAAAA,OAAAA,CAAQG,QAAQ,CAACR,MAAQE,EAAAA,QAAAA,CAAAA,CAAAA;QAE1C,IAAIM,QAAAA,GAAWT,MAAOS,CAAAA,QAAQ,EAAE;YAC9BT,MAAOU,CAAAA,KAAK,CAACC,QAAQ,CAACR,QAAAA,CAAAA,CAAAA;AACtBH,YAAAA,MAAAA,CAAOS,QAAQ,GAAGA,QAAAA,CAAAA;AAClBT,YAAAA,MAAAA,CAAOY,OAAO,GAAG,IAAI,CAAClB,GAAG,CAAA;SAC1B;AACH,KAAA,CAAA;AAEA,IAAA,MAAA,CAAUmB,YAST,GATD,SAAUA,YAAAA,CAAaf,GAAQ,EAAO;QACpC,IAAMgB,YAAAA,GAAe,IAAI,CAACC,kBAAkB,EAAA,CAAA;QAC5C,IAAMC,MAAAA,GAAS7C,iBArGGA,CAqGe8C,IAAI,CAAA;AAErCX,QAAAA,OAAAA,CAAQC,mBAAmB,CAACT,GAAAA,CAAIG,MAAM,EAAEa,YAAAA,EAAcE,OAAOf,MAAM,CAAA,CAAA;AACnEK,QAAAA,OAAAA,CAAQY,eAAe,CAACpB,GAAAA,CAAIqB,SAAS,EAAEL,YAAAA,EAAcE,OAAOG,SAAS,CAAA,CAAA;QACrEH,MAAOG,CAAAA,SAAS,CAACC,SAAS,EAAA,CAAA;QAE1B,OAAOJ,MAAAA,CAAAA;AACT,KAAA,CAAA;IAEA,MAAQD,CAAAA,kBAMP,GAND,SAAQA,kBAA6B,GAAA;AACnC,QAAA,IAAI,IAAI,CAACtC,oBAAoB,CAAClB,IAAI,EAAE;YAClCgB,MAAO8C,CAAAA,MAAM,CAAC,IAAI,CAACjD,UAAU,CAACoC,WAAW,EAAE,IAAI,CAAClC,eAAe,CAAA,CAAA;AAC/D,YAAA,IAAI,CAACG,oBAAoB,CAAClB,IAAI,GAAG,KAAK,CAAA;SACvC;QACD,OAAO,IAAI,CAACe,eAAe,CAAA;AAC7B,KAAA,CAAA;AApHoBH,IAAAA,OAAAA,iBAAAA,CAAAA;AAqHrB,CAAA,EAAA,CAAA;;AArHqBA,IAAAA,iBAAAA,CACL8C,OAAO,IAAIK,GAAAA,EAAAA,CAAAA;;;AADNnD,IAAAA,iBAAAA,CAELiC,aAAa,IAAIE,OAAAA,EAAAA,CAAAA;;;ACNlC;;AAEC,IACM,IAAA,aAAMjC,iBA0TV,WA1TI;AAAMA,IAAAA,SAAAA,aAAAA,GAAAA;AAIHkD,QAAAA,IAAAA,CAAAA,SAAAA,GAAqB,IAAIjB,OAAAA,EAAAA,CAAAA;AACzBkB,QAAAA,IAAAA,CAAAA,SAAAA,GAAqB,IAAIlB,OAAAA,EAAAA,CAAAA;AACzBmB,QAAAA,IAAAA,CAAAA,mBAAAA,GAAkC,IAAIC,UAAAA,EAAAA,CAAAA;aACtCC,MAAkB,GAAA,IAAIrB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AACpCsB,QAAAA,IAAAA,CAAAA,wBAAAA,GAAuC,IAAIF,UAAAA,EAAAA,CAAAA;AAC3CG,QAAAA,IAAAA,CAAAA,YAAAA,GAAuB,IAAItD,MAAAA,EAAAA,CAAAA;AAC3BuD,QAAAA,IAAAA,CAAAA,YAAAA,GAAuB,IAAIvD,MAAAA,EAAAA,CAAAA;AAC3BwD,QAAAA,IAAAA,CAAAA,kBAAAA,GAA4C,IAAInE,qBAAAA,EAAAA,CAAAA;AAChDoE,QAAAA,IAAAA,CAAAA,cAAAA,GAA0B,IAAI,CAAA;AAC9BC,QAAAA,IAAAA,CAAAA,qBAAAA,GAAuC,IAAI,CAAA;aAC3CC,UAoUK,GAAA,IAAA,CAAA;;AAlVF7D,IAAAA,IAAAA,MAAAA,GAAAA,aAAAA,CAAAA,SAAAA,CAAAA;AAsKX;;;;;MAMAU,MAAAA,CAAAA,WAGC,GAHDA,SAAAA,WAAAA,CAAYE,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAQ;AACjD,QAAA,IAAI,CAACoC,SAAS,CAACY,GAAG,CAAClD,GAAGC,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;AACzB,QAAA,IAAI,CAACH,QAAQ,GAAG,IAAI,CAACuC,SAAS,CAAA;AAChC,KAAA,CAAA;AAEA;;;;;;AAMC,MACDa,MAAAA,CAAAA,qBAGC,GAHDA,SAAAA,qBAAsBnD,CAAAA,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAEkD,CAAS,EAAQ;AACtE,QAAA,IAAI,CAACZ,mBAAmB,CAACU,GAAG,CAAClD,CAAAA,EAAGC,GAAGC,CAAGkD,EAAAA,CAAAA,CAAAA,CAAAA;AACtC,QAAA,IAAI,CAACC,kBAAkB,GAAG,IAAI,CAACb,mBAAmB,CAAA;AACpD,KAAA,CAAA;AAEA;;;;;MAMAc,MAAAA,CAAAA,QAGC,GAHDA,SAAAA,QAAAA,CAAStD,CAAS,EAAEC,CAAS,EAAEC,CAAS,EAAQ;AAC9C,QAAA,IAAI,CAACwC,MAAM,CAACQ,GAAG,CAAClD,GAAGC,CAAGC,EAAAA,CAAAA,CAAAA,CAAAA;AACtB,QAAA,IAAI,CAACqD,KAAK,GAAG,IAAI,CAACb,MAAM,CAAA;AAC1B,KAAA,CAAA;AAEA;;;AAGC,MACDjD,MAAAA,CAAAA,uBAEC,GAFDA,SAAAA,uBAA0C,GAAA;AACxC,QAAA,OAAO,IAAI,CAACqD,kBAAkB,CAACjE,QAAQ,EAAA,CAAA;AACzC,KAAA,CAAA;AAEA;;;;AAIC,MACD,MAAQ2E,CAAAA,wBAUP,GAVD,SAAQA,wBAAiC,GAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAACC,oBAAoB,CAkHzB,IAlH+C,CAAA,EAAA;YAClD,IAAI,CAACC,sBAAsB,CAiHxB,IAAA,CAAA,CAAA;AAhHH,YAAA,IAAI,WAAA,CAAA,IAAI,CAACC,MAAM,EAAYC,YAAc,CAAA,EAAA;AACvC,gBAAA,IAAMC,MAAS,GAAA,IAAI,CAACF,MAAM,CAACG,OAAO,CAAA;gBAClC,IAAK,IAAI9E,IAAY,CAAG+E,EAAAA,CAAAA,GAAYF,OAAO5E,MAAM,EAAED,CAAI+E,GAAAA,CAAAA,EAAG/E,CAAK,EAAA,CAAA;AAC7D6E,oBAAAA,MAAM,CAAC7E,CAAAA,CAAE,CAACG,UAAU,CAACqE,wBAAwB,EAAA,CAAA;AAC/C,iBAAA;aACD;SACF;AACH,KAAA,CAAA;AAEA;;;;;;AAMC,MACD,MAAQQ,CAAAA,wBAUP,GAVD,SAAQA,wBAA2B,GAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAACP,oBAAoB,CAiGvB,IAjG+C,CAAA,EAAA;YACpD,IAAI,CAACC,sBAAsB,CAgGtB,IAAA,CAAA,CAAA;AA/FL,YAAA,IAAI,WAAA,CAAA,IAAI,CAACC,MAAM,EAAYC,YAAc,CAAA,EAAA;AACvC,gBAAA,IAAMC,MAAS,GAAA,IAAI,CAACF,MAAM,CAACG,OAAO,CAAA;gBAClC,IAAK,IAAI9E,IAAY,CAAG+E,EAAAA,CAAAA,GAAYF,OAAO5E,MAAM,EAAED,CAAI+E,GAAAA,CAAAA,EAAG/E,CAAK,EAAA,CAAA;AAC7D6E,oBAAAA,MAAM,CAAC7E,CAAAA,CAAE,CAACG,UAAU,CAAC6E,wBAAwB,EAAA,CAAA;AAC/C,iBAAA;aACD;SACF;AACH,KAAA,CAAA;AAEA;;;;;AAKC,MACD,MAAQC,CAAAA,qBAUP,GAVD,SAAQA,qBAAwB,GAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAACR,oBAAoB,CAmFzB,IAnF+C,CAAA,EAAA;YAClD,IAAI,CAACC,sBAAsB,CAkFxB,IAAA,CAAA,CAAA;AAjFH,YAAA,IAAI,WAAA,CAAA,IAAI,CAACC,MAAM,EAAYC,YAAc,CAAA,EAAA;AACvC,gBAAA,IAAMC,MAAS,GAAA,IAAI,CAACF,MAAM,CAACG,OAAO,CAAA;gBAClC,IAAK,IAAI9E,IAAY,CAAG+E,EAAAA,CAAAA,GAAYF,OAAO5E,MAAM,EAAED,CAAI+E,GAAAA,CAAAA,EAAG/E,CAAK,EAAA,CAAA;AAC7D6E,oBAAAA,MAAM,CAAC7E,CAAAA,CAAE,CAACG,UAAU,CAAC8E,qBAAqB,EAAA,CAAA;AAC5C,iBAAA;aACD;SACF;AACH,KAAA,CAAA;AAEA;;AAEC,MACD,MAAQC,CAAAA,mBAUP,GAVD,SAAQA,mBAA4B,GAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAACT,oBAAoB,CAwEnB,IAxE+C,CAAA,EAAA;YACxD,IAAI,CAACC,sBAAsB,CAuElB,IAAA,CAAA,CAAA;AAtET,YAAA,IAAI,WAAA,CAAA,IAAI,CAACC,MAAM,EAAYC,YAAc,CAAA,EAAA;AACvC,gBAAA,IAAMC,MAAS,GAAA,IAAI,CAACF,MAAM,CAACG,OAAO,CAAA;gBAClC,IAAK,IAAI9E,IAAY,CAAG+E,EAAAA,CAAAA,GAAYF,OAAO5E,MAAM,EAAED,CAAI+E,GAAAA,CAAAA,EAAG/E,CAAK,EAAA,CAAA;AAC7D6E,oBAAAA,MAAM,CAAC7E,CAAAA,CAAE,CAACG,UAAU,CAAC+E,mBAAmB,EAAA,CAAA;AAC1C,iBAAA;aACD;SACF;AACH,KAAA,CAAA;IAEA,MAAQC,CAAAA,mBAaP,GAbD,SAAQA,mBAA4C,GAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAACpB,cAAc,EAAE;YACxB,OAAO,IAAI,CAACC,qBAAqB,CAAA;SAClC;AACD,QAAA,IAAIoB,cAA6B,IAAI,CAAA;AACrC,QAAA,IAAI,WAAA,CAAA,IAAI,CAACT,MAAM,EAAYzE,iBAAmB,CAAA,EAAA;AAC5C,YAAA,IAAImF,MAAS,GAAA,IAAI,CAACV,MAAM,CAACW,SAAS,CAAA;AAClCF,YAAAA,WAAAA,GAAcC,OAAOlF,UAAU,CAAA;SAChC;QAED,IAAI,CAAC6D,qBAAqB,GAAGoB,WAAAA,CAAAA;QAC7B,IAAI,CAACrB,cAAc,GAAG,KAAK,CAAA;QAC3B,OAAOqB,WAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQX,oBAEP,GAFD,SAAQA,oBAAAA,CAAqBc,gBAAwB,EAAW;AAC9D,QAAA,OAAO,CAAC,IAAI,CAACtB,UAAU,GAAGsB,gBAAe,MAAOA,gBAAAA,CAAAA;AAClD,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,mBAEP,GAFD,SAAQA,mBAAAA,CAAoBC,IAAY,EAAW;AACjD,QAAA,OAAO,CAAC,IAAI,CAACxB,UAAU,GAAGwB,IAAG,KAAM,CAAA,CAAA;AACrC,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQC,iBAEP,GAFD,SAAQA,iBAAAA,CAAkBD,IAAY,EAAE;QACtC,IAAI,CAACxB,UAAU,IAAIwB,IAAAA,CAAAA;AACrB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQE,kBAEP,GAFD,SAAQA,kBAAAA,CAAmBF,IAAY,EAAE;QACvC,IAAI,CAACxB,UAAU,IAAI,CAACwB,IAAAA,CAAAA;AACtB,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQf,sBAGP,GAHD,SAAQA,sBAAAA,CAAuBe,IAAY,EAAQ;QACjD,IAAI,CAACxB,UAAU,IAAIwB,IAAAA,CAAAA;QACnB,IAAI,CAAC3B,kBAAkB,CAAChE,UAAU,EAAA,CAAA;AACpC,KAAA,CAAA;AAvTWM,IAAAA,aAAAA,CAAAA,aAAAA,EAAAA;;YAkBPG,GAAAA,EAAAA,OAAAA;AAAJ,YAAA,GAAA,EAAA,SAAA,GAAA,CAAUoB,KAAuC,EAAE;gBACjD,IAAI,CAACgD,MAAM,GAAGhD,KAAAA,CAAAA;AAChB,aAAA;;;YAMIZ,GAAAA,EAAAA,UAAAA;;;;AADH,MACD,SAAwB,GAAA,GAAA;gBACtB,OAAO,IAAI,CAACuC,SAAS,CAAA;AACvB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAa3B,KAAc,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC2B,SAAS,KAAK3B,KAAO,EAAA;AAC5B,oBAAA,IAAI,CAAC2B,SAAS,CAACZ,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBACzB;gBACD,IAAI,CAAC+D,iBAAiB,CAkSV,IAAA,CAAA,CAAA;AAjSZ,gBAAA,IAAI,CAAClB,wBAAwB,EAAA,CAAA;AAC/B,aAAA;;;YAMIH,GAAAA,EAAAA,oBAAAA;;;;AADH,MACD,SAAqC,GAAA,GAAA;AACnC,gBAAA,IAAI,IAAI,CAACmB,mBAAmB,CAoRlB,GApR6C,CAAA,EAAA;AACrD/B,oBAAAA,UAAAA,CAAWmC,aAAa,CACtBC,QAASC,CAAAA,cAAc,CAAC,IAAI,CAACvC,SAAS,CAACvC,CAAC,CACxC6E,EAAAA,QAAAA,CAASC,cAAc,CAAC,IAAI,CAACvC,SAAS,CAACtC,CAAC,CACxC4E,EAAAA,QAAAA,CAASC,cAAc,CAAC,IAAI,CAACvC,SAAS,CAACrC,CAAC,CACxC,EAAA,IAAI,CAACsC,mBAAmB,CAAA,CAAA;oBAE1B,IAAI,CAACmC,kBAAkB,CA6Qf,GAAA,CAAA,CAAA;iBA5QT;gBACD,OAAO,IAAI,CAACnC,mBAAmB,CAAA;AACjC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAuB7B,KAAiB,EAAE;AACxC,gBAAA,IAAI,IAAI,CAAC6B,mBAAmB,KAAK7B,KAAO,EAAA;AACtC,oBAAA,IAAI,CAAC6B,mBAAmB,CAACd,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBACnC;AACD,gBAAA,IAAI,CAAC+D,iBAAiB,CAyQV,IAND,GAAA,GAAA,CAAA,CAAA;gBAlQX,IAAI,CAACC,kBAAkB,CAmQb,GAAA,CAAA,CAAA;AAlQV,gBAAA,IAAI,CAACX,wBAAwB,EAAA,CAAA;AAC/B,aAAA;;;YAMIe,GAAAA,EAAAA,yBAAAA;;;;AADH,MACD,SAA0C,GAAA,GAAA;AACxC,gBAAA,IAAI,IAAI,CAACP,mBAAmB,CA6PlB,IA7P6C,CAAA,EAAA;oBACrD,IAAMH,MAAAA,GAAS,IAAI,CAACF,mBAAmB,EAAA,CAAA;oBACvC,IAAIE,MAAAA,IAAU,IAAI,EAAE;wBAClB5B,UAAWuC,CAAAA,QAAQ,CAACX,MAAAA,CAAOU,uBAAuB,EAAE,IAAI,CAAC1B,kBAAkB,EAAE,IAAI,CAACV,wBAAwB,CAAA,CAAA;qBACrG,MAAA;AACL,wBAAA,IAAI,CAACA,wBAAwB,CAACjB,QAAQ,CAAC,IAAI,CAAC2B,kBAAkB,CAAA,CAAA;qBAC/D;oBACD,IAAI,CAACsB,kBAAkB,CAsPf,IAAA,CAAA,CAAA;iBArPT;gBACD,OAAO,IAAI,CAAChC,wBAAwB,CAAA;AACtC,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAA4BhC,KAAiB,EAAE;AAC7C,gBAAA,IAAI,IAAI,CAACgC,wBAAwB,KAAKhC,KAAO,EAAA;AAC3C,oBAAA,IAAI,CAACgC,wBAAwB,CAACjB,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBACxC;gBACD,IAAM0D,MAAAA,GAAS,IAAI,CAACF,mBAAmB,EAAA,CAAA;AACvC,gBAAA,IAAIE,MAAQ,EAAA;AACV5B,oBAAAA,UAAAA,CAAWL,MAAM,CAACiC,MAAAA,CAAOU,uBAAuB,EAvFzC3F,cAuFyD6F,UAAU,CAAA,CAAA;oBAC1ExC,UAAWuC,CAAAA,QAAQ,CAACrE,KAAOvB,EAxFpBA,cAwFkC6F,UAAU,EAAE,IAAI,CAACzC,mBAAmB,CAAA,CAAA;iBACxE,MAAA;AACL,oBAAA,IAAI,CAACA,mBAAmB,CAACd,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBACnC;AACD,gBAAA,IAAI,CAAC0C,kBAAkB,GAAG,IAAI,CAACb,mBAAmB,CAAA;gBAClD,IAAI,CAACmC,kBAAkB,CAqOb,IAAA,CAAA,CAAA;AApOZ,aAAA;;;YAMIpB,GAAAA,EAAAA,OAAAA;;;;AADH,MACD,SAAqB,GAAA,GAAA;gBACnB,OAAO,IAAI,CAACb,MAAM,CAAA;AACpB,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAU/B,KAAc,EAAE;AACxB,gBAAA,IAAI,IAAI,CAAC+B,MAAM,KAAK/B,KAAO,EAAA;AACzB,oBAAA,IAAI,CAAC+B,MAAM,CAAChB,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBACtB;gBACD,IAAI,CAAC+D,iBAAiB,CAwNV,IAAA,CAAA,CAAA;AAvNZ,gBAAA,IAAI,CAACT,qBAAqB,EAAA,CAAA;AAC5B,aAAA;;;YAMIiB,GAAAA,EAAAA,aAAAA;;;;AADH,MACD,SAA0B,GAAA,GAAA;AACxB,gBAAA,IAAI,IAAI,CAACV,mBAAmB,CA+MhB,IA/M6C,CAAA,EAAA;AACvDlF,oBAAAA,MAAAA,CAAO6F,oBAAoB,CAAC,IAAI,CAACzC,MAAM,EAAE,IAAI,CAACW,kBAAkB,EAAE,IAAI,CAACf,SAAS,EAAE,IAAI,CAACM,YAAY,CAAA,CAAA;oBACnG,IAAI,CAAC+B,kBAAkB,CA6Mb,IAAA,CAAA,CAAA;iBA5MX;gBACD,OAAO,IAAI,CAAC/B,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBjC,KAAa,EAAE;AAC7B,gBAAA,IAAI,IAAI,CAACiC,YAAY,KAAKjC,KAAO,EAAA;AAC/B,oBAAA,IAAI,CAACiC,YAAY,CAAClB,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBAC5B;AACD,gBAAA,IAAI,CAACiC,YAAY,CAACwC,SAAS,CAAC,IAAI,CAAC9C,SAAS,EAAE,IAAI,CAACE,mBAAmB,EAAE,IAAI,CAACE,MAAM,CAAA,CAAA;gBACjF,IAAI,CAACgC,iBAAiB,CA6LX,GAAA,CAAA,CAAA;gBA5LX,IAAI,CAACC,kBAAkB,CAkMX,IAAA,CAAA,CAAA;AAjMZ,gBAAA,IAAI,CAACT,mBAAmB,EAAA,CAAA;AAC1B,aAAA;;;YAMI3C,GAAAA,EAAAA,aAAAA;;;;AADH,MACD,SAA0B,GAAA,GAAA;AACxB,gBAAA,IAAI,IAAI,CAACiD,mBAAmB,CA0LhB,IA1L6C,CAAA,EAAA;oBACvD,IAAMH,MAAAA,GAAS,IAAI,CAACF,mBAAmB,EAAA,CAAA;AACvC,oBAAA,IAAIE,MAAQ,EAAA;wBACV/E,MAAO0F,CAAAA,QAAQ,CAACX,MAAAA,CAAO9C,WAAW,EAAE,IAAI,CAAC2D,WAAW,EAAE,IAAI,CAACrC,YAAY,CAAA,CAAA;qBAClE,MAAA;AACL,wBAAA,IAAI,CAACA,YAAY,CAACnB,QAAQ,CAAC,IAAI,CAACwD,WAAW,CAAA,CAAA;qBAC5C;oBACD,IAAI,CAACP,kBAAkB,CAmLb,IAAA,CAAA,CAAA;iBAlLX;gBACD,OAAO,IAAI,CAAC9B,YAAY,CAAA;AAC1B,aAAA;AAEA,YAAA,GAAA,EAAA,SAAA,GAAA,CAAgBlC,KAAa,EAAE;AAC7B,gBAAA,IAAI,IAAI,CAACkC,YAAY,KAAKlC,KAAO,EAAA;AAC/B,oBAAA,IAAI,CAACkC,YAAY,CAACnB,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBAC5B;gBACD,IAAM0D,MAAAA,GAAS,IAAI,CAACF,mBAAmB,EAAA,CAAA;AACvC,gBAAA,IAAIE,MAAQ,EAAA;AACV/E,oBAAAA,MAAAA,CAAO8C,MAAM,CAACiC,MAAAA,CAAO9C,WAAW,EA7JzBnC,cA6JyCiG,UAAU,CAAA,CAAA;oBAC1D/F,MAAO0F,CAAAA,QAAQ,CAAC5F,aA9JTA,CA8JuBiG,UAAU,EAAE1E,KAAAA,EAAO,IAAI,CAACiC,YAAY,CAAA,CAAA;iBAC7D,MAAA;AACL,oBAAA,IAAI,CAACA,YAAY,CAAClB,QAAQ,CAACf,KAAAA,CAAAA,CAAAA;iBAC5B;AACD,gBAAA,IAAI,CAACuE,WAAW,GAAG,IAAI,CAACtC,YAAY,CAAA;gBACpC,IAAI,CAAC+B,kBAAkB,CAkKX,IAAA,CAAA,CAAA;AAjKd,aAAA;;;AApKWvF,IAAAA,OAAAA,aAAAA,CAAAA;AAwTZ,CAAA,EAAA,CAAA;;AAxTYA,IAAAA,aAAAA,CACI6F,aAAyB,IAAIxC,UAAAA,EAAAA,CAAAA;;;AADjCrD,IAAAA,aAAAA,CAEIiG,aAAqB,IAAI/F,MAAAA,EAAAA,CAAAA;;AAwT1C;;IAGA,aAAA,CAAA;UAAKgG,aAAa,EAAA;IAAbA,aAAAA,CAAAA,aAAAA,CACHC,gBAAa,GAAbA,CAAAA,GAAAA,YAAAA,CAAAA;IADGD,aAAAA,CAAAA,aAAAA,CAEHE,eAAY,GAAZA,CAAAA,GAAAA,WAAAA,CAAAA;IAFGF,aAAAA,CAAAA,aAAAA,CAGHG,mBAAgB,GAAhBA,CAAAA,GAAAA,eAAAA,CAAAA;IAHGH,aAAAA,CAAAA,aAAAA,CAIHI,gBAAa,GAAbA,CAAAA,GAAAA,YAAAA,CAAAA;IAJGJ,aAAAA,CAAAA,aAAAA,CAKHK,eAAY,IAAZA,CAAAA,GAAAA,WAAAA,CAAAA;IALGL,aAAAA,CAAAA,aAAAA,CAMHM,gBAAa,IAAbA,CAAAA,GAAAA,YAAAA,CAAAA;IANGN,aAAAA,CAAAA,aAAAA,CAOHO,iBAAc,IAAdA,CAAAA,GAAAA,aAAAA,CAAAA;IAPGP,aAAAA,CAAAA,aAAAA,CAQHQ,iBAAc,IAAdA,CAAAA,GAAAA,aAAAA,CAAAA;AARGR,IAAAA,aAAAA,CAAAA,aAUH,oCACAS,MAAAA,CAAAA,GAAO,IAAPA,CAAAA,GAAAA,MAAAA,CAAAA;AAXGT,IAAAA,aAAAA,CAAAA,aAYH,6CACAU,QAAAA,CAAAA,GAAS,IAATA,CAAAA,GAAAA,QAAAA,CAAAA;AAbGV,IAAAA,aAAAA,CAAAA,aAcH,6DACAW,UAAAA,CAAAA,GAAW,IAAXA,CAAAA,GAAAA,UAAAA,CAAAA;AAfGX,IAAAA,aAAAA,CAAAA,aAgBH,iCACAY,MAAAA,CAAAA,GAAO,IAAPA,CAAAA,GAAAA,MAAAA,CAAAA;AAjBGZ,IAAAA,aAAAA,CAAAA,aAkBH,iDACAa,QAAAA,CAAAA,GAAS,IAATA,CAAAA,GAAAA,QAAAA,CAAAA;AAnBGb,IAAAA,aAAAA,CAAAA,aAoBH,0EACAc,YAAAA,CAAAA,GAAa,IAAbA,CAAAA,GAAAA,YAAAA,CAAAA;GArBGd,aAAAA,KAAAA,aAAAA,GAAAA,EAAAA,CAAAA,CAAAA;;AChUL;;IAGO,IAAe1B,YAAf,iBAAA,WAAA;AAAeA,IAAAA,SAAAA,YAAAA,GAAAA;yBACN,IAAA,CACdE,UAA+B,EAAE,CAAA;yBACnB,IAAA,CACd3E,aAA4B,IAAIC,aAAAA,EAAAA,CAAAA;AAG9B,QAAA,IAAI,CAACD,UAAU,CAACI,KAAK,GAAG,IAAI,CAAA;;AAPVqE,IAAAA,IAAAA,MAAAA,GAAAA,YAAAA,CAAAA,SAAAA,CAAAA;AAUpB;;AAEC,MACDyC,OAAAA,QASC,GATDA,SAAAA,QAAAA,CAASC,KAAwB,EAAQ;QACvC,IAAMC,WAAAA,GAAcD,MAAMhC,SAAS,CAAA;QACnC,IAAIiC,WAAAA,KAAgB,IAAI,EAAE;AACxB,YAAA,IAAIA,WAAa,EAAA;AACfA,gBAAAA,WAAAA,CAAYC,WAAW,CAACF,KAAAA,CAAAA,CAAAA;aACzB;AACD,YAAA,IAAI,CAACxC,OAAO,CAACvF,IAAI,CAAC+H,KAAAA,CAAAA,CAAAA;YAClBA,KAAMhC,CAAAA,SAAS,GAAG,IAAI,CAAA;SACvB;AACH,KAAA,CAAA;AAEA;;AAEC,MACDkC,OAAAA,WAMC,GANDA,SAAAA,WAAAA,CAAYF,KAAwB,EAAQ;AAC1C,QAAA,IAAMG,QAAQ,IAAI,CAAC3C,OAAO,CAAC4C,OAAO,CAACJ,KAAAA,CAAAA,CAAAA;QACnC,IAAIG,KAAAA,KAAU,CAAC,CAAG,EAAA;AAChB,YAAA,IAAI,CAAC3C,OAAO,CAAC6C,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;YAC3BH,KAAMhC,CAAAA,SAAS,GAAG,IAAI,CAAA;SACvB;AACH,KAAA,CAAA;AAEA;;MAGAsC,MAAAA,CAAAA,iBAGC,GAHDA,SAAAA,kBAAkB7G,QAAiB,EAAEJ,QAAoB,EAAQ;AAC/D,QAAA,IAAI,CAACR,UAAU,CAACW,WAAW,CAACC,QAAAA,CAASC,CAAC,EAAED,QAASE,CAAAA,CAAC,EAAEF,QAAAA,CAASG,CAAC,CAAA,CAAA;AAC9D,QAAA,IAAI,CAACf,UAAU,CAACgE,qBAAqB,CAACxD,QAASK,CAAAA,CAAC,EAAEL,QAAAA,CAASM,CAAC,EAAEN,QAAAA,CAASO,CAAC,EAAEP,SAASyD,CAAC,CAAA,CAAA;AACtF,KAAA,CAAA;AAEA;;MAGAyD,MAAAA,CAAAA,iBAIC,GAJDA,SAAAA,kBAAkBC,WAAoB,EAAEC,WAAuB,EAAQ;QACrE,IAAyC,gBAAA,GAAA,IAAI,CAAC5H,UAAU,EAAhDY,QAAiC,GAAA,gBAAA,CAAjCA,QAAUsD,EAAAA,kBAAAA,GAAuB,gBAAvBA,CAAAA,kBAAAA,CAAAA;QAClByD,WAAY5D,CAAAA,GAAG,CAACnD,QAASC,CAAAA,CAAC,EAAED,QAASE,CAAAA,CAAC,EAAEF,QAAAA,CAASG,CAAC,CAAA,CAAA;AAClD6G,QAAAA,WAAAA,CAAY7D,GAAG,CAACG,kBAAmBrD,CAAAA,CAAC,EAAEqD,kBAAAA,CAAmBpD,CAAC,EAAEoD,kBAAmBnD,CAAAA,CAAC,EAAEmD,kBAAAA,CAAmBD,CAAC,CAAA,CAAA;AACxG,KAAA,CAAA;AAEA;;AAEC,MACD5E,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,UAAgB,EAAC,CAAA;AAEjB;;MAGAwI,MAAAA,CAAAA,QASC,GATDA,SAAAA,QAAAA,CAASnG,GAAQ,EAAEoG,SAAmC,EAAEC,GAAkB,EAAW;QACnFA,GAAI1F,CAAAA,QAAQ,GAAG2F,MAAAA,CAAOC,SAAS,CAAA;QAC/B,IAAMvD,MAAAA,GAAS,IAAI,CAACC,OAAO,CAAA;QAC3B,IAAK,IAAI9E,IAAI,CAAG+E,EAAAA,CAAAA,GAAIF,OAAO5E,MAAM,EAAED,CAAI+E,GAAAA,CAAAA,EAAG/E,CAAK,EAAA,CAAA;YAC7C,IAAMsH,KAAAA,GAAQzC,MAAM,CAAC7E,CAAE,CAAA,CAAA;AACvBiI,YAAAA,SAAAA,CAAUX,MAAM7F,GAAG,CAAA,IAAK6F,KAAMU,CAAAA,QAAQ,CAACnG,GAAKqG,EAAAA,GAAAA,CAAAA,CAAAA;AAC9C,SAAA;AAEA,QAAA,OAAOA,GAAI1F,CAAAA,QAAQ,IAAI2F,MAAAA,CAAOC,SAAS,CAAA;AACzC,KAAA,CAAA;AArEoBxD,IAAAA,OAAAA,YAAAA,CAAAA;AAsErB,CAAA,EAAA;;AC3ED;;AAEC,IACM,IAAA,mBAAMyD,0BAAN,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,mBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,mBAMCtH,CAAAA,QAAiB,EAAEJ,QAAoB,EAAA;;;QAEjD,KAAKR,CAAAA,UAAU,CAACW,WAAW,CAACC,QAAAA,CAASC,CAAC,EAAED,QAASE,CAAAA,CAAC,EAAEF,QAAAA,CAASG,CAAC,CAAA,CAAA;AAC9D,QAAA,KAAA,CAAKf,UAAU,CAACgE,qBAAqB,CAACxD,SAASK,CAAC,EAAEL,QAASM,CAAAA,CAAC,EAAEN,QAAAA,CAASO,CAAC,EAAEP,SAASyD,CAAC,CAAA,CAAA;;;AAT3EiE,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AAYX;;AAEC,MACDC,OAAAA,QAEC,GAFDA,SAAAA,QAAAA,CAASC,KAAc,EAAQ;AAC7B,QAAA,MAAM,iEAAkE,CAAA;AAC1E,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUC,MAAe,EAAQ;AAC/B,QAAA,MAAM,kEAAmE,CAAA;AAC3E,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,IAEC,GAFDA,SAAAA,KAAKC,kBAAwC,EAAEhI,QAAqB,EAAQ;AAC1E,QAAA,MAAM,6DAA8D,CAAA;AACtE,KAAA,CAAA;AAEA;;AAEC,MACDiI,MAAAA,CAAAA,KAEC,GAFDA,SAAAA,KAAc,GAAA;AACZ,QAAA,MAAM,mEAAoE,CAAA;AAC5E,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBlH,KAAa,EAAQ;AACrC,QAAA,MAAM,0EAA2E,CAAA;AACnF,KAAA,CAAA;AAEA;;AAEC,MACDmH,OAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAmBnH,KAAc,EAAQ;AACvC,QAAA,MAAM,2EAA4E,CAAA;AACpF,KAAA,CAAA;AAEA;;AAEC,MACDoH,OAAAA,eAEC,GAFDA,SAAAA,eAAAA,CAAgBpH,KAAc,EAAQ;AACpC,QAAA,MAAM,wEAAyE,CAAA;AACjF,KAAA,CAAA;AAEA;;AAEC,MACDqH,OAAAA,yBAEC,GAFDA,SAAAA,yBAAAA,CAA0BrH,KAAa,EAAQ;AAC7C,QAAA,MAAM,kFAAmF,CAAA;AAC3F,KAAA,CAAA;AAEA;;AAEC,MACDsH,OAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAeC,KAAa,EAAQ;AAClC,QAAA,MAAM,uEAAwE,CAAA;AAChF,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiBxH,KAAc,EAAQ;AACrC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDyH,OAAAA,cAEC,GAFDA,SAAAA,cAAAA,CAAezH,KAAc,EAAQ;AACnC,QAAA,MAAM,uEAAwE,CAAA;AAChF,KAAA,CAAA;AAEA;;AAEC,MACD0H,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiB1H,KAAa,EAAQ;AACpC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACD2H,OAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkB3H,KAAc,EAAQ;AACtC,QAAA,MAAM,0EAA2E,CAAA;AACnF,KAAA,CAAA;AAEA;;AAEC,MACD4H,OAAAA,OAEC,GAFDA,SAAAA,OAAAA,CAAQ5H,KAAa,EAAQ;AAC3B,QAAA,MAAM,gEAAiE,CAAA;AACzE,KAAA,CAAA;AAEA;;AAEC,MACD6H,OAAAA,qBAEC,GAFDA,SAAAA,qBAAAA,CAAsB7H,KAAa,EAAQ;AACzC,QAAA,MAAM,8EAA+E,CAAA;AACvF,KAAA,CAAA;AAEA;;AAEC,MACD8H,OAAAA,2BAEC,GAFDA,SAAAA,2BAAAA,CAA4B9H,KAAa,EAAQ;AAC/C,QAAA,MAAM,oFAAqF,CAAA;AAC7F,KAAA,CAAA;AAEA;;AAEC,MACD+H,OAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkB/H,KAAa,EAAQ;AACrC,QAAA,MAAM,0EAA2E,CAAA;AACnF,KAAA,CAAA;AAEA;;AAEC,MACDgI,OAAAA,mBAEC,GAFDA,SAAAA,mBAAAA,CAAoBhI,KAAa,EAAQ;AACvC,QAAA,MAAM,4EAA6E,CAAA;AACrF,KAAA,CAAA;AAEA;;AAEC,MACDiI,MAAAA,CAAAA,MAEC,GAFDA,SAAAA,MAAe,GAAA;AACb,QAAA,MAAM,+DAAgE,CAAA;AACxE,KAAA,CAAA;AA/IWvB,IAAAA,OAAAA,mBAAAA,CAAAA;EAA4BzD,YAgJxC,CAAA;;ACvJD;;IAGO,IAAMiF,eAAN,iBAAA,WAAA;AAAMA,IAAAA,SAAAA,eAAAA,CAKCC,KAAiB,EAAA;AAAjBA,QAAAA,IAAAA,kBAAAA,KAAgB,GAAA,CAAA,CAAA;aAF5B7J,MAAiB,GAAA,CAAA,CAAA;AAGf,QAAA,IAAI,CAAC8J,SAAS,GAAG,IAAIC,KAASF,CAAAA,KAAAA,CAAAA,CAAAA;;AANrBD,IAAAA,IAAAA,MAAAA,GAAAA,eAAAA,CAAAA,SAAAA,CAAAA;AASXI,IAAAA,MAAAA,CAAAA,GAIC,GAJDA,SAAAA,GAAAA,CAAIC,OAAU,EAAQ;AACpB,QAAA,IAAI,IAAI,CAACjK,MAAM,KAAK,IAAI,CAAC8J,SAAS,CAAC9J,MAAM,EAAE,IAAI,CAAC8J,SAAS,CAACxK,IAAI,CAAC2K,OAAAA,CAAAA,CAAAA;AAC1D,aAAA,IAAI,CAACH,SAAS,CAAC,IAAI,CAAC9J,MAAM,CAAC,GAAGiK,OAAAA,CAAAA;AACnC,QAAA,IAAI,CAACjK,MAAM,EAAA,CAAA;AACb,KAAA,CAAA;AAEAkK,IAAAA,MAAAA,CAAAA,MAIC,GAJDA,SAAAA,OAAAA,CAAOD,OAAU,EAAQ;;AAEvB,QAAA,IAAMzC,QAAQ,IAAI,CAACsC,SAAS,CAACrC,OAAO,CAACwC,OAAAA,CAAAA,CAAAA;QACrC,IAAI,CAACE,aAAa,CAAC3C,KAAAA,CAAAA,CAAAA;AACrB,KAAA,CAAA;AAEA4C,IAAAA,MAAAA,CAAAA,GAKC,GALDA,SAAAA,GAAAA,CAAI5C,KAAa,EAAK;AACpB,QAAA,IAAIA,KAAS,IAAA,IAAI,CAACxH,MAAM,EAAE;AACxB,YAAA,MAAM,wBAAyB,CAAA;SAChC;AACD,QAAA,OAAO,IAAI,CAAC8J,SAAS,CAACtC,KAAM,CAAA,CAAA;AAC9B,KAAA,CAAA;AAEA;;;;AAIC,MACD2C,OAAAA,aAUC,GAVDA,SAAAA,aAAAA,CAAc3C,KAAa,EAAK;QAC9B,IAAI6C,QAAAA,GAAgB,IAAI,CAACP,SAAS,CAAA;AAClC,QAAA,IAAIQ,MAAS,IAAI,CAAA;AACjB,QAAA,IAAMC,SAAY,GAAA,IAAI,CAACvK,MAAM,GAAG,CAAA,CAAA;AAChC,QAAA,IAAIwH,UAAU+C,SAAW,EAAA;YACvBD,GAAMD,GAAAA,QAAQ,CAACE,SAAU,CAAA,CAAA;YACzBF,QAAQ,CAAC7C,MAAM,GAAG8C,GAAAA,CAAAA;SACnB;AACD,QAAA,IAAI,CAACtK,MAAM,EAAA,CAAA;QACX,OAAOsK,GAAAA,CAAAA;AACT,KAAA,CAAA;IAEAE,MAAAA,CAAAA,iBAEC,GAFDA,SAAAA,iBAA0B,GAAA;AACxB,QAAA,IAAI,CAACV,SAAS,CAAC9J,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AACrC,KAAA,CAAA;AA/CW4J,IAAAA,OAAAA,eAAAA,CAAAA;AAgDZ,CAAA,EAAA;;ACjDD;;;AAGC,IACM,IAAA,aAAMa,GAAN,SAAMA,aAAAA,GAAAA;sCACoB,IAAA,CAC/B/H,UAAkB,CAAC,CAAA,CAAA;AACnB,+DACAH,QAAmB,GAAA,CAAA,CAAA;sEAC4C,IAAA,CAC/DC,QAAiB,IAAIJ,OAAAA,EAAAA,CAAAA;uEAC2C,IAAA,CAChEsI,SAAkB,IAAItI,OAAAA,EAAAA,CAAAA;AACvB,CAAA;;ACTD;;IAGO,IAAMuI,oBAAN,iBAAA,SAAA,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,oBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,oBAAAA,CAgBCC,QAAgB,EAAEC,IAAa,EAAExJ,QAA6B,EAAA;;;AAdlEyJ,QAAAA,KAAAA,CAAAA,SAAAA,GAAqB,IAAI1I,OAAAA,EAAAA,CAAAA;cACzBqB,MAAkB,GAAA,IAAIrB,OAAQ,CAAA,CAAA,EAAG,CAAG,EAAA,CAAA,CAAA,CAAA;yBAE9B,KAAA,CACd2I,UAAmB,IAAI3I,OAAAA,CAAQ,CAAC,GAAK,EAAA,CAAC,KAAK,CAAC,GAAA,CAAA,CAAA;AAC5C,yBACA4I,KAAAA,CAAAA,OAAAA,GAAmB,IAAI5I,OAAAA,CAAQ,KAAK,GAAK,EAAA,GAAA,CAAA,CAAA;AAUvC,QAAA,KAAA,CAAKZ,GAAG,GAAGoJ,QAAAA,CAAAA;AACX,QAAA,KAAA,CAAKE,SAAS,CAAC7G,GAAG,CAAC4G,KAAK9J,CAAC,GAAG,GAAK8J,EAAAA,IAAAA,CAAK7J,CAAC,GAAG,GAAK6J,EAAAA,IAAAA,CAAK5J,CAAC,GAAG,GAAA,CAAA,CAAA;AACxD,QAAA,KAAA,CAAKgK,cAAc,EAAA,CAAA;;;AApBVN,IAAAA,IAAAA,MAAAA,GAAAA,oBAAAA,CAAAA,SAAAA,CAAAA;AAuBX;;AAEC,MACD,OAAS9J,WAGR,GAHD,SAASA,WAAAA,CAAYC,QAAiB,EAAQ;AAC5C,QAAA,iBAAA,CAAA,SAAA,CAAMD,WAAD,CAAaC,IAAAA,CAAAA,IAAAA,EAAAA,QAAAA,CAAAA,CAAAA;AAClB,QAAA,IAAI,CAACmK,cAAc,EAAA,CAAA;AACrB,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,aAGC,GAHDA,SAAAA,aAAAA,CAAc5G,KAAc,EAAQ;AAClC,QAAA,IAAI,CAACpE,UAAU,CAACY,QAAQ,GAAG,IAAI,CAACZ,UAAU,CAACY,QAAQ,CAACiF,QAAQ,CAACzB,KAAAA,CAAAA,CAAAA;AAC7D,QAAA,IAAI,CAACb,MAAM,CAAChB,QAAQ,CAAC6B,KAAAA,CAAAA,CAAAA;AACvB,KAAA,CAAA;AAEA;;AAEC,MACD6G,OAAAA,OAGC,GAHDA,SAAAA,OAAAA,CAAQzJ,KAAc,EAAQ;AAC5B,QAAA,IAAI,CAACoJ,SAAS,CAAC7G,GAAG,CAACvC,KAAMX,CAAAA,CAAC,GAAG,GAAA,EAAKW,MAAMV,CAAC,GAAG,GAAKU,EAAAA,KAAAA,CAAMT,CAAC,GAAG,GAAA,CAAA,CAAA;AAC3D,QAAA,IAAI,CAACgK,cAAc,EAAA,CAAA;AACrB,KAAA,CAAA;AAEA;;MAGAlD,MAAAA,CAAAA,QAqBC,GArBDA,SAAAA,SAASnG,GAAQ,EAAEqG,GAAkB,EAAW;AAC9C,QAAA,IAAMmD,QAAW,GAAA,IAAI,CAACzI,YAAY,CAACf,GAAAA,CAAAA,CAAAA;QAEnC,IAAMyJ,WAAAA,GAAcV,oBArDXA,CAqDgCW,QAAQ,CAAA;AACjDD,QAAAA,WAAAA,CAAYE,GAAG,CAACtH,GAAG,CACjB,CAAC,IAAI,CAAC6G,SAAS,CAAC/J,CAAC,GAAG,IAAI,CAAC0C,MAAM,CAAC1C,CAAC,EACjC,CAAC,IAAI,CAAC+J,SAAS,CAAC9J,CAAC,GAAG,IAAI,CAACyC,MAAM,CAACzC,CAAC,EACjC,CAAC,IAAI,CAAC8J,SAAS,CAAC7J,CAAC,GAAG,IAAI,CAACwC,MAAM,CAACxC,CAAC,CAAA,CAAA;AAEnCoK,QAAAA,WAAAA,CAAYG,GAAG,CAACvH,GAAG,CACjB,IAAI,CAAC6G,SAAS,CAAC/J,CAAC,GAAG,IAAI,CAAC0C,MAAM,CAAC1C,CAAC,EAChC,IAAI,CAAC+J,SAAS,CAAC9J,CAAC,GAAG,IAAI,CAACyC,MAAM,CAACzC,CAAC,EAChC,IAAI,CAAC8J,SAAS,CAAC7J,CAAC,GAAG,IAAI,CAACwC,MAAM,CAACxC,CAAC,CAAA,CAAA;QAElC,IAAMY,WAAAA,GAAcuJ,QAASK,CAAAA,YAAY,CAACJ,WAAAA,CAAAA,CAAAA;QAC1C,IAAIxJ,WAAAA,KAAgB,CAAC,CAAG,EAAA;AACtB,YAAA,IAAI,CAACF,gBAAgB,CAACyJ,UAAUvJ,WAAaoG,EAAAA,GAAAA,EAAKrG,IAAIG,MAAM,CAAA,CAAA;AAC5D,YAAA,OAAO,IAAI,CAAA;SACN,MAAA;AACL,YAAA,OAAO,KAAK,CAAA;SACb;AACH,KAAA,CAAA;IAEA,MAAQkJ,CAAAA,cAMP,GAND,SAAQA,cAAuB,GAAA;AAC7B,QAAA,IAA6B,mBAAA,IAAI,CAAC/K,UAAU,EAA1BwL,SAAW,gBAArB5K,CAAAA,QAAAA,CAAAA;QACR,IAAM6K,QAAAA,GAAW,IAAI,CAACb,SAAS,CAAA;AAE/B1I,QAAAA,OAAAA,CAAQ4H,GAAG,CAAC0B,MAAAA,EAAQC,QAAU,EAAA,IAAI,CAACX,OAAO,CAAA,CAAA;AAC1C5I,QAAAA,OAAAA,CAAQwJ,QAAQ,CAACF,MAAAA,EAAQC,QAAU,EAAA,IAAI,CAACZ,OAAO,CAAA,CAAA;AACjD,KAAA,CAAA;AA/EWJ,IAAAA,OAAAA,oBAAAA,CAAAA;EAA6B1K,iBAgFzC,CAAA,CAAA;;AAhFY0K,IAAAA,oBAAAA,CACIW,WAAwB,IAAIO,WAAAA,EAAAA,CAAAA;;;ACJ7C;;IAGO,IAAMC,uBAAN,iBAAA,SAAA,iBAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,uBAAAA,EAAAA,iBAAAA,CAAAA,CAAAA;AAAAA,IAAAA,SAAAA,uBAAAA,CAgBClB,QAAgB,EAAEmB,MAAc,EAAE1K,QAA6B,EAAA;;;cAbnE2K,OAAkB,GAAA,CAAA,CAAA;cAClBC,SAAoB,GAAA,CAAA,CAAA;AAc1B,QAAA,KAAA,CAAKD,OAAO,GAAGD,MAAAA,CAAAA;AACf,QAAA,KAAA,CAAKvK,GAAG,GAAGoJ,QAAAA,CAAAA;;;AAnBFkB,IAAAA,IAAAA,MAAAA,GAAAA,uBAAAA,CAAAA,SAAAA,CAAAA;AAsBX;;AAEC,MACDI,OAAAA,SAEC,GAFDA,SAAAA,SAAAA,CAAUxK,KAAa,EAAQ;QAC7B,IAAI,CAACsK,OAAO,GAAGtK,KAAAA,CAAAA;AACjB,KAAA,CAAA;AAEA;;AAEC,MACDwJ,OAAAA,aAEC,GAFDA,SAAAA,aAAAA,CAAc5G,KAAc,EAAQ;AAClC,QAAA,IAAI,CAAC2H,SAAS,GAAGE,IAAKX,CAAAA,GAAG,CAAClH,KAAMvD,CAAAA,CAAC,EAAEoL,IAAAA,CAAKX,GAAG,CAAClH,KAAAA,CAAMvD,CAAC,EAAEuD,MAAMtD,CAAC,CAAA,CAAA,CAAA;AAC9D,KAAA,CAAA;AAEA;;MAGA+G,MAAAA,CAAAA,QAYC,GAZDA,SAAAA,SAASnG,GAAQ,EAAEqG,GAAkB,EAAW;QAC9C,IAAMmE,cAAAA,GAAiBN,uBAxCdA,CAwCsCO,WAAW,CAAA;AAC1DjK,QAAAA,OAAAA,CAAQC,mBAAmB,CAAC,IAAI,CAACnC,UAAU,CAACY,QAAQ,EAAE,IAAI,CAACuE,SAAS,CAACnF,UAAU,CAACoC,WAAW,EAAE8J,eAAeV,MAAM,CAAA,CAAA;AAClHU,QAAAA,cAAAA,CAAeL,MAAM,GAAG,IAAI,CAACO,WAAW,CAAA;QAExC,IAAMzK,WAAAA,GAAcD,GAAI2K,CAAAA,eAAe,CAACH,cAAAA,CAAAA,CAAAA;QACxC,IAAIvK,WAAAA,KAAgB,CAAC,CAAG,EAAA;YACtB,IAAI,CAACF,gBAAgB,CAACC,GAAAA,EAAKC,aAAaoG,GAAKrG,EAAAA,GAAAA,CAAIG,MAAM,EAAE,IAAI,CAAA,CAAA;AAC7D,YAAA,OAAO,IAAI,CAAA;SACN,MAAA;AACL,YAAA,OAAO,KAAK,CAAA;SACb;AACH,KAAA,CAAA;AAnDW+J,IAAAA,aAAAA,CAAAA,uBAAAA,EAAAA;;YAMPQ,GAAAA,EAAAA,aAAAA;iBAAJ,SAA0B,GAAA,GAAA;AACxB,gBAAA,OAAO,IAAI,CAACN,OAAO,GAAG,IAAI,CAACC,SAAS,CAAA;AACtC,aAAA;;;AARWH,IAAAA,OAAAA,uBAAAA,CAAAA;EAAgC7L,iBAoD5C,CAAA,CAAA;;AApDY6L,IAAAA,uBAAAA,CACIO,cAA8B,IAAIG,cAAAA,EAAAA,CAAAA;;;ACDnD;;AAEC,IACM,IAAA,kBAAMC,iBAmTV,WAnTI;aAAMA,kBAsBTC,CAAAA,cAAqD,EACrDC,aAAoD,EACpDC,aAAoD,EACpDC,cAAqD,EACrDC,aAAoD,EACpDC,aAAoD,EAAA;AAd9CC,QAAAA,IAAAA,CAAAA,UAAAA,GAA6B,EAAE,CAAA;AAC/BC,QAAAA,IAAAA,CAAAA,OAAAA,GAA0B,IAAIT,cAAAA,EAAAA,CAAAA;AAC9BU,QAAAA,IAAAA,CAAAA,IAAAA,GAAoB,IAAIrB,WAAAA,EAAAA,CAAAA;AAExBsB,QAAAA,IAAAA,CAAAA,cAAAA,GAAgD,IAAIvD,eAAAA,EAAAA,CAAAA;AACpDwD,QAAAA,IAAAA,CAAAA,SAAAA,GAA0D,EAAC,CAAA;AAC3DC,QAAAA,IAAAA,CAAAA,UAAAA,GAA6B,EAAE,CAAA;QAUrC,IAAI,CAACC,eAAe,GAAGZ,cAAAA,CAAAA;QACvB,IAAI,CAACa,cAAc,GAAGZ,aAAAA,CAAAA;QACtB,IAAI,CAACa,cAAc,GAAGZ,aAAAA,CAAAA;QACtB,IAAI,CAACa,eAAe,GAAGZ,cAAAA,CAAAA;QACvB,IAAI,CAACa,cAAc,GAAGZ,aAAAA,CAAAA;QACtB,IAAI,CAACa,cAAc,GAAGZ,aAAAA,CAAAA;;AAlCbN,IAAAA,IAAAA,MAAAA,GAAAA,kBAAAA,CAAAA,SAAAA,CAAAA;AAqCX;;AAEC,MACDmB,OAAAA,UAEC,GAFDA,SAAAA,UAAAA,CAAWlM,KAAc,EAAQ;AAC/Bf,QAAAA,OAAAA,CAAQC,GAAG,CAAC,gEAAA,CAAA,CAAA;AACd,KAAA,CAAA;AAEA;;AAEC,MACDiN,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiBC,aAAgC,EAAQ;AACvD,QAAA,IAAI,CAACV,SAAS,CAACU,cAActM,GAAG,CAAC,GAAG,EAAC,CAAA;AACvC,KAAA,CAAA;AAEA;;AAEC,MACDuM,OAAAA,mBAWC,GAXDA,SAAAA,mBAAAA,CAAoBD,aAAgC,EAAQ;QAC1D,IAAiE,KAAA,GAAA,IAAI,EAAjDE,YAA6C,KAAzDX,CAAAA,UAAAA,EAAuBF,aAAgBc,GAAkB,KAAlCd,CAAAA,cAAAA,CAAAA;QAC/B,IAAazK,UAAYoL,aAAjBtM,CAAAA,GAAAA,CAAAA;QACR,IAAK,IAAIzB,IAAIkO,aAAcjO,CAAAA,MAAM,GAAG,CAAGD,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;YAClD,IAAMmO,KAAAA,GAAQD,aAAc7D,CAAAA,GAAG,CAACrK,CAAAA,CAAAA,CAAAA;AAChC,YAAA,IAAImO,MAAMC,MAAM,IAAIzL,WAAWwL,KAAME,CAAAA,MAAM,IAAI1L,OAAS,EAAA;AACtDuL,gBAAAA,aAAAA,CAAc9D,aAAa,CAACpK,CAAAA,CAAAA,CAAAA;AAC5BiO,gBAAAA,SAAAA,CAAU1O,IAAI,CAAC4O,KAAAA,CAAAA,CAAAA;aAChB;AACH,SAAA;AACA,QAAA,OAAO,IAAI,CAACd,SAAS,CAAC1K,OAAQ,CAAA,CAAA;AAChC,KAAA,CAAA;AAEA;;AAEC,MACD2L,OAAAA,WAEC,GAFDA,SAAAA,WAAAA,CAAYC,KAAmB,EAAQ;AACrC,QAAA,IAAI,CAACtB,UAAU,CAAC1N,IAAI,CAACgP,KAAAA,CAAAA,CAAAA;AACvB,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,cAKC,GALDA,SAAAA,cAAAA,CAAeC,QAAsB,EAAQ;AAC3C,QAAA,IAAMhH,QAAQ,IAAI,CAACwF,UAAU,CAACvF,OAAO,CAAC+G,QAAAA,CAAAA,CAAAA;QACtC,IAAIhH,KAAAA,KAAU,CAAC,CAAG,EAAA;AAChB,YAAA,IAAI,CAACwF,UAAU,CAACtF,MAAM,CAACF,KAAO,EAAA,CAAA,CAAA,CAAA;SAC/B;AACH,KAAA,CAAA;AAEA;;AAEC,MACDiH,OAAAA,MAMC,GANDA,SAAAA,MAAAA,CAAOC,SAAiB,EAAQ;QAC9B,IAAIC,SAAAA,GAAY,IAAI,CAAC3B,UAAU,CAAA;QAC/B,IAAK,IAAIjN,IAAI,CAAG6O,EAAAA,GAAAA,GAAMD,UAAU3O,MAAM,EAAED,CAAI6O,GAAAA,GAAAA,EAAK7O,CAAK,EAAA,CAAA;AACpD,YAAA,IAAI,CAAC8O,mBAAmB,CAACH,SAAWC,EAAAA,SAAS,CAAC5O,CAAE,CAAA,CAAA,CAAA;AAClD,SAAA;AACA,QAAA,IAAI,CAAC+O,UAAU,EAAA,CAAA;AACjB,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,OA2CC,GA3CDA,SAAAA,OACEnN,CAAAA,GAAQ,EACRW,QAAgB,EAChByF,SAAmC,EACnCC,GAA2F,EAClF;QACT,IAAM0G,SAAAA,GAAY,IAAI,CAAC3B,UAAU,CAAA;QAEjC,IAAIgC,SAAAA,CAAAA;AACJ,QAAA,IAAI/G,GAAK,EAAA;YACP+G,SAAYvC,GA5GLA,mBA4GwBwC,UAAU,CAAA;SAC1C;AAED,QAAA,IAAIC,QAAQ,KAAK,CAAA;QACjB,IAAMC,MAAAA,GAAS1C,kBAhHNA,CAgHyB2C,WAAW,CAAA;QAC7C,IAAK,IAAIrP,IAAI,CAAG6O,EAAAA,GAAAA,GAAMD,UAAU3O,MAAM,EAAED,CAAI6O,GAAAA,GAAAA,EAAK7O,CAAK,EAAA,CAAA;YACpD,IAAMyO,QAAAA,GAAWG,SAAS,CAAC5O,CAAE,CAAA,CAAA;AAE7B,YAAA,IAAIyO,QAASzG,CAAAA,QAAQ,CAACnG,GAAAA,EAAKoG,WAAWmH,MAAS,CAAA,EAAA;AAC7CD,gBAAAA,KAAAA,GAAQ,IAAI,CAAA;gBACZ,IAAIC,MAAAA,CAAO5M,QAAQ,GAAGA,QAAU,EAAA;AAC9B,oBAAA,IAAIyM,SAAW,EAAA;AACbA,wBAAAA,SAAAA,CAAUtE,MAAM,CAACjI,QAAQ,CAAC0M,OAAOzE,MAAM,CAAA,CAAA;AACvCsE,wBAAAA,SAAAA,CAAUxM,KAAK,CAACC,QAAQ,CAAC0M,OAAO3M,KAAK,CAAA,CAAA;wBACrCwM,SAAUzM,CAAAA,QAAQ,GAAG4M,MAAAA,CAAO5M,QAAQ,CAAA;wBACpCyM,SAAUtM,CAAAA,OAAO,GAAGyM,MAAAA,CAAOzM,OAAO,CAAA;qBAC7B,MAAA;AACL,wBAAA,OAAO,IAAI,CAAA;qBACZ;AACDH,oBAAAA,QAAAA,GAAW4M,OAAO5M,QAAQ,CAAA;iBAC3B;aACF;AACH,SAAA;QAEA,IAAI,CAAC2M,SAASF,SAAW,EAAA;YACvBA,SAAUtM,CAAAA,OAAO,GAAG,CAAC,CAAA,CAAA;AACrBsM,YAAAA,SAAAA,CAAUzM,QAAQ,GAAG,CAAA,CAAA;AACrByM,YAAAA,SAAAA,CAAUxM,KAAK,CAACyB,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;AAC1B+K,YAAAA,SAAAA,CAAUtE,MAAM,CAACzG,GAAG,CAAC,GAAG,CAAG,EAAA,CAAA,CAAA,CAAA;SACtB,MAAA,IAAIiL,SAASF,SAAW,EAAA;YAC7B/G,GAAI+G,CAAAA,SAAAA,CAAUtM,OAAO,EAAEsM,SAAUzM,CAAAA,QAAQ,EAAEyM,SAAUxM,CAAAA,KAAK,EAAEwM,SAAAA,CAAUtE,MAAM,CAAA,CAAA;SAC7E;QACD,OAAOwE,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA;;AAEC,MACDG,OAAAA,sBAEC,GAFDA,SAAAA,sBAAAA,CAAuBC,mBAAyC,EAAQ;AACtE,QAAA,MAAM,+EAAgF,CAAA;AACxF,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,yBAEC,GAFDA,SAAAA,yBAAAA,CAA0BD,mBAAyC,EAAQ;AACzE,QAAA,MAAM,kFAAmF,CAAA;AAC3F,KAAA,CAAA;AAwBA,IAAA,MAAA,CAAQE,WAWP,GAXD,SAAQA,YAAYrB,MAAc,EAAEC,MAAc,EAAgB;QAChE,IAAIF,KAAAA,CAAAA;AACJ,QAAA,IAAI,IAAI,CAACb,UAAU,CAACrN,MAAM,EAAE;AAC1BkO,YAAAA,KAAAA,GAAQ,IAAI,CAACb,UAAU,CAACoC,GAAG,EAAA,CAAA;AAC3BvB,YAAAA,KAAAA,CAAMC,MAAM,GAAGA,MAAAA,CAAAA;AACfD,YAAAA,KAAAA,CAAME,MAAM,GAAGA,MAAAA,CAAAA;SACV,MAAA;YACLF,KAAQ,GAAA,IAAIwB,aAAavB,MAAQC,EAAAA,MAAAA,CAAAA,CAAAA;SAClC;AACD,QAAA,IAAI,CAAChB,SAAS,CAACe,MAAO,CAAA,CAACC,OAAO,GAAGF,KAAAA,CAAAA;QACjC,OAAOA,KAAAA,CAAAA;AACT,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQW,mBA8DP,GA9DD,SAAQA,oBAAoBH,SAAiB,EAAEiB,UAAwB,EAAQ;QAC7E,IAAMhB,SAAAA,GAAY,IAAI,CAAC3B,UAAU,CAAA;QAEjC,IAAM4C,gBAAAA,GAAmBD,WAAW9K,OAAO,CAAA;QAC3C,IAAK,IAAI9E,IAAI,CAAG6O,EAAAA,GAAAA,GAAMgB,iBAAiB5P,MAAM,EAAED,CAAI6O,GAAAA,GAAAA,EAAK7O,CAAK,EAAA,CAAA;YAC3D,IAAM8P,OAAAA,GAAUD,gBAAgB,CAAC7P,CAAE,CAAA,CAAA;YACnC,IAAW,WAAP8P,CAAAA,OAAAA,EAAmBlF,oBAAsB,CAAA,EAAA;AAtMtC8B,gBAAAA,kBAAAA,CAuMcqD,eAAe,CAACD,OAAS,EAAA,IAAI,CAAC3C,IAAI,CAAA,CAAA;gBACrD,IAAK,IAAI6C,IAAI,CAAGnB,EAAAA,IAAAA,GAAMD,UAAU3O,MAAM,EAAE+P,CAAInB,GAAAA,IAAAA,EAAKmB,CAAK,EAAA,CAAA;AACpD,oBAAA,IAAMjC,aAAgBa,GAAAA,SAAS,CAACoB,CAAAA,CAAE,CAAClL,OAAO,CAAA;oBAC1C,IAAK,IAAImL,IAAI,CAAGpB,EAAAA,IAAAA,GAAMd,cAAc9N,MAAM,EAAEgQ,CAAIpB,GAAAA,IAAAA,EAAKoB,CAAK,EAAA,CAAA;wBACxD,IAAM3I,KAAAA,GAAQyG,aAAa,CAACkC,CAAE,CAAA,CAAA;wBAC9B,IAAM7B,MAAAA,GAAS9G,MAAM7F,GAAG,CAAA;wBACxB,IAAM4M,MAAAA,GAASyB,QAAQrO,GAAG,CAAA;AAC1B,wBAAA,IAAM0M,QAAQC,MAASC,GAAAA,MAAAA,GAAS,IAAI,CAAChB,SAAS,CAACe,MAAAA,CAAO,CAACC,MAAAA,CAAO,GAAG,IAAI,CAAChB,SAAS,CAACgB,MAAAA,CAAO,CAACD,MAAO,CAAA,CAAA;AAC/F,wBAAA,IAAID,KAAU+B,KAAAA,SAAAA,IAAa,CAAC/B,KAAAA,CAAMgC,cAAc,EAAE;4BAChD,SAAS;yBACV;AACD,wBAAA,IAAI7I,SAASwI,OAAW,IAAA,IAAI,CAACM,aAAa,CAAC9I,KAAQ,CAAA,EAAA;AACjD,4BAAA,IAAI6G,UAAU+B,SAAW,EAAA;AACvB,gCAAA,IAAM/B,MAAQC,GAAAA,MAAAA,GAASC,MAAS,GAAA,IAAI,CAACoB,WAAW,CAACrB,MAAQC,EAAAA,MAAAA,CAAAA,GAAU,IAAI,CAACoB,WAAW,CAACpB,QAAQD,MAAO,CAAA,CAAA;AACnGD,gCAAAA,MAAAA,CAAMkC,KAAK,GAkGzBC,CAAAA,CAAAA;gCAjGcnC,MAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;AAC5B,gCAAA,IAAI,CAAC/C,cAAc,CAACnD,GAAG,CAACkE,MAAAA,CAAAA,CAAAA;AAC1B,6BAAA,MAAO,IAAIA,KAAAA,CAAMkC,KAAK,KA+FlCC,CA/FgE,EAAA;AAClDnC,gCAAAA,KAAAA,CAAMkC,KAAK,GA+FzBE,CAAAA,CAAAA;gCA9FcpC,KAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;AAC9B,6BAAA,MAAO,IAAIhC,KAAAA,CAAMkC,KAAK,KA6FlCE,CA7F+D,EAAA;gCACjDpC,KAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;6BAC7B;yBACF;AACH,qBAAA;AACF,iBAAA;AACF,aAAA,MAAO,IAAW,WAAPL,CAAAA,OAAAA,EAAmB/D,uBAAyB,CAAA,EAAA;AAjOhDW,gBAAAA,kBAAAA,CAkOc8D,cAAc,CAACV,OAAS,EAAA,IAAI,CAAC5C,OAAO,CAAA,CAAA;gBACvD,IAAK,IAAI8C,KAAI,CAAGnB,EAAAA,IAAAA,GAAMD,UAAU3O,MAAM,EAAE+P,EAAInB,GAAAA,IAAAA,EAAKmB,EAAK,EAAA,CAAA;AACpD,oBAAA,IAAMjC,cAAgBa,GAAAA,SAAS,CAACoB,EAAAA,CAAE,CAAClL,OAAO,CAAA;oBAC1C,IAAK,IAAImL,KAAI,CAAGpB,EAAAA,IAAAA,GAAMd,eAAc9N,MAAM,EAAEgQ,EAAIpB,GAAAA,IAAAA,EAAKoB,EAAK,EAAA,CAAA;wBACxD,IAAM3I,MAAAA,GAAQyG,cAAa,CAACkC,EAAE,CAAA,CAAA;wBAC9B,IAAM7B,OAAAA,GAAS9G,OAAM7F,GAAG,CAAA;wBACxB,IAAM4M,OAAAA,GAASyB,QAAQrO,GAAG,CAAA;AAC1B,wBAAA,IAAM0M,SAAQC,OAASC,GAAAA,OAAAA,GAAS,IAAI,CAAChB,SAAS,CAACe,OAAAA,CAAO,CAACC,OAAAA,CAAO,GAAG,IAAI,CAAChB,SAAS,CAACgB,OAAAA,CAAO,CAACD,OAAO,CAAA,CAAA;AAC/F,wBAAA,IAAID,MAAU+B,KAAAA,SAAAA,IAAa,CAAC/B,MAAAA,CAAMgC,cAAc,EAAE;4BAChD,SAAS;yBACV;AACD,wBAAA,IAAI7I,UAASwI,OAAW,IAAA,IAAI,CAACW,gBAAgB,CAACnJ,MAAQ,CAAA,EAAA;AACpD,4BAAA,IAAI6G,WAAU+B,SAAW,EAAA;AACvB,gCAAA,IAAM/B,MAAQC,GAAAA,OAAAA,GAASC,OAAS,GAAA,IAAI,CAACoB,WAAW,CAACrB,OAAQC,EAAAA,OAAAA,CAAAA,GAAU,IAAI,CAACoB,WAAW,CAACpB,SAAQD,OAAO,CAAA,CAAA;AACnGD,gCAAAA,MAAAA,CAAMkC,KAAK,GAuEzBC,CAAAA,CAAAA;gCAtEcnC,MAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;AAC5B,gCAAA,IAAI,CAAC/C,cAAc,CAACnD,GAAG,CAACkE,MAAAA,CAAAA,CAAAA;AAC1B,6BAAA,MAAO,IAAIA,MAAAA,CAAMkC,KAAK,KAoElCC,CApEgE,EAAA;AAClDnC,gCAAAA,MAAAA,CAAMkC,KAAK,GAoEzBE,CAAAA,CAAAA;gCAnEcpC,MAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;AAC9B,6BAAA,MAAO,IAAIhC,MAAAA,CAAMkC,KAAK,KAkElCE,CAlE+D,EAAA;gCACjDpC,MAAMgC,CAAAA,cAAc,GAAG,KAAK,CAAA;6BAC7B;yBACF;AACH,qBAAA;AACF,iBAAA;aACD;AACH,SAAA;AACF,KAAA,CAAA;IAEA,MAAQpB,CAAAA,UAsBP,GAtBD,SAAQA,UAAmB,GAAA;QACzB,IAAiE,KAAA,GAAA,IAAI,EAAjDd,YAA6C,KAAzDX,CAAAA,UAAAA,EAAuBF,aAAgBc,GAAkB,KAAlCd,CAAAA,cAAAA,CAAAA;QAC/B,IAAK,IAAIpN,IAAIkO,aAAcjO,CAAAA,MAAM,GAAG,CAAGD,EAAAA,CAAAA,IAAK,GAAGA,CAAK,EAAA,CAAA;YAClD,IAAMmO,KAAAA,GAAQD,aAAc7D,CAAAA,GAAG,CAACrK,CAAAA,CAAAA,CAAAA;YAChC,IAAI,CAACmO,KAAMgC,CAAAA,cAAc,EAAE;gBACzB,IAAIhC,KAAAA,CAAMkC,KAAK,IAkDrBC,CAlDkD,EAAA;AAC1C,oBAAA,IAAI,CAAC5C,eAAe,CAACS,MAAMC,MAAM,EAAED,MAAME,MAAM,CAAA,CAAA;oBAC/CF,KAAMgC,CAAAA,cAAc,GAAG,IAAI,CAAA;AAC7B,iBAAA,MAAO,IAAIhC,KAAAA,CAAMkC,KAAK,IAgD5BE,CAhDwD,EAAA;AAChD,oBAAA,IAAI,CAAC3C,cAAc,CAACO,MAAMC,MAAM,EAAED,MAAME,MAAM,CAAA,CAAA;oBAC9CF,KAAMgC,CAAAA,cAAc,GAAG,IAAI,CAAA;iBAC5B;aACI,MAAA;AACLhC,gBAAAA,KAAAA,CAAMkC,KAAK,GA4CjBK,CAAAA,CAAAA;gBA3CM,IAAI,CAACrD,SAAS,CAACc,KAAMC,CAAAA,MAAM,CAAC,CAACD,KAAAA,CAAME,MAAM,CAAC,GAAG6B,SAAAA,CAAAA;AAE7C,gBAAA,IAAI,CAACvC,cAAc,CAACQ,MAAMC,MAAM,EAAED,MAAME,MAAM,CAAA,CAAA;AAE9CH,gBAAAA,aAAAA,CAAc9D,aAAa,CAACpK,CAAAA,CAAAA,CAAAA;AAC5BiO,gBAAAA,SAAAA,CAAU1O,IAAI,CAAC4O,KAAAA,CAAAA,CAAAA;aAChB;AACH,SAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQiC,aAWP,GAXD,SAAQA,aAAAA,CAAcO,KAAwB,EAAW;QACvD,IAAS,WAALA,CAAAA,KAAAA,EAAiB/F,oBAAsB,CAAA,EAAA;YACzC,IAAMgG,GAAAA,GAAMlE,kBA1RLA,CA0RwBnB,QAAQ,CAAA;YA1RhCmB,kBA2RYqD,CAAAA,eAAe,CAACY,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC1C,YAAA,OAAOC,cAAcC,mBAAmB,CAACF,GAAK,EAAA,IAAI,CAACzD,IAAI,CAAA,CAAA;AACzD,SAAA,MAAO,IAAS,WAALwD,CAAAA,KAAAA,EAAiB5E,uBAAyB,CAAA,EAAA;YACnD,IAAMgF,MAAAA,GAASrE,kBA9RRA,CA8R2BJ,WAAW,CAAA;YA9RtCI,kBA+RY8D,CAAAA,cAAc,CAACG,KAAOI,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,YAAA,OAAOF,cAAcG,sBAAsB,CAACD,MAAQ,EAAA,IAAI,CAAC5D,IAAI,CAAA,CAAA;SAC9D;AACD,QAAA,OAAO,KAAK,CAAA;AACd,KAAA,CAAA;AAEA,IAAA,MAAA,CAAQsD,gBAWP,GAXD,SAAQA,gBAAAA,CAAiBE,KAAwB,EAAW;QAC1D,IAAS,WAALA,CAAAA,KAAAA,EAAiB/F,oBAAsB,CAAA,EAAA;YACzC,IAAMgG,GAAAA,GAAMlE,kBAvSLA,CAuSwBnB,QAAQ,CAAA;YAvShCmB,kBAwSYqD,CAAAA,eAAe,CAACY,KAAOC,EAAAA,GAAAA,CAAAA,CAAAA;AAC1C,YAAA,OAAOC,cAAcG,sBAAsB,CAAC,IAAI,CAAC9D,OAAO,EAAE0D,GAAAA,CAAAA,CAAAA;AAC5D,SAAA,MAAO,IAAS,WAALD,CAAAA,KAAAA,EAAiB5E,uBAAyB,CAAA,EAAA;YACnD,IAAMgF,MAAAA,GAASrE,kBA3SRA,CA2S2BJ,WAAW,CAAA;YA3StCI,kBA4SY8D,CAAAA,cAAc,CAACG,KAAOI,EAAAA,MAAAA,CAAAA,CAAAA;AACzC,YAAA,OAAOF,cAAcI,yBAAyB,CAACF,MAAQ,EAAA,IAAI,CAAC7D,OAAO,CAAA,CAAA;SACpE;AACD,QAAA,OAAO,KAAK,CAAA;AACd,KAAA,CAAA;AAnJA;;;;MA7JWR,mBAkKIqD,eAKd,GALD,SAAeA,eAAgBmB,CAAAA,WAAiC,EAAEC,GAAgB,EAAQ;AACxF,QAAA,IAAMC,GAAMF,GAAAA,WAAAA,CAAY/Q,UAAU,CAACoC,WAAW,CAAA;AAC9C4O,QAAAA,GAAAA,CAAI3F,GAAG,CAAC9I,QAAQ,CAACwO,YAAYlG,OAAO,CAAA,CAAA;AACpCmG,QAAAA,GAAAA,CAAI1F,GAAG,CAAC/I,QAAQ,CAACwO,YAAYjG,OAAO,CAAA,CAAA;QACpCa,WAAYuF,CAAAA,SAAS,CAACF,GAAAA,EAAKC,GAAKD,EAAAA,GAAAA,CAAAA,CAAAA;AAClC,KAAA,CAAA;AAEA;;;;MAzKWzE,mBA8KI8D,cAGd,GAHD,SAAeA,cAAec,CAAAA,cAAuC,EAAEH,GAAmB,EAAQ;AAChG9O,QAAAA,OAAAA,CAAQC,mBAAmB,CAACgP,cAAenR,CAAAA,UAAU,CAACY,QAAQ,EAAEuQ,cAAAA,CAAenR,UAAU,CAACoC,WAAW,EAAE4O,IAAIxF,MAAM,CAAA,CAAA;QACjHwF,GAAInF,CAAAA,MAAM,GAAGsF,cAAAA,CAAe/E,WAAW,CAAA;AACzC,KAAA,CAAA;AAjLWG,IAAAA,OAAAA,kBAAAA,CAAAA;AAiTZ,CAAA,EAAA,CAAA;;AAjTYA,IAAAA,kBAAAA,CACIJ,cAA8B,IAAIG,cAAAA,EAAAA,CAAAA;;;AADtCC,IAAAA,kBAAAA,CAEInB,WAAwB,IAAIO,WAAAA,EAAAA,CAAAA;;;AAFhCY,IAAAA,kBAAAA,CAGI2C,cAA6B,IAAI3E,aAAAA,EAAAA,CAAAA;;;AAHrCgC,IAAAA,kBAAAA,CAIIwC,aAA4B,IAAIxE,aAAAA,EAAAA,CAAAA;;AA+SjD;;IAGA,iBAAA,CAAA;UAAK6G,iBAAiB,EAAA;IAAjBA,iBAAAA,CAAAA,iBAAAA,CACHjB,WAAAA,CAAAA,CAAAA,GAAAA,OAAAA,CAAAA;IADGiB,iBAAAA,CAAAA,iBAAAA,CAEHhB,UAAAA,CAAAA,CAAAA,GAAAA,MAAAA,CAAAA;IAFGgB,iBAAAA,CAAAA,iBAAAA,CAGHb,UAAAA,CAAAA,CAAAA,GAAAA,MAAAA,CAAAA;GAHGa,iBAAAA,KAAAA,iBAAAA,GAAAA,EAAAA,CAAAA,CAAAA,CAAAA;AAML;;AAEC,IACD,IAAA,YAAM5B,GAAN,SAAMA,YAMQvB,CAAAA,MAAc,EAAEC,MAAc,EAAA;AAF1C8B,IAAAA,IAAAA,CAAAA,cAAAA,GAA0B,KAAK,CAAA;IAG7B,IAAI,CAAC/B,MAAM,GAAGA,MAAAA,CAAAA;IACd,IAAI,CAACC,MAAM,GAAGA,MAAAA,CAAAA;;;ACjVlB;;IAGO,IAAMmD,mBAAN,iBAAA,WAAA;aAAMA,mBAETC,CAAAA,cAAsB,EACtBC,eAAuB,EACvBC,UAAkB,EAClBC,eAAuB,EACvBC,aAAqB,EAAA,EAAA;AANZL,IAAAA,IAAAA,MAAAA,GAAAA,mBAAAA,CAAAA,SAAAA,CAAAA;AASX;;AAEC,MACDM,OAAAA,aAEC,GAFDA,SAAAA,aAAAA,CAAcnQ,KAAa,EAAQ;AACjC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDoQ,OAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAmBpQ,KAAa,EAAQ;AACtC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDqQ,OAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBrQ,KAAa,EAAQ;AACrC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDsQ,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiBtQ,KAAa,EAAQ;AACpC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDuQ,OAAAA,kBAEC,GAFDA,SAAAA,kBAAAA,CAAmBvQ,KAAa,EAAQ;AACtC,QAAA,MAAM,yEAA0E,CAAA;AAClF,KAAA,CAAA;AAEA;;AAEC,MACDnC,MAAAA,CAAAA,OAAkB,GAAlBA,SAAAA,UAAgB,EAAC,CAAA;AA/CNgS,IAAAA,OAAAA,mBAAAA,CAAAA;AAgDZ,CAAA,EAAA;;ACjDD;;;AAGC,IACM,IAAA,kBAAMW,0BAAN,YAAA,EAAA;AAAMA,IAAAA,SAAAA,CAAAA,kBAAAA,EAAAA,YAAAA,CAAAA,CAAAA;aAAAA,kBAMCpR,CAAAA,QAAiB,EAAEJ,QAAoB,EAAA;;;QAEjD,KAAKR,CAAAA,UAAU,CAACW,WAAW,CAACC,QAAAA,CAASC,CAAC,EAAED,QAASE,CAAAA,CAAC,EAAEF,QAAAA,CAASG,CAAC,CAAA,CAAA;AAC9D,QAAA,KAAA,CAAKf,UAAU,CAACgE,qBAAqB,CAACxD,SAASK,CAAC,EAAEL,QAASM,CAAAA,CAAC,EAAEN,QAAAA,CAASO,CAAC,EAAEP,SAASyD,CAAC,CAAA,CAAA;;;AAT3E+N,IAAAA,OAAAA,kBAAAA,CAAAA;EAA2BvN,YAWvC,CAAA;;ACKM,IAAA,WAAA,iBAAA,WAAA;AAAMwN,IAAAA,SAAAA,WAAAA,GAAAA,EAAAA;AAAAA,IAAAA,IAAAA,MAAAA,GAAAA,WAAAA,CAAAA,SAAAA,CAAAA;AACX;;AAEC,MACDC,MAAAA,CAAAA,UAEC,GAFDA,SAAAA,UAA4B,GAAA;AAC1B,QAAA,OAAOC,QAAQC,OAAO,EAAA,CAAA;AACxB,KAAA,CAAA;AAEA;;AAEC,MACDC,OAAAA,oBAgBC,GAhBDA,SAAAA,oBAAAA,CACEC,cAAqD,EACrDC,YAAmD,EACnDC,gBAAuD,EACvDC,cAAqD,EACrDC,YAAmD,EACnDC,gBAAuD,EACtC;AACjB,QAAA,OAAO,IAAIpG,kBACT+F,CAAAA,cAAAA,EACAC,YACAC,EAAAA,gBAAAA,EACAC,gBACAC,YACAC,EAAAA,gBAAAA,CAAAA,CAAAA;AAEJ,KAAA,CAAA;AAEA;;MAGAC,MAAAA,CAAAA,oBAEC,GAFDA,SAAAA,qBAAqBhS,QAAiB,EAAEJ,QAAoB,EAAmB;QAC7E,OAAO,IAAIwR,mBAAmBpR,QAAUJ,EAAAA,QAAAA,CAAAA,CAAAA;AAC1C,KAAA,CAAA;AAEA;;MAGAqS,MAAAA,CAAAA,qBAEC,GAFDA,SAAAA,sBAAsBjS,QAAiB,EAAEJ,QAAoB,EAAoB;QAC/E,OAAO,IAAI0H,oBAAoBtH,QAAUJ,EAAAA,QAAAA,CAAAA,CAAAA;AAC3C,KAAA,CAAA;AAEA;;AAEC,MACDsS,MAAAA,CAAAA,yBAEC,GAFDA,SAAAA,yBAAkD,GAAA;AAChD,QAAA,MAAM,kFAAmF,CAAA;AAC3F,KAAA,CAAA;AAEA;;AAEC,MACDC,MAAAA,CAAAA,qBAQC,GARDA,SAAAA,sBACEzB,cAAsB,EACtBC,eAAuB,EACvBC,UAAkB,EAClBC,eAAuB,EACvBC,aAAqB,EACH;AAClB,QAAA,OAAO,IAAIL,mBAAAA,CAAoBC,cAAgBC,EAAAA,eAAAA,EAAiBC,YAAYC,eAAiBC,EAAAA,aAAAA,CAAAA,CAAAA;AAC/F,KAAA,CAAA;AAEA;;MAGAsB,MAAAA,CAAAA,sBAEC,GAFDA,SAAAA,sBAAAA,CAAuBtI,QAAgB,EAAEC,IAAa,EAAExJ,QAA6B,EAAqB;QACxG,OAAO,IAAIsJ,oBAAqBC,CAAAA,QAAAA,EAAUC,IAAMxJ,EAAAA,QAAAA,CAAAA,CAAAA;AAClD,KAAA,CAAA;AAEA;;MAGA8R,MAAAA,CAAAA,yBAEC,GAFDA,SAAAA,yBAAAA,CAA0BvI,QAAgB,EAAEmB,MAAc,EAAE1K,QAA6B,EAAwB;QAC/G,OAAO,IAAIyK,uBAAwBlB,CAAAA,QAAAA,EAAUmB,MAAQ1K,EAAAA,QAAAA,CAAAA,CAAAA;AACvD,KAAA,CAAA;AAEA;;MAGA+R,MAAAA,CAAAA,wBAEC,GAFDA,SAAAA,yBAAyBxI,QAAgB,EAAEvJ,QAA6B,EAAuB;AAC7F,QAAA,MAAM,2EAA4E,CAAA;AACpF,KAAA,CAAA;AAEA;;AAEC,MACDgS,MAAAA,CAAAA,0BAOC,GAPDA,SAAAA,0BACEzI,CAAAA,QAAgB,EAChBmB,MAAc,EACduH,MAAc,EACdjS,QAA6B,EACN;AACvB,QAAA,MAAM,6EAA8E,CAAA;AACtF,KAAA,CAAA;AAEA;;AAEC,MACDkS,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiB/E,QAAsB,EAAe;AACpD,QAAA,MAAM,6EAA8E,CAAA;AACtF,KAAA,CAAA;AAEA;;AAEC,MACDgF,OAAAA,gBAEC,GAFDA,SAAAA,gBAAAA,CAAiBhF,QAAsB,EAAe;AACpD,QAAA,MAAM,6EAA8E,CAAA;AACtF,KAAA,CAAA;AAEA;;AAEC,MACDiF,OAAAA,iBAEC,GAFDA,SAAAA,iBAAAA,CAAkBjF,QAAsB,EAAgB;AACtD,QAAA,MAAM,6EAA8E,CAAA;AACtF,KAAA,CAAA;AAnHW2D,IAAAA,OAAAA,WAAAA,CAAAA;AAoHZ,CAAA;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galacean/engine-physics-lite",
3
- "version": "1.0.0-beta.11",
3
+ "version": "1.0.0-beta.12",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -22,11 +22,11 @@
22
22
  "types/**/*"
23
23
  ],
24
24
  "devDependencies": {
25
- "@galacean/engine-design": "1.0.0-beta.11",
26
- "@galacean/engine": "1.0.0-beta.11"
25
+ "@galacean/engine-design": "1.0.0-beta.12",
26
+ "@galacean/engine": "1.0.0-beta.12"
27
27
  },
28
28
  "peerDependencies": {
29
- "@galacean/engine": "1.0.0-beta.11"
29
+ "@galacean/engine": "1.0.0-beta.12"
30
30
  },
31
31
  "scripts": {
32
32
  "b:types": "tsc"