@galacean/engine-physics-lite 1.6.8 → 1.6.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +1401 -0
- package/dist/browser.js.map +1 -0
- package/dist/browser.min.js +2 -0
- package/dist/browser.min.js.map +1 -0
- package/dist/main.js +1397 -0
- package/dist/main.js.map +1 -0
- package/dist/module.js +1392 -0
- package/dist/module.js.map +1 -0
- package/package.json +4 -4
- package/types/LiteCollider.d.ts +35 -0
- package/types/LiteDynamicCollider.d.ts +119 -0
- package/types/LiteHitResult.d.ts +1 -0
- package/types/LitePhysics.d.ts +82 -0
- package/types/LitePhysicsManager.d.ts +3 -0
- package/types/LitePhysicsMaterial.d.ts +31 -0
- package/types/LitePhysicsScene.d.ts +106 -0
- package/types/LiteStaticCollider.d.ts +16 -0
- package/types/LiteTransform.d.ts +118 -0
- package/types/LiteUpdateFlag.d.ts +13 -0
- package/types/LiteUpdateFlagManager.d.ts +1 -0
- package/types/index.d.ts +2 -0
- package/types/shape/LiteBoxColliderShape.d.ts +38 -0
- package/types/shape/LiteColliderShape.d.ts +56 -0
- package/types/shape/LiteSphereColliderShape.d.ts +32 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../src/LiteUpdateFlag.ts","../src/LiteUpdateFlagManager.ts","../src/shape/LiteColliderShape.ts","../src/LiteTransform.ts","../src/LiteCollider.ts","../src/LiteDynamicCollider.ts","../src/LitePhysicsMaterial.ts","../src/LiteHitResult.ts","../src/shape/LiteBoxColliderShape.ts","../src/shape/LiteSphereColliderShape.ts","../src/LitePhysicsScene.ts","../src/LiteStaticCollider.ts","../src/LitePhysics.ts","../src/index.ts"],"sourcesContent":["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 { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _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}\nfunction _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","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 { MathUtil, Matrix, Quaternion, Ray, Vector3, Vector4 } from \"@galacean/engine\";\nimport { IColliderShape, IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"../LiteCollider\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LiteTransform } from \"../LiteTransform\";\nimport { LiteUpdateFlag } from \"../LiteUpdateFlag\";\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class LiteColliderShape implements IColliderShape {\n protected static _tempPos = new Vector3();\n protected static _tempRot = new Quaternion();\n protected static _tempScale = new Vector3();\n protected static _tempPoint = new Vector3();\n protected static _tempVector4 = new Vector4();\n\n private static _ray = new Ray();\n\n /** @internal */\n _id: number;\n /** @internal */\n _collider: LiteCollider;\n /** @internal */\n _position: Vector3 = new Vector3();\n /** @internal */\n _worldScale: Vector3 = new Vector3(1, 1, 1);\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n /** @internal */\n _invModelMatrix: Matrix = new Matrix();\n /** @internal */\n _inverseWorldMatFlag: LiteUpdateFlag;\n\n private _rotation: Vector3 = new Vector3();\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 const rotationInRadians = this._rotation.set(\n MathUtil.degreeToRadian(rotation.x),\n MathUtil.degreeToRadian(rotation.y),\n MathUtil.degreeToRadian(rotation.z)\n );\n Quaternion.rotationEuler(\n rotationInRadians.x,\n rotationInRadians.y,\n rotationInRadians.z,\n this._transform.rotationQuaternion\n );\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n setPosition(position: Vector3): void {\n if (position !== this._position) {\n this._position.copyFrom(position);\n }\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._worldScale.copyFrom(scale);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setContactOffset }\n */\n setContactOffset(offset: number): void {\n console.log(\"Physics-lite don't support setContactOffset. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setMaterial }\n */\n setMaterial(material: IPhysicsMaterial): void {\n console.log(\"Physics-lite don't support setMaterial. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.setUniqueID }\n */\n setUniqueID(id: number): void {\n this._id = id;\n }\n\n /**\n * {@inheritDoc IColliderShape.setIsTrigger }\n */\n setIsTrigger(value: boolean): void {\n console.log(\"Physics-lite don't support setIsTrigger. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IColliderShape.pointDistance }\n */\n abstract pointDistance(point: Vector3): Vector4;\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n abstract _raycast(ray: Ray, hit: LiteHitResult): boolean;\n\n protected _updateHitResult(\n ray: Ray,\n rayDistance: number,\n outHit: LiteHitResult,\n origin: Vector3,\n isWorldRay: boolean = false\n ): void {\n const hitPoint = LiteColliderShape._tempPoint;\n ray.getPoint(rayDistance, hitPoint);\n if (!isWorldRay) {\n Vector3.transformCoordinate(hitPoint, this._transform.worldMatrix, hitPoint);\n }\n\n const distance = Vector3.distance(origin, hitPoint);\n\n if (distance < outHit.distance) {\n outHit.point.copyFrom(hitPoint);\n outHit.distance = distance;\n outHit.shapeID = this._id;\n }\n }\n\n protected _getLocalRay(ray: Ray): Ray {\n const worldToLocal = this._getInvModelMatrix();\n const outRay = LiteColliderShape._ray;\n\n Vector3.transformCoordinate(ray.origin, worldToLocal, outRay.origin);\n Vector3.transformNormal(ray.direction, worldToLocal, outRay.direction);\n outRay.direction.normalize();\n\n return outRay;\n }\n\n private _getInvModelMatrix(): Matrix {\n if (this._inverseWorldMatFlag.flag) {\n Matrix.invert(this._transform.worldMatrix, this._invModelMatrix);\n this._inverseWorldMatFlag.flag = false;\n }\n return this._invModelMatrix;\n }\n\n private _setLocalPose() {\n const shapePosition = LiteColliderShape._tempPoint;\n Vector3.multiply(this._position, this._worldScale, shapePosition);\n this._transform.position = shapePosition;\n }\n}\n","import { MathUtil, Matrix, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteUpdateFlag } from \"./LiteUpdateFlag\";\nimport { LiteUpdateFlagManager } from \"./LiteUpdateFlagManager\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\n\n/**\n * Used to implement transformation related functions.\n */\nexport class LiteTransform {\n private static _tempQuat0: Quaternion = new Quaternion();\n private static _tempMat42: Matrix = new Matrix();\n\n private _position: Vector3 = new Vector3();\n private _rotation: Vector3 = new Vector3();\n private _rotationQuaternion: Quaternion = new Quaternion();\n private _scale: Vector3 = new Vector3(1, 1, 1);\n private _worldRotationQuaternion: Quaternion = new Quaternion();\n private _localMatrix: Matrix = new Matrix();\n private _worldMatrix: Matrix = new Matrix();\n private _updateFlagManager: LiteUpdateFlagManager = new LiteUpdateFlagManager();\n private _isParentDirty: boolean = true;\n private _parentTransformCache: LiteTransform = null;\n private _dirtyFlag: number = TransformFlag.WmWpWeWqWs;\n\n private _owner: LiteColliderShape | LiteCollider;\n\n set owner(value: LiteColliderShape | LiteCollider) {\n this._owner = value;\n }\n\n /**\n * Local position.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get position(): Vector3 {\n return this._position;\n }\n\n set position(value: Vector3) {\n if (this._position !== value) {\n this._position.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldPositionFlag();\n }\n\n /**\n * Local rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get rotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.LocalQuat)) {\n Quaternion.rotationEuler(\n MathUtil.degreeToRadian(this._rotation.x),\n MathUtil.degreeToRadian(this._rotation.y),\n MathUtil.degreeToRadian(this._rotation.z),\n this._rotationQuaternion\n );\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n }\n return this._rotationQuaternion;\n }\n\n set rotationQuaternion(value: Quaternion) {\n if (this._rotationQuaternion !== value) {\n this._rotationQuaternion.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix | TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalQuat);\n this._updateWorldRotationFlag();\n }\n\n /**\n * World rotation, defining the rotation by using a unit quaternion.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldRotationQuaternion(): Quaternion {\n if (this._isContainDirtyFlag(TransformFlag.WorldQuat)) {\n const parent = this._getParentTransform();\n if (parent != null) {\n Quaternion.multiply(parent.worldRotationQuaternion, this.rotationQuaternion, this._worldRotationQuaternion);\n } else {\n this._worldRotationQuaternion.copyFrom(this.rotationQuaternion);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n return this._worldRotationQuaternion;\n }\n\n set worldRotationQuaternion(value: Quaternion) {\n if (this._worldRotationQuaternion !== value) {\n this._worldRotationQuaternion.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Quaternion.invert(parent.worldRotationQuaternion, LiteTransform._tempQuat0);\n Quaternion.multiply(value, LiteTransform._tempQuat0, this._rotationQuaternion);\n } else {\n this._rotationQuaternion.copyFrom(value);\n }\n this.rotationQuaternion = this._rotationQuaternion;\n this._setDirtyFlagFalse(TransformFlag.WorldQuat);\n }\n\n /**\n * Local scaling.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get scale(): Vector3 {\n return this._scale;\n }\n\n set scale(value: Vector3) {\n if (this._scale !== value) {\n this._scale.copyFrom(value);\n }\n this._setDirtyFlagTrue(TransformFlag.LocalMatrix);\n this._updateWorldScaleFlag();\n }\n\n /**\n * Local matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get localMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.LocalMatrix)) {\n Matrix.affineTransformation(this._scale, this.rotationQuaternion, this._position, this._localMatrix);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n }\n return this._localMatrix;\n }\n\n set localMatrix(value: Matrix) {\n if (this._localMatrix !== value) {\n this._localMatrix.copyFrom(value);\n }\n this._localMatrix.decompose(this._position, this._rotationQuaternion, this._scale);\n this._setDirtyFlagTrue(TransformFlag.LocalEuler);\n this._setDirtyFlagFalse(TransformFlag.LocalMatrix);\n this._updateAllWorldFlag();\n }\n\n /**\n * World matrix.\n * @remarks Need to re-assign after modification to ensure that the modification takes effect.\n */\n get worldMatrix(): Matrix {\n if (this._isContainDirtyFlag(TransformFlag.WorldMatrix)) {\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.multiply(parent.worldMatrix, this.localMatrix, this._worldMatrix);\n } else {\n this._worldMatrix.copyFrom(this.localMatrix);\n }\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n return this._worldMatrix;\n }\n\n set worldMatrix(value: Matrix) {\n if (this._worldMatrix !== value) {\n this._worldMatrix.copyFrom(value);\n }\n const parent = this._getParentTransform();\n if (parent) {\n Matrix.invert(parent.worldMatrix, LiteTransform._tempMat42);\n Matrix.multiply(LiteTransform._tempMat42, value, this._localMatrix);\n } else {\n this._localMatrix.copyFrom(value);\n }\n this.localMatrix = this._localMatrix;\n this._setDirtyFlagFalse(TransformFlag.WorldMatrix);\n }\n\n /**\n * Set local position by X, Y, Z value.\n * @param x - X coordinate\n * @param y - Y coordinate\n * @param z - Z coordinate\n */\n setPosition(x: number, y: number, z: number): void {\n this._position.set(x, y, z);\n this.position = this._position;\n }\n\n /**\n * Set local rotation by the X, Y, Z, and W components of the quaternion.\n * @param x - X component of quaternion\n * @param y - Y component of quaternion\n * @param z - Z component of quaternion\n * @param w - W component of quaternion\n */\n setRotationQuaternion(x: number, y: number, z: number, w: number): void {\n this._rotationQuaternion.set(x, y, z, w);\n this.rotationQuaternion = this._rotationQuaternion;\n }\n\n /**\n * Set local scaling by scaling values along X, Y, Z axis.\n * @param x - Scaling along X axis\n * @param y - Scaling along Y axis\n * @param z - Scaling along Z axis\n */\n setScale(x: number, y: number, z: number): void {\n this._scale.set(x, y, z);\n this.scale = this._scale;\n }\n\n /**\n * Register world transform change flag.\n * @returns Change flag\n */\n registerWorldChangeFlag(): LiteUpdateFlag {\n return this._updateFlagManager.register();\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldPositionFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWp)) {\n this._worldAssociatedChange(TransformFlag.WmWp);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldPositionFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldRotationQuaternion: Will trigger the world rotation (in quaternion) update of itself and all parent entities.\n * Get worldRotation: Will trigger the world rotation(in euler and quaternion) update of itself and world rotation(in quaternion) update of all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix or worldRotationQuaternion) to be false.\n */\n private _updateWorldRotationFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWeWq)) {\n this._worldAssociatedChange(TransformFlag.WmWeWq);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldRotationFlag();\n }\n }\n }\n }\n\n /**\n * Get worldMatrix: Will trigger the worldMatrix update of itself and all parent entities.\n * Get worldPosition: Will trigger the worldMatrix, local position update of itself and the worldMatrix update of all parent entities.\n * Get worldScale: Will trigger the scaling update of itself and all parent entities.\n * In summary, any update of related variables will cause the dirty mark of one of the full process (worldMatrix) to be false.\n */\n private _updateWorldScaleFlag() {\n if (!this._isContainDirtyFlags(TransformFlag.WmWs)) {\n this._worldAssociatedChange(TransformFlag.WmWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateWorldScaleFlag();\n }\n }\n }\n }\n\n /**\n * Update all world transform property dirty flag, the principle is the same as above.\n */\n private _updateAllWorldFlag(): void {\n if (!this._isContainDirtyFlags(TransformFlag.WmWpWeWqWs)) {\n this._worldAssociatedChange(TransformFlag.WmWpWeWqWs);\n if (this._owner instanceof LiteCollider) {\n const shapes = this._owner._shapes;\n for (let i: number = 0, n: number = shapes.length; i < n; i++) {\n shapes[i]._transform._updateAllWorldFlag();\n }\n }\n }\n }\n\n private _getParentTransform(): LiteTransform | null {\n if (!this._isParentDirty) {\n return this._parentTransformCache;\n }\n let parentCache: LiteTransform = null;\n if (this._owner instanceof LiteColliderShape) {\n let parent = this._owner._collider;\n parentCache = parent._transform;\n }\n\n this._parentTransformCache = parentCache;\n this._isParentDirty = false;\n return parentCache;\n }\n\n private _isContainDirtyFlags(targetDirtyFlags: number): boolean {\n return (this._dirtyFlag & targetDirtyFlags) === targetDirtyFlags;\n }\n\n private _isContainDirtyFlag(type: number): boolean {\n return (this._dirtyFlag & type) != 0;\n }\n\n private _setDirtyFlagTrue(type: number) {\n this._dirtyFlag |= type;\n }\n\n private _setDirtyFlagFalse(type: number) {\n this._dirtyFlag &= ~type;\n }\n\n private _worldAssociatedChange(type: number): void {\n this._dirtyFlag |= type;\n this._updateFlagManager.distribute();\n }\n}\n\n/**\n * Dirty flag of transform.\n */\nenum TransformFlag {\n LocalEuler = 0x1,\n LocalQuat = 0x2,\n WorldPosition = 0x4,\n WorldEuler = 0x8,\n WorldQuat = 0x10,\n WorldScale = 0x20,\n LocalMatrix = 0x40,\n WorldMatrix = 0x80,\n\n /** WorldMatrix | WorldPosition */\n WmWp = 0x84,\n /** WorldMatrix | WorldEuler | WorldQuat */\n WmWeWq = 0x98,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat */\n WmWpWeWq = 0x9c,\n /** WorldMatrix | WorldScale */\n WmWs = 0xa0,\n /** WorldMatrix | WorldPosition | WorldScale */\n WmWpWs = 0xa4,\n /** WorldMatrix | WorldPosition | WorldEuler | WorldQuat | WorldScale */\n WmWpWeWqWs = 0xbc\n}\n","import { ICollider } from \"@galacean/engine-design\";\nimport { Layer, Quaternion, Ray, Vector3 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteTransform } from \"./LiteTransform\";\nimport { LitePhysicsScene } from \"./LitePhysicsScene\";\nimport { LitePhysics } from \"./LitePhysics\";\n\n/**\n * Abstract class of physical collider.\n */\nexport abstract class LiteCollider implements ICollider {\n /** @internal */\n abstract readonly _isStaticCollider: boolean;\n private _litePhysics: LitePhysics;\n\n /** @internal */\n _scene: LitePhysicsScene;\n /** @internal */\n _shapes: LiteColliderShape[] = [];\n /** @internal */\n _transform: LiteTransform = new LiteTransform();\n /** @internal */\n _collisionLayer: number;\n\n protected constructor(litePhysics: LitePhysics) {\n this._transform.owner = this;\n this._litePhysics = litePhysics;\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 this._scene?._addColliderShape(shape);\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 this._scene?._removeColliderShape(shape);\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.setCollisionLayer }\n */\n setCollisionLayer(collisionLayer: Layer): void {\n this._litePhysics.setColliderLayer(this, collisionLayer);\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 { Logger, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LitePhysics } from \"./LitePhysics\";\n\n/**\n * A dynamic collider can act with self-defined movement or physical force\n */\nexport class LiteDynamicCollider extends LiteCollider implements IDynamicCollider {\n /** @internal */\n readonly _isStaticCollider: boolean = false;\n /**\n * Initialize dynamic actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(litePhysics: LitePhysics, position: Vector3, rotation: Quaternion) {\n super(litePhysics);\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.getInertiaTensor }\n */\n getInertiaTensor(out: Vector3): Vector3 {\n Logger.error(\"Physics-lite don't support getInertiaTensor. Use Physics-PhysX instead!\");\n return out;\n }\n /**\n * {@inheritDoc IDynamicCollider.getCenterOfMass }\n */\n getCenterOfMass(out: Vector3): Vector3 {\n Logger.error(\"Physics-lite don't support getCenterOfMass. Use Physics-PhysX instead!\");\n return out;\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMassAndUpdateInertia }\n */\n setMassAndUpdateInertia(mass: number): void {\n Logger.error(\"Physics-lite don't support setMassAndUpdateInertia. Use Physics-PhysX instead!\");\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.isSleeping }\n */\n isSleeping(): boolean {\n throw \"Physics-lite don't support isSleeping. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularDamping }\n */\n setAngularDamping(value: number): void {\n Logger.error(\"Physics-lite don't support setAngularDamping. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getAngularVelocity }\n */\n getAngularVelocity(out: Vector3): Vector3 {\n Logger.error(\"Physics-lite don't support getAngularVelocity. Use Physics-PhysX instead!\");\n return out;\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n Logger.error(\"Physics-lite don't support setAngularVelocity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCenterOfMass }\n */\n setCenterOfMass(value: Vector3): void {\n Logger.error(\"Physics-lite don't support setCenterOfMass. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCollisionDetectionMode }\n */\n setCollisionDetectionMode(value: number): void {\n Logger.error(\"Physics-lite don't support setCollisionDetectionMode. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setConstraints }\n */\n setConstraints(flags: number): void {\n Logger.error(\"Physics-lite don't support setConstraints. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setInertiaTensor }\n */\n setInertiaTensor(value: Vector3): void {\n Logger.error(\"Physics-lite don't support setInertiaTensor. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setUseGravity }\n */\n setUseGravity(value: boolean): void {\n Logger.error(\"Physics-lite don't support setUseGravity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setIsKinematic }\n */\n setIsKinematic(value: boolean): void {\n Logger.error(\"Physics-lite don't support setIsKinematic. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearDamping }\n */\n setLinearDamping(value: number): void {\n Logger.error(\"Physics-lite don't support setLinearDamping. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getLinearVelocity }\n */\n getLinearVelocity(out: Vector3): Vector3 {\n Logger.error(\"Physics-lite don't support getLinearVelocity. Use Physics-PhysX instead!\");\n return out;\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n Logger.error(\"Physics-lite don't support setLinearVelocity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMass }\n */\n setMass(value: number): void {\n Logger.error(\"Physics-lite don't support setMass. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n Logger.error(\"Physics-lite don't support setMaxAngularVelocity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }\n */\n setMaxDepenetrationVelocity(value: number): void {\n Logger.error(\"Physics-lite don't support setMaxDepenetrationVelocity. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSleepThreshold }\n */\n setSleepThreshold(value: number): void {\n Logger.error(\"Physics-lite don't support setSleepThreshold. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSolverIterations }\n */\n setSolverIterations(value: number): void {\n Logger.error(\"Physics-lite don't support setSolverIterations. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IDynamicCollider.wakeUp }\n */\n wakeUp(): void {\n throw \"Physics-lite don't support wakeUp. Use Physics-PhysX instead!\";\n }\n}\n","import { IPhysicsMaterial } from \"@galacean/engine-design\";\n\n/**\n * Physics material describes how to handle colliding objects (friction, bounciness).\n */\nexport class LitePhysicsMaterial implements IPhysicsMaterial {\n constructor(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ) {}\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounciness }\n */\n setBounciness(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setDynamicFriction }\n */\n setDynamicFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setStaticFriction }\n */\n setStaticFriction(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounceCombine }\n */\n setBounceCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setFrictionCombine }\n */\n setFrictionCombine(value: number): void {\n throw \"Physics-lite don't support physics material. Use Physics-PhysX instead!\";\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.destroy }\n */\n destroy(): void {}\n}\n","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, Matrix, Quaternion, Ray, Vector3, Vector4 } 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 static _tempMatrix: Matrix = new Matrix();\n private static _tempInvMatrix: Matrix = new Matrix();\n private _halfSize: Vector3 = new Vector3();\n private _sizeScale: Vector3 = new Vector3(1, 1, 1);\n\n /** @internal */\n _boxMin: Vector3 = new Vector3(-0.5, -0.5, -0.5);\n /** @internal */\n _boxMax: Vector3 = new Vector3(0.5, 0.5, 0.5);\n\n /**\n * Init Box Shape.\n * @param uniqueID - UniqueID mark Shape.\n * @param size - Size of Shape.\n * @param material - Material of PhysXCollider.\n */\n constructor(uniqueID: number, size: Vector3, material: LitePhysicsMaterial) {\n super();\n this._id = uniqueID;\n this._halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n override setPosition(position: Vector3): void {\n super.setPosition(position);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n this._halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n this._setBondingBox();\n }\n\n /**\n * {@inheritDoc IColliderShape.pointDistance }\n */\n override pointDistance(point: Vector3): Vector4 {\n const position = LiteColliderShape._tempPos;\n const rotation = LiteColliderShape._tempRot;\n this._transform.worldMatrix.decompose(position, rotation, LiteColliderShape._tempScale);\n const { position: shapePosition } = this._transform;\n const m = LiteBoxColliderShape._tempMatrix;\n const invM = LiteBoxColliderShape._tempInvMatrix;\n const p = LiteColliderShape._tempPoint;\n const scale = this._sizeScale;\n const boundingBox = LiteBoxColliderShape._tempBox;\n\n const { _boxMin, _boxMax } = this;\n p.copyFrom(_boxMin);\n p.subtract(shapePosition);\n p.divide(scale);\n boundingBox.min.copyFrom(p);\n p.copyFrom(_boxMax);\n p.subtract(shapePosition);\n p.divide(scale);\n boundingBox.max.copyFrom(p);\n\n Matrix.affineTransformation(scale, rotation, position, m);\n Matrix.invert(m, invM);\n Vector3.transformCoordinate(point, invM, p);\n const min = boundingBox.min;\n const max = boundingBox.max;\n p.x = Math.max(min.x, Math.min(p.x, max.x));\n p.y = Math.max(min.y, Math.min(p.y, max.y));\n p.z = Math.max(min.z, Math.min(p.z, max.z));\n Vector3.transformCoordinate(p, m, p);\n\n const res = LiteColliderShape._tempVector4;\n if (Vector3.equals(p, point)) {\n res.set(point.x, point.y, point.z, 0);\n } else {\n res.set(p.x, p.y, p.z, Vector3.distanceSquared(p, point));\n }\n\n return res;\n }\n\n /**\n * @internal\n */\n _raycast(ray: Ray, hit: LiteHitResult): boolean {\n const localRay = this._getLocalRay(ray);\n const sizeScale = this._sizeScale;\n const halfSize = this._halfSize;\n const boundingBox = LiteBoxColliderShape._tempBox;\n boundingBox.min.set(-halfSize.x * sizeScale.x, -halfSize.y * sizeScale.y, -halfSize.z * sizeScale.z);\n boundingBox.max.set(halfSize.x * sizeScale.x, halfSize.y * sizeScale.y, halfSize.z * sizeScale.z);\n const rayDistance = localRay.intersectBox(boundingBox);\n if (rayDistance !== -1) {\n this._updateHitResult(localRay, rayDistance, hit, ray.origin);\n return true;\n } else {\n return false;\n }\n }\n\n private _setBondingBox(): void {\n const { position } = this._transform;\n const scale = this._sizeScale;\n const halfSize = this._halfSize;\n\n this._boxMin.set(\n -halfSize.x * scale.x + position.x,\n -halfSize.y * scale.y + position.y,\n -halfSize.z * scale.z + position.z\n );\n this._boxMax.set(\n halfSize.x * scale.x + position.x,\n halfSize.y * scale.y + position.y,\n halfSize.z * scale.z + position.z\n );\n }\n}\n","import { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { LiteColliderShape } from \"./LiteColliderShape\";\nimport { BoundingSphere, Ray, Vector3, Vector4 } from \"@galacean/engine\";\nimport { LiteHitResult } from \"../LiteHitResult\";\nimport { LitePhysicsMaterial } from \"../LitePhysicsMaterial\";\n\n/**\n * Sphere collider shape in Lite.\n */\nexport class LiteSphereColliderShape extends LiteColliderShape implements ISphereColliderShape {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n\n private _radius: number = 1;\n private _maxScale: number = 1;\n\n get worldRadius(): number {\n return this._radius * this._maxScale;\n }\n\n /**\n * Init sphere shape.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Size of SphereCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, material: LitePhysicsMaterial) {\n super();\n this._radius = radius;\n this._id = uniqueID;\n }\n\n /**\n * {@inheritDoc ISphereColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n }\n\n /**\n * {@inheritDoc IColliderShape.pointDistance }\n */\n override pointDistance(point: Vector3): Vector4 {\n const position = LiteColliderShape._tempPos;\n const worldRadius = this.worldRadius;\n this._transform.worldMatrix.decompose(position, LiteColliderShape._tempRot, LiteColliderShape._tempScale);\n const p = LiteColliderShape._tempPoint;\n Vector3.subtract(point, position, p);\n const distanceFromCenter = p.lengthSquared();\n const direction = p.normalize();\n\n Vector3.scale(direction, worldRadius, p);\n p.add(position);\n\n const res = LiteColliderShape._tempVector4;\n const distanceSquared = Vector3.distanceSquared(p, point);\n\n if (distanceFromCenter <= worldRadius * worldRadius) {\n res.set(point.x, point.y, point.z, 0);\n } else {\n res.set(p.x, p.y, p.z, distanceSquared);\n }\n\n return res;\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 {\n BoundingBox,\n BoundingSphere,\n CollisionUtil,\n DisorderedArray,\n Quaternion,\n Ray,\n Vector3\n} from \"@galacean/engine\";\nimport { ICharacterController, ICollision, IPhysicsScene } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LiteHitResult } from \"./LiteHitResult\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteColliderShape } from \"./shape/LiteColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\nimport { LitePhysics } from \"./LitePhysics\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class LitePhysicsScene implements IPhysicsScene {\n private static _tempSphere: BoundingSphere = new BoundingSphere();\n private static _tempBox: BoundingBox = new BoundingBox();\n private static _currentHit: LiteHitResult = new LiteHitResult();\n private static _hitResult: LiteHitResult = new LiteHitResult();\n\n private readonly _onContactEnter?: (collision: ICollision) => void;\n private readonly _onContactExit?: (collision: ICollision) => void;\n private readonly _onContactStay?: (collision: ICollision) => 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 _staticColliders: LiteStaticCollider[] = [];\n private _dynamicColliders: LiteDynamicCollider[] = [];\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 private _physics: LitePhysics;\n\n constructor(\n physics: LitePhysics,\n onContactEnter?: (collision: ICollision) => void,\n onContactExit?: (collision: ICollision) => void,\n onContactStay?: (collision: ICollision) => 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._physics = physics;\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 overlapBox(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n onOverlap: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number) => void\n ): boolean {\n throw new Error(\"Method not implemented.\");\n }\n overlapSphere(\n center: Vector3,\n radius: number,\n onOverlap: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number) => void\n ): boolean {\n throw new Error(\"Method not implemented.\");\n }\n overlapCapsule(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n onOverlap: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number) => void\n ): boolean {\n throw new Error(\"Method not implemented.\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.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 IPhysicsScene.addCollider }\n */\n addCollider(actor: LiteCollider): void {\n actor._scene = this;\n const colliders = actor._isStaticCollider ? this._staticColliders : this._dynamicColliders;\n colliders.push(actor);\n const shapes = actor._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._addColliderShape(shapes[i]);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCollider }\n */\n removeCollider(collider: LiteCollider): void {\n collider._scene = null;\n const colliders = collider._isStaticCollider ? this._staticColliders : this._dynamicColliders;\n const index = colliders.indexOf(collider);\n index > -1 && colliders.splice(index, 1);\n const shapes = collider._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._removeColliderShape(shapes[i]);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.update }\n */\n update(deltaTime: number): void {\n const dynamicColliders = this._dynamicColliders;\n for (let i = 0, len = dynamicColliders.length; i < len; i++) {\n const collider = dynamicColliders[i];\n this._collisionDetection(collider, this._staticColliders);\n this._collisionDetection(collider, dynamicColliders);\n }\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsScene.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 if (!hit) {\n return (\n this._raycast(ray, distance, onRaycast, this._staticColliders, hit) ||\n this._raycast(ray, distance, onRaycast, this._dynamicColliders, hit)\n );\n } else {\n const raycastStaticRes = this._raycast(ray, distance, onRaycast, this._staticColliders, hit);\n\n if (raycastStaticRes) {\n distance = LitePhysicsScene._currentHit.distance;\n }\n\n const raycastDynamicRes = this._raycast(ray, distance, onRaycast, this._dynamicColliders, hit);\n const isHit = raycastStaticRes || raycastDynamicRes;\n const hitResult = LitePhysicsScene._hitResult;\n\n if (!isHit) {\n hitResult.shapeID = -1;\n hitResult.distance = 0;\n hitResult.point.set(0, 0, 0);\n hitResult.normal.set(0, 0, 0);\n } else {\n hit(hitResult.shapeID, hitResult.distance, hitResult.point, hitResult.normal);\n }\n return isHit;\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.addCharacterController }\n */\n addCharacterController(characterController: ICharacterController): void {\n throw new Error(\"Physics-lite doesn't support addCharacterController. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCharacterController }\n */\n removeCharacterController(characterController: ICharacterController): void {\n throw new Error(\"Physics-lite doesn't support removeCharacterController. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.boxCast }\n */\n boxCast(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n throw new Error(\"Physics-lite doesn't support boxCast. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.sphereCast }\n */\n sphereCast(\n center: Vector3,\n radius: number,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n throw new Error(\"Physics-lite doesn't support sphereCast. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.capsuleCast }\n */\n capsuleCast(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n throw new Error(\"Physics-lite doesn't support capsuleCast. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapBoxAll }\n */\n overlapBoxAll(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n onOverlap: (obj: number) => boolean\n ): number[] {\n throw new Error(\"Physics-lite doesn't support overlapBoxAll. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapSphereAll }\n */\n overlapSphereAll(center: Vector3, radius: number, onOverlap: (obj: number) => boolean): number[] {\n throw new Error(\"Physics-lite doesn't support overlapSphereAll. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapCapsuleAll }\n */\n overlapCapsuleAll(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n onOverlap: (obj: number) => boolean\n ): number[] {\n throw new Error(\"Physics-lite doesn't support overlapCapsuleAll. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysicsScene.destroy }\n */\n destroy(): void {}\n\n /**\n * @internal\n */\n _addColliderShape(colliderShape: LiteColliderShape): void {\n this._eventMap[colliderShape._id] = {};\n }\n\n /**\n * @internal\n */\n _removeColliderShape(colliderShape: LiteColliderShape): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents, _eventMap: eventMap } = this;\n const { _id: id } = colliderShape;\n currentEvents.forEach((event, i) => {\n if (event.index1 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n } else if (event.index2 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n // If the shape is big index, should clear from the small index shape subMap\n eventMap[event.index1][id] = undefined;\n }\n });\n delete eventMap[id];\n }\n\n /**\n * 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(myCollider: LiteCollider, colliders: LiteCollider[]): void {\n const myColliderShapes = myCollider._shapes;\n for (let i = 0, len = myColliderShapes.length; i < len; i++) {\n const myShape = myColliderShapes[i];\n if (myShape instanceof LiteBoxColliderShape) {\n LitePhysicsScene._updateWorldBox(myShape, this._box);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const collider = colliders[j];\n const colliderShape = collider._shapes;\n\n // Skip collision check if layers can't collide\n if (!this._checkColliderCollide(collider, myCollider)) {\n continue;\n }\n\n for (let k = 0, len = colliderShape.length; k < len; k++) {\n const shape = colliderShape[k];\n const index1 = shape._id;\n const index2 = myShape._id;\n const event = index1 < index2 ? this._eventMap[index1][index2] : this._eventMap[index2][index1];\n if (event !== undefined && !event.alreadyInvoked) {\n continue;\n }\n if (shape != myShape && this._boxCollision(shape)) {\n if (event === undefined) {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n event.alreadyInvoked = false;\n this._currentEvents.add(event);\n } else if (event.state === TriggerEventState.Enter) {\n event.state = TriggerEventState.Stay;\n event.alreadyInvoked = false;\n } else if (event.state === TriggerEventState.Stay) {\n event.alreadyInvoked = false;\n }\n }\n }\n }\n } else if (myShape instanceof LiteSphereColliderShape) {\n LitePhysicsScene._upWorldSphere(myShape, this._sphere);\n for (let j = 0, len = colliders.length; j < len; j++) {\n const collider = colliders[j];\n const colliderShape = collider._shapes;\n\n // Skip collision check if layers can't collide\n if (!this._checkColliderCollide(collider, myCollider)) {\n continue;\n }\n\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 currentEvents.forEach((event, 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 currentEvents.deleteByIndex(i);\n this._onTriggerExit(event.index1, event.index2);\n eventPool.push(event);\n }\n });\n }\n\n private _boxCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsBoxAndBox(box, this._box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndBox(sphere, this._box);\n }\n return false;\n }\n\n private _sphereCollision(other: LiteColliderShape): boolean {\n if (other instanceof LiteBoxColliderShape) {\n const box = LitePhysicsScene._tempBox;\n LitePhysicsScene._updateWorldBox(other, box);\n return CollisionUtil.intersectsSphereAndBox(this._sphere, box);\n } else if (other instanceof LiteSphereColliderShape) {\n const sphere = LitePhysicsScene._tempSphere;\n LitePhysicsScene._upWorldSphere(other, sphere);\n return CollisionUtil.intersectsSphereAndSphere(sphere, this._sphere);\n }\n return false;\n }\n\n private _raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n colliders: LiteCollider[],\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n let isHit = false;\n const curHit = LitePhysicsScene._currentHit;\n for (let i = 0, len = colliders.length; i < len; i++) {\n if (colliders[i]._raycast(ray, onRaycast, curHit) && curHit.distance < distance) {\n if (hit) {\n isHit = true;\n const hitResult = LitePhysicsScene._hitResult;\n hitResult.normal.copyFrom(curHit.normal);\n hitResult.point.copyFrom(curHit.point);\n hitResult.distance = distance = curHit.distance;\n hitResult.shapeID = curHit.shapeID;\n } else {\n return true;\n }\n }\n }\n\n return isHit;\n }\n\n private _checkColliderCollide(collider1: LiteCollider, collider2: LiteCollider): boolean {\n const group1 = collider1._collisionLayer;\n const group2 = collider2._collisionLayer;\n\n if (group1 === group2) {\n return true;\n }\n\n return this._physics.getColliderLayerCollision(group1, group2);\n }\n}\n\n/**\n * Physics state\n */\nenum TriggerEventState {\n Enter,\n Stay,\n Exit\n}\n\n/**\n * Trigger event to store interactive object ids and state.\n */\nclass TriggerEvent {\n state: TriggerEventState;\n index1: number;\n index2: number;\n alreadyInvoked: boolean = false;\n\n constructor(index1: number, index2: number) {\n this.index1 = index1;\n this.index2 = index2;\n }\n}\n","import { IStaticCollider } from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { LitePhysics } from \"./LitePhysics\";\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 /** @internal */\n readonly _isStaticCollider: boolean = true;\n /**\n * Initialize static actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(litePhysics: LitePhysics, position: Vector3, rotation: Quaternion) {\n super(litePhysics);\n this._transform.setPosition(position.x, position.y, position.z);\n this._transform.setRotationQuaternion(rotation.x, rotation.y, rotation.z, rotation.w);\n }\n}\n","import { Quaternion, Vector3, Layer } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n ICollider,\n ICollision,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { LiteCollider } from \"./LiteCollider\";\nimport { LiteDynamicCollider } from \"./LiteDynamicCollider\";\nimport { LitePhysicsMaterial } from \"./LitePhysicsMaterial\";\nimport { LitePhysicsScene } from \"./LitePhysicsScene\";\nimport { LiteStaticCollider } from \"./LiteStaticCollider\";\nimport { LiteBoxColliderShape } from \"./shape/LiteBoxColliderShape\";\nimport { LiteSphereColliderShape } from \"./shape/LiteSphereColliderShape\";\nimport { LitePhysicsManager } from \"./LitePhysicsManager\";\n\nexport class LitePhysics implements IPhysics {\n private _layerCollisionMatrix: boolean[] = [];\n\n /**\n * {@inheritDoc IPhysics.initialize }\n */\n initialize(): Promise<void> {\n return Promise.resolve();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n createPhysicsManager(): IPhysicsManager {\n return null;\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsScene }\n */\n createPhysicsScene(\n physicsManager: LitePhysicsManager,\n onContactBegin?: (collision: ICollision) => void,\n onContactEnd?: (collision: ICollision) => void,\n onContactPersist?: (collision: ICollision) => void,\n onTriggerBegin?: (obj1: number, obj2: number) => void,\n onTriggerEnd?: (obj1: number, obj2: number) => void,\n onTriggerPersist?: (obj1: number, obj2: number) => void\n ): LitePhysicsScene {\n return new LitePhysicsScene(\n this,\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(this, position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new LiteDynamicCollider(this, 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 new Error(\"Physics-lite doesn'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 new Error(\"Physics-lite doesn't support CapsuleColliderShape. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n createFixedJoint(collider: LiteCollider): IFixedJoint {\n throw new Error(\"Physics-lite doesn't support FixedJoint. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n createHingeJoint(collider: LiteCollider): IHingeJoint {\n throw new Error(\"Physics-lite doesn't support HingeJoint. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n createSpringJoint(collider: LiteCollider): ISpringJoint {\n throw new Error(\"Physics-lite doesn't support SpringJoint. Use Physics-PhysX instead!\");\n }\n\n /**\n * {@inheritDoc IPhysics.setColliderLayer }\n */\n setColliderLayer(collider: LiteCollider, layer: Layer): void {\n collider._collisionLayer = layer;\n }\n\n /**\n * {@inheritDoc IPhysics.getColliderLayerCollision }\n */\n getColliderLayerCollision(layer1: number, layer2: number): boolean {\n const index = this._getColliderLayerIndex(layer1, layer2);\n if (index > -1) {\n return this._layerCollisionMatrix[index] ?? true;\n }\n // If either layer is Layer.Nothing, they cant collide\n return false;\n }\n\n /**\n * {@inheritDoc IPhysics.setColliderLayerCollision }\n */\n setColliderLayerCollision(layer1: number, layer2: number, collide: boolean): void {\n const index = this._getColliderLayerIndex(layer1, layer2);\n if (index > -1) {\n this._layerCollisionMatrix[index] = collide;\n }\n }\n\n /**\n * {@inheritDoc IPhysics.destroy }\n */\n destroy(): void {}\n\n private _getColliderLayerIndex(layer1: number, layer2: number): number {\n if (layer1 === 32 || layer2 === 32) {\n return -1;\n }\n\n const min = Math.min(layer1, layer2);\n const max = Math.max(layer1, layer2);\n\n // Calculate a unique index for the layer pair using the triangular number formula\n // This ensures that each layer combination maps to a unique index in the collision matrix\n return (max * (max + 1)) / 2 + min;\n }\n}\n","export { LitePhysics } from \"./LitePhysics\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean Engine Physics Lite Version: ${version}`);\n"],"names":["LiteUpdateFlag","_flags","flag","push","destroy","Utils","removeFromArray","LiteUpdateFlagManager","_updateFlags","register","distribute","updateFlags","i","length","LiteColliderShape","_position","Vector3","_worldScale","_transform","LiteTransform","_invModelMatrix","Matrix","_rotation","owner","_inverseWorldMatFlag","registerWorldChangeFlag","setRotation","rotation","rotationInRadians","set","MathUtil","degreeToRadian","x","y","z","Quaternion","rotationEuler","rotationQuaternion","setPosition","position","copyFrom","_setLocalPose","setWorldScale","scale","setContactOffset","offset","console","log","setMaterial","material","setUniqueID","id","_id","setIsTrigger","value","_updateHitResult","ray","rayDistance","outHit","origin","isWorldRay","hitPoint","_tempPoint","getPoint","transformCoordinate","worldMatrix","distance","point","shapeID","_getLocalRay","worldToLocal","_getInvModelMatrix","outRay","_ray","transformNormal","direction","normalize","invert","shapePosition","multiply","_tempPos","_tempRot","_tempScale","_tempVector4","Vector4","Ray","_rotationQuaternion","_scale","_worldRotationQuaternion","_localMatrix","_worldMatrix","_updateFlagManager","_isParentDirty","_parentTransformCache","_dirtyFlag","setRotationQuaternion","w","setScale","_updateWorldPositionFlag","_isContainDirtyFlags","_worldAssociatedChange","_owner","LiteCollider","shapes","_shapes","n","_updateWorldRotationFlag","_updateWorldScaleFlag","_updateAllWorldFlag","_getParentTransform","parentCache","parent","_collider","targetDirtyFlags","_isContainDirtyFlag","type","_setDirtyFlagTrue","_setDirtyFlagFalse","TransformFlag","worldRotationQuaternion","_tempQuat0","localMatrix","affineTransformation","decompose","_tempMat42","litePhysics","_litePhysics","addShape","shape","oldCollider","removeShape","_scene","_addColliderShape","index","indexOf","splice","_removeColliderShape","setWorldTransform","getWorldTransform","outPosition","outRotation","setCollisionLayer","collisionLayer","setColliderLayer","_raycast","onRaycast","hit","Number","MAX_VALUE","LiteDynamicCollider","_isStaticCollider","getInertiaTensor","out","Logger","error","getCenterOfMass","setMassAndUpdateInertia","mass","addForce","force","addTorque","torque","move","positionOrRotation","sleep","isSleeping","setAngularDamping","getAngularVelocity","setAngularVelocity","setCenterOfMass","setCollisionDetectionMode","setConstraints","flags","setInertiaTensor","setUseGravity","setIsKinematic","setLinearDamping","getLinearVelocity","setLinearVelocity","setMass","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","wakeUp","LitePhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","setBounciness","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","LiteHitResult","normal","LiteBoxColliderShape","uniqueID","size","_halfSize","_sizeScale","_boxMin","_boxMax","_setBondingBox","Math","abs","setSize","pointDistance","m","_tempMatrix","invM","_tempInvMatrix","p","boundingBox","_tempBox","subtract","divide","min","max","res","equals","distanceSquared","localRay","sizeScale","halfSize","intersectBox","BoundingBox","LiteSphereColliderShape","radius","_radius","_maxScale","setRadius","worldRadius","distanceFromCenter","lengthSquared","add","boundingSphere","_tempSphere","center","intersectSphere","BoundingSphere","LitePhysicsScene","physics","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_staticColliders","_dynamicColliders","_sphere","_box","_currentEvents","DisorderedArray","_eventMap","_eventPool","_physics","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","overlapBox","orientation","halfExtents","onOverlap","outHitResult","Error","overlapSphere","overlapCapsule","height","setGravity","addCollider","actor","colliders","removeCollider","collider","update","deltaTime","dynamicColliders","len","_collisionDetection","_fireEvent","raycast","raycastStaticRes","_currentHit","raycastDynamicRes","isHit","hitResult","_hitResult","addCharacterController","characterController","removeCharacterController","boxCast","onSweep","sphereCast","capsuleCast","overlapBoxAll","overlapSphereAll","overlapCapsuleAll","colliderShape","eventPool","currentEvents","eventMap","forEach","event","index1","deleteByIndex","index2","undefined","_getTrigger","pop","TriggerEvent","myCollider","myColliderShapes","myShape","_updateWorldBox","j","_checkColliderCollide","k","alreadyInvoked","_boxCollision","state","_upWorldSphere","_sphereCollision","other","box","CollisionUtil","intersectsBoxAndBox","sphere","intersectsSphereAndBox","intersectsSphereAndSphere","curHit","collider1","collider2","group1","_collisionLayer","group2","getColliderLayerCollision","boxCollider","mat","transform","sphereCollider","LiteStaticCollider","LitePhysics","_layerCollisionMatrix","initialize","Promise","resolve","createPhysicsManager","createPhysicsScene","physicsManager","onContactBegin","onContactEnd","onContactPersist","onTriggerBegin","onTriggerEnd","onTriggerPersist","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createFixedJoint","createHingeJoint","createSpringJoint","layer","layer1","layer2","_getColliderLayerIndex","setColliderLayerCollision","collide","version"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/engine-physics-lite",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.10",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public",
|
|
6
6
|
"registry": "https://registry.npmjs.org"
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
"types/**/*"
|
|
26
26
|
],
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@galacean/engine-design": "1.6.
|
|
29
|
-
"@galacean/engine": "
|
|
28
|
+
"@galacean/engine-design": "1.6.10",
|
|
29
|
+
"@galacean/engine": "1.6.10"
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
|
-
"@galacean/engine": "
|
|
32
|
+
"@galacean/engine": "1.6.10"
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
35
|
"b:types": "tsc"
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ICollider } from "@galacean/engine-design";
|
|
2
|
+
import { Layer, Quaternion, Vector3 } from "@galacean/engine";
|
|
3
|
+
import { LiteColliderShape } from "./shape/LiteColliderShape";
|
|
4
|
+
import { LitePhysics } from "./LitePhysics";
|
|
5
|
+
/**
|
|
6
|
+
* Abstract class of physical collider.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class LiteCollider implements ICollider {
|
|
9
|
+
private _litePhysics;
|
|
10
|
+
protected constructor(litePhysics: LitePhysics);
|
|
11
|
+
/**
|
|
12
|
+
* {@inheritDoc ICollider.addShape }
|
|
13
|
+
*/
|
|
14
|
+
addShape(shape: LiteColliderShape): void;
|
|
15
|
+
/**
|
|
16
|
+
* {@inheritDoc ICollider.removeShape }
|
|
17
|
+
*/
|
|
18
|
+
removeShape(shape: LiteColliderShape): void;
|
|
19
|
+
/**
|
|
20
|
+
* {@inheritDoc ICollider.setWorldTransform }
|
|
21
|
+
*/
|
|
22
|
+
setWorldTransform(position: Vector3, rotation: Quaternion): void;
|
|
23
|
+
/**
|
|
24
|
+
* {@inheritDoc ICollider.getWorldTransform }
|
|
25
|
+
*/
|
|
26
|
+
getWorldTransform(outPosition: Vector3, outRotation: Quaternion): void;
|
|
27
|
+
/**
|
|
28
|
+
* {@inheritDoc ICollider.setCollisionLayer }
|
|
29
|
+
*/
|
|
30
|
+
setCollisionLayer(collisionLayer: Layer): void;
|
|
31
|
+
/**
|
|
32
|
+
* {@inheritDoc ICollider.destroy }
|
|
33
|
+
*/
|
|
34
|
+
destroy(): void;
|
|
35
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { LiteCollider } from "./LiteCollider";
|
|
2
|
+
import { IDynamicCollider } from "@galacean/engine-design";
|
|
3
|
+
import { Quaternion, Vector3 } from "@galacean/engine";
|
|
4
|
+
import { LitePhysics } from "./LitePhysics";
|
|
5
|
+
/**
|
|
6
|
+
* A dynamic collider can act with self-defined movement or physical force
|
|
7
|
+
*/
|
|
8
|
+
export declare class LiteDynamicCollider extends LiteCollider implements IDynamicCollider {
|
|
9
|
+
/**
|
|
10
|
+
* Initialize dynamic actor.
|
|
11
|
+
* @param position - The global position
|
|
12
|
+
* @param rotation - The global rotation
|
|
13
|
+
*/
|
|
14
|
+
constructor(litePhysics: LitePhysics, position: Vector3, rotation: Quaternion);
|
|
15
|
+
/**
|
|
16
|
+
* {@inheritDoc IDynamicCollider.getInertiaTensor }
|
|
17
|
+
*/
|
|
18
|
+
getInertiaTensor(out: Vector3): Vector3;
|
|
19
|
+
/**
|
|
20
|
+
* {@inheritDoc IDynamicCollider.getCenterOfMass }
|
|
21
|
+
*/
|
|
22
|
+
getCenterOfMass(out: Vector3): Vector3;
|
|
23
|
+
/**
|
|
24
|
+
* {@inheritDoc IDynamicCollider.setMassAndUpdateInertia }
|
|
25
|
+
*/
|
|
26
|
+
setMassAndUpdateInertia(mass: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* {@inheritDoc IDynamicCollider.addForce }
|
|
29
|
+
*/
|
|
30
|
+
addForce(force: Vector3): void;
|
|
31
|
+
/**
|
|
32
|
+
* {@inheritDoc IDynamicCollider.addTorque }
|
|
33
|
+
*/
|
|
34
|
+
addTorque(torque: Vector3): void;
|
|
35
|
+
/**
|
|
36
|
+
* {@inheritDoc IDynamicCollider.move }
|
|
37
|
+
*/
|
|
38
|
+
move(positionOrRotation: Vector3 | Quaternion, rotation?: Quaternion): void;
|
|
39
|
+
/**
|
|
40
|
+
* {@inheritDoc IDynamicCollider.sleep }
|
|
41
|
+
*/
|
|
42
|
+
sleep(): void;
|
|
43
|
+
/**
|
|
44
|
+
* {@inheritDoc IDynamicCollider.isSleeping }
|
|
45
|
+
*/
|
|
46
|
+
isSleeping(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* {@inheritDoc IDynamicCollider.setAngularDamping }
|
|
49
|
+
*/
|
|
50
|
+
setAngularDamping(value: number): void;
|
|
51
|
+
/**
|
|
52
|
+
* {@inheritDoc IDynamicCollider.getAngularVelocity }
|
|
53
|
+
*/
|
|
54
|
+
getAngularVelocity(out: Vector3): Vector3;
|
|
55
|
+
/**
|
|
56
|
+
* {@inheritDoc IDynamicCollider.setAngularVelocity }
|
|
57
|
+
*/
|
|
58
|
+
setAngularVelocity(value: Vector3): void;
|
|
59
|
+
/**
|
|
60
|
+
* {@inheritDoc IDynamicCollider.setCenterOfMass }
|
|
61
|
+
*/
|
|
62
|
+
setCenterOfMass(value: Vector3): void;
|
|
63
|
+
/**
|
|
64
|
+
* {@inheritDoc IDynamicCollider.setCollisionDetectionMode }
|
|
65
|
+
*/
|
|
66
|
+
setCollisionDetectionMode(value: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* {@inheritDoc IDynamicCollider.setConstraints }
|
|
69
|
+
*/
|
|
70
|
+
setConstraints(flags: number): void;
|
|
71
|
+
/**
|
|
72
|
+
* {@inheritDoc IDynamicCollider.setInertiaTensor }
|
|
73
|
+
*/
|
|
74
|
+
setInertiaTensor(value: Vector3): void;
|
|
75
|
+
/**
|
|
76
|
+
* {@inheritDoc IDynamicCollider.setUseGravity }
|
|
77
|
+
*/
|
|
78
|
+
setUseGravity(value: boolean): void;
|
|
79
|
+
/**
|
|
80
|
+
* {@inheritDoc IDynamicCollider.setIsKinematic }
|
|
81
|
+
*/
|
|
82
|
+
setIsKinematic(value: boolean): void;
|
|
83
|
+
/**
|
|
84
|
+
* {@inheritDoc IDynamicCollider.setLinearDamping }
|
|
85
|
+
*/
|
|
86
|
+
setLinearDamping(value: number): void;
|
|
87
|
+
/**
|
|
88
|
+
* {@inheritDoc IDynamicCollider.getLinearVelocity }
|
|
89
|
+
*/
|
|
90
|
+
getLinearVelocity(out: Vector3): Vector3;
|
|
91
|
+
/**
|
|
92
|
+
* {@inheritDoc IDynamicCollider.setLinearVelocity }
|
|
93
|
+
*/
|
|
94
|
+
setLinearVelocity(value: Vector3): void;
|
|
95
|
+
/**
|
|
96
|
+
* {@inheritDoc IDynamicCollider.setMass }
|
|
97
|
+
*/
|
|
98
|
+
setMass(value: number): void;
|
|
99
|
+
/**
|
|
100
|
+
* {@inheritDoc IDynamicCollider.setMaxAngularVelocity }
|
|
101
|
+
*/
|
|
102
|
+
setMaxAngularVelocity(value: number): void;
|
|
103
|
+
/**
|
|
104
|
+
* {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }
|
|
105
|
+
*/
|
|
106
|
+
setMaxDepenetrationVelocity(value: number): void;
|
|
107
|
+
/**
|
|
108
|
+
* {@inheritDoc IDynamicCollider.setSleepThreshold }
|
|
109
|
+
*/
|
|
110
|
+
setSleepThreshold(value: number): void;
|
|
111
|
+
/**
|
|
112
|
+
* {@inheritDoc IDynamicCollider.setSolverIterations }
|
|
113
|
+
*/
|
|
114
|
+
setSolverIterations(value: number): void;
|
|
115
|
+
/**
|
|
116
|
+
* {@inheritDoc IDynamicCollider.wakeUp }
|
|
117
|
+
*/
|
|
118
|
+
wakeUp(): void;
|
|
119
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Quaternion, Vector3, Layer } from "@galacean/engine";
|
|
2
|
+
import { IBoxColliderShape, ICapsuleColliderShape, ICharacterController, ICollision, IDynamicCollider, IFixedJoint, IHingeJoint, IPhysics, IPhysicsManager, IPhysicsMaterial, IPlaneColliderShape, ISphereColliderShape, ISpringJoint, IStaticCollider } from "@galacean/engine-design";
|
|
3
|
+
import { LiteCollider } from "./LiteCollider";
|
|
4
|
+
import { LitePhysicsMaterial } from "./LitePhysicsMaterial";
|
|
5
|
+
import { LitePhysicsScene } from "./LitePhysicsScene";
|
|
6
|
+
import { LitePhysicsManager } from "./LitePhysicsManager";
|
|
7
|
+
export declare class LitePhysics implements IPhysics {
|
|
8
|
+
private _layerCollisionMatrix;
|
|
9
|
+
/**
|
|
10
|
+
* {@inheritDoc IPhysics.initialize }
|
|
11
|
+
*/
|
|
12
|
+
initialize(): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* {@inheritDoc IPhysics.createPhysicsManager }
|
|
15
|
+
*/
|
|
16
|
+
createPhysicsManager(): IPhysicsManager;
|
|
17
|
+
/**
|
|
18
|
+
* {@inheritDoc IPhysics.createPhysicsScene }
|
|
19
|
+
*/
|
|
20
|
+
createPhysicsScene(physicsManager: LitePhysicsManager, onContactBegin?: (collision: ICollision) => void, onContactEnd?: (collision: ICollision) => void, onContactPersist?: (collision: ICollision) => void, onTriggerBegin?: (obj1: number, obj2: number) => void, onTriggerEnd?: (obj1: number, obj2: number) => void, onTriggerPersist?: (obj1: number, obj2: number) => void): LitePhysicsScene;
|
|
21
|
+
/**
|
|
22
|
+
* {@inheritDoc IPhysics.createStaticCollider }
|
|
23
|
+
*/
|
|
24
|
+
createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider;
|
|
25
|
+
/**
|
|
26
|
+
* {@inheritDoc IPhysics.createDynamicCollider }
|
|
27
|
+
*/
|
|
28
|
+
createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider;
|
|
29
|
+
/**
|
|
30
|
+
* {@inheritDoc IPhysics.createCharacterController }
|
|
31
|
+
*/
|
|
32
|
+
createCharacterController(): ICharacterController;
|
|
33
|
+
/**
|
|
34
|
+
* {@inheritDoc IPhysics.createPhysicsMaterial }
|
|
35
|
+
*/
|
|
36
|
+
createPhysicsMaterial(staticFriction: number, dynamicFriction: number, bounciness: number, frictionCombine: number, bounceCombine: number): IPhysicsMaterial;
|
|
37
|
+
/**
|
|
38
|
+
* {@inheritDoc IPhysics.createBoxColliderShape }
|
|
39
|
+
*/
|
|
40
|
+
createBoxColliderShape(uniqueID: number, size: Vector3, material: LitePhysicsMaterial): IBoxColliderShape;
|
|
41
|
+
/**
|
|
42
|
+
* {@inheritDoc IPhysics.createSphereColliderShape }
|
|
43
|
+
*/
|
|
44
|
+
createSphereColliderShape(uniqueID: number, radius: number, material: LitePhysicsMaterial): ISphereColliderShape;
|
|
45
|
+
/**
|
|
46
|
+
* {@inheritDoc IPhysics.createPlaneColliderShape }
|
|
47
|
+
*/
|
|
48
|
+
createPlaneColliderShape(uniqueID: number, material: LitePhysicsMaterial): IPlaneColliderShape;
|
|
49
|
+
/**
|
|
50
|
+
* {@inheritDoc IPhysics.createCapsuleColliderShape }
|
|
51
|
+
*/
|
|
52
|
+
createCapsuleColliderShape(uniqueID: number, radius: number, height: number, material: LitePhysicsMaterial): ICapsuleColliderShape;
|
|
53
|
+
/**
|
|
54
|
+
* {@inheritDoc IPhysics.createFixedJoint }
|
|
55
|
+
*/
|
|
56
|
+
createFixedJoint(collider: LiteCollider): IFixedJoint;
|
|
57
|
+
/**
|
|
58
|
+
* {@inheritDoc IPhysics.createHingeJoint }
|
|
59
|
+
*/
|
|
60
|
+
createHingeJoint(collider: LiteCollider): IHingeJoint;
|
|
61
|
+
/**
|
|
62
|
+
* {@inheritDoc IPhysics.createSpringJoint }
|
|
63
|
+
*/
|
|
64
|
+
createSpringJoint(collider: LiteCollider): ISpringJoint;
|
|
65
|
+
/**
|
|
66
|
+
* {@inheritDoc IPhysics.setColliderLayer }
|
|
67
|
+
*/
|
|
68
|
+
setColliderLayer(collider: LiteCollider, layer: Layer): void;
|
|
69
|
+
/**
|
|
70
|
+
* {@inheritDoc IPhysics.getColliderLayerCollision }
|
|
71
|
+
*/
|
|
72
|
+
getColliderLayerCollision(layer1: number, layer2: number): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* {@inheritDoc IPhysics.setColliderLayerCollision }
|
|
75
|
+
*/
|
|
76
|
+
setColliderLayerCollision(layer1: number, layer2: number, collide: boolean): void;
|
|
77
|
+
/**
|
|
78
|
+
* {@inheritDoc IPhysics.destroy }
|
|
79
|
+
*/
|
|
80
|
+
destroy(): void;
|
|
81
|
+
private _getColliderLayerIndex;
|
|
82
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { IPhysicsMaterial } from "@galacean/engine-design";
|
|
2
|
+
/**
|
|
3
|
+
* Physics material describes how to handle colliding objects (friction, bounciness).
|
|
4
|
+
*/
|
|
5
|
+
export declare class LitePhysicsMaterial implements IPhysicsMaterial {
|
|
6
|
+
constructor(staticFriction: number, dynamicFriction: number, bounciness: number, frictionCombine: number, bounceCombine: number);
|
|
7
|
+
/**
|
|
8
|
+
* {@inheritDoc IPhysicsMaterial.setBounciness }
|
|
9
|
+
*/
|
|
10
|
+
setBounciness(value: number): void;
|
|
11
|
+
/**
|
|
12
|
+
* {@inheritDoc IPhysicsMaterial.setDynamicFriction }
|
|
13
|
+
*/
|
|
14
|
+
setDynamicFriction(value: number): void;
|
|
15
|
+
/**
|
|
16
|
+
* {@inheritDoc IPhysicsMaterial.setStaticFriction }
|
|
17
|
+
*/
|
|
18
|
+
setStaticFriction(value: number): void;
|
|
19
|
+
/**
|
|
20
|
+
* {@inheritDoc IPhysicsMaterial.setBounceCombine }
|
|
21
|
+
*/
|
|
22
|
+
setBounceCombine(value: number): void;
|
|
23
|
+
/**
|
|
24
|
+
* {@inheritDoc IPhysicsMaterial.setFrictionCombine }
|
|
25
|
+
*/
|
|
26
|
+
setFrictionCombine(value: number): void;
|
|
27
|
+
/**
|
|
28
|
+
* {@inheritDoc IPhysicsMaterial.destroy }
|
|
29
|
+
*/
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|