@galacean/engine-physics-physx 2.0.0-alpha.18 → 2.0.0-alpha.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../src/shape/PhysXColliderShape.ts","../src/shape/PhysXBoxColliderShape.ts","../src/shape/PhysXCapsuleColliderShape.ts","../src/PhysXCharacterController.ts","../src/PhysXCollider.ts","../src/PhysXDynamicCollider.ts","../src/PhysXPhysicsManager.ts","../src/PhysXPhysicsMaterial.ts","../src/PhysXPhysicsScene.ts","../src/PhysXStaticCollider.ts","../src/enum/PhysXRuntimeMode.ts","../src/joint/PhysXJoint.ts","../src/joint/PhysXFixedJoint.ts","../src/joint/PhysXHingeJoint.ts","../src/joint/PhysXSpringJoint.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_possible_constructor_return.js","../src/shape/PhysXMeshColliderShape.ts","../src/shape/PhysXPlaneColliderShape.ts","../src/shape/PhysXSphereColliderShape.ts","../src/PhysXPhysics.ts","../src/index.ts"],"sourcesContent":["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","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import { Quaternion, Vector3, DisorderedArray, Vector4, MathUtil } from \"@galacean/engine\";\nimport { IColliderShape } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"../PhysXCharacterController\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\n\n/**\n * Flags which affect the behavior of Shapes.\n */\nexport enum ShapeFlag {\n /** The shape will partake in collision in the physical simulation. */\n SIMULATION_SHAPE = 1 << 0,\n /** The shape will partake in scene queries (ray casts, overlap tests, sweeps, ...). */\n SCENE_QUERY_SHAPE = 1 << 1,\n /** The shape is a trigger which can send reports whenever other shapes enter/leave its volume. */\n TRIGGER_SHAPE = 1 << 2\n}\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class PhysXColliderShape implements IColliderShape {\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n protected static _tempVector4 = new Vector4();\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n /** @internal */\n _contractOffset: number = 0.02;\n\n /** @internal */\n _worldScale: Vector3 = new Vector3(1, 1, 1);\n /** @internal */\n _position: Vector3 = new Vector3();\n /** @internal */\n _pxMaterial: any;\n /** @internal */\n _pxShape: any;\n /** @internal */\n /** @internal */\n _id: number;\n /** @internal */\n _rotation: Vector3 = new Vector3();\n\n protected _physXPhysics: PhysXPhysics;\n protected _pxGeometry: any;\n protected _axis: Quaternion = null;\n protected _physXRotation: Quaternion = new Quaternion();\n\n private _shapeFlags: ShapeFlag = ShapeFlag.SCENE_QUERY_SHAPE | ShapeFlag.SIMULATION_SHAPE;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n setRotation(value: Vector3): void {\n const rotation = this._rotation.set(\n MathUtil.degreeToRadian(value.x),\n MathUtil.degreeToRadian(value.y),\n MathUtil.degreeToRadian(value.z)\n );\n Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, this._physXRotation);\n this._axis && Quaternion.multiply(this._physXRotation, this._axis, this._physXRotation);\n this._physXRotation.normalize();\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n setPosition(value: Vector3): void {\n if (value !== this._position) {\n this._position.copyFrom(value);\n }\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._updateShapePosition(this._position, this._worldScale);\n }\n\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._worldScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._setLocalPose();\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._updateShapePosition(this._position, this._worldScale);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setContactOffset }\n * @default 0.02f * PxTolerancesScale::length\n */\n setContactOffset(offset: number): void {\n this._contractOffset = offset;\n const controllers = this._controllers;\n if (controllers.length) {\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setContactOffset(offset);\n }\n } else {\n this._pxShape.setContactOffset(offset);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setMaterial }\n */\n setMaterial(value: PhysXPhysicsMaterial): void {\n this._pxMaterial = value._pxMaterial;\n this._pxShape.setMaterial(this._pxMaterial);\n }\n\n /**\n * {@inheritDoc IColliderShape.setIsTrigger }\n */\n setIsTrigger(value: boolean): void {\n this._modifyFlag(ShapeFlag.SIMULATION_SHAPE, !value);\n this._modifyFlag(ShapeFlag.TRIGGER_SHAPE, value);\n this._setShapeFlags(this._shapeFlags);\n }\n\n /**\n * {@inheritDoc IColliderShape.pointDistance }\n */\n pointDistance(point: Vector3): Vector4 {\n const info = this._pxGeometry.pointDistance(this._pxShape.getGlobalPose(), point);\n const closestPoint = info.closestPoint;\n const res = PhysXColliderShape._tempVector4;\n res.set(closestPoint.x, closestPoint.y, closestPoint.z, info.distance);\n return res;\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n destroy(): void {\n this._pxShape.release();\n this._pxGeometry?.delete();\n }\n\n /**\n * @internal\n */\n _setShapeFlags(flags: ShapeFlag) {\n this._shapeFlags = flags;\n const shapeFlags = new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags);\n this._pxShape.setFlags(shapeFlags);\n shapeFlags.delete();\n }\n\n protected _setLocalPose(): void {\n const transform = PhysXColliderShape.transform;\n Vector3.multiply(this._position, this._worldScale, transform.translation);\n transform.rotation = this._physXRotation;\n this._pxShape.setLocalPose(transform);\n }\n\n protected _initialize(material: PhysXPhysicsMaterial, id: number): void {\n this._id = id;\n this._pxMaterial = material._pxMaterial;\n const shapeFlags = new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags);\n this._pxShape = this._physXPhysics._pxPhysics.createShape(this._pxGeometry, material._pxMaterial, true, shapeFlags);\n shapeFlags.delete();\n this._pxShape.setUUID(id);\n }\n\n private _modifyFlag(flag: ShapeFlag, value: boolean): void {\n this._shapeFlags = value ? this._shapeFlags | flag : this._shapeFlags & ~flag;\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Box collider shape in PhysX.\n */\nexport class PhysXBoxColliderShape extends PhysXColliderShape implements IBoxColliderShape {\n private static _tempHalfExtents = new Vector3();\n /** @internal */\n _halfSize: Vector3 = new Vector3();\n\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n const halfSize = this._halfSize;\n halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n this._pxGeometry = new physXPhysics._physX.PxBoxGeometry(halfSize.x, halfSize.y, halfSize.z);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n const halfSize = this._halfSize;\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n Vector3.multiply(halfSize, this._worldScale, tempExtents);\n this._pxGeometry.halfExtents = tempExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n this._updateController(tempExtents);\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n override setRotation(value: Vector3): void {\n super.setRotation(value);\n if (this._controllers.length > 0) {\n console.warn(\"Box character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n Vector3.multiply(this._halfSize, this._worldScale, tempExtents);\n this._pxGeometry.halfExtents = tempExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n this._updateController(tempExtents);\n }\n\n private _updateController(extents: Vector3) {\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n\n if (pxController) {\n pxController.setHalfHeight(extents.y);\n pxController.setHalfSideExtent(extents.x);\n pxController.setHalfForwardExtent(extents.z);\n }\n }\n }\n}\n","import { ICapsuleColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n/**\n * Capsule collider shape in PhysX.\n */\nexport class PhysXCapsuleColliderShape extends PhysXColliderShape implements ICapsuleColliderShape {\n /** @internal */\n _radius: number;\n /** @internal */\n _halfHeight: number;\n /** @internal */\n _upAxis: ColliderShapeUpAxis = ColliderShapeUpAxis.Y;\n\n constructor(\n physXPhysics: PhysXPhysics,\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ) {\n super(physXPhysics);\n\n this._radius = radius;\n this._halfHeight = height * 0.5;\n this._axis = new Quaternion(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n this._physXRotation.copyFrom(this._axis);\n\n this._pxGeometry = new physXPhysics._physX.PxCapsuleGeometry(radius, this._halfHeight);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n const sizeScale = this._worldScale;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.y, sizeScale.z);\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.z);\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.y);\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const radius = this._pxGeometry.radius;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setRadius(radius);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setHeight }\n */\n setHeight(value: number): void {\n this._halfHeight = value * 0.5;\n const sizeScale = this._worldScale;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const height = this._pxGeometry.halfHeight * 2;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setHeight(height);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setRotation }\n */\n override setRotation(value: Vector3): void {\n super.setRotation(value);\n if (this._controllers.length > 0) {\n console.warn(\"Capsule character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setUpAxis }\n */\n setUpAxis(upAxis: ColliderShapeUpAxis): void {\n const { _rotation: rotation, _axis: axis, _physXRotation: physXRotation } = this;\n\n this._upAxis = upAxis;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n axis.set(0, 0, 0, 1);\n break;\n case ColliderShapeUpAxis.Y:\n axis.set(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n break;\n case ColliderShapeUpAxis.Z:\n axis.set(0, PhysXColliderShape.halfSqrt, 0, PhysXColliderShape.halfSqrt);\n break;\n }\n if (rotation) {\n Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, physXRotation);\n Quaternion.multiply(physXRotation, axis, physXRotation);\n } else {\n physXRotation.copyFrom(axis);\n }\n this._setLocalPose();\n\n if (this._controllers.length > 0) {\n console.warn(\"Capsule character controller `upAxis` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n const sizeScale = this._worldScale;\n const geometry = this._pxGeometry;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n geometry.radius = this._radius * Math.max(sizeScale.y, sizeScale.z);\n geometry.halfHeight = this._halfHeight * sizeScale.x;\n break;\n case ColliderShapeUpAxis.Y:\n geometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.z);\n geometry.halfHeight = this._halfHeight * sizeScale.y;\n break;\n case ColliderShapeUpAxis.Z:\n geometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.y);\n geometry.halfHeight = this._halfHeight * sizeScale.z;\n break;\n }\n this._pxShape.setGeometry(geometry);\n\n const radius = geometry.radius;\n const height = geometry.halfHeight * 2;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n if (pxController) {\n pxController.setRadius(radius);\n pxController.setHeight(height);\n }\n }\n }\n}\n\n/**\n * The up axis of the collider shape.\n */\nexport enum ColliderShapeUpAxis {\n /** Up axis is X. */\n X,\n /** Up axis is Y. */\n Y,\n /** Up axis is Z. */\n Z\n}\n","import { ICharacterController } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { ColliderShapeUpAxis, PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\n\n/**\n * Base class for character controllers.\n */\nexport class PhysXCharacterController implements ICharacterController {\n private static _tempVec = new Vector3();\n\n /** @internal */\n _scene: PhysXPhysicsScene = null;\n /** @internal */\n _id: number;\n /** @internal */\n _pxController: any;\n /** @internal */\n _pxManager: PhysXPhysicsScene;\n /** @internal */\n _shape: PhysXColliderShape;\n private _shapeScaledPosition = new Vector3();\n private _worldPosition: Vector3 = null;\n\n private _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc ICharacterController.move }\n */\n move(disp: Vector3, minDist: number, elapsedTime: number): number {\n return this._pxController?.move(disp, minDist, elapsedTime) ?? 0;\n }\n\n /**\n * {@inheritDoc ICharacterController.setWorldPosition }\n */\n setWorldPosition(position: Vector3): void {\n this._worldPosition = position;\n this._updateNativePosition();\n }\n\n /**\n * {@inheritDoc ICharacterController.getWorldPosition }\n */\n getWorldPosition(position: Vector3): void {\n if (this._pxController) {\n position.copyFrom(this._pxController.getPosition());\n position.subtract(this._shapeScaledPosition);\n }\n }\n\n /**\n * {@inheritDoc ICharacterController.setStepOffset }\n */\n setStepOffset(offset: number): void {\n this._pxController?.setStepOffset(offset);\n }\n\n /**\n * {@inheritDoc ICharacterController.setNonWalkableMode }\n */\n setNonWalkableMode(flag: number): void {\n this._pxController?.setNonWalkableMode(flag);\n }\n\n /**\n * {@inheritDoc ICharacterController.setUpDirection }\n */\n setUpDirection(up: Vector3): void {\n this._pxController?.setUpDirection(up);\n }\n\n /**\n * {@inheritDoc ICharacterController.setSlopeLimit }\n */\n setSlopeLimit(slopeLimit: number): void {\n this._pxController?.setSlopeLimit(Math.cos((slopeLimit * Math.PI) / 180));\n }\n\n /**\n * {@inheritDoc ICharacterController.addShape }\n */\n addShape(shape: PhysXColliderShape): void {\n // Add shape should sync latest position and world scale to pxController\n this._updateShapePosition(shape._position, shape._worldScale);\n // When CharacterController is disabled, set shape property need check pxController whether exist because of this._pxManager is null and won't create pxController\n this._pxManager && this._createPXController(this._pxManager, shape);\n this._shape = shape;\n shape._controllers.add(this);\n this._pxController?.setContactOffset(shape._contractOffset);\n this._scene?._addColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICharacterController.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._destroyPXController();\n this._shape = null;\n shape._controllers.delete(this);\n this._scene?._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.setCollisionLayer }\n */\n setCollisionLayer(layer: number): void {\n const actor = this._pxController?.getActor();\n\n if (actor) {\n this._physXPhysics._physX.setGroup(actor, layer);\n }\n }\n\n /**\n * {@inheritDoc ICharacterController.destroy }\n */\n destroy(): void {\n this._destroyPXController();\n }\n\n /**\n * @internal\n */\n _createPXController(pxManager: PhysXPhysicsScene, shape: PhysXColliderShape): void {\n let desc: any;\n if (shape instanceof PhysXBoxColliderShape) {\n desc = new this._physXPhysics._physX.PxBoxControllerDesc();\n desc.halfHeight = shape._halfSize.y;\n desc.halfSideExtent = shape._halfSize.x;\n desc.halfForwardExtent = shape._halfSize.z;\n if (shape._rotation.lengthSquared() > 0) {\n console.warn(\"Box character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n } else if (shape instanceof PhysXCapsuleColliderShape) {\n desc = new this._physXPhysics._physX.PxCapsuleControllerDesc();\n desc.radius = shape._radius;\n desc.height = shape._halfHeight * 2;\n desc.climbingMode = 1; // constraint mode\n\n if (shape._rotation.lengthSquared() > 0) {\n console.warn(\"Capsule character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n if (shape._upAxis !== ColliderShapeUpAxis.Y) {\n console.warn(\"Capsule character controller `upAxis` is not supported in PhysX and will be ignored\");\n }\n } else {\n throw \"unsupported shape type\";\n }\n\n desc.setMaterial(shape._pxMaterial);\n this._pxController = pxManager._getControllerManager().createController(desc);\n desc.delete();\n\n this._pxController.setUUID(shape._id);\n\n this._updateNativePosition();\n }\n\n /**\n * @internal\n */\n _destroyPXController(): void {\n if (this._pxController) {\n this._pxController.release();\n this._pxController = null;\n }\n }\n\n /**\n * @internal\n */\n _updateShapePosition(shapePosition: Vector3, worldScale: Vector3): void {\n Vector3.multiply(shapePosition, worldScale, this._shapeScaledPosition);\n this._updateNativePosition();\n }\n\n private _updateNativePosition(): void {\n const worldPosition = this._worldPosition;\n if (this._pxController && worldPosition) {\n Vector3.add(worldPosition, this._shapeScaledPosition, PhysXCharacterController._tempVec);\n this._pxController.setPosition(PhysXCharacterController._tempVec);\n }\n }\n}\n","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\n\n/**\n * Abstract class of physical collider.\n */\nexport abstract class PhysXCollider implements ICollider {\n private static _tempTransform: {\n translation: Vector3;\n rotation: Quaternion;\n } = { translation: null, rotation: null };\n\n /** @internal */\n _scene: PhysXPhysicsScene = null;\n /** @internal */\n _pxActor: any;\n /** @internal */\n _shapes = new Array<PhysXColliderShape>();\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc ICollider.addShape }\n */\n addShape(shape: PhysXColliderShape): void {\n this._pxActor.attachShape(shape._pxShape);\n this._shapes.push(shape);\n this._scene?._addColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._pxActor.detachShape(shape._pxShape, true);\n const shapes = this._shapes;\n shapes.splice(shapes.indexOf(shape), 1);\n this._scene?._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.setWorldTransform }\n */\n setWorldTransform(position: Vector3, rotation: Quaternion): void {\n this._pxActor.setGlobalPose(this._transform(position, rotation), true);\n }\n\n /**\n * {@inheritDoc ICollider.getWorldTransform }\n */\n getWorldTransform(outPosition: Vector3, outRotation: Quaternion): void {\n const transform = this._pxActor.getGlobalPose();\n outPosition.set(transform.translation.x, transform.translation.y, transform.translation.z);\n outRotation.set(transform.rotation.x, transform.rotation.y, transform.rotation.z, transform.rotation.w);\n }\n\n /**\n * {@inheritDoc ICollider.setCollisionLayer }\n */\n setCollisionLayer(layer: number): void {\n this._physXPhysics._physX.setGroup(this._pxActor, layer);\n }\n\n /**\n * {@inheritDoc ICollider.destroy }\n */\n destroy(): void {\n this._pxActor.release();\n }\n\n /**\n * @internal\n */\n _transform(pos: Vector3, rot: Quaternion): { translation: Vector3; rotation: Quaternion } {\n const transform = PhysXCollider._tempTransform;\n transform.translation = pos;\n transform.rotation = rot.normalize();\n return transform;\n }\n}\n","import { IDynamicCollider } from \"@galacean/engine-design\";\nimport { MathUtil, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\n\n/**\n * The collision detection mode constants used for PhysXDynamicCollider.collisionDetectionMode.\n * */\nexport enum CollisionDetectionMode {\n /** Continuous collision detection is off for this dynamic collider. */\n Discrete,\n /** Continuous collision detection is on for colliding with static mesh geometry. */\n Continuous,\n /** Continuous collision detection is on for colliding with static and dynamic geometry. */\n ContinuousDynamic,\n /** Speculative continuous collision detection is on for static and dynamic geometries */\n ContinuousSpeculative\n}\n\n/**\n * A dynamic collider can act with self-defined movement or physical force\n */\nexport class PhysXDynamicCollider extends PhysXCollider implements IDynamicCollider {\n private static _tempTranslation = new Vector3();\n private static _tempRotation = new Quaternion();\n\n constructor(physXPhysics: PhysXPhysics, position: Vector3, rotation: Quaternion) {\n super(physXPhysics);\n const transform = this._transform(position, rotation);\n this._pxActor = physXPhysics._pxPhysics.createRigidDynamic(transform);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearDamping }\n */\n setLinearDamping(value: number): void {\n this._pxActor.setLinearDamping(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularDamping }\n */\n setAngularDamping(value: number): void {\n this._pxActor.setAngularDamping(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getLinearVelocity }\n */\n getLinearVelocity(out: Vector3): Vector3 {\n const velocity = this._pxActor.getLinearVelocity();\n return out.set(velocity.x, velocity.y, velocity.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n this._pxActor.setLinearVelocity(value, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getAngularVelocity }\n */\n getAngularVelocity(out: Vector3): Vector3 {\n const velocity = this._pxActor.getAngularVelocity();\n return out.set(\n MathUtil.radianToDegree(velocity.x),\n MathUtil.radianToDegree(velocity.y),\n MathUtil.radianToDegree(velocity.z)\n );\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n PhysXDynamicCollider._tempTranslation.set(\n MathUtil.degreeToRadian(value.x),\n MathUtil.degreeToRadian(value.y),\n MathUtil.degreeToRadian(value.z)\n );\n this._pxActor.setAngularVelocity(PhysXDynamicCollider._tempTranslation, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMass }\n */\n setMass(value: number): void {\n this._pxActor.setMass(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getCenterOfMass }\n */\n getCenterOfMass(out: Vector3): Vector3 {\n const { translation } = this._pxActor.getCMassLocalPose();\n return out.set(translation.x, translation.y, translation.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCenterOfMass }\n */\n setCenterOfMass(position: Vector3): void {\n this._pxActor.setCMassLocalPose(position);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setInertiaTensor }\n */\n setInertiaTensor(value: Vector3): void {\n this._pxActor.setMassSpaceInertiaTensor(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getInertiaTensor }\n */\n getInertiaTensor(out: Vector3): Vector3 {\n const inertia = this._pxActor.getMassSpaceInertiaTensor();\n return out.set(inertia.x, inertia.y, inertia.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMassAndUpdateInertia }\n */\n setMassAndUpdateInertia(mass: number): void {\n this._pxActor.setMassAndUpdateInertia(mass);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n this._pxActor.setMaxAngularVelocity(MathUtil.degreeToRadian(value));\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }\n */\n setMaxDepenetrationVelocity(value: number): void {\n this._pxActor.setMaxDepenetrationVelocity(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSleepThreshold }\n * @default 1e-5f * PxTolerancesScale::speed * PxTolerancesScale::speed\n */\n setSleepThreshold(value: number): void {\n this._pxActor.setSleepThreshold(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSolverIterations }\n */\n setSolverIterations(value: number): void {\n this._pxActor.setSolverIterationCounts(value, 1);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCollisionDetectionMode }\n */\n setCollisionDetectionMode(value: number): void {\n const physX = this._physXPhysics._physX;\n\n switch (value) {\n case CollisionDetectionMode.Continuous:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setUseGravity }\n */\n setUseGravity(value: boolean): void {\n this._pxActor.setActorFlag(this._physXPhysics._physX.PxActorFlag.eDISABLE_GRAVITY, !value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setIsKinematic }\n */\n setIsKinematic(value: boolean): void {\n if (value) {\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, true);\n } else {\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, false);\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setConstraints }\n */\n setConstraints(flags: number): void {\n this._pxActor.setRigidDynamicLockFlags(flags);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addForce }\n */\n addForce(force: Vector3) {\n this._pxActor.addForce({ x: force.x, y: force.y, z: force.z });\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addTorque }\n */\n addTorque(torque: Vector3) {\n this._pxActor.addTorque({ x: torque.x, y: torque.y, z: torque.z });\n }\n\n /**\n * {@inheritDoc IDynamicCollider.move }\n */\n move(positionOrRotation: Vector3 | Quaternion, rotation?: Quaternion): void {\n if (rotation) {\n this._pxActor.setKinematicTarget(positionOrRotation, rotation);\n return;\n }\n\n const tempTranslation = PhysXDynamicCollider._tempTranslation;\n const tempRotation = PhysXDynamicCollider._tempRotation;\n this.getWorldTransform(tempTranslation, tempRotation);\n if (positionOrRotation instanceof Vector3) {\n this._pxActor.setKinematicTarget(positionOrRotation, tempRotation);\n } else {\n this._pxActor.setKinematicTarget(tempTranslation, positionOrRotation);\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.sleep }\n */\n sleep(): void {\n return this._pxActor.putToSleep();\n }\n\n /**\n * {@inheritDoc IDynamicCollider.isSleeping }\n */\n isSleeping(): boolean {\n return this._pxActor.isSleeping();\n }\n\n /**\n * {@inheritDoc IDynamicCollider.wakeUp }\n */\n wakeUp(): void {\n return this._pxActor.wakeUp();\n }\n}\n","import { IPhysicsManager } from \"@galacean/engine-design\";\nimport { TriggerEvent } from \"./PhysXPhysicsScene\";\n\nexport class PhysXPhysicsManager implements IPhysicsManager {\n /** @internal */\n _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n}\n","import { IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\n\n/**\n * Physics material describes how to handle colliding objects (friction, bounciness).\n */\nexport class PhysXPhysicsMaterial implements IPhysicsMaterial {\n /** @internal */\n _pxMaterial: any;\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(\n physXPhysics: PhysXPhysics,\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: CombineMode,\n bounceCombine: CombineMode\n ) {\n this._physXPhysics = physXPhysics;\n const pxMaterial = physXPhysics._pxPhysics.createMaterial(staticFriction, dynamicFriction, bounciness);\n pxMaterial.setFrictionCombineMode(frictionCombine);\n pxMaterial.setRestitutionCombineMode(bounceCombine);\n this._pxMaterial = pxMaterial;\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounciness }\n */\n setBounciness(value: number) {\n this._pxMaterial.setRestitution(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setDynamicFriction }\n */\n setDynamicFriction(value: number) {\n this._pxMaterial.setDynamicFriction(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setStaticFriction }\n */\n setStaticFriction(value: number) {\n this._pxMaterial.setStaticFriction(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounceCombine }\n */\n setBounceCombine(value: CombineMode) {\n this._pxMaterial.setRestitutionCombineMode(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setFrictionCombine }\n */\n setFrictionCombine(value: CombineMode) {\n this._pxMaterial.setFrictionCombineMode(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.destroy }\n */\n destroy(): void {\n this._pxMaterial.release();\n }\n}\n\n/**\n * Describes how physics materials of the colliding objects are combined.\n */\nenum CombineMode {\n /** Averages the friction/bounce of the two colliding materials. */\n Average,\n /** Uses the smaller friction/bounce of the two colliding materials. */\n Minimum,\n /** Multiplies the friction/bounce of the two colliding materials. */\n Multiply,\n /** Uses the larger friction/bounce of the two colliding materials. */\n Maximum\n}\n","import { Ray, Vector3, DisorderedArray, Quaternion } from \"@galacean/engine\";\nimport { ICollision, IPhysicsScene } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class PhysXPhysicsScene implements IPhysicsScene {\n /** @internal */\n _pxControllerManager: any = null;\n\n private static _tempPosition: Vector3 = new Vector3();\n private static _tempQuaternion: Quaternion = new Quaternion();\n private static _tempNormal: Vector3 = new Vector3();\n private static _tempPose: { translation: Vector3; rotation: Quaternion } = {\n translation: new Vector3(),\n rotation: new Quaternion()\n };\n private static _tempShapeIDs: number[] = [];\n\n // Cached geometry objects for reuse\n private _boxGeometry: any = null;\n private _sphereGeometry: any = null;\n private _capsuleGeometry: any = null;\n\n private _physXPhysics: PhysXPhysics;\n private _physXManager: PhysXPhysicsManager;\n private _pxRaycastHit: any;\n private _pxFilterData: any;\n\n private _pxScene: any;\n private _physXSimulationCallbackInstance: any;\n\n private readonly _onContactEnter?: (collision: ICollision) => void;\n private readonly _onContactExit?: (collision: ICollision) => void;\n private readonly _onContactStay?: (collision: ICollision) => void;\n private readonly _onTriggerEnter?: (index1: number, index2: number) => void;\n private readonly _onTriggerExit?: (index1: number, index2: number) => void;\n private readonly _onTriggerStay?: (index1: number, index2: number) => void;\n\n private _currentEvents: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n physXPhysics: PhysXPhysics,\n physicsManager: PhysXPhysicsManager,\n onContactEnter?: (collision: ICollision) => void,\n onContactExit?: (collision: ICollision) => void,\n onContactStay?: (collision: ICollision) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._physXPhysics = physXPhysics;\n this._physXManager = physicsManager;\n\n const physX = physXPhysics._physX;\n\n this._pxRaycastHit = new physX.PxRaycastHit();\n this._pxFilterData = new physX.PxQueryFilterData();\n this._pxFilterData.flags = new physX.PxQueryFlags(QueryFlag.STATIC | QueryFlag.DYNAMIC | QueryFlag.PRE_FILTER);\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 const triggerCallback = {\n onContactBegin: (collision) => {\n this._onContactEnter(collision);\n },\n onContactEnd: (collision) => {\n this._onContactExit(collision);\n },\n onContactPersist: (collision) => {\n this._onContactStay(collision);\n },\n onTriggerBegin: (index1, index2) => {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = TriggerEventState.Enter;\n this._currentEvents.add(event);\n },\n onTriggerEnd: (index1, index2) => {\n let event: TriggerEvent;\n if (index1 < index2) {\n const subMap = this._physXManager._eventMap[index1];\n event = subMap[index2];\n subMap[index2] = undefined;\n } else {\n const subMap = this._physXManager._eventMap[index2];\n event = subMap[index1];\n subMap[index1] = undefined;\n }\n event.state = TriggerEventState.Exit;\n }\n };\n\n const pxPhysics = physXPhysics._pxPhysics;\n this._physXSimulationCallbackInstance = physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = physX.getDefaultSceneDesc(\n pxPhysics.getTolerancesScale(),\n 0,\n this._physXSimulationCallbackInstance\n );\n this._pxScene = pxPhysics.createScene(sceneDesc);\n sceneDesc.delete();\n }\n\n /**\n * {@inheritDoc IPhysicsScene.setGravity }\n */\n setGravity(value: Vector3) {\n this._pxScene.setGravity(value);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.addCollider }\n */\n addCollider(collider: PhysXCollider): void {\n collider._scene = this;\n this._pxScene.addActor(collider._pxActor, null);\n const shapes = collider._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._addColliderShape(shapes[i]._id);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCollider }\n */\n removeCollider(collider: PhysXCollider): void {\n collider._scene = null;\n this._pxScene.removeActor(collider._pxActor, true);\n const shapes = collider._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._removeColliderShape(shapes[i]._id);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.addCharacterController }\n */\n addCharacterController(characterController: PhysXCharacterController): void {\n characterController._scene = this;\n\n // Physx have no API to remove/readd cct into scene.\n if (!characterController._pxController) {\n const shape = characterController._shape;\n if (shape) {\n const lastPXManager = characterController._pxManager;\n if (lastPXManager !== this) {\n lastPXManager && characterController._destroyPXController();\n characterController._createPXController(this, shape);\n }\n this._addColliderShape(shape._id);\n }\n }\n characterController._pxManager = this;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCharacterController }\n */\n removeCharacterController(characterController: PhysXCharacterController): void {\n characterController._scene = null;\n characterController._pxManager = null;\n characterController._destroyPXController();\n const shape = characterController._shape;\n shape && this._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.update }\n */\n update(elapsedTime: number): void {\n this._simulate(elapsedTime);\n this._fetchResults();\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsScene.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const { _pxRaycastHit: pxHitResult } = this;\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physX raycast.\n\n const raycastCallback = {\n preFilter: (filterData, index, actor) => {\n if (onRaycast(index)) {\n return 2; // eBLOCK\n } else {\n return 0; // eNONE\n }\n }\n };\n\n const pxRaycastCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback);\n const result = this._pxScene.raycastSingle(\n ray.origin,\n ray.direction,\n distance,\n pxHitResult,\n this._pxFilterData,\n pxRaycastCallback\n );\n\n pxRaycastCallback.delete();\n\n if (result && hit != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsScene;\n const { position: pxPosition, normal: pxNormal } = pxHitResult;\n position.set(pxPosition.x, pxPosition.y, pxPosition.z);\n normal.set(pxNormal.x, pxNormal.y, pxNormal.z);\n\n hit(pxHitResult.getShape().getUUID(), pxHitResult.distance, position, normal);\n }\n return result;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.boxCast }\n */\n boxCast(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._boxGeometry) {\n this._boxGeometry = new this._physXPhysics._physX.PxBoxGeometry(halfExtents.x, halfExtents.y, halfExtents.z);\n } else {\n this._boxGeometry.halfExtents = halfExtents;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._sweepSingle(this._boxGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.sphereCast }\n */\n sphereCast(\n center: Vector3,\n radius: number,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._sphereGeometry) {\n this._sphereGeometry = new this._physXPhysics._physX.PxSphereGeometry(radius);\n } else {\n this._sphereGeometry.radius = radius;\n }\n\n const tempQuat = PhysXPhysicsScene._tempQuaternion;\n tempQuat.set(0, 0, 0, 1); // Identity quaternion\n const pose = { translation: center, rotation: tempQuat };\n return this._sweepSingle(this._sphereGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.capsuleCast }\n */\n capsuleCast(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._capsuleGeometry) {\n this._capsuleGeometry = new this._physXPhysics._physX.PxCapsuleGeometry(radius, height * 0.5);\n } else {\n this._capsuleGeometry.radius = radius;\n this._capsuleGeometry.halfHeight = height * 0.5;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._sweepSingle(this._capsuleGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapBoxAll }\n */\n overlapBoxAll(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n onOverlap: (obj: number) => boolean\n ): number[] {\n if (!this._boxGeometry) {\n this._boxGeometry = new this._physXPhysics._physX.PxBoxGeometry(halfExtents.x, halfExtents.y, halfExtents.z);\n } else {\n this._boxGeometry.halfExtents = halfExtents;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._overlapMultiple(this._boxGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapSphereAll }\n */\n overlapSphereAll(center: Vector3, radius: number, onOverlap: (obj: number) => boolean): number[] {\n if (!this._sphereGeometry) {\n this._sphereGeometry = new this._physXPhysics._physX.PxSphereGeometry(radius);\n } else {\n this._sphereGeometry.radius = radius;\n }\n\n const tempQuat = PhysXPhysicsScene._tempQuaternion;\n tempQuat.set(0, 0, 0, 1);\n const pose = { translation: center, rotation: tempQuat };\n return this._overlapMultiple(this._sphereGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapCapsuleAll }\n */\n overlapCapsuleAll(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n onOverlap: (obj: number) => boolean\n ): number[] {\n if (!this._capsuleGeometry) {\n this._capsuleGeometry = new this._physXPhysics._physX.PxCapsuleGeometry(radius, height * 0.5);\n } else {\n this._capsuleGeometry.radius = radius;\n this._capsuleGeometry.halfHeight = height * 0.5;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._overlapMultiple(this._capsuleGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.destroy }\n */\n destroy(): void {\n this._boxGeometry?.delete();\n this._sphereGeometry?.delete();\n this._capsuleGeometry?.delete();\n\n this._physXSimulationCallbackInstance.delete();\n this._pxRaycastHit.delete();\n this._pxFilterData.flags.delete();\n this._pxFilterData.delete();\n // Need to release the controller manager before release the scene.\n this._pxControllerManager?.release();\n this._pxScene.release();\n }\n\n /**\n * @internal\n */\n _getControllerManager(): any {\n let pxControllerManager = this._pxControllerManager;\n if (pxControllerManager === null) {\n this._pxControllerManager = pxControllerManager = this._pxScene.createControllerManager();\n }\n return pxControllerManager;\n }\n\n /**\n * @internal\n */\n _addColliderShape(id: number) {\n this._physXManager._eventMap[id] = Object.create(null);\n }\n\n /**\n * @internal\n */\n _removeColliderShape(id: number) {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n const { _eventMap: eventMap } = this._physXManager;\n currentEvents.forEach((event, i) => {\n if (event.index1 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n } else if (event.index2 == id) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n // If the shape is big index, should clear from the small index shape subMap\n eventMap[event.index1][id] = undefined;\n }\n });\n delete eventMap[id];\n }\n\n private _sweepSingle(\n geometry: any,\n pose: { translation: Vector3; rotation: Quaternion },\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physx sweep\n\n const sweepCallback = {\n preFilter: (filterData, index, actor) => {\n if (onSweep(index)) {\n return 2; // eBLOCK\n } else {\n return 0; // eNONE\n }\n }\n };\n\n const pxSweepCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(sweepCallback);\n const pxSweepHit = new this._physXPhysics._physX.PxSweepHit();\n const result = this._pxScene.sweepSingle(\n geometry,\n pose,\n direction,\n distance,\n pxSweepHit,\n this._pxFilterData,\n pxSweepCallback\n );\n\n if (result && outHitResult != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsScene;\n const { position: pxPosition, normal: pxNormal } = pxSweepHit;\n position.set(pxPosition.x, pxPosition.y, pxPosition.z);\n normal.set(pxNormal.x, pxNormal.y, pxNormal.z);\n outHitResult(pxSweepHit.getShape().getUUID(), pxSweepHit.distance, position, normal);\n }\n\n pxSweepCallback.delete();\n pxSweepHit.delete();\n\n return result;\n }\n\n private _overlapMultiple(\n geometry: any,\n pose: { translation: Vector3; rotation: Quaternion },\n onOverlap: (obj: number) => boolean\n ): number[] {\n const overlapCallback = {\n preFilter: (filterData, index, actor) => (onOverlap(index) ? 2 : 0)\n };\n\n const pxOverlapCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(overlapCallback);\n const maxHits = 256;\n const hits: any = (this._pxScene as any).overlapMultiple(\n geometry,\n pose,\n maxHits,\n this._pxFilterData,\n pxOverlapCallback\n );\n\n const result = PhysXPhysicsScene._tempShapeIDs;\n result.length = 0;\n if (hits) {\n // PhysX overlapMultiple returns a collection with size() method\n for (let i = 0, n = hits.size(); i < n; i++) {\n result.push(hits.get(i).getShape().getUUID());\n }\n }\n\n pxOverlapCallback.delete();\n hits?.delete();\n return result;\n }\n\n private _simulate(elapsedTime: number): void {\n this._pxScene.simulate(elapsedTime, true);\n }\n\n private _fetchResults(block: boolean = true): void {\n this._pxScene.fetchResults(block);\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._physXManager._eventMap[index1][index2] = event;\n return event;\n }\n\n private _fireEvent(): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n currentEvents.forEach((event, i) => {\n if (event.state == TriggerEventState.Enter) {\n this._onTriggerEnter(event.index1, event.index2);\n event.state = TriggerEventState.Stay;\n } else if (event.state == TriggerEventState.Stay) {\n this._onTriggerStay(event.index1, event.index2);\n } else if (event.state == TriggerEventState.Exit) {\n currentEvents.deleteByIndex(i);\n this._onTriggerExit(event.index1, event.index2);\n eventPool.push(event);\n }\n });\n }\n}\n\n/**\n * Filtering flags for scene queries.\n */\nenum QueryFlag {\n STATIC = 1 << 0,\n DYNAMIC = 1 << 1,\n PRE_FILTER = 1 << 2,\n POST_FILTER = 1 << 3,\n ANY_HIT = 1 << 4,\n NO_BLOCK = 1 << 5\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 */\nexport class TriggerEvent {\n state: TriggerEventState;\n index1: number;\n index2: number;\n\n constructor(index1: number, index2: number) {\n this.index1 = index1;\n this.index2 = index2;\n }\n}\n","import { IStaticCollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\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 PhysXStaticCollider extends PhysXCollider implements IStaticCollider {\n constructor(physXPhysics: PhysXPhysics, position: Vector3, rotation: Quaternion) {\n super(physXPhysics);\n this._pxActor = physXPhysics._pxPhysics.createRigidStatic(this._transform(position, rotation));\n }\n}\n","/**\n * PhysX runtime mode.\n */\nexport enum PhysXRuntimeMode {\n /** Use WebAssembly SIMD mode first, then WebAssembly as fallback. */\n Auto,\n /** WebAssembly mode. */\n WebAssembly,\n /** WebAssembly SIMD mode. */\n WebAssemblySIMD\n}\n","import { IJoint } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\n\n/**\n * a base interface providing common functionality for PhysX joints\n */\nexport class PhysXJoint implements IJoint {\n protected static _defaultVec = new Vector3();\n protected static _defaultQuat = new Quaternion();\n\n protected _pxJoint: any;\n protected _anchor: Vector3;\n protected _connectedAnchor: Vector3;\n protected _rotation: Quaternion = new Quaternion();\n protected _collider: PhysXCollider;\n private _breakForce: number = Number.MAX_VALUE;\n private _breakTorque: number = Number.MAX_VALUE;\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedCollider }\n */\n setConnectedCollider(value: PhysXCollider): void {\n this._pxJoint.setActors(this._collider?._pxActor || null, value?._pxActor || null);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, PhysXJoint._defaultQuat);\n this._anchor = value;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._rotation);\n this._connectedAnchor = value;\n }\n\n setRotation(value: Quaternion): void {\n this._setLocalPose(1, this._connectedAnchor, value);\n this._rotation.copyFrom(value);\n }\n\n /**\n * {@inheritDoc IJoint.setMassScale }\n */\n setMassScale(value: number): void {\n this._pxJoint.setInvMassScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedMassScale }\n */\n setConnectedMassScale(value: number): void {\n this._pxJoint.setInvMassScale1(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setInertiaScale }\n */\n setInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale0(value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedInertiaScale }\n */\n setConnectedInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale1(value);\n }\n\n /**\n * {@inheritDoc IJoint.setBreakForce }\n */\n setBreakForce(value: number): void {\n this._breakForce = value;\n this._pxJoint.setBreakForce(this._breakForce, this._breakTorque);\n }\n\n /**\n * {@inheritDoc IJoint.setBreakTorque }\n */\n setBreakTorque(value: number): void {\n this._breakTorque = value;\n this._pxJoint.setBreakForce(this._breakForce, this._breakTorque);\n }\n\n /**\n * {@inheritDoc IJoint.destroy }\n */\n destroy(): void {\n if (!this._pxJoint) return;\n this._pxJoint.release();\n this._collider = null;\n }\n /**\n * Set the joint local pose for an actor.\n * @param actor 0 for the first actor, 1 for the second actor.\n * @param position the local position for the actor this joint\n * @param rotation the local rotation for the actor this joint\n */\n protected _setLocalPose(actor: number, position: Vector3, rotation: Quaternion): void {\n this._pxJoint.setLocalPose(actor, position, rotation);\n }\n}\n","import { IFixedJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\n\n/**\n * A fixed joint permits no relative movement between two colliders. ie the bodies are glued together.\n */\nexport class PhysXFixedJoint extends PhysXJoint implements IFixedJoint {\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createFixedJoint(\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n}\n","import { IHingeJoint } from \"@galacean/engine-design\";\nimport { MathUtil, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\n\n/**\n * A joint which behaves in a similar way to a hinge or axle.\n */\nexport class PhysXHingeJoint extends PhysXJoint implements IHingeJoint {\n protected static _xAxis = new Vector3(1, 0, 0);\n\n private _axis: Vector3;\n private _axisRotationQuaternion = new Quaternion();\n private _connectedAxisRotationQuaternion = new Quaternion();\n\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createRevoluteJoint(\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n\n override setRotation(value: Quaternion): void {\n const axis = this._axis;\n this._rotation.copyFrom(value);\n axis && this.setAxis(axis);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\n this._axis = value;\n const xAxis = PhysXHingeJoint._xAxis;\n const axisRotationQuaternion = this._axisRotationQuaternion;\n xAxis.set(1, 0, 0);\n const angle = Math.acos(Vector3.dot(xAxis, value));\n Vector3.cross(xAxis, value, xAxis);\n Quaternion.rotationAxisAngle(xAxis, angle, axisRotationQuaternion);\n this._setLocalPose(0, this._anchor, axisRotationQuaternion);\n const connectedAxisRotationQuaternion = this._connectedAxisRotationQuaternion;\n Quaternion.multiply(this._rotation, axisRotationQuaternion, connectedAxisRotationQuaternion);\n this._setLocalPose(1, this._connectedAnchor, connectedAxisRotationQuaternion);\n }\n\n override setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, this._axisRotationQuaternion);\n this._anchor = value;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n override setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._connectedAxisRotationQuaternion);\n this._connectedAnchor = value;\n }\n\n /**\n * {@inheritDoc IHingeJoint.getAngle }\n */\n getAngle(): number {\n return MathUtil.radianToDegree(this._pxJoint.getAngle());\n }\n\n /**\n * {@inheritDoc IHingeJoint.getVelocity }\n */\n getVelocity(): Readonly<number> {\n return this._pxJoint.getVelocity();\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHardLimitCone }\n */\n setHardLimit(lowerLimit: number, upperLimit: number, contactDist: number): void {\n this._pxJoint.setHardLimit(MathUtil.degreeToRadian(lowerLimit), MathUtil.degreeToRadian(upperLimit), contactDist);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHardLimitCone }\n */\n setSoftLimit(lowerLimit: number, upperLimit: number, stiffness: number, damping: number): void {\n this._pxJoint.setSoftLimit(\n MathUtil.degreeToRadian(lowerLimit),\n MathUtil.degreeToRadian(upperLimit),\n stiffness,\n damping\n );\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveVelocity }\n */\n setDriveVelocity(velocity: number, autowake: boolean = true): void {\n this._pxJoint.setDriveVelocity(velocity, autowake);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveForceLimit }\n */\n setDriveForceLimit(limit: number): void {\n this._pxJoint.setDriveForceLimit(limit);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveGearRatio }\n */\n setDriveGearRatio(ratio: number): void {\n this._pxJoint.setDriveGearRatio(ratio);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHingeJointFlag }\n */\n setHingeJointFlag(flag: number, value: boolean): void {\n this._pxJoint.setRevoluteJointFlag(flag, value);\n }\n}\n","import { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\nimport { ISpringJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { Vector3 } from \"@galacean/engine\";\n\n/**\n * a joint that maintains an upper or lower bound (or both) on the distance between two points on different objects\n */\nexport class PhysXSpringJoint extends PhysXJoint implements ISpringJoint {\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createDistanceJoint(\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n this._pxJoint.setDistanceJointFlag(2, true); // enable max distance;\n this._pxJoint.setDistanceJointFlag(4, true); // enable min distance;\n this._pxJoint.setDistanceJointFlag(8, true); // enable spring;\n }\n\n /**\n * {@inheritDoc ISpringJoint.setMinDistance }\n */\n setMinDistance(distance: number): void {\n this._pxJoint.setMinDistance(distance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setMaxDistance }\n */\n setMaxDistance(distance: number): void {\n this._pxJoint.setMaxDistance(distance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setTolerance }\n */\n setTolerance(tolerance: number): void {\n this._pxJoint.setTolerance(tolerance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setStiffness }\n */\n setStiffness(stiffness: number): void {\n this._pxJoint.setStiffness(stiffness);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setDamping }\n */\n setDamping(damping: number): void {\n this._pxJoint.setDamping(damping);\n }\n}\n","function _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n return self;\n}\nexport { _assert_this_initialized as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { _ as _assert_this_initialized } from \"./_assert_this_initialized.js\";\nimport { _ as _type_of } from \"./_type_of.js\";\n\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n\n return _assert_this_initialized(self);\n}\nexport { _possible_constructor_return as _ };\n","import { MeshColliderShapeCookingFlag, Vector3 } from \"@galacean/engine\";\nimport { IMeshColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape, ShapeFlag } from \"./PhysXColliderShape\";\n\n/**\n * Mesh collider shape in PhysX.\n */\nexport class PhysXMeshColliderShape extends PhysXColliderShape implements IMeshColliderShape {\n private static _tightBoundsFlag = 1; // eTIGHT_BOUNDS = 1 (1<<0)\n\n private _pxMesh: any = null;\n private _isConvex: boolean;\n\n constructor(\n physXPhysics: PhysXPhysics,\n uniqueID: number,\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n material: PhysXPhysicsMaterial,\n cookingFlags: number\n ) {\n super(physXPhysics);\n this._isConvex = isConvex;\n\n if (!this._cookMesh(positions, indices, cookingFlags)) {\n return;\n }\n\n const { _physX: physX, _pxPhysics: physics } = physXPhysics;\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const shapeFlags = ShapeFlag.SCENE_QUERY_SHAPE | ShapeFlag.SIMULATION_SHAPE;\n const meshFlag = isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n const createShapeFn = isConvex ? physX.createConvexMeshShape : physX.createTriMeshShape;\n\n this._pxShape = createShapeFn(\n this._pxMesh,\n scaleX,\n scaleY,\n scaleZ,\n meshFlag,\n shapeFlags,\n material._pxMaterial,\n physics\n );\n\n this._id = uniqueID;\n this._pxMaterial = material._pxMaterial;\n this._pxShape.setUUID(uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IMeshColliderShape.setMeshData }\n */\n setMeshData(\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n cookingFlags: number\n ): boolean {\n this._pxMesh?.release();\n this._pxGeometry?.delete();\n this._pxMesh = null;\n this._pxGeometry = null;\n this._isConvex = isConvex;\n\n if (!this._cookMesh(positions, indices, cookingFlags)) {\n return false;\n }\n\n this._pxShape.setGeometry(this._pxGeometry);\n return true;\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._updateGeometry();\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n override destroy(): void {\n this._pxMesh?.release();\n super.destroy();\n }\n\n private _cookMesh(\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n cookingFlags: number\n ): boolean {\n const {\n _physX: physX,\n _pxPhysics: physics,\n _pxCooking: cooking,\n _pxCookingParams: cookingParams\n } = this._physXPhysics;\n\n // Apply per-shape cooking flags\n let preprocessFlags = 0;\n if (cookingFlags & MeshColliderShapeCookingFlag.VertexWelding) {\n preprocessFlags |= 1; // eWELD_VERTICES\n }\n if (!(cookingFlags & MeshColliderShapeCookingFlag.Cleaning)) {\n preprocessFlags |= 2; // eDISABLE_CLEAN_MESH\n }\n physX.setCookingMeshPreprocessParams(cookingParams, preprocessFlags);\n cooking.setParams(cookingParams);\n\n const verticesPtr = this._allocatePositions(positions);\n\n if (this._isConvex) {\n this._pxMesh = cooking.createConvexMesh(verticesPtr, positions.length, physics);\n physX._free(verticesPtr);\n\n if (!this._pxMesh) {\n this._logConvexCookingError(physX);\n return false;\n }\n } else {\n if (!indices) {\n physX._free(verticesPtr);\n console.error(\"PhysXMeshColliderShape: Triangle mesh requires indices.\");\n return false;\n }\n\n const isU32 = indices instanceof Uint32Array;\n const indicesPtr = this._allocateIndices(indices, isU32);\n this._pxMesh = cooking.createTriMesh(\n verticesPtr,\n positions.length,\n indicesPtr,\n indices.length / 3,\n !isU32,\n physics\n );\n physX._free(verticesPtr);\n physX._free(indicesPtr);\n\n if (!this._pxMesh) {\n this._logTriMeshCookingError(physX);\n return false;\n }\n }\n\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const meshFlag = this._isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n this._pxGeometry = this._isConvex\n ? physX.createConvexMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag)\n : physX.createTriMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag);\n\n return true;\n }\n\n private _logConvexCookingError(physX: any): void {\n switch (physX.getLastConvexCookingResult()) {\n case 1: // eZERO_AREA_TEST_FAILED\n console.error(\n \"PhysXMeshColliderShape: Failed to create convex mesh. Could not find 4 vertices that do not form a zero-area triangle.\"\n );\n break;\n case 2: // ePOLYGONS_LIMIT_REACHED\n console.error(\n \"PhysXMeshColliderShape: Failed to create convex mesh within the maximum polygons limit (256). Consider simplifying the mesh.\"\n );\n break;\n default: // eFAILURE\n console.error(\"PhysXMeshColliderShape: Failed to create convex mesh. The input geometry may be invalid.\");\n break;\n }\n }\n\n private _logTriMeshCookingError(physX: any): void {\n switch (physX.getLastTriMeshCookingResult()) {\n case 1: // eLARGE_TRIANGLE\n console.error(\n \"PhysXMeshColliderShape: Failed to create triangle mesh. One of the triangles is too large. Consider tessellating large triangles.\"\n );\n break;\n default: // eFAILURE\n console.error(\"PhysXMeshColliderShape: Failed to create triangle mesh. The input geometry may be invalid.\");\n break;\n }\n }\n\n private _allocatePositions(positions: Vector3[]): number {\n const physX = this._physXPhysics._physX;\n const length = positions.length;\n const ptr = physX._malloc(length * 3 * 4);\n const view = new Float32Array(physX.HEAPF32.buffer, ptr, length * 3);\n for (let i = 0, offset = 0; i < length; i++, offset += 3) {\n positions[i].copyToArray(view, offset);\n }\n return ptr;\n }\n\n private _allocateIndices(indices: Uint8Array | Uint16Array | Uint32Array, isU32: boolean): number {\n const physX = this._physXPhysics._physX;\n // Uint8Array and Uint16Array both write as Uint16 (PhysX minimum index size)\n const TypedArrayCtor = isU32 ? Uint32Array : Uint16Array;\n const heap = isU32 ? physX.HEAPU32 : physX.HEAPU16;\n const ptr = physX._malloc(indices.length * TypedArrayCtor.BYTES_PER_ELEMENT);\n new TypedArrayCtor(heap.buffer, ptr, indices.length).set(indices);\n return ptr;\n }\n\n private _updateGeometry(): void {\n if (!this._pxMesh) return;\n const physX = this._physXPhysics._physX;\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const meshFlag = this._isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n\n const newGeometry = this._isConvex\n ? physX.createConvexMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag)\n : physX.createTriMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag);\n\n this._pxGeometry.delete();\n this._pxGeometry = newGeometry;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { IPlaneColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Plane collider shape in PhysX.\n */\nexport class PhysXPlaneColliderShape extends PhysXColliderShape implements IPlaneColliderShape {\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n this._axis = new Quaternion(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n this._physXRotation.copyFrom(this._axis);\n\n this._pxGeometry = new physXPhysics._physX.PxPlaneGeometry();\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Sphere collider shape in PhysX.\n */\nexport class PhysXSphereColliderShape extends PhysXColliderShape implements ISphereColliderShape {\n private _radius: number;\n private _maxScale: number = 1;\n\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, radius: number, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n\n this._radius = radius;\n this._pxGeometry = new physXPhysics._physX.PxSphereGeometry(radius * this._maxScale);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc ISphereColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n this._pxGeometry.radius = value * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n\n this._maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._pxGeometry.radius = this._radius * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { Quaternion, SystemInfo, Vector3 } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n ICollision,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IMeshColliderShape,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPhysicsScene,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXDynamicCollider } from \"./PhysXDynamicCollider\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXPhysicsMaterial } from \"./PhysXPhysicsMaterial\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\nimport { PhysXStaticCollider } from \"./PhysXStaticCollider\";\nimport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\nimport { PhysXFixedJoint } from \"./joint/PhysXFixedJoint\";\nimport { PhysXHingeJoint } from \"./joint/PhysXHingeJoint\";\nimport { PhysXSpringJoint } from \"./joint/PhysXSpringJoint\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXMeshColliderShape } from \"./shape/PhysXMeshColliderShape\";\nimport { PhysXPlaneColliderShape } from \"./shape/PhysXPlaneColliderShape\";\nimport { PhysXSphereColliderShape } from \"./shape/PhysXSphereColliderShape\";\n\n/**\n * PhysX object creation.\n */\n\nexport class PhysXPhysics implements IPhysics {\n /** @internal PhysX wasm object */\n _physX: any;\n /** @internal PhysX Foundation SDK singleton class */\n _pxFoundation: any;\n /** @internal PhysX physics object */\n _pxPhysics: any;\n /** @internal PhysX cooking object for mesh colliders */\n _pxCooking: any;\n /** @internal PhysX cooking params */\n _pxCookingParams: any;\n\n private _runTimeMode: PhysXRuntimeMode;\n private _initializeState: InitializeState = InitializeState.Uninitialized;\n private _initializePromise: Promise<void>;\n private _defaultErrorCallback: any;\n private _allocator: any;\n private _tolerancesScale: any;\n private _wasmSIMDModeUrl: string;\n private _wasmModeUrl: string;\n\n /**\n * Create a PhysXPhysics instance.\n * @param runtimeMode - Runtime mode, `Auto` prefers WebAssembly SIMD if supported @see {@link PhysXRuntimeMode}\n * @param runtimeUrls - Manually specify the runtime URLs\n */\n constructor(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto, runtimeUrls?: PhysXRuntimeUrls) {\n this._runTimeMode = runtimeMode;\n this._wasmSIMDModeUrl =\n runtimeUrls?.wasmSIMDModeUrl ??\n \"https://mdn.alipayobjects.com/rms/afts/file/A*FHYHS4_ZL5UAAAAAQ4AAAAgAehQnAQ/physx.release.simd.js\";\n this._wasmModeUrl =\n runtimeUrls?.wasmModeUrl ??\n \"https://mdn.alipayobjects.com/rms/afts/file/A*2fv0RLMK1d0AAAAAQ4AAAAgAehQnAQ/physx.release.js\";\n }\n\n /**\n * Initialize PhysXPhysics.\n * @param runtimeMode - Runtime mode\n * @returns Promise object\n */\n initialize(): Promise<void> {\n if (this._initializeState === InitializeState.Initialized) {\n return Promise.resolve();\n } else if (this._initializeState === InitializeState.Initializing) {\n return this._initializePromise;\n }\n\n this._initializeState = InitializeState.Initializing;\n let runtimeMode = this._runTimeMode;\n const scriptPromise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n document.body.appendChild(script);\n script.async = true;\n script.onload = resolve;\n script.onerror = reject;\n if (runtimeMode == PhysXRuntimeMode.Auto) {\n runtimeMode = (SystemInfo as any)._detectSIMDSupported()\n ? PhysXRuntimeMode.WebAssemblySIMD\n : PhysXRuntimeMode.WebAssembly;\n }\n\n if (runtimeMode == PhysXRuntimeMode.WebAssemblySIMD) {\n script.src = this._wasmSIMDModeUrl;\n } else {\n script.src = this._wasmModeUrl;\n }\n });\n\n const initializePromise = new Promise<void>((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX: any) => {\n this._runTimeMode = runtimeMode;\n this._init(PHYSX);\n this._initializeState = InitializeState.Initialized;\n this._initializePromise = null;\n console.log(\"PhysX loaded.\");\n resolve();\n }, reject),\n reject\n )\n .catch(reject);\n });\n\n this._initializePromise = initializePromise;\n return initializePromise;\n }\n\n /**\n * Destroy PhysXPhysics.\n */\n destroy(): void {\n this._pxCooking.release();\n this._pxCookingParams.delete();\n this._physX.PxCloseExtensions();\n this._pxPhysics.release();\n this._pxFoundation.release();\n this._defaultErrorCallback.delete();\n this._allocator.delete();\n this._tolerancesScale.delete();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n createPhysicsManager(): IPhysicsManager {\n return new PhysXPhysicsManager();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsScene }\n */\n createPhysicsScene(\n physicsManager: PhysXPhysicsManager,\n onContactBegin?: (collision: ICollision) => void,\n onContactEnd?: (collision: ICollision) => void,\n onContactStay?: (collision: ICollision) => void,\n onTriggerBegin?: (obj1: number, obj2: number) => void,\n onTriggerEnd?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ): IPhysicsScene {\n const scene = new PhysXPhysicsScene(\n this,\n physicsManager,\n onContactBegin,\n onContactEnd,\n onContactStay,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerStay\n );\n return scene;\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new PhysXStaticCollider(this, position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new PhysXDynamicCollider(this, position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n createCharacterController(): ICharacterController {\n return new PhysXCharacterController(this);\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 PhysXPhysicsMaterial(this, staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n createBoxColliderShape(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial): IBoxColliderShape {\n return new PhysXBoxColliderShape(this, uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n createSphereColliderShape(uniqueID: number, radius: number, material: PhysXPhysicsMaterial): ISphereColliderShape {\n return new PhysXSphereColliderShape(this, uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n createPlaneColliderShape(uniqueID: number, material: PhysXPhysicsMaterial): IPlaneColliderShape {\n return new PhysXPlaneColliderShape(this, uniqueID, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ): ICapsuleColliderShape {\n return new PhysXCapsuleColliderShape(this, uniqueID, radius, height, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createMeshColliderShape }\n */\n createMeshColliderShape(\n uniqueID: number,\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n material: PhysXPhysicsMaterial,\n cookingFlags: number\n ): IMeshColliderShape | null {\n const shape = new PhysXMeshColliderShape(this, uniqueID, positions, indices, isConvex, material, cookingFlags);\n return shape._pxShape ? shape : null;\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n createFixedJoint(collider: PhysXCollider): IFixedJoint {\n return new PhysXFixedJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n createHingeJoint(collider: PhysXCollider): IHingeJoint {\n return new PhysXHingeJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n createSpringJoint(collider: PhysXCollider): ISpringJoint {\n return new PhysXSpringJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.getColliderLayerCollision }\n */\n getColliderLayerCollision(layer1: number, layer2: number): boolean {\n return this._physX.getGroupCollisionFlag(layer1, layer2);\n }\n\n /**\n * {@inheritDoc IPhysics.setColliderLayerCollision }\n */\n setColliderLayerCollision(layer1: number, layer2: number, isCollide: boolean): void {\n this._physX.setGroupCollisionFlag(layer1, layer2, isCollide);\n }\n\n private _init(physX: any): void {\n const version = physX.PX_PHYSICS_VERSION;\n const defaultErrorCallback = new physX.PxDefaultErrorCallback();\n const allocator = new physX.PxDefaultAllocator();\n const pxFoundation = physX.PxCreateFoundation(version, allocator, defaultErrorCallback);\n const tolerancesScale = new physX.PxTolerancesScale();\n const pxPhysics = physX.PxCreatePhysics(version, pxFoundation, tolerancesScale, false, null);\n\n physX.PxInitExtensions(pxPhysics, null);\n\n // Initialize cooking for mesh colliders\n const cookingParams = new physX.PxCookingParams(tolerancesScale);\n physX.setCookingMeshPreprocessParams(cookingParams, 1); // eWELD_VERTICES\n cookingParams.meshWeldTolerance = 0.001;\n // BVH34 midphase requires SSE2; SIMD WASM provides SSE2 via WASM SIMD\n if (this._runTimeMode === PhysXRuntimeMode.WebAssemblySIMD) {\n physX.setCookingMidphaseType(cookingParams, 1); // eBVH34\n }\n const pxCooking = physX.PxCreateCooking(version, pxFoundation, cookingParams);\n\n this._physX = physX;\n this._pxFoundation = pxFoundation;\n this._pxPhysics = pxPhysics;\n this._pxCooking = pxCooking;\n this._pxCookingParams = cookingParams;\n this._defaultErrorCallback = defaultErrorCallback;\n this._allocator = allocator;\n this._tolerancesScale = tolerancesScale;\n }\n}\n\nenum InitializeState {\n Uninitialized,\n Initializing,\n Initialized\n}\n\ninterface PhysXRuntimeUrls {\n /*** The URL of `PhysXRuntimeMode.WebAssembly` mode. */\n wasmModeUrl?: string;\n /*** The URL of `PhysXRuntimeMode.WebAssemblySIMD` mode. */\n wasmSIMDModeUrl?: string;\n}\n","export { PhysXPhysics } from \"./PhysXPhysics\";\nexport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean Engine Physics PhysX Version: ${version}`);\n"],"names":["ShapeFlag","PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_contractOffset","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","_physXPhysics","setRotation","value","rotation","set","MathUtil","degreeToRadian","x","y","z","rotationYawPitchRoll","multiply","normalize","_setLocalPose","setPosition","copyFrom","controllers","i","n","length","get","_updateShapePosition","setWorldScale","scale","Math","abs","setContactOffset","offset","_pxController","_pxShape","setMaterial","_pxMaterial","setIsTrigger","_modifyFlag","_setShapeFlags","pointDistance","point","info","_pxGeometry","getGlobalPose","closestPoint","res","_tempVector4","distance","destroy","release","delete","flags","shapeFlags","_physX","PxShapeFlags","setFlags","transform","translation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","setUUID","flag","halfSqrt","Vector4","PhysXBoxColliderShape","uniqueID","size","_halfSize","halfSize","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","console","warn","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","max","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","ColliderShapeUpAxis","PhysXCharacterController","_scene","_shapeScaledPosition","_worldPosition","move","disp","minDist","elapsedTime","setWorldPosition","position","_updateNativePosition","getWorldPosition","getPosition","subtract","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","cos","PI","addShape","shape","_pxManager","_createPXController","_shape","add","_addColliderShape","removeShape","_destroyPXController","_removeColliderShape","setCollisionLayer","layer","actor","getActor","setGroup","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","lengthSquared","PxCapsuleControllerDesc","climbingMode","Y","_getControllerManager","createController","shapePosition","worldScale","worldPosition","_tempVec","PhysXCollider","_shapes","Array","_pxActor","attachShape","push","detachShape","shapes","splice","indexOf","setWorldTransform","setGlobalPose","_transform","getWorldTransform","outPosition","outRotation","w","pos","rot","_tempTransform","PhysXDynamicCollider","createRigidDynamic","setLinearDamping","setAngularDamping","getLinearVelocity","out","velocity","setLinearVelocity","getAngularVelocity","radianToDegree","setAngularVelocity","_tempTranslation","setMass","getCenterOfMass","getCMassLocalPose","setCenterOfMass","setCMassLocalPose","setInertiaTensor","setMassSpaceInertiaTensor","getInertiaTensor","inertia","getMassSpaceInertiaTensor","setMassAndUpdateInertia","mass","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","setSolverIterationCounts","setCollisionDetectionMode","physX","setRigidBodyFlag","PxRigidBodyFlag","eENABLE_CCD","eENABLE_CCD_FRICTION","eENABLE_SPECULATIVE_CCD","setUseGravity","setActorFlag","PxActorFlag","eDISABLE_GRAVITY","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","isSleeping","wakeUp","PhysXPhysicsManager","_eventMap","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","PhysXPhysicsScene","physicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_pxControllerManager","_boxGeometry","_sphereGeometry","_capsuleGeometry","_currentEvents","_eventPool","_physXManager","_pxRaycastHit","PxRaycastHit","_pxFilterData","PxQueryFilterData","PxQueryFlags","QueryFlag","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","triggerCallback","onContactBegin","collision","onContactEnd","onContactPersist","onTriggerBegin","index1","index2","event","_getTrigger","state","onTriggerEnd","subMap","undefined","pxPhysics","_physXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addCollider","collider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","_fireEvent","raycast","ray","onRaycast","hit","pxHitResult","min","raycastCallback","preFilter","filterData","index","pxRaycastCallback","PxQueryFilterCallback","result","raycastSingle","origin","direction","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","boxCast","center","orientation","onSweep","outHitResult","pose","_tempPose","_sweepSingle","sphereCast","PxSphereGeometry","tempQuat","_tempQuaternion","capsuleCast","overlapBoxAll","onOverlap","_overlapMultiple","overlapSphereAll","overlapCapsuleAll","pxControllerManager","createControllerManager","Object","create","eventPool","currentEvents","eventMap","forEach","deleteByIndex","sweepCallback","pxSweepCallback","pxSweepHit","PxSweepHit","sweepSingle","overlapCallback","pxOverlapCallback","maxHits","hits","overlapMultiple","_tempShapeIDs","simulate","block","fetchResults","pop","TriggerEvent","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","PhysXJoint","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setAnchor","_defaultQuat","_anchor","setConnectedAnchor","_connectedAnchor","setMassScale","setInvMassScale0","setConnectedMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale0","setConnectedInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_connectedAxisRotationQuaternion","createRevoluteJoint","setAxis","xAxis","_xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","connectedAxisRotationQuaternion","getAngle","getVelocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","autowake","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","PhysXMeshColliderShape","positions","indices","isConvex","cookingFlags","_pxMesh","_isConvex","_cookMesh","physics","scaleY","scaleZ","SCENE_QUERY_SHAPE","SIMULATION_SHAPE","meshFlag","_tightBoundsFlag","createShapeFn","createConvexMeshShape","createTriMeshShape","scaleX","setMeshData","_updateGeometry","_pxCooking","cooking","_pxCookingParams","cookingParams","preprocessFlags","MeshColliderShapeCookingFlag","VertexWelding","Cleaning","setCookingMeshPreprocessParams","setParams","verticesPtr","_allocatePositions","createConvexMesh","_free","_logConvexCookingError","error","isU32","Uint32Array","indicesPtr","_allocateIndices","createTriMesh","_logTriMeshCookingError","createConvexMeshGeometry","createTriMeshGeometry","getLastConvexCookingResult","getLastTriMeshCookingResult","ptr","_malloc","view","Float32Array","HEAPF32","buffer","copyToArray","TypedArrayCtor","Uint16Array","heap","HEAPU32","HEAPU16","BYTES_PER_ELEMENT","newGeometry","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PhysXPhysics","runtimeMode","runtimeUrls","Auto","_initializeState","_runTimeMode","_wasmSIMDModeUrl","wasmSIMDModeUrl","_wasmModeUrl","wasmModeUrl","initialize","Promise","resolve","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","SystemInfo","_detectSIMDSupported","WebAssemblySIMD","WebAssembly","src","initializePromise","then","window","PHYSX","_init","log","catch","PxCloseExtensions","_pxFoundation","_defaultErrorCallback","_allocator","_tolerancesScale","createPhysicsManager","createPhysicsScene","scene","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createMeshColliderShape","createHingeJoint","createSpringJoint","getColliderLayerCollision","layer1","layer2","getGroupCollisionFlag","setColliderLayerCollision","isCollide","setGroupCollisionFlag","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","tolerancesScale","PxTolerancesScale","PxCreatePhysics","PxInitExtensions","PxCookingParams","meshWeldTolerance","setCookingMidphaseType","pxCooking","PxCreateCooking"],"mappings":"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"}
1
+ {"version":3,"file":"browser.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_inherits.js","../src/shape/PhysXColliderShape.ts","../src/shape/PhysXBoxColliderShape.ts","../src/shape/PhysXCapsuleColliderShape.ts","../src/PhysXCharacterController.ts","../src/PhysXCollider.ts","../src/PhysXDynamicCollider.ts","../src/PhysXPhysicsManager.ts","../src/PhysXPhysicsMaterial.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_create_class.js","../src/PhysXPhysicsScene.ts","../src/PhysXStaticCollider.ts","../src/enum/PhysXRuntimeMode.ts","../src/joint/PhysXJoint.ts","../src/joint/PhysXFixedJoint.ts","../src/joint/PhysXHingeJoint.ts","../src/joint/PhysXSpringJoint.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_assert_this_initialized.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_type_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_possible_constructor_return.js","../src/shape/PhysXMeshColliderShape.ts","../src/shape/PhysXPlaneColliderShape.ts","../src/shape/PhysXSphereColliderShape.ts","../src/PhysXPhysics.ts","../src/index.ts"],"sourcesContent":["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","function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _ as _set_prototype_of } from \"./_set_prototype_of.js\";\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import { Quaternion, Vector3, DisorderedArray, Vector4, MathUtil } from \"@galacean/engine\";\nimport { IColliderShape } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"../PhysXCharacterController\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\n\n/**\n * Flags which affect the behavior of Shapes.\n */\nexport enum ShapeFlag {\n /** The shape will partake in collision in the physical simulation. */\n SIMULATION_SHAPE = 1 << 0,\n /** The shape will partake in scene queries (ray casts, overlap tests, sweeps, ...). */\n SCENE_QUERY_SHAPE = 1 << 1,\n /** The shape is a trigger which can send reports whenever other shapes enter/leave its volume. */\n TRIGGER_SHAPE = 1 << 2\n}\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class PhysXColliderShape implements IColliderShape {\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n protected static _tempVector4 = new Vector4();\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n /** @internal */\n _contractOffset: number = 0.02;\n\n /** @internal */\n _worldScale: Vector3 = new Vector3(1, 1, 1);\n /** @internal */\n _position: Vector3 = new Vector3();\n /** @internal */\n _pxMaterial: any;\n /** @internal */\n _pxShape: any;\n /** @internal */\n /** @internal */\n _id: number;\n /** @internal */\n _rotation: Vector3 = new Vector3();\n\n protected _physXPhysics: PhysXPhysics;\n protected _pxGeometry: any;\n protected _axis: Quaternion = null;\n protected _physXRotation: Quaternion = new Quaternion();\n\n private _shapeFlags: ShapeFlag = ShapeFlag.SCENE_QUERY_SHAPE | ShapeFlag.SIMULATION_SHAPE;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n setRotation(value: Vector3): void {\n const rotation = this._rotation.set(\n MathUtil.degreeToRadian(value.x),\n MathUtil.degreeToRadian(value.y),\n MathUtil.degreeToRadian(value.z)\n );\n Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, this._physXRotation);\n this._axis && Quaternion.multiply(this._physXRotation, this._axis, this._physXRotation);\n this._physXRotation.normalize();\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setPosition }\n */\n setPosition(value: Vector3): void {\n if (value !== this._position) {\n this._position.copyFrom(value);\n }\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._updateShapePosition(this._position, this._worldScale);\n }\n\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._worldScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._setLocalPose();\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._updateShapePosition(this._position, this._worldScale);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setContactOffset }\n * @default 0.02f * PxTolerancesScale::length\n */\n setContactOffset(offset: number): void {\n this._contractOffset = offset;\n const controllers = this._controllers;\n if (controllers.length) {\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setContactOffset(offset);\n }\n } else {\n this._pxShape.setContactOffset(offset);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setMaterial }\n */\n setMaterial(value: PhysXPhysicsMaterial): void {\n this._pxMaterial = value._pxMaterial;\n this._pxShape.setMaterial(this._pxMaterial);\n }\n\n /**\n * {@inheritDoc IColliderShape.setIsTrigger }\n */\n setIsTrigger(value: boolean): void {\n this._modifyFlag(ShapeFlag.SIMULATION_SHAPE, !value);\n this._modifyFlag(ShapeFlag.TRIGGER_SHAPE, value);\n this._setShapeFlags(this._shapeFlags);\n }\n\n /**\n * {@inheritDoc IColliderShape.pointDistance }\n */\n pointDistance(point: Vector3): Vector4 {\n const info = this._pxGeometry.pointDistance(this._pxShape.getGlobalPose(), point);\n const closestPoint = info.closestPoint;\n const res = PhysXColliderShape._tempVector4;\n res.set(closestPoint.x, closestPoint.y, closestPoint.z, info.distance);\n return res;\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n destroy(): void {\n this._pxShape.release();\n this._pxGeometry?.delete();\n }\n\n /**\n * @internal\n */\n _setShapeFlags(flags: ShapeFlag) {\n this._shapeFlags = flags;\n const shapeFlags = new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags);\n this._pxShape.setFlags(shapeFlags);\n shapeFlags.delete();\n }\n\n protected _setLocalPose(): void {\n const transform = PhysXColliderShape.transform;\n Vector3.multiply(this._position, this._worldScale, transform.translation);\n transform.rotation = this._physXRotation;\n this._pxShape.setLocalPose(transform);\n }\n\n protected _initialize(material: PhysXPhysicsMaterial, id: number): void {\n this._id = id;\n this._pxMaterial = material._pxMaterial;\n const shapeFlags = new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags);\n this._pxShape = this._physXPhysics._pxPhysics.createShape(this._pxGeometry, material._pxMaterial, true, shapeFlags);\n shapeFlags.delete();\n this._pxShape.setUUID(id);\n }\n\n private _modifyFlag(flag: ShapeFlag, value: boolean): void {\n this._shapeFlags = value ? this._shapeFlags | flag : this._shapeFlags & ~flag;\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Box collider shape in PhysX.\n */\nexport class PhysXBoxColliderShape extends PhysXColliderShape implements IBoxColliderShape {\n private static _tempHalfExtents = new Vector3();\n /** @internal */\n _halfSize: Vector3 = new Vector3();\n\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n const halfSize = this._halfSize;\n halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n this._pxGeometry = new physXPhysics._physX.PxBoxGeometry(halfSize.x, halfSize.y, halfSize.z);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n const halfSize = this._halfSize;\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n Vector3.multiply(halfSize, this._worldScale, tempExtents);\n this._pxGeometry.halfExtents = tempExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n this._updateController(tempExtents);\n }\n\n /**\n * {@inheritDoc IColliderShape.setRotation }\n */\n override setRotation(value: Vector3): void {\n super.setRotation(value);\n if (this._controllers.length > 0) {\n console.warn(\"Box character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n Vector3.multiply(this._halfSize, this._worldScale, tempExtents);\n this._pxGeometry.halfExtents = tempExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n this._updateController(tempExtents);\n }\n\n private _updateController(extents: Vector3) {\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n\n if (pxController) {\n pxController.setHalfHeight(extents.y);\n pxController.setHalfSideExtent(extents.x);\n pxController.setHalfForwardExtent(extents.z);\n }\n }\n }\n}\n","import { ICapsuleColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n/**\n * Capsule collider shape in PhysX.\n */\nexport class PhysXCapsuleColliderShape extends PhysXColliderShape implements ICapsuleColliderShape {\n /** @internal */\n _radius: number;\n /** @internal */\n _halfHeight: number;\n /** @internal */\n _upAxis: ColliderShapeUpAxis = ColliderShapeUpAxis.Y;\n\n constructor(\n physXPhysics: PhysXPhysics,\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ) {\n super(physXPhysics);\n\n this._radius = radius;\n this._halfHeight = height * 0.5;\n this._axis = new Quaternion(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n this._physXRotation.copyFrom(this._axis);\n\n this._pxGeometry = new physXPhysics._physX.PxCapsuleGeometry(radius, this._halfHeight);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n const sizeScale = this._worldScale;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.y, sizeScale.z);\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.z);\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.y);\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const radius = this._pxGeometry.radius;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setRadius(radius);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setHeight }\n */\n setHeight(value: number): void {\n this._halfHeight = value * 0.5;\n const sizeScale = this._worldScale;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.halfHeight = this._halfHeight * sizeScale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const height = this._pxGeometry.halfHeight * 2;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.setHeight(height);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setRotation }\n */\n override setRotation(value: Vector3): void {\n super.setRotation(value);\n if (this._controllers.length > 0) {\n console.warn(\"Capsule character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setUpAxis }\n */\n setUpAxis(upAxis: ColliderShapeUpAxis): void {\n const { _rotation: rotation, _axis: axis, _physXRotation: physXRotation } = this;\n\n this._upAxis = upAxis;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n axis.set(0, 0, 0, 1);\n break;\n case ColliderShapeUpAxis.Y:\n axis.set(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n break;\n case ColliderShapeUpAxis.Z:\n axis.set(0, PhysXColliderShape.halfSqrt, 0, PhysXColliderShape.halfSqrt);\n break;\n }\n if (rotation) {\n Quaternion.rotationYawPitchRoll(rotation.y, rotation.x, rotation.z, physXRotation);\n Quaternion.multiply(physXRotation, axis, physXRotation);\n } else {\n physXRotation.copyFrom(axis);\n }\n this._setLocalPose();\n\n if (this._controllers.length > 0) {\n console.warn(\"Capsule character controller `upAxis` is not supported in PhysX and will be ignored\");\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n const sizeScale = this._worldScale;\n const geometry = this._pxGeometry;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n geometry.radius = this._radius * Math.max(sizeScale.y, sizeScale.z);\n geometry.halfHeight = this._halfHeight * sizeScale.x;\n break;\n case ColliderShapeUpAxis.Y:\n geometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.z);\n geometry.halfHeight = this._halfHeight * sizeScale.y;\n break;\n case ColliderShapeUpAxis.Z:\n geometry.radius = this._radius * Math.max(sizeScale.x, sizeScale.y);\n geometry.halfHeight = this._halfHeight * sizeScale.z;\n break;\n }\n this._pxShape.setGeometry(geometry);\n\n const radius = geometry.radius;\n const height = geometry.halfHeight * 2;\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n if (pxController) {\n pxController.setRadius(radius);\n pxController.setHeight(height);\n }\n }\n }\n}\n\n/**\n * The up axis of the collider shape.\n */\nexport enum ColliderShapeUpAxis {\n /** Up axis is X. */\n X,\n /** Up axis is Y. */\n Y,\n /** Up axis is Z. */\n Z\n}\n","import { ICharacterController } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { ColliderShapeUpAxis, PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\n\n/**\n * Base class for character controllers.\n */\nexport class PhysXCharacterController implements ICharacterController {\n private static _tempVec = new Vector3();\n\n /** @internal */\n _scene: PhysXPhysicsScene = null;\n /** @internal */\n _id: number;\n /** @internal */\n _pxController: any;\n /** @internal */\n _pxManager: PhysXPhysicsScene;\n /** @internal */\n _shape: PhysXColliderShape;\n private _shapeScaledPosition = new Vector3();\n private _worldPosition: Vector3 = null;\n\n private _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc ICharacterController.move }\n */\n move(disp: Vector3, minDist: number, elapsedTime: number): number {\n return this._pxController?.move(disp, minDist, elapsedTime) ?? 0;\n }\n\n /**\n * {@inheritDoc ICharacterController.setWorldPosition }\n */\n setWorldPosition(position: Vector3): void {\n this._worldPosition = position;\n this._updateNativePosition();\n }\n\n /**\n * {@inheritDoc ICharacterController.getWorldPosition }\n */\n getWorldPosition(position: Vector3): void {\n if (this._pxController) {\n position.copyFrom(this._pxController.getPosition());\n position.subtract(this._shapeScaledPosition);\n }\n }\n\n /**\n * {@inheritDoc ICharacterController.setStepOffset }\n */\n setStepOffset(offset: number): void {\n this._pxController?.setStepOffset(offset);\n }\n\n /**\n * {@inheritDoc ICharacterController.setNonWalkableMode }\n */\n setNonWalkableMode(flag: number): void {\n this._pxController?.setNonWalkableMode(flag);\n }\n\n /**\n * {@inheritDoc ICharacterController.setUpDirection }\n */\n setUpDirection(up: Vector3): void {\n this._pxController?.setUpDirection(up);\n }\n\n /**\n * {@inheritDoc ICharacterController.setSlopeLimit }\n */\n setSlopeLimit(slopeLimit: number): void {\n this._pxController?.setSlopeLimit(Math.cos((slopeLimit * Math.PI) / 180));\n }\n\n /**\n * {@inheritDoc ICharacterController.addShape }\n */\n addShape(shape: PhysXColliderShape): void {\n // Add shape should sync latest position and world scale to pxController\n this._updateShapePosition(shape._position, shape._worldScale);\n // When CharacterController is disabled, set shape property need check pxController whether exist because of this._pxManager is null and won't create pxController\n this._pxManager && this._createPXController(this._pxManager, shape);\n this._shape = shape;\n shape._controllers.add(this);\n this._pxController?.setContactOffset(shape._contractOffset);\n this._scene?._addColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICharacterController.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._destroyPXController();\n this._shape = null;\n shape._controllers.delete(this);\n this._scene?._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.setCollisionLayer }\n */\n setCollisionLayer(layer: number): void {\n const actor = this._pxController?.getActor();\n\n if (actor) {\n this._physXPhysics._physX.setGroup(actor, layer);\n }\n }\n\n /**\n * {@inheritDoc ICharacterController.destroy }\n */\n destroy(): void {\n this._destroyPXController();\n }\n\n /**\n * @internal\n */\n _createPXController(pxManager: PhysXPhysicsScene, shape: PhysXColliderShape): void {\n let desc: any;\n if (shape instanceof PhysXBoxColliderShape) {\n desc = new this._physXPhysics._physX.PxBoxControllerDesc();\n desc.halfHeight = shape._halfSize.y;\n desc.halfSideExtent = shape._halfSize.x;\n desc.halfForwardExtent = shape._halfSize.z;\n if (shape._rotation.lengthSquared() > 0) {\n console.warn(\"Box character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n } else if (shape instanceof PhysXCapsuleColliderShape) {\n desc = new this._physXPhysics._physX.PxCapsuleControllerDesc();\n desc.radius = shape._radius;\n desc.height = shape._halfHeight * 2;\n desc.climbingMode = 1; // constraint mode\n\n if (shape._rotation.lengthSquared() > 0) {\n console.warn(\"Capsule character controller `rotation` is not supported in PhysX and will be ignored\");\n }\n if (shape._upAxis !== ColliderShapeUpAxis.Y) {\n console.warn(\"Capsule character controller `upAxis` is not supported in PhysX and will be ignored\");\n }\n } else {\n throw \"unsupported shape type\";\n }\n\n desc.setMaterial(shape._pxMaterial);\n this._pxController = pxManager._getControllerManager().createController(desc);\n desc.delete();\n\n this._pxController.setUUID(shape._id);\n\n this._updateNativePosition();\n }\n\n /**\n * @internal\n */\n _destroyPXController(): void {\n if (this._pxController) {\n this._pxController.release();\n this._pxController = null;\n }\n }\n\n /**\n * @internal\n */\n _updateShapePosition(shapePosition: Vector3, worldScale: Vector3): void {\n Vector3.multiply(shapePosition, worldScale, this._shapeScaledPosition);\n this._updateNativePosition();\n }\n\n private _updateNativePosition(): void {\n const worldPosition = this._worldPosition;\n if (this._pxController && worldPosition) {\n Vector3.add(worldPosition, this._shapeScaledPosition, PhysXCharacterController._tempVec);\n this._pxController.setPosition(PhysXCharacterController._tempVec);\n }\n }\n}\n","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\n\n/**\n * Abstract class of physical collider.\n */\nexport abstract class PhysXCollider implements ICollider {\n private static _tempTransform: {\n translation: Vector3;\n rotation: Quaternion;\n } = { translation: null, rotation: null };\n\n /** @internal */\n _scene: PhysXPhysicsScene = null;\n /** @internal */\n _pxActor: any;\n /** @internal */\n _shapes = new Array<PhysXColliderShape>();\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc ICollider.addShape }\n */\n addShape(shape: PhysXColliderShape): void {\n this._pxActor.attachShape(shape._pxShape);\n this._shapes.push(shape);\n this._scene?._addColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._pxActor.detachShape(shape._pxShape, true);\n const shapes = this._shapes;\n shapes.splice(shapes.indexOf(shape), 1);\n this._scene?._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc ICollider.setWorldTransform }\n */\n setWorldTransform(position: Vector3, rotation: Quaternion): void {\n this._pxActor.setGlobalPose(this._transform(position, rotation), true);\n }\n\n /**\n * {@inheritDoc ICollider.getWorldTransform }\n */\n getWorldTransform(outPosition: Vector3, outRotation: Quaternion): void {\n const transform = this._pxActor.getGlobalPose();\n outPosition.set(transform.translation.x, transform.translation.y, transform.translation.z);\n outRotation.set(transform.rotation.x, transform.rotation.y, transform.rotation.z, transform.rotation.w);\n }\n\n /**\n * {@inheritDoc ICollider.setCollisionLayer }\n */\n setCollisionLayer(layer: number): void {\n this._physXPhysics._physX.setGroup(this._pxActor, layer);\n }\n\n /**\n * {@inheritDoc ICollider.destroy }\n */\n destroy(): void {\n this._pxActor.release();\n }\n\n /**\n * @internal\n */\n _transform(pos: Vector3, rot: Quaternion): { translation: Vector3; rotation: Quaternion } {\n const transform = PhysXCollider._tempTransform;\n transform.translation = pos;\n transform.rotation = rot.normalize();\n return transform;\n }\n}\n","import { IDynamicCollider } from \"@galacean/engine-design\";\nimport { MathUtil, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\n\n/**\n * The collision detection mode constants used for PhysXDynamicCollider.collisionDetectionMode.\n * */\nexport enum CollisionDetectionMode {\n /** Continuous collision detection is off for this dynamic collider. */\n Discrete,\n /** Continuous collision detection is on for colliding with static mesh geometry. */\n Continuous,\n /** Continuous collision detection is on for colliding with static and dynamic geometry. */\n ContinuousDynamic,\n /** Speculative continuous collision detection is on for static and dynamic geometries */\n ContinuousSpeculative\n}\n\n/**\n * A dynamic collider can act with self-defined movement or physical force\n */\nexport class PhysXDynamicCollider extends PhysXCollider implements IDynamicCollider {\n private static _tempTranslation = new Vector3();\n private static _tempRotation = new Quaternion();\n\n constructor(physXPhysics: PhysXPhysics, position: Vector3, rotation: Quaternion) {\n super(physXPhysics);\n const transform = this._transform(position, rotation);\n this._pxActor = physXPhysics._pxPhysics.createRigidDynamic(transform);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearDamping }\n */\n setLinearDamping(value: number): void {\n this._pxActor.setLinearDamping(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularDamping }\n */\n setAngularDamping(value: number): void {\n this._pxActor.setAngularDamping(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getLinearVelocity }\n */\n getLinearVelocity(out: Vector3): Vector3 {\n const velocity = this._pxActor.getLinearVelocity();\n return out.set(velocity.x, velocity.y, velocity.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n this._pxActor.setLinearVelocity(value, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getAngularVelocity }\n */\n getAngularVelocity(out: Vector3): Vector3 {\n const velocity = this._pxActor.getAngularVelocity();\n return out.set(\n MathUtil.radianToDegree(velocity.x),\n MathUtil.radianToDegree(velocity.y),\n MathUtil.radianToDegree(velocity.z)\n );\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n PhysXDynamicCollider._tempTranslation.set(\n MathUtil.degreeToRadian(value.x),\n MathUtil.degreeToRadian(value.y),\n MathUtil.degreeToRadian(value.z)\n );\n this._pxActor.setAngularVelocity(PhysXDynamicCollider._tempTranslation, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMass }\n */\n setMass(value: number): void {\n this._pxActor.setMass(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getCenterOfMass }\n */\n getCenterOfMass(out: Vector3): Vector3 {\n const { translation } = this._pxActor.getCMassLocalPose();\n return out.set(translation.x, translation.y, translation.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCenterOfMass }\n */\n setCenterOfMass(position: Vector3): void {\n this._pxActor.setCMassLocalPose(position);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setInertiaTensor }\n */\n setInertiaTensor(value: Vector3): void {\n this._pxActor.setMassSpaceInertiaTensor(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.getInertiaTensor }\n */\n getInertiaTensor(out: Vector3): Vector3 {\n const inertia = this._pxActor.getMassSpaceInertiaTensor();\n return out.set(inertia.x, inertia.y, inertia.z);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMassAndUpdateInertia }\n */\n setMassAndUpdateInertia(mass: number): void {\n this._pxActor.setMassAndUpdateInertia(mass);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n this._pxActor.setMaxAngularVelocity(MathUtil.degreeToRadian(value));\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setMaxDepenetrationVelocity }\n */\n setMaxDepenetrationVelocity(value: number): void {\n this._pxActor.setMaxDepenetrationVelocity(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSleepThreshold }\n * @default 1e-5f * PxTolerancesScale::speed * PxTolerancesScale::speed\n */\n setSleepThreshold(value: number): void {\n this._pxActor.setSleepThreshold(value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setSolverIterations }\n */\n setSolverIterations(value: number): void {\n this._pxActor.setSolverIterationCounts(value, 1);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setCollisionDetectionMode }\n */\n setCollisionDetectionMode(value: number): void {\n const physX = this._physXPhysics._physX;\n\n switch (value) {\n case CollisionDetectionMode.Continuous:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, false);\n break;\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setUseGravity }\n */\n setUseGravity(value: boolean): void {\n this._pxActor.setActorFlag(this._physXPhysics._physX.PxActorFlag.eDISABLE_GRAVITY, !value);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setIsKinematic }\n */\n setIsKinematic(value: boolean): void {\n if (value) {\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, true);\n } else {\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, false);\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setConstraints }\n */\n setConstraints(flags: number): void {\n this._pxActor.setRigidDynamicLockFlags(flags);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addForce }\n */\n addForce(force: Vector3) {\n this._pxActor.addForce({ x: force.x, y: force.y, z: force.z });\n }\n\n /**\n * {@inheritDoc IDynamicCollider.addTorque }\n */\n addTorque(torque: Vector3) {\n this._pxActor.addTorque({ x: torque.x, y: torque.y, z: torque.z });\n }\n\n /**\n * {@inheritDoc IDynamicCollider.move }\n */\n move(positionOrRotation: Vector3 | Quaternion, rotation?: Quaternion): void {\n if (rotation) {\n this._pxActor.setKinematicTarget(positionOrRotation, rotation);\n return;\n }\n\n const tempTranslation = PhysXDynamicCollider._tempTranslation;\n const tempRotation = PhysXDynamicCollider._tempRotation;\n this.getWorldTransform(tempTranslation, tempRotation);\n if (positionOrRotation instanceof Vector3) {\n this._pxActor.setKinematicTarget(positionOrRotation, tempRotation);\n } else {\n this._pxActor.setKinematicTarget(tempTranslation, positionOrRotation);\n }\n }\n\n /**\n * {@inheritDoc IDynamicCollider.sleep }\n */\n sleep(): void {\n return this._pxActor.putToSleep();\n }\n\n /**\n * {@inheritDoc IDynamicCollider.isSleeping }\n */\n isSleeping(): boolean {\n return this._pxActor.isSleeping();\n }\n\n /**\n * {@inheritDoc IDynamicCollider.wakeUp }\n */\n wakeUp(): void {\n return this._pxActor.wakeUp();\n }\n}\n","import { IPhysicsManager } from \"@galacean/engine-design\";\nimport { TriggerEvent } from \"./PhysXPhysicsScene\";\n\nexport class PhysXPhysicsManager implements IPhysicsManager {\n /** @internal */\n _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n}\n","import { IPhysicsMaterial } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\n\n/**\n * Physics material describes how to handle colliding objects (friction, bounciness).\n */\nexport class PhysXPhysicsMaterial implements IPhysicsMaterial {\n /** @internal */\n _pxMaterial: any;\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(\n physXPhysics: PhysXPhysics,\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: CombineMode,\n bounceCombine: CombineMode\n ) {\n this._physXPhysics = physXPhysics;\n const pxMaterial = physXPhysics._pxPhysics.createMaterial(staticFriction, dynamicFriction, bounciness);\n pxMaterial.setFrictionCombineMode(frictionCombine);\n pxMaterial.setRestitutionCombineMode(bounceCombine);\n this._pxMaterial = pxMaterial;\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounciness }\n */\n setBounciness(value: number) {\n this._pxMaterial.setRestitution(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setDynamicFriction }\n */\n setDynamicFriction(value: number) {\n this._pxMaterial.setDynamicFriction(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setStaticFriction }\n */\n setStaticFriction(value: number) {\n this._pxMaterial.setStaticFriction(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setBounceCombine }\n */\n setBounceCombine(value: CombineMode) {\n this._pxMaterial.setRestitutionCombineMode(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.setFrictionCombine }\n */\n setFrictionCombine(value: CombineMode) {\n this._pxMaterial.setFrictionCombineMode(value);\n }\n\n /**\n * {@inheritDoc IPhysicsMaterial.destroy }\n */\n destroy(): void {\n this._pxMaterial.release();\n }\n}\n\n/**\n * Describes how physics materials of the colliding objects are combined.\n */\nenum CombineMode {\n /** Averages the friction/bounce of the two colliding materials. */\n Average,\n /** Uses the smaller friction/bounce of the two colliding materials. */\n Minimum,\n /** Multiplies the friction/bounce of the two colliding materials. */\n Multiply,\n /** Uses the larger friction/bounce of the two colliding materials. */\n Maximum\n}\n","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n\n if (\"value\" in descriptor) descriptor.writable = true;\n\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _create_class(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n\n return Constructor;\n}\nexport { _create_class as _ };\n","import { Ray, Vector3, DisorderedArray, Quaternion } from \"@galacean/engine\";\nimport { ICollision, IPhysicsScene, IPhysicsEvents, IContactEvent, ITriggerEvent } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class PhysXPhysicsScene implements IPhysicsScene {\n /** @internal */\n _pxControllerManager: any = null;\n\n private static _tempPosition: Vector3 = new Vector3();\n private static _tempQuaternion: Quaternion = new Quaternion();\n private static _tempNormal: Vector3 = new Vector3();\n private static _tempPose: { translation: Vector3; rotation: Quaternion } = {\n translation: new Vector3(),\n rotation: new Quaternion()\n };\n private static _tempShapeIDs: number[] = [];\n\n // Cached geometry objects for reuse\n private _boxGeometry: any = null;\n private _sphereGeometry: any = null;\n private _capsuleGeometry: any = null;\n\n private _physXPhysics: PhysXPhysics;\n private _physXManager: PhysXPhysicsManager;\n private _pxRaycastHit: any;\n private _pxFilterData: any;\n\n private _pxScene: any;\n private _physXSimulationCallbackInstance: any;\n\n private _activeTriggers: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n private _contactEvents: ContactEvent[] = [];\n private _contactEventCount = 0;\n private _triggerEvents: TriggerEvent[] = [];\n private _physicsEvents: IPhysicsEvents = { contactEvents: [], contactEventCount: 0, triggerEvents: [] };\n\n private _triggerEventPool: TriggerEvent[] = [];\n\n constructor(physXPhysics: PhysXPhysics, physicsManager: PhysXPhysicsManager) {\n this._physXPhysics = physXPhysics;\n this._physXManager = physicsManager;\n\n const physX = physXPhysics._physX;\n\n this._pxRaycastHit = new physX.PxRaycastHit();\n this._pxFilterData = new physX.PxQueryFilterData();\n this._pxFilterData.flags = new physX.PxQueryFlags(QueryFlag.STATIC | QueryFlag.DYNAMIC | QueryFlag.PRE_FILTER);\n\n const triggerCallback = {\n onContactBegin: (collision) => {\n this._bufferContactEvent(collision, PhysicsEventState.Enter);\n },\n onContactEnd: (collision) => {\n this._bufferContactEvent(collision, PhysicsEventState.Exit);\n },\n onContactPersist: (collision) => {\n this._bufferContactEvent(collision, PhysicsEventState.Stay);\n },\n onTriggerBegin: (index1, index2) => {\n const event = index1 < index2 ? this._getTrigger(index1, index2) : this._getTrigger(index2, index1);\n event.state = PhysicsEventState.Enter;\n this._activeTriggers.add(event);\n },\n onTriggerEnd: (index1, index2) => {\n let event: TriggerEvent;\n if (index1 < index2) {\n const subMap = this._physXManager._eventMap[index1];\n event = subMap[index2];\n subMap[index2] = undefined;\n } else {\n const subMap = this._physXManager._eventMap[index2];\n event = subMap[index1];\n subMap[index1] = undefined;\n }\n event.state = PhysicsEventState.Exit;\n }\n };\n\n const pxPhysics = physXPhysics._pxPhysics;\n this._physXSimulationCallbackInstance = physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = physX.getDefaultSceneDesc(\n pxPhysics.getTolerancesScale(),\n 0,\n this._physXSimulationCallbackInstance\n );\n this._pxScene = pxPhysics.createScene(sceneDesc);\n sceneDesc.delete();\n }\n\n /**\n * {@inheritDoc IPhysicsScene.setGravity }\n */\n setGravity(value: Vector3) {\n this._pxScene.setGravity(value);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.addCollider }\n */\n addCollider(collider: PhysXCollider): void {\n collider._scene = this;\n this._pxScene.addActor(collider._pxActor, null);\n const shapes = collider._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._addColliderShape(shapes[i]._id);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCollider }\n */\n removeCollider(collider: PhysXCollider): void {\n collider._scene = null;\n this._pxScene.removeActor(collider._pxActor, true);\n const shapes = collider._shapes;\n for (let i = 0, n = shapes.length; i < n; i++) {\n this._removeColliderShape(shapes[i]._id);\n }\n }\n\n /**\n * {@inheritDoc IPhysicsScene.addCharacterController }\n */\n addCharacterController(characterController: PhysXCharacterController): void {\n characterController._scene = this;\n\n // Physx have no API to remove/readd cct into scene.\n if (!characterController._pxController) {\n const shape = characterController._shape;\n if (shape) {\n const lastPXManager = characterController._pxManager;\n if (lastPXManager !== this) {\n lastPXManager && characterController._destroyPXController();\n characterController._createPXController(this, shape);\n }\n this._addColliderShape(shape._id);\n }\n }\n characterController._pxManager = this;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.removeCharacterController }\n */\n removeCharacterController(characterController: PhysXCharacterController): void {\n characterController._scene = null;\n characterController._pxManager = null;\n characterController._destroyPXController();\n const shape = characterController._shape;\n shape && this._removeColliderShape(shape._id);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.update }\n */\n update(elapsedTime: number): void {\n this._contactEventCount = 0;\n this._simulate(elapsedTime);\n this._fetchResults();\n }\n\n /**\n * {@inheritDoc IPhysicsScene.updateEvents }\n */\n updateEvents(): IPhysicsEvents {\n const physicsEvents = this._physicsEvents;\n\n // Collect trigger events: snapshot state for dispatch, then advance\n const {\n _triggerEventPool: triggerEventPool,\n _activeTriggers: activeTriggers,\n _triggerEvents: triggerEvents\n } = this;\n triggerEvents.length = 0;\n activeTriggers.forEach((event, i) => {\n event.dispatchState = event.state;\n triggerEvents.push(event);\n if (event.state === PhysicsEventState.Enter) {\n event.state = PhysicsEventState.Stay;\n } else if (event.state === PhysicsEventState.Exit) {\n activeTriggers.deleteByIndex(i);\n triggerEventPool.push(event);\n }\n });\n\n physicsEvents.contactEvents = this._contactEvents;\n physicsEvents.contactEventCount = this._contactEventCount;\n physicsEvents.triggerEvents = triggerEvents;\n return physicsEvents;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const { _pxRaycastHit: pxHitResult } = this;\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physX raycast.\n\n const raycastCallback = {\n preFilter: (filterData, index, actor) => {\n if (onRaycast(index)) {\n return 2; // eBLOCK\n } else {\n return 0; // eNONE\n }\n }\n };\n\n const pxRaycastCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback);\n const result = this._pxScene.raycastSingle(\n ray.origin,\n ray.direction,\n distance,\n pxHitResult,\n this._pxFilterData,\n pxRaycastCallback\n );\n\n pxRaycastCallback.delete();\n\n if (result && hit != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsScene;\n const { position: pxPosition, normal: pxNormal } = pxHitResult;\n position.set(pxPosition.x, pxPosition.y, pxPosition.z);\n normal.set(pxNormal.x, pxNormal.y, pxNormal.z);\n\n hit(pxHitResult.getShape().getUUID(), pxHitResult.distance, position, normal);\n }\n return result;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.boxCast }\n */\n boxCast(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._boxGeometry) {\n this._boxGeometry = new this._physXPhysics._physX.PxBoxGeometry(halfExtents.x, halfExtents.y, halfExtents.z);\n } else {\n this._boxGeometry.halfExtents = halfExtents;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._sweepSingle(this._boxGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.sphereCast }\n */\n sphereCast(\n center: Vector3,\n radius: number,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._sphereGeometry) {\n this._sphereGeometry = new this._physXPhysics._physX.PxSphereGeometry(radius);\n } else {\n this._sphereGeometry.radius = radius;\n }\n\n const tempQuat = PhysXPhysicsScene._tempQuaternion;\n tempQuat.set(0, 0, 0, 1); // Identity quaternion\n const pose = { translation: center, rotation: tempQuat };\n return this._sweepSingle(this._sphereGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.capsuleCast }\n */\n capsuleCast(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n if (!this._capsuleGeometry) {\n this._capsuleGeometry = new this._physXPhysics._physX.PxCapsuleGeometry(radius, height * 0.5);\n } else {\n this._capsuleGeometry.radius = radius;\n this._capsuleGeometry.halfHeight = height * 0.5;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._sweepSingle(this._capsuleGeometry, pose, direction, distance, onSweep, outHitResult);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapBoxAll }\n */\n overlapBoxAll(\n center: Vector3,\n orientation: Quaternion,\n halfExtents: Vector3,\n onOverlap: (obj: number) => boolean\n ): number[] {\n if (!this._boxGeometry) {\n this._boxGeometry = new this._physXPhysics._physX.PxBoxGeometry(halfExtents.x, halfExtents.y, halfExtents.z);\n } else {\n this._boxGeometry.halfExtents = halfExtents;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._overlapMultiple(this._boxGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapSphereAll }\n */\n overlapSphereAll(center: Vector3, radius: number, onOverlap: (obj: number) => boolean): number[] {\n if (!this._sphereGeometry) {\n this._sphereGeometry = new this._physXPhysics._physX.PxSphereGeometry(radius);\n } else {\n this._sphereGeometry.radius = radius;\n }\n\n const tempQuat = PhysXPhysicsScene._tempQuaternion;\n tempQuat.set(0, 0, 0, 1);\n const pose = { translation: center, rotation: tempQuat };\n return this._overlapMultiple(this._sphereGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.overlapCapsuleAll }\n */\n overlapCapsuleAll(\n center: Vector3,\n radius: number,\n height: number,\n orientation: Quaternion,\n onOverlap: (obj: number) => boolean\n ): number[] {\n if (!this._capsuleGeometry) {\n this._capsuleGeometry = new this._physXPhysics._physX.PxCapsuleGeometry(radius, height * 0.5);\n } else {\n this._capsuleGeometry.radius = radius;\n this._capsuleGeometry.halfHeight = height * 0.5;\n }\n\n const pose = PhysXPhysicsScene._tempPose;\n pose.translation.copyFrom(center);\n pose.rotation.copyFrom(orientation);\n return this._overlapMultiple(this._capsuleGeometry, pose, onOverlap);\n }\n\n /**\n * {@inheritDoc IPhysicsScene.gc }\n */\n gc(): void {\n this._contactEvents.length = this._contactEventCount;\n }\n\n /**\n * {@inheritDoc IPhysicsScene.destroy }\n */\n destroy(): void {\n this._boxGeometry?.delete();\n this._sphereGeometry?.delete();\n this._capsuleGeometry?.delete();\n\n this._physXSimulationCallbackInstance.delete();\n this._pxRaycastHit.delete();\n this._pxFilterData.flags.delete();\n this._pxFilterData.delete();\n // Need to release the controller manager before release the scene.\n this._pxControllerManager?.release();\n this._pxScene.release();\n }\n\n /**\n * @internal\n */\n _getControllerManager(): any {\n let pxControllerManager = this._pxControllerManager;\n if (pxControllerManager === null) {\n this._pxControllerManager = pxControllerManager = this._pxScene.createControllerManager();\n }\n return pxControllerManager;\n }\n\n /**\n * @internal\n */\n _addColliderShape(id: number) {\n this._physXManager._eventMap[id] = Object.create(null);\n }\n\n /**\n * @internal\n */\n _removeColliderShape(id: number) {\n const { _triggerEventPool: triggerEventPool, _activeTriggers: activeTriggers } = this;\n const { _eventMap: eventMap } = this._physXManager;\n activeTriggers.forEach((event, i) => {\n if (event.index1 == id) {\n activeTriggers.deleteByIndex(i);\n triggerEventPool.push(event);\n } else if (event.index2 == id) {\n activeTriggers.deleteByIndex(i);\n triggerEventPool.push(event);\n // If the shape is big index, should clear from the small index shape subMap\n eventMap[event.index1][id] = undefined;\n }\n });\n delete eventMap[id];\n }\n\n private _sweepSingle(\n geometry: any,\n pose: { translation: Vector3; rotation: Quaternion },\n direction: Vector3,\n distance: number,\n onSweep: (obj: number) => boolean,\n outHitResult?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physx sweep\n\n const sweepCallback = {\n preFilter: (filterData, index, actor) => {\n if (onSweep(index)) {\n return 2; // eBLOCK\n } else {\n return 0; // eNONE\n }\n }\n };\n\n const pxSweepCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(sweepCallback);\n const pxSweepHit = new this._physXPhysics._physX.PxSweepHit();\n const result = this._pxScene.sweepSingle(\n geometry,\n pose,\n direction,\n distance,\n pxSweepHit,\n this._pxFilterData,\n pxSweepCallback\n );\n\n if (result && outHitResult != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsScene;\n const { position: pxPosition, normal: pxNormal } = pxSweepHit;\n position.set(pxPosition.x, pxPosition.y, pxPosition.z);\n normal.set(pxNormal.x, pxNormal.y, pxNormal.z);\n outHitResult(pxSweepHit.getShape().getUUID(), pxSweepHit.distance, position, normal);\n }\n\n pxSweepCallback.delete();\n pxSweepHit.delete();\n\n return result;\n }\n\n private _overlapMultiple(\n geometry: any,\n pose: { translation: Vector3; rotation: Quaternion },\n onOverlap: (obj: number) => boolean\n ): number[] {\n const overlapCallback = {\n preFilter: (filterData, index, actor) => (onOverlap(index) ? 2 : 0)\n };\n\n const pxOverlapCallback = this._physXPhysics._physX.PxQueryFilterCallback.implement(overlapCallback);\n const maxHits = 256;\n const hits: any = (this._pxScene as any).overlapMultiple(\n geometry,\n pose,\n maxHits,\n this._pxFilterData,\n pxOverlapCallback\n );\n\n const result = PhysXPhysicsScene._tempShapeIDs;\n result.length = 0;\n if (hits) {\n // PhysX overlapMultiple returns a collection with size() method\n for (let i = 0, n = hits.size(); i < n; i++) {\n result.push(hits.get(i).getShape().getUUID());\n }\n }\n\n pxOverlapCallback.delete();\n hits?.delete();\n return result;\n }\n\n private _simulate(elapsedTime: number): void {\n this._pxScene.simulate(elapsedTime, true);\n }\n\n private _fetchResults(block: boolean = true): void {\n this._pxScene.fetchResults(block);\n }\n\n private _getTrigger(index1: number, index2: number): TriggerEvent {\n let event: TriggerEvent;\n if (this._triggerEventPool.length) {\n event = this._triggerEventPool.pop();\n event.index1 = index1;\n event.index2 = index2;\n } else {\n event = new TriggerEvent(index1, index2);\n }\n this._physXManager._eventMap[index1][index2] = event;\n return event;\n }\n\n private _bufferContactEvent(collision: ICollision, state: number): void {\n const index = this._contactEventCount++;\n const event = (this._contactEvents[index] ||= new ContactEvent());\n event.shape0Id = collision.shape0Id;\n event.shape1Id = collision.shape1Id;\n event.state = state;\n\n // Copy contact points from PhysX (the native data is only valid during fetchResults)\n const nativeContacts = collision.getContacts();\n const count = nativeContacts.size();\n const bufferedContacts = event._bufferedContacts;\n bufferedContacts.contactCount = count;\n for (let i = 0; i < count; i++) {\n const src = nativeContacts.get(i);\n const dst = (bufferedContacts.contacts[i] ||= new BufferedContactPoint());\n dst.position.copyFrom(src.position);\n dst.normal.copyFrom(src.normal);\n dst.impulse.copyFrom(src.impulse);\n dst.separation = src.separation;\n }\n }\n}\n\n/**\n * Filtering flags for scene queries.\n */\nenum QueryFlag {\n STATIC = 1 << 0,\n DYNAMIC = 1 << 1,\n PRE_FILTER = 1 << 2,\n POST_FILTER = 1 << 3,\n ANY_HIT = 1 << 4,\n NO_BLOCK = 1 << 5\n}\n\nenum PhysicsEventState {\n Enter = 0,\n Stay = 1,\n Exit = 2\n}\n\n/**\n * Trigger event to store interactive object ids and state.\n */\nexport class TriggerEvent implements ITriggerEvent {\n state: number;\n dispatchState: number;\n index1: number;\n index2: number;\n\n constructor(index1: number, index2: number) {\n this.index1 = index1;\n this.index2 = index2;\n }\n}\n\n/**\n * Buffered contact point data, copied from PhysX during fetchResults.\n */\nclass BufferedContactPoint {\n position = new Vector3();\n normal = new Vector3();\n impulse = new Vector3();\n separation = 0;\n}\n\n/**\n * Contact event buffered from PhysX fetchResults callback.\n * Implements ICollision so it can be passed directly to the core layer.\n */\nclass BufferedContacts {\n contactCount = 0;\n contacts: BufferedContactPoint[] = [];\n\n size(): number {\n return this.contactCount;\n }\n\n get(index: number): BufferedContactPoint {\n return this.contacts[index];\n }\n}\n\nclass ContactEvent implements IContactEvent {\n state: number;\n shape0Id: number;\n shape1Id: number;\n\n /** @internal */\n _bufferedContacts = new BufferedContacts();\n\n get contactCount(): number {\n return this._bufferedContacts.contactCount;\n }\n\n getContacts(): BufferedContacts {\n return this._bufferedContacts;\n }\n}\n","import { IStaticCollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\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 PhysXStaticCollider extends PhysXCollider implements IStaticCollider {\n constructor(physXPhysics: PhysXPhysics, position: Vector3, rotation: Quaternion) {\n super(physXPhysics);\n this._pxActor = physXPhysics._pxPhysics.createRigidStatic(this._transform(position, rotation));\n }\n}\n","/**\n * PhysX runtime mode.\n */\nexport enum PhysXRuntimeMode {\n /** Use WebAssembly SIMD mode first, then WebAssembly as fallback. */\n Auto,\n /** WebAssembly mode. */\n WebAssembly,\n /** WebAssembly SIMD mode. */\n WebAssemblySIMD\n}\n","import { IJoint } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\n\n/**\n * a base interface providing common functionality for PhysX joints\n */\nexport class PhysXJoint implements IJoint {\n protected static _defaultVec = new Vector3();\n protected static _defaultQuat = new Quaternion();\n\n protected _pxJoint: any;\n protected _anchor: Vector3;\n protected _connectedAnchor: Vector3;\n protected _rotation: Quaternion = new Quaternion();\n protected _collider: PhysXCollider;\n private _breakForce: number = Number.MAX_VALUE;\n private _breakTorque: number = Number.MAX_VALUE;\n\n protected _physXPhysics: PhysXPhysics;\n\n constructor(physXPhysics: PhysXPhysics) {\n this._physXPhysics = physXPhysics;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedCollider }\n */\n setConnectedCollider(value: PhysXCollider): void {\n this._pxJoint.setActors(this._collider?._pxActor || null, value?._pxActor || null);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, PhysXJoint._defaultQuat);\n this._anchor = value;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._rotation);\n this._connectedAnchor = value;\n }\n\n setRotation(value: Quaternion): void {\n this._setLocalPose(1, this._connectedAnchor, value);\n this._rotation.copyFrom(value);\n }\n\n /**\n * {@inheritDoc IJoint.setMassScale }\n */\n setMassScale(value: number): void {\n this._pxJoint.setInvMassScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedMassScale }\n */\n setConnectedMassScale(value: number): void {\n this._pxJoint.setInvMassScale1(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setInertiaScale }\n */\n setInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale0(value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedInertiaScale }\n */\n setConnectedInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale1(value);\n }\n\n /**\n * {@inheritDoc IJoint.setBreakForce }\n */\n setBreakForce(value: number): void {\n this._breakForce = value;\n this._pxJoint.setBreakForce(this._breakForce, this._breakTorque);\n }\n\n /**\n * {@inheritDoc IJoint.setBreakTorque }\n */\n setBreakTorque(value: number): void {\n this._breakTorque = value;\n this._pxJoint.setBreakForce(this._breakForce, this._breakTorque);\n }\n\n /**\n * {@inheritDoc IJoint.destroy }\n */\n destroy(): void {\n if (!this._pxJoint) return;\n this._pxJoint.release();\n this._collider = null;\n }\n /**\n * Set the joint local pose for an actor.\n * @param actor 0 for the first actor, 1 for the second actor.\n * @param position the local position for the actor this joint\n * @param rotation the local rotation for the actor this joint\n */\n protected _setLocalPose(actor: number, position: Vector3, rotation: Quaternion): void {\n this._pxJoint.setLocalPose(actor, position, rotation);\n }\n}\n","import { IFixedJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\n\n/**\n * A fixed joint permits no relative movement between two colliders. ie the bodies are glued together.\n */\nexport class PhysXFixedJoint extends PhysXJoint implements IFixedJoint {\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createFixedJoint(\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n}\n","import { IHingeJoint } from \"@galacean/engine-design\";\nimport { MathUtil, Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\n\n/**\n * A joint which behaves in a similar way to a hinge or axle.\n */\nexport class PhysXHingeJoint extends PhysXJoint implements IHingeJoint {\n protected static _xAxis = new Vector3(1, 0, 0);\n\n private _axis: Vector3;\n private _axisRotationQuaternion = new Quaternion();\n private _connectedAxisRotationQuaternion = new Quaternion();\n\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createRevoluteJoint(\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n\n override setRotation(value: Quaternion): void {\n const axis = this._axis;\n this._rotation.copyFrom(value);\n axis && this.setAxis(axis);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\n this._axis = value;\n const xAxis = PhysXHingeJoint._xAxis;\n const axisRotationQuaternion = this._axisRotationQuaternion;\n xAxis.set(1, 0, 0);\n const angle = Math.acos(Vector3.dot(xAxis, value));\n Vector3.cross(xAxis, value, xAxis);\n Quaternion.rotationAxisAngle(xAxis, angle, axisRotationQuaternion);\n this._setLocalPose(0, this._anchor, axisRotationQuaternion);\n const connectedAxisRotationQuaternion = this._connectedAxisRotationQuaternion;\n Quaternion.multiply(this._rotation, axisRotationQuaternion, connectedAxisRotationQuaternion);\n this._setLocalPose(1, this._connectedAnchor, connectedAxisRotationQuaternion);\n }\n\n override setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, this._axisRotationQuaternion);\n this._anchor = value;\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n override setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._connectedAxisRotationQuaternion);\n this._connectedAnchor = value;\n }\n\n /**\n * {@inheritDoc IHingeJoint.getAngle }\n */\n getAngle(): number {\n return MathUtil.radianToDegree(this._pxJoint.getAngle());\n }\n\n /**\n * {@inheritDoc IHingeJoint.getVelocity }\n */\n getVelocity(): Readonly<number> {\n return this._pxJoint.getVelocity();\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHardLimitCone }\n */\n setHardLimit(lowerLimit: number, upperLimit: number, contactDist: number): void {\n this._pxJoint.setHardLimit(MathUtil.degreeToRadian(lowerLimit), MathUtil.degreeToRadian(upperLimit), contactDist);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHardLimitCone }\n */\n setSoftLimit(lowerLimit: number, upperLimit: number, stiffness: number, damping: number): void {\n this._pxJoint.setSoftLimit(\n MathUtil.degreeToRadian(lowerLimit),\n MathUtil.degreeToRadian(upperLimit),\n stiffness,\n damping\n );\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveVelocity }\n */\n setDriveVelocity(velocity: number, autowake: boolean = true): void {\n this._pxJoint.setDriveVelocity(velocity, autowake);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveForceLimit }\n */\n setDriveForceLimit(limit: number): void {\n this._pxJoint.setDriveForceLimit(limit);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setDriveGearRatio }\n */\n setDriveGearRatio(ratio: number): void {\n this._pxJoint.setDriveGearRatio(ratio);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setHingeJointFlag }\n */\n setHingeJointFlag(flag: number, value: boolean): void {\n this._pxJoint.setRevoluteJointFlag(flag, value);\n }\n}\n","import { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXJoint } from \"./PhysXJoint\";\nimport { ISpringJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { Vector3 } from \"@galacean/engine\";\n\n/**\n * a joint that maintains an upper or lower bound (or both) on the distance between two points on different objects\n */\nexport class PhysXSpringJoint extends PhysXJoint implements ISpringJoint {\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createDistanceJoint(\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n this._pxJoint.setDistanceJointFlag(2, true); // enable max distance;\n this._pxJoint.setDistanceJointFlag(4, true); // enable min distance;\n this._pxJoint.setDistanceJointFlag(8, true); // enable spring;\n }\n\n /**\n * {@inheritDoc ISpringJoint.setMinDistance }\n */\n setMinDistance(distance: number): void {\n this._pxJoint.setMinDistance(distance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setMaxDistance }\n */\n setMaxDistance(distance: number): void {\n this._pxJoint.setMaxDistance(distance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setTolerance }\n */\n setTolerance(tolerance: number): void {\n this._pxJoint.setTolerance(tolerance);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setStiffness }\n */\n setStiffness(stiffness: number): void {\n this._pxJoint.setStiffness(stiffness);\n }\n\n /**\n * {@inheritDoc ISpringJoint.setDamping }\n */\n setDamping(damping: number): void {\n this._pxJoint.setDamping(damping);\n }\n}\n","function _assert_this_initialized(self) {\n if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\n return self;\n}\nexport { _assert_this_initialized as _ };\n","function _type_of(obj) {\n \"@swc/helpers - typeof\";\n\n return obj && typeof Symbol !== \"undefined\" && obj.constructor === Symbol ? \"symbol\" : typeof obj;\n}\nexport { _type_of as _ };\n","import { _ as _assert_this_initialized } from \"./_assert_this_initialized.js\";\nimport { _ as _type_of } from \"./_type_of.js\";\n\nfunction _possible_constructor_return(self, call) {\n if (call && (_type_of(call) === \"object\" || typeof call === \"function\")) return call;\n\n return _assert_this_initialized(self);\n}\nexport { _possible_constructor_return as _ };\n","import { MeshColliderShapeCookingFlag, Vector3 } from \"@galacean/engine\";\nimport { IMeshColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape, ShapeFlag } from \"./PhysXColliderShape\";\n\n/**\n * Mesh collider shape in PhysX.\n */\nexport class PhysXMeshColliderShape extends PhysXColliderShape implements IMeshColliderShape {\n private static _tightBoundsFlag = 1; // eTIGHT_BOUNDS = 1 (1<<0)\n\n private _pxMesh: any = null;\n private _isConvex: boolean;\n\n constructor(\n physXPhysics: PhysXPhysics,\n uniqueID: number,\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n material: PhysXPhysicsMaterial,\n cookingFlags: number\n ) {\n super(physXPhysics);\n this._isConvex = isConvex;\n\n if (!this._cookMesh(positions, indices, cookingFlags)) {\n return;\n }\n\n const { _physX: physX, _pxPhysics: physics } = physXPhysics;\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const shapeFlags = ShapeFlag.SCENE_QUERY_SHAPE | ShapeFlag.SIMULATION_SHAPE;\n const meshFlag = isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n const createShapeFn = isConvex ? physX.createConvexMeshShape : physX.createTriMeshShape;\n\n this._pxShape = createShapeFn(\n this._pxMesh,\n scaleX,\n scaleY,\n scaleZ,\n meshFlag,\n shapeFlags,\n material._pxMaterial,\n physics\n );\n\n this._id = uniqueID;\n this._pxMaterial = material._pxMaterial;\n this._pxShape.setUUID(uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IMeshColliderShape.setMeshData }\n */\n setMeshData(\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n cookingFlags: number\n ): boolean {\n this._pxMesh?.release();\n this._pxGeometry?.delete();\n this._pxMesh = null;\n this._pxGeometry = null;\n this._isConvex = isConvex;\n\n if (!this._cookMesh(positions, indices, cookingFlags)) {\n return false;\n }\n\n this._pxShape.setGeometry(this._pxGeometry);\n return true;\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n this._updateGeometry();\n }\n\n /**\n * {@inheritDoc IColliderShape.destroy }\n */\n override destroy(): void {\n this._pxMesh?.release();\n super.destroy();\n }\n\n private _cookMesh(\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n cookingFlags: number\n ): boolean {\n const {\n _physX: physX,\n _pxPhysics: physics,\n _pxCooking: cooking,\n _pxCookingParams: cookingParams\n } = this._physXPhysics;\n\n // Apply per-shape cooking flags\n let preprocessFlags = 0;\n if (cookingFlags & MeshColliderShapeCookingFlag.VertexWelding) {\n preprocessFlags |= 1; // eWELD_VERTICES\n }\n if (!(cookingFlags & MeshColliderShapeCookingFlag.Cleaning)) {\n preprocessFlags |= 2; // eDISABLE_CLEAN_MESH\n }\n physX.setCookingMeshPreprocessParams(cookingParams, preprocessFlags);\n cooking.setParams(cookingParams);\n\n const verticesPtr = this._allocatePositions(positions);\n\n if (this._isConvex) {\n this._pxMesh = cooking.createConvexMesh(verticesPtr, positions.length, physics);\n physX._free(verticesPtr);\n\n if (!this._pxMesh) {\n this._logConvexCookingError(physX);\n return false;\n }\n } else {\n if (!indices) {\n physX._free(verticesPtr);\n console.error(\"PhysXMeshColliderShape: Triangle mesh requires indices.\");\n return false;\n }\n\n const isU32 = indices instanceof Uint32Array;\n const indicesPtr = this._allocateIndices(indices, isU32);\n this._pxMesh = cooking.createTriMesh(\n verticesPtr,\n positions.length,\n indicesPtr,\n indices.length / 3,\n !isU32,\n physics\n );\n physX._free(verticesPtr);\n physX._free(indicesPtr);\n\n if (!this._pxMesh) {\n this._logTriMeshCookingError(physX);\n return false;\n }\n }\n\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const meshFlag = this._isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n this._pxGeometry = this._isConvex\n ? physX.createConvexMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag)\n : physX.createTriMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag);\n\n return true;\n }\n\n private _logConvexCookingError(physX: any): void {\n switch (physX.getLastConvexCookingResult()) {\n case 1: // eZERO_AREA_TEST_FAILED\n console.error(\n \"PhysXMeshColliderShape: Failed to create convex mesh. Could not find 4 vertices that do not form a zero-area triangle.\"\n );\n break;\n case 2: // ePOLYGONS_LIMIT_REACHED\n console.error(\n \"PhysXMeshColliderShape: Failed to create convex mesh within the maximum polygons limit (256). Consider simplifying the mesh.\"\n );\n break;\n default: // eFAILURE\n console.error(\"PhysXMeshColliderShape: Failed to create convex mesh. The input geometry may be invalid.\");\n break;\n }\n }\n\n private _logTriMeshCookingError(physX: any): void {\n switch (physX.getLastTriMeshCookingResult()) {\n case 1: // eLARGE_TRIANGLE\n console.error(\n \"PhysXMeshColliderShape: Failed to create triangle mesh. One of the triangles is too large. Consider tessellating large triangles.\"\n );\n break;\n default: // eFAILURE\n console.error(\"PhysXMeshColliderShape: Failed to create triangle mesh. The input geometry may be invalid.\");\n break;\n }\n }\n\n private _allocatePositions(positions: Vector3[]): number {\n const physX = this._physXPhysics._physX;\n const length = positions.length;\n const ptr = physX._malloc(length * 3 * 4);\n const view = new Float32Array(physX.HEAPF32.buffer, ptr, length * 3);\n for (let i = 0, offset = 0; i < length; i++, offset += 3) {\n positions[i].copyToArray(view, offset);\n }\n return ptr;\n }\n\n private _allocateIndices(indices: Uint8Array | Uint16Array | Uint32Array, isU32: boolean): number {\n const physX = this._physXPhysics._physX;\n // Uint8Array and Uint16Array both write as Uint16 (PhysX minimum index size)\n const TypedArrayCtor = isU32 ? Uint32Array : Uint16Array;\n const heap = isU32 ? physX.HEAPU32 : physX.HEAPU16;\n const ptr = physX._malloc(indices.length * TypedArrayCtor.BYTES_PER_ELEMENT);\n new TypedArrayCtor(heap.buffer, ptr, indices.length).set(indices);\n return ptr;\n }\n\n private _updateGeometry(): void {\n if (!this._pxMesh) return;\n const physX = this._physXPhysics._physX;\n const { x: scaleX, y: scaleY, z: scaleZ } = this._worldScale;\n const meshFlag = this._isConvex ? PhysXMeshColliderShape._tightBoundsFlag : 0;\n\n const newGeometry = this._isConvex\n ? physX.createConvexMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag)\n : physX.createTriMeshGeometry(this._pxMesh, scaleX, scaleY, scaleZ, meshFlag);\n\n this._pxGeometry.delete();\n this._pxGeometry = newGeometry;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { IPlaneColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Plane collider shape in PhysX.\n */\nexport class PhysXPlaneColliderShape extends PhysXColliderShape implements IPlaneColliderShape {\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n this._axis = new Quaternion(0, 0, PhysXColliderShape.halfSqrt, PhysXColliderShape.halfSqrt);\n this._physXRotation.copyFrom(this._axis);\n\n this._pxGeometry = new physXPhysics._physX.PxPlaneGeometry();\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n}\n","import { Vector3 } from \"@galacean/engine\";\nimport { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Sphere collider shape in PhysX.\n */\nexport class PhysXSphereColliderShape extends PhysXColliderShape implements ISphereColliderShape {\n private _radius: number;\n private _maxScale: number = 1;\n\n constructor(physXPhysics: PhysXPhysics, uniqueID: number, radius: number, material: PhysXPhysicsMaterial) {\n super(physXPhysics);\n\n this._radius = radius;\n this._pxGeometry = new physXPhysics._physX.PxSphereGeometry(radius * this._maxScale);\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc ISphereColliderShape.setRadius }\n */\n setRadius(value: number): void {\n this._radius = value;\n this._pxGeometry.radius = value * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n override setWorldScale(scale: Vector3): void {\n super.setWorldScale(scale);\n\n this._maxScale = Math.max(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n this._pxGeometry.radius = this._radius * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { Quaternion, SystemInfo, Vector3 } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IMeshColliderShape,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPhysicsScene,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXDynamicCollider } from \"./PhysXDynamicCollider\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXPhysicsMaterial } from \"./PhysXPhysicsMaterial\";\nimport { PhysXPhysicsScene } from \"./PhysXPhysicsScene\";\nimport { PhysXStaticCollider } from \"./PhysXStaticCollider\";\nimport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\nimport { PhysXFixedJoint } from \"./joint/PhysXFixedJoint\";\nimport { PhysXHingeJoint } from \"./joint/PhysXHingeJoint\";\nimport { PhysXSpringJoint } from \"./joint/PhysXSpringJoint\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXMeshColliderShape } from \"./shape/PhysXMeshColliderShape\";\nimport { PhysXPlaneColliderShape } from \"./shape/PhysXPlaneColliderShape\";\nimport { PhysXSphereColliderShape } from \"./shape/PhysXSphereColliderShape\";\n\n/**\n * PhysX object creation.\n */\n\nexport class PhysXPhysics implements IPhysics {\n /** @internal PhysX wasm object */\n _physX: any;\n /** @internal PhysX Foundation SDK singleton class */\n _pxFoundation: any;\n /** @internal PhysX physics object */\n _pxPhysics: any;\n /** @internal PhysX cooking object for mesh colliders */\n _pxCooking: any;\n /** @internal PhysX cooking params */\n _pxCookingParams: any;\n\n private _runTimeMode: PhysXRuntimeMode;\n private _initializeState: InitializeState = InitializeState.Uninitialized;\n private _initializePromise: Promise<void>;\n private _defaultErrorCallback: any;\n private _allocator: any;\n private _tolerancesScale: any;\n private _wasmSIMDModeUrl: string;\n private _wasmModeUrl: string;\n\n /**\n * Create a PhysXPhysics instance.\n * @param runtimeMode - Runtime mode, `Auto` prefers WebAssembly SIMD if supported @see {@link PhysXRuntimeMode}\n * @param runtimeUrls - Manually specify the runtime URLs\n */\n constructor(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto, runtimeUrls?: PhysXRuntimeUrls) {\n this._runTimeMode = runtimeMode;\n this._wasmSIMDModeUrl =\n runtimeUrls?.wasmSIMDModeUrl ??\n \"https://mdn.alipayobjects.com/rms/afts/file/A*FHYHS4_ZL5UAAAAAQ4AAAAgAehQnAQ/physx.release.simd.js\";\n this._wasmModeUrl =\n runtimeUrls?.wasmModeUrl ??\n \"https://mdn.alipayobjects.com/rms/afts/file/A*2fv0RLMK1d0AAAAAQ4AAAAgAehQnAQ/physx.release.js\";\n }\n\n /**\n * Initialize PhysXPhysics.\n * @param runtimeMode - Runtime mode\n * @returns Promise object\n */\n initialize(): Promise<void> {\n if (this._initializeState === InitializeState.Initialized) {\n return Promise.resolve();\n } else if (this._initializeState === InitializeState.Initializing) {\n return this._initializePromise;\n }\n\n this._initializeState = InitializeState.Initializing;\n let runtimeMode = this._runTimeMode;\n const scriptPromise = new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n document.body.appendChild(script);\n script.async = true;\n script.onload = resolve;\n script.onerror = reject;\n if (runtimeMode == PhysXRuntimeMode.Auto) {\n runtimeMode = (SystemInfo as any)._detectSIMDSupported()\n ? PhysXRuntimeMode.WebAssemblySIMD\n : PhysXRuntimeMode.WebAssembly;\n }\n\n if (runtimeMode == PhysXRuntimeMode.WebAssemblySIMD) {\n script.src = this._wasmSIMDModeUrl;\n } else {\n script.src = this._wasmModeUrl;\n }\n });\n\n const initializePromise = new Promise<void>((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX: any) => {\n this._runTimeMode = runtimeMode;\n this._init(PHYSX);\n this._initializeState = InitializeState.Initialized;\n this._initializePromise = null;\n console.log(\"PhysX loaded.\");\n resolve();\n }, reject),\n reject\n )\n .catch(reject);\n });\n\n this._initializePromise = initializePromise;\n return initializePromise;\n }\n\n /**\n * Destroy PhysXPhysics.\n */\n destroy(): void {\n this._pxCooking.release();\n this._pxCookingParams.delete();\n this._physX.PxCloseExtensions();\n this._pxPhysics.release();\n this._pxFoundation.release();\n this._defaultErrorCallback.delete();\n this._allocator.delete();\n this._tolerancesScale.delete();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n createPhysicsManager(): IPhysicsManager {\n return new PhysXPhysicsManager();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsScene }\n */\n createPhysicsScene(physicsManager: PhysXPhysicsManager): IPhysicsScene {\n const scene = new PhysXPhysicsScene(this, physicsManager);\n return scene;\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new PhysXStaticCollider(this, position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new PhysXDynamicCollider(this, position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n createCharacterController(): ICharacterController {\n return new PhysXCharacterController(this);\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 PhysXPhysicsMaterial(this, staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n createBoxColliderShape(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial): IBoxColliderShape {\n return new PhysXBoxColliderShape(this, uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n createSphereColliderShape(uniqueID: number, radius: number, material: PhysXPhysicsMaterial): ISphereColliderShape {\n return new PhysXSphereColliderShape(this, uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n createPlaneColliderShape(uniqueID: number, material: PhysXPhysicsMaterial): IPlaneColliderShape {\n return new PhysXPlaneColliderShape(this, uniqueID, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ): ICapsuleColliderShape {\n return new PhysXCapsuleColliderShape(this, uniqueID, radius, height, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createMeshColliderShape }\n */\n createMeshColliderShape(\n uniqueID: number,\n positions: Vector3[],\n indices: Uint8Array | Uint16Array | Uint32Array | null,\n isConvex: boolean,\n material: PhysXPhysicsMaterial,\n cookingFlags: number\n ): IMeshColliderShape | null {\n const shape = new PhysXMeshColliderShape(this, uniqueID, positions, indices, isConvex, material, cookingFlags);\n return shape._pxShape ? shape : null;\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n createFixedJoint(collider: PhysXCollider): IFixedJoint {\n return new PhysXFixedJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n createHingeJoint(collider: PhysXCollider): IHingeJoint {\n return new PhysXHingeJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n createSpringJoint(collider: PhysXCollider): ISpringJoint {\n return new PhysXSpringJoint(this, collider);\n }\n\n /**\n * {@inheritDoc IPhysics.getColliderLayerCollision }\n */\n getColliderLayerCollision(layer1: number, layer2: number): boolean {\n return this._physX.getGroupCollisionFlag(layer1, layer2);\n }\n\n /**\n * {@inheritDoc IPhysics.setColliderLayerCollision }\n */\n setColliderLayerCollision(layer1: number, layer2: number, isCollide: boolean): void {\n this._physX.setGroupCollisionFlag(layer1, layer2, isCollide);\n }\n\n private _init(physX: any): void {\n const version = physX.PX_PHYSICS_VERSION;\n const defaultErrorCallback = new physX.PxDefaultErrorCallback();\n const allocator = new physX.PxDefaultAllocator();\n const pxFoundation = physX.PxCreateFoundation(version, allocator, defaultErrorCallback);\n const tolerancesScale = new physX.PxTolerancesScale();\n const pxPhysics = physX.PxCreatePhysics(version, pxFoundation, tolerancesScale, false, null);\n\n physX.PxInitExtensions(pxPhysics, null);\n\n // Initialize cooking for mesh colliders\n const cookingParams = new physX.PxCookingParams(tolerancesScale);\n physX.setCookingMeshPreprocessParams(cookingParams, 1); // eWELD_VERTICES\n cookingParams.meshWeldTolerance = 0.001;\n // BVH34 midphase requires SSE2; SIMD WASM provides SSE2 via WASM SIMD\n if (this._runTimeMode === PhysXRuntimeMode.WebAssemblySIMD) {\n physX.setCookingMidphaseType(cookingParams, 1); // eBVH34\n }\n const pxCooking = physX.PxCreateCooking(version, pxFoundation, cookingParams);\n\n this._physX = physX;\n this._pxFoundation = pxFoundation;\n this._pxPhysics = pxPhysics;\n this._pxCooking = pxCooking;\n this._pxCookingParams = cookingParams;\n this._defaultErrorCallback = defaultErrorCallback;\n this._allocator = allocator;\n this._tolerancesScale = tolerancesScale;\n }\n}\n\nenum InitializeState {\n Uninitialized,\n Initializing,\n Initialized\n}\n\ninterface PhysXRuntimeUrls {\n /*** The URL of `PhysXRuntimeMode.WebAssembly` mode. */\n wasmModeUrl?: string;\n /*** The URL of `PhysXRuntimeMode.WebAssemblySIMD` mode. */\n wasmSIMDModeUrl?: string;\n}\n","export { PhysXPhysics } from \"./PhysXPhysics\";\nexport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean Engine Physics PhysX Version: ${version}`);\n"],"names":["ShapeFlag","PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_contractOffset","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","_physXPhysics","setRotation","value","rotation","set","MathUtil","degreeToRadian","x","y","z","rotationYawPitchRoll","multiply","normalize","_setLocalPose","setPosition","copyFrom","controllers","i","n","length","get","_updateShapePosition","setWorldScale","scale","Math","abs","setContactOffset","offset","_pxController","_pxShape","setMaterial","_pxMaterial","setIsTrigger","_modifyFlag","_setShapeFlags","pointDistance","point","info","_pxGeometry","getGlobalPose","closestPoint","res","_tempVector4","distance","destroy","release","delete","flags","shapeFlags","_physX","PxShapeFlags","setFlags","transform","translation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","setUUID","flag","halfSqrt","Vector4","PhysXBoxColliderShape","uniqueID","size","_halfSize","halfSize","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","console","warn","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","max","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","ColliderShapeUpAxis","PhysXCharacterController","_scene","_shapeScaledPosition","_worldPosition","move","disp","minDist","elapsedTime","setWorldPosition","position","_updateNativePosition","getWorldPosition","getPosition","subtract","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","cos","PI","addShape","shape","_pxManager","_createPXController","_shape","add","_addColliderShape","removeShape","_destroyPXController","_removeColliderShape","setCollisionLayer","layer","actor","getActor","setGroup","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","lengthSquared","PxCapsuleControllerDesc","climbingMode","Y","_getControllerManager","createController","shapePosition","worldScale","worldPosition","_tempVec","PhysXCollider","_shapes","Array","_pxActor","attachShape","push","detachShape","shapes","splice","indexOf","setWorldTransform","setGlobalPose","_transform","getWorldTransform","outPosition","outRotation","w","pos","rot","_tempTransform","PhysXDynamicCollider","createRigidDynamic","setLinearDamping","setAngularDamping","getLinearVelocity","out","velocity","setLinearVelocity","getAngularVelocity","radianToDegree","setAngularVelocity","_tempTranslation","setMass","getCenterOfMass","getCMassLocalPose","setCenterOfMass","setCMassLocalPose","setInertiaTensor","setMassSpaceInertiaTensor","getInertiaTensor","inertia","getMassSpaceInertiaTensor","setMassAndUpdateInertia","mass","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","setSolverIterationCounts","setCollisionDetectionMode","physX","setRigidBodyFlag","PxRigidBodyFlag","eENABLE_CCD","eENABLE_CCD_FRICTION","eENABLE_SPECULATIVE_CCD","setUseGravity","setActorFlag","PxActorFlag","eDISABLE_GRAVITY","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","isSleeping","wakeUp","PhysXPhysicsManager","_eventMap","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","PhysXPhysicsScene","physicsManager","_pxControllerManager","_boxGeometry","_sphereGeometry","_capsuleGeometry","_activeTriggers","_contactEvents","_contactEventCount","_triggerEvents","_physicsEvents","contactEvents","contactEventCount","triggerEvents","_triggerEventPool","_physXManager","_pxRaycastHit","PxRaycastHit","_pxFilterData","PxQueryFilterData","PxQueryFlags","QueryFlag","triggerCallback","onContactBegin","collision","_bufferContactEvent","onContactEnd","onContactPersist","onTriggerBegin","index1","index2","event","_getTrigger","state","onTriggerEnd","subMap","undefined","pxPhysics","_physXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addCollider","collider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","updateEvents","physicsEvents","triggerEventPool","activeTriggers","forEach","dispatchState","deleteByIndex","raycast","ray","onRaycast","hit","pxHitResult","min","raycastCallback","preFilter","filterData","index","pxRaycastCallback","PxQueryFilterCallback","result","raycastSingle","origin","direction","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","boxCast","center","orientation","onSweep","outHitResult","pose","_tempPose","_sweepSingle","sphereCast","PxSphereGeometry","tempQuat","_tempQuaternion","capsuleCast","overlapBoxAll","onOverlap","_overlapMultiple","overlapSphereAll","overlapCapsuleAll","gc","pxControllerManager","createControllerManager","Object","create","eventMap","sweepCallback","pxSweepCallback","pxSweepHit","PxSweepHit","sweepSingle","overlapCallback","pxOverlapCallback","maxHits","hits","overlapMultiple","_tempShapeIDs","simulate","block","fetchResults","pop","TriggerEvent","ContactEvent","shape0Id","shape1Id","nativeContacts","getContacts","count","bufferedContacts","_bufferedContacts","contactCount","src","dst","contacts","BufferedContactPoint","impulse","separation","BufferedContacts","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","PhysXJoint","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setAnchor","_defaultQuat","_anchor","setConnectedAnchor","_connectedAnchor","setMassScale","setInvMassScale0","setConnectedMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale0","setConnectedInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_connectedAxisRotationQuaternion","createRevoluteJoint","setAxis","xAxis","_xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","connectedAxisRotationQuaternion","getAngle","getVelocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","autowake","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","PhysXMeshColliderShape","positions","indices","isConvex","cookingFlags","_pxMesh","_isConvex","_cookMesh","physics","scaleY","scaleZ","SCENE_QUERY_SHAPE","SIMULATION_SHAPE","meshFlag","_tightBoundsFlag","createShapeFn","createConvexMeshShape","createTriMeshShape","scaleX","setMeshData","_updateGeometry","_pxCooking","cooking","_pxCookingParams","cookingParams","preprocessFlags","MeshColliderShapeCookingFlag","VertexWelding","Cleaning","setCookingMeshPreprocessParams","setParams","verticesPtr","_allocatePositions","createConvexMesh","_free","_logConvexCookingError","error","isU32","Uint32Array","indicesPtr","_allocateIndices","createTriMesh","_logTriMeshCookingError","createConvexMeshGeometry","createTriMeshGeometry","getLastConvexCookingResult","getLastTriMeshCookingResult","ptr","_malloc","view","Float32Array","HEAPF32","buffer","copyToArray","TypedArrayCtor","Uint16Array","heap","HEAPU32","HEAPU16","BYTES_PER_ELEMENT","newGeometry","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PhysXPhysics","runtimeMode","runtimeUrls","Auto","_initializeState","_runTimeMode","_wasmSIMDModeUrl","wasmSIMDModeUrl","_wasmModeUrl","wasmModeUrl","initialize","Promise","resolve","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","SystemInfo","_detectSIMDSupported","WebAssemblySIMD","WebAssembly","initializePromise","then","window","PHYSX","_init","log","catch","PxCloseExtensions","_pxFoundation","_defaultErrorCallback","_allocator","_tolerancesScale","createPhysicsManager","createPhysicsScene","scene","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createMeshColliderShape","createHingeJoint","createSpringJoint","getColliderLayerCollision","layer1","layer2","getGroupCollisionFlag","setColliderLayerCollision","isCollide","setGroupCollisionFlag","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","tolerancesScale","PxTolerancesScale","PxCreatePhysics","PxInitExtensions","PxCookingParams","meshWeldTolerance","setCookingMidphaseType","pxCooking","PxCreateCooking"],"mappings":"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"}