@galacean/engine-physics-lite 1.0.0-beta.1 → 1.0.0-beta.3
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 +1 -1
- package/dist/miniprogram.js +4 -4
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
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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"}
|
package/dist/miniprogram.js
CHANGED
|
@@ -9475,7 +9475,7 @@ var noise_simplex_2D = "#define GLSLIFY 1\nfloat simplex(vec2 v){const vec4 C=ve
|
|
|
9475
9475
|
var noise_simplex_3D = "#define GLSLIFY 1\nfloat simplex(vec3 v){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);m=m*m;return 42.0*dot(m*m,vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3)));}"; // eslint-disable-line
|
|
9476
9476
|
var noise_simplex_3D_grad = "#define GLSLIFY 1\nfloat simplex(vec3 v,out vec3 gradient){const vec2 C=vec2(1.0/6.0,1.0/3.0);const vec4 D=vec4(0.0,0.5,1.0,2.0);vec3 i=floor(v+dot(v,C.yyy));vec3 x0=v-i+dot(i,C.xxx);vec3 g=step(x0.yzx,x0.xyz);vec3 l=1.0-g;vec3 i1=min(g.xyz,l.zxy);vec3 i2=max(g.xyz,l.zxy);vec3 x1=x0-i1+C.xxx;vec3 x2=x0-i2+C.yyy;vec3 x3=x0-D.yyy;i=mod289(i);vec4 p=permute(permute(permute(i.z+vec4(0.0,i1.z,i2.z,1.0))+i.y+vec4(0.0,i1.y,i2.y,1.0))+i.x+vec4(0.0,i1.x,i2.x,1.0));float n_=0.142857142857;vec3 ns=n_*D.wyz-D.xzx;vec4 j=p-49.0*floor(p*ns.z*ns.z);vec4 x_=floor(j*ns.z);vec4 y_=floor(j-7.0*x_);vec4 x=x_*ns.x+ns.yyyy;vec4 y=y_*ns.x+ns.yyyy;vec4 h=1.0-abs(x)-abs(y);vec4 b0=vec4(x.xy,y.xy);vec4 b1=vec4(x.zw,y.zw);vec4 s0=floor(b0)*2.0+1.0;vec4 s1=floor(b1)*2.0+1.0;vec4 sh=-step(h,vec4(0.0));vec4 a0=b0.xzyw+s0.xzyw*sh.xxyy;vec4 a1=b1.xzyw+s1.xzyw*sh.zzww;vec3 p0=vec3(a0.xy,h.x);vec3 p1=vec3(a0.zw,h.y);vec3 p2=vec3(a1.xy,h.z);vec3 p3=vec3(a1.zw,h.w);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;vec4 m=max(0.6-vec4(dot(x0,x0),dot(x1,x1),dot(x2,x2),dot(x3,x3)),0.0);vec4 m2=m*m;vec4 m4=m2*m2;vec4 pdotx=vec4(dot(p0,x0),dot(p1,x1),dot(p2,x2),dot(p3,x3));vec4 temp=m2*m*pdotx;gradient=-8.0*(temp.x*x0+temp.y*x1+temp.z*x2+temp.w*x3);gradient+=m4.x*p0+m4.y*p1+m4.z*p2+m4.w*p3;gradient*=42.0;return 42.0*dot(m4,pdotx);}"; // eslint-disable-line
|
|
9477
9477
|
var noise_simplex_4D = "#define GLSLIFY 1\nvec4 grad4(float j,vec4 ip){const vec4 ones=vec4(1.0,1.0,1.0,-1.0);vec4 p,s;p.xyz=floor(fract(vec3(j)*ip.xyz)*7.0)*ip.z-1.0;p.w=1.5-dot(abs(p.xyz),ones.xyz);s=vec4(lessThan(p,vec4(0.0)));p.xyz=p.xyz+(s.xyz*2.0-1.0)*s.www;return p;}\n#define F4 0.309016994374947451\nfloat simplex(vec4 v){const vec4 C=vec4(0.138196601125011,0.276393202250021,0.414589803375032,-0.447213595499958);vec4 i=floor(v+dot(v,vec4(F4)));vec4 x0=v-i+dot(i,C.xxxx);vec4 i0;vec3 isX=step(x0.yzw,x0.xxx);vec3 isYZ=step(x0.zww,x0.yyz);i0.x=isX.x+isX.y+isX.z;i0.yzw=1.0-isX;i0.y+=isYZ.x+isYZ.y;i0.zw+=1.0-isYZ.xy;i0.z+=isYZ.z;i0.w+=1.0-isYZ.z;vec4 i3=clamp(i0,0.0,1.0);vec4 i2=clamp(i0-1.0,0.0,1.0);vec4 i1=clamp(i0-2.0,0.0,1.0);vec4 x1=x0-i1+C.xxxx;vec4 x2=x0-i2+C.yyyy;vec4 x3=x0-i3+C.zzzz;vec4 x4=x0+C.wwww;i=mod289(i);float j0=permute(permute(permute(permute(i.w)+i.z)+i.y)+i.x);vec4 j1=permute(permute(permute(permute(i.w+vec4(i1.w,i2.w,i3.w,1.0))+i.z+vec4(i1.z,i2.z,i3.z,1.0))+i.y+vec4(i1.y,i2.y,i3.y,1.0))+i.x+vec4(i1.x,i2.x,i3.x,1.0));vec4 ip=vec4(1.0/294.0,1.0/49.0,1.0/7.0,0.0);vec4 p0=grad4(j0,ip);vec4 p1=grad4(j1.x,ip);vec4 p2=grad4(j1.y,ip);vec4 p3=grad4(j1.z,ip);vec4 p4=grad4(j1.w,ip);vec4 norm=taylorInvSqrt(vec4(dot(p0,p0),dot(p1,p1),dot(p2,p2),dot(p3,p3)));p0*=norm.x;p1*=norm.y;p2*=norm.z;p3*=norm.w;p4*=taylorInvSqrt(dot(p4,p4));vec3 m0=max(0.6-vec3(dot(x0,x0),dot(x1,x1),dot(x2,x2)),0.0);vec2 m1=max(0.6-vec2(dot(x3,x3),dot(x4,x4)),0.0);m0=m0*m0;m1=m1*m1;return 49.0*(dot(m0*m0,vec3(dot(p0,x0),dot(p1,x1),dot(p2,x2)))+dot(m1*m1,vec2(dot(p3,x3),dot(p4,x4))));}"; // eslint-disable-line
|
|
9478
|
-
var pbr_frag_define = "#define GLSLIFY 1\nuniform float material_AlphaCutoff;uniform vec4 material_BaseColor;uniform float material_Metal;uniform float material_Roughness;uniform vec3 material_PBRSpecularColor;uniform float material_Glossiness;uniform vec3 material_EmissiveColor;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nuniform float material_ClearCoat;uniform float material_ClearCoatRoughness;\n#endif\nuniform float material_NormalIntensity;uniform float material_OcclusionIntensity;uniform float material_OcclusionTextureCoord;\n#ifdef MATERIAL_HAS_BASETEXTURE\nuniform sampler2D material_BaseTexture;\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\nuniform sampler2D material_NormalTexture;\n#endif\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nuniform sampler2D
|
|
9478
|
+
var pbr_frag_define = "#define GLSLIFY 1\nuniform float material_AlphaCutoff;uniform vec4 material_BaseColor;uniform float material_Metal;uniform float material_Roughness;uniform vec3 material_PBRSpecularColor;uniform float material_Glossiness;uniform vec3 material_EmissiveColor;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nuniform float material_ClearCoat;uniform float material_ClearCoatRoughness;\n#endif\nuniform float material_NormalIntensity;uniform float material_OcclusionIntensity;uniform float material_OcclusionTextureCoord;\n#ifdef MATERIAL_HAS_BASETEXTURE\nuniform sampler2D material_BaseTexture;\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\nuniform sampler2D material_NormalTexture;\n#endif\n#ifdef MATERIAL_HAS_EMISSIVETEXTURE\nuniform sampler2D material_EmissiveTexture;\n#endif\n#ifdef MATERIAL_HAS_ROUGHNESS_METALLIC_TEXTURE\nuniform sampler2D material_RoughnessMetallicTexture;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_GLOSSINESS_TEXTURE\nuniform sampler2D material_SpecularGlossinessTexture;\n#endif\n#ifdef MATERIAL_HAS_OCCLUSION_TEXTURE\nuniform sampler2D material_OcclusionTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_TEXTURE\nuniform sampler2D material_ClearCoatTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_ROUGHNESS_TEXTURE\nuniform sampler2D material_ClearCoatRoughnessTexture;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE\nuniform sampler2D material_ClearCoatNormalTexture;\n#endif\nstruct ReflectedLight{vec3 directDiffuse;vec3 directSpecular;vec3 indirectDiffuse;vec3 indirectSpecular;};struct Geometry{vec3 position;vec3 normal;vec3 viewDir;float dotNV;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nvec3 clearCoatNormal;float clearCoatDotNV;\n#endif\n};struct Material{vec3 diffuseColor;float roughness;vec3 specularColor;float opacity;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nfloat clearCoat;float clearCoatRoughness;\n#endif\n};"; // eslint-disable-line
|
|
9479
9479
|
var pbr_helper = "#define GLSLIFY 1\n#include <normal_get>\nfloat computeSpecularOcclusion(float ambientOcclusion,float roughness,float dotNV){return saturate(pow(dotNV+ambientOcclusion,exp2(-16.0*roughness-1.0))-1.0+ambientOcclusion);}float getAARoughnessFactor(vec3 normal){\n#ifdef HAS_DERIVATIVES\nvec3 dxy=max(abs(dFdx(normal)),abs(dFdy(normal)));return 0.04+max(max(dxy.x,dxy.y),dxy.z);\n#else\nreturn 0.04;\n#endif\n}void initGeometry(out Geometry geometry){geometry.position=v_pos;geometry.viewDir=normalize(camera_Position-v_pos);\n#if defined(MATERIAL_HAS_NORMALTEXTURE) || defined(MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE)\nmat3 tbn=getTBN();\n#endif\n#ifdef MATERIAL_HAS_NORMALTEXTURE\ngeometry.normal=getNormalByNormalTexture(tbn,material_NormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.normal=getNormal();\n#endif\ngeometry.dotNV=saturate(dot(geometry.normal,geometry.viewDir));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\n#ifdef MATERIAL_HAS_CLEAR_COAT_NORMAL_TEXTURE\ngeometry.clearCoatNormal=getNormalByNormalTexture(tbn,material_ClearCoatNormalTexture,material_NormalIntensity,v_uv);\n#else\ngeometry.clearCoatNormal=getNormal();\n#endif\ngeometry.clearCoatDotNV=saturate(dot(geometry.clearCoatNormal,geometry.viewDir));\n#endif\n}void initMaterial(out Material material,const in Geometry geometry){vec4 baseColor=material_BaseColor;float metal=material_Metal;float roughness=material_Roughness;vec3 specularColor=material_PBRSpecularColor;float glossiness=material_Glossiness;float alphaCutoff=material_AlphaCutoff;\n#ifdef MATERIAL_HAS_BASETEXTURE\nvec4 baseTextureColor=texture2D(material_BaseTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nbaseTextureColor=gammaToLinear(baseTextureColor);\n#endif\nbaseColor*=baseTextureColor;\n#endif\n#ifdef RENDERER_HAS_VERTEXCOLOR\nbaseColor*=v_color;\n#endif\n#ifdef MATERIAL_IS_ALPHA_CUTOFF\nif(baseColor.a<alphaCutoff){discard;}\n#endif\n#ifdef MATERIAL_HAS_ROUGHNESS_METALLIC_TEXTURE\nvec4 metalRoughMapColor=texture2D(material_RoughnessMetallicTexture,v_uv);roughness*=metalRoughMapColor.g;metal*=metalRoughMapColor.b;\n#endif\n#ifdef MATERIAL_HAS_SPECULAR_GLOSSINESS_TEXTURE\nvec4 specularGlossinessColor=texture2D(material_SpecularGlossinessTexture,v_uv);\n#ifndef ENGINE_IS_COLORSPACE_GAMMA\nspecularGlossinessColor=gammaToLinear(specularGlossinessColor);\n#endif\nspecularColor*=specularGlossinessColor.rgb;glossiness*=specularGlossinessColor.a;\n#endif\n#ifdef IS_METALLIC_WORKFLOW\nmaterial.diffuseColor=baseColor.rgb*(1.0-metal);material.specularColor=mix(vec3(0.04),baseColor.rgb,metal);material.roughness=roughness;\n#else\nfloat specularStrength=max(max(specularColor.r,specularColor.g),specularColor.b);material.diffuseColor=baseColor.rgb*(1.0-specularStrength);material.specularColor=specularColor;material.roughness=1.0-glossiness;\n#endif\nmaterial.roughness=max(material.roughness,getAARoughnessFactor(geometry.normal));\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nmaterial.clearCoat=material_ClearCoat;material.clearCoatRoughness=material_ClearCoatRoughness;\n#ifdef MATERIAL_HAS_CLEAR_COAT_TEXTURE\nmaterial.clearCoat*=texture2D(material_ClearCoatTexture,v_uv).r;\n#endif\n#ifdef MATERIAL_HAS_CLEAR_COAT_ROUGHNESS_TEXTURE\nmaterial.clearCoatRoughness*=texture2D(material_ClearCoatRoughnessTexture,v_uv).g;\n#endif\nmaterial.clearCoat=saturate(material.clearCoat);material.clearCoatRoughness=max(material.clearCoatRoughness,getAARoughnessFactor(geometry.clearCoatNormal));\n#endif\n#ifdef MATERIAL_IS_TRANSPARENT\nmaterial.opacity=baseColor.a;\n#else\nmaterial.opacity=1.0;\n#endif\n}\n#include <brdf>\n#include <direct_irradiance_frag_define>\n#include <ibl_frag_define>\n"; // eslint-disable-line
|
|
9480
9480
|
var brdf = "#define GLSLIFY 1\nfloat F_Schlick(float dotLH){return 0.04+0.96*(pow(1.0-dotLH,5.0));}vec3 F_Schlick(vec3 specularColor,float dotLH){float fresnel=exp2((-5.55473*dotLH-6.98316)*dotLH);return(1.0-specularColor)*fresnel+specularColor;}float G_GGX_SmithCorrelated(float alpha,float dotNL,float dotNV){float a2=pow2(alpha);float gv=dotNL*sqrt(a2+(1.0-a2)*pow2(dotNV));float gl=dotNV*sqrt(a2+(1.0-a2)*pow2(dotNL));return 0.5/max(gv+gl,EPSILON);}float D_GGX(float alpha,float dotNH){float a2=pow2(alpha);float denom=pow2(dotNH)*(a2-1.0)+1.0;return RECIPROCAL_PI*a2/pow2(denom);}vec3 BRDF_Specular_GGX(vec3 incidentDirection,vec3 viewDir,vec3 normal,vec3 specularColor,float roughness){float alpha=pow2(roughness);vec3 halfDir=normalize(incidentDirection+viewDir);float dotNL=saturate(dot(normal,incidentDirection));float dotNV=saturate(dot(normal,viewDir));float dotNH=saturate(dot(normal,halfDir));float dotLH=saturate(dot(incidentDirection,halfDir));vec3 F=F_Schlick(specularColor,dotLH);float G=G_GGX_SmithCorrelated(alpha,dotNL,dotNV);float D=D_GGX(alpha,dotNH);return F*(G*D);}vec3 BRDF_Diffuse_Lambert(vec3 diffuseColor){return RECIPROCAL_PI*diffuseColor;}"; // eslint-disable-line
|
|
9481
9481
|
var direct_irradiance_frag_define = "#define GLSLIFY 1\n#include <ShadowFragmentDeclaration>\nvoid addDirectRadiance(vec3 incidentDirection,vec3 color,Geometry geometry,Material material,inout ReflectedLight reflectedLight){float attenuation=1.0;\n#ifdef MATERIAL_ENABLE_CLEAR_COAT\nfloat clearCoatDotNL=saturate(dot(geometry.clearCoatNormal,incidentDirection));vec3 clearCoatIrradiance=clearCoatDotNL*color;reflectedLight.directSpecular+=material.clearCoat*clearCoatIrradiance*BRDF_Specular_GGX(incidentDirection,geometry.viewDir,geometry.clearCoatNormal,vec3(0.04),material.clearCoatRoughness);attenuation-=material.clearCoat*F_Schlick(geometry.clearCoatDotNV);\n#endif\nfloat dotNL=saturate(dot(geometry.normal,incidentDirection));vec3 irradiance=dotNL*color*PI;reflectedLight.directSpecular+=attenuation*irradiance*BRDF_Specular_GGX(incidentDirection,geometry.viewDir,geometry.normal,material.specularColor,material.roughness);reflectedLight.directDiffuse+=attenuation*irradiance*BRDF_Diffuse_Lambert(material.diffuseColor);}\n#ifdef SCENE_DIRECT_LIGHT_COUNT\nvoid addDirectionalDirectLightRadiance(DirectLight directionalLight,Geometry geometry,Material material,inout ReflectedLight reflectedLight){vec3 color=directionalLight.color;vec3 direction=-directionalLight.direction;addDirectRadiance(direction,color,geometry,material,reflectedLight);}\n#endif\n#ifdef SCENE_POINT_LIGHT_COUNT\nvoid addPointDirectLightRadiance(PointLight pointLight,Geometry geometry,Material material,inout ReflectedLight reflectedLight){vec3 lVector=pointLight.position-geometry.position;vec3 direction=normalize(lVector);float lightDistance=length(lVector);vec3 color=pointLight.color;color*=clamp(1.0-pow(lightDistance/pointLight.distance,4.0),0.0,1.0);addDirectRadiance(direction,color,geometry,material,reflectedLight);}\n#endif\n#ifdef SCENE_SPOT_LIGHT_COUNT\nvoid addSpotDirectLightRadiance(SpotLight spotLight,Geometry geometry,Material material,inout ReflectedLight reflectedLight){vec3 lVector=spotLight.position-geometry.position;vec3 direction=normalize(lVector);float lightDistance=length(lVector);float angleCos=dot(direction,-spotLight.direction);float spotEffect=smoothstep(spotLight.penumbraCos,spotLight.angleCos,angleCos);float decayEffect=clamp(1.0-pow(lightDistance/spotLight.distance,4.0),0.0,1.0);vec3 color=spotLight.color;color*=spotEffect*decayEffect;addDirectRadiance(direction,color,geometry,material,reflectedLight);}\n#endif\nvoid addTotalDirectRadiance(Geometry geometry,Material material,inout ReflectedLight reflectedLight){float shadowAttenuation=1.0;\n#ifdef SCENE_DIRECT_LIGHT_COUNT\nshadowAttenuation=1.0;\n#ifdef SCENE_IS_CALCULATE_SHADOWS\nshadowAttenuation*=sampleShadowMap();int sunIndex=int(scene_ShadowInfo.z);\n#endif\nDirectLight directionalLight;for(int i=0;i<SCENE_DIRECT_LIGHT_COUNT;i++){if(isRendererCulledByLight(renderer_Layer.xy,scene_DirectLightCullingMask[i]))continue;directionalLight.color=scene_DirectLightColor[i];\n#ifdef SCENE_IS_CALCULATE_SHADOWS\nif(i==sunIndex){directionalLight.color*=shadowAttenuation;}\n#endif\ndirectionalLight.direction=scene_DirectLightDirection[i];addDirectionalDirectLightRadiance(directionalLight,geometry,material,reflectedLight);}\n#endif\n#ifdef SCENE_POINT_LIGHT_COUNT\nPointLight pointLight;for(int i=0;i<SCENE_POINT_LIGHT_COUNT;i++){if(isRendererCulledByLight(renderer_Layer.xy,scene_PointLightCullingMask[i]))continue;pointLight.color=scene_PointLightColor[i];pointLight.position=scene_PointLightPosition[i];pointLight.distance=scene_PointLightDistance[i];addPointDirectLightRadiance(pointLight,geometry,material,reflectedLight);}\n#endif\n#ifdef SCENE_SPOT_LIGHT_COUNT\nSpotLight spotLight;for(int i=0;i<SCENE_SPOT_LIGHT_COUNT;i++){if(isRendererCulledByLight(renderer_Layer.xy,scene_SpotLightCullingMask[i]))continue;spotLight.color=scene_SpotLightColor[i];spotLight.position=scene_SpotLightPosition[i];spotLight.direction=scene_SpotLightDirection[i];spotLight.distance=scene_SpotLightDistance[i];spotLight.angleCos=scene_SpotLightAngleCos[i];spotLight.penumbraCos=scene_SpotLightPenumbraCos[i];addSpotDirectLightRadiance(spotLight,geometry,material,reflectedLight);}\n#endif\n}"; // eslint-disable-line
|
|
@@ -35520,8 +35520,8 @@ function _inherits(subClass, superClass) {
|
|
|
35520
35520
|
*/ WebGLEngine.create = function create(configuration) {
|
|
35521
35521
|
var canvas = configuration.canvas;
|
|
35522
35522
|
var webCanvas = new WebCanvas(typeof canvas === "string" ? engineMiniprogramAdapter.document.getElementById(canvas) : canvas);
|
|
35523
|
-
var
|
|
35524
|
-
var engine = new WebGLEngine(webCanvas,
|
|
35523
|
+
var webGLGraphicDevice = new WebGLGraphicDevice(configuration.graphicDeviceOptions);
|
|
35524
|
+
var engine = new WebGLEngine(webCanvas, webGLGraphicDevice, configuration);
|
|
35525
35525
|
return engine._initialize(configuration);
|
|
35526
35526
|
};
|
|
35527
35527
|
_create_class(WebGLEngine, [
|
|
@@ -37379,7 +37379,7 @@ function _interopNamespace(e) {
|
|
|
37379
37379
|
}
|
|
37380
37380
|
var CoreObjects__namespace = /*#__PURE__*/ _interopNamespace(CoreObjects);
|
|
37381
37381
|
//@ts-ignore
|
|
37382
|
-
var version = "1.0.0-beta.
|
|
37382
|
+
var version = "1.0.0-beta.3";
|
|
37383
37383
|
console.log("Galacean engine version: " + version);
|
|
37384
37384
|
for(var key in CoreObjects__namespace){
|
|
37385
37385
|
CoreObjects.Loader.registerClass(key, CoreObjects__namespace[key]);
|
package/dist/module.js.map
CHANGED
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/engine-physics-lite",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.3",
|
|
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.
|
|
26
|
-
"@galacean/engine": "1.0.0-beta.
|
|
25
|
+
"@galacean/engine-design": "1.0.0-beta.3",
|
|
26
|
+
"@galacean/engine": "1.0.0-beta.3"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
-
"@galacean/engine": "1.0.0-beta.
|
|
29
|
+
"@galacean/engine": "1.0.0-beta.3"
|
|
30
30
|
},
|
|
31
31
|
"scripts": {
|
|
32
32
|
"b:types": "tsc"
|