@galacean/engine-physics-physx 1.4.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +2 -3
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +2 -3
- package/dist/main.js.map +1 -1
- package/dist/module.js +2 -3
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/esm/_instanceof.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/_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","../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 _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","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 protected static _tempVector4 = new Vector4();\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n /** @internal */\n _contractOffset: number = 0.02;\n\n protected _physXPhysics: PhysXPhysics;\n protected _worldScale: Vector3 = new Vector3(1, 1, 1);\n protected _position: Vector3 = new Vector3();\n protected _rotation: Vector3 = new Vector3();\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 /** @internal */\n _pxMaterial: any;\n /** @internal */\n _pxShape: any;\n /** @internal */\n _pxGeometry: any;\n /** @internal */\n _id: number;\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 }\n\n /**\n * @internal\n */\n _setShapeFlags(flags: ShapeFlag) {\n this._shapeFlags = flags;\n this._pxShape.setFlags(new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags));\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 this._pxShape = this._physXPhysics._pxPhysics.createShape(\n this._pxGeometry,\n material._pxMaterial,\n true,\n new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags)\n );\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.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.x);\n pxController.setHalfSideExtent(extents.y);\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/**\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 private _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(this._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.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\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 */\nenum 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 { 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 // 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 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.x;\n desc.halfSideExtent = shape._halfSize.y;\n desc.halfForwardExtent = shape._halfSize.z;\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 } else {\n throw \"unsupported shape type\";\n }\n\n desc.setMaterial(shape._pxMaterial);\n\n this._pxController = pxManager._getControllerManager().createController(desc);\n this._pxController.setUUID(shape._id);\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() {\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.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 break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, 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 } 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 _tempNormal: Vector3 = new Vector3();\n\n private _physXPhysics: PhysXPhysics;\n private _physXManager: PhysXPhysicsManager;\n private _pxRaycastHit: any;\n private _pxFilterData: any;\n\n private _pxScene: 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 const physXSimulationCallbackInstance = physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = physX.getDefaultSceneDesc(pxPhysics.getTolerancesScale(), 0, physXSimulationCallbackInstance);\n this._pxScene = pxPhysics.createScene(sceneDesc);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.setGravity }\n */\n setGravity(value: Vector3) {\n this._pxScene.setGravity(value);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.update }\n */\n update(elapsedTime: number): void {\n this._simulate(elapsedTime);\n this._fetchResults();\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsManager.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const { _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 postFilter: (filterData, hit) => {}\n };\n\n const result = this._pxScene.raycastSingle(\n ray.origin,\n ray.direction,\n distance,\n pxHitResult,\n this._pxFilterData,\n this._physXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback)\n );\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 * @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] = {};\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 _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 mode first, if WebAssembly mode is not supported, roll back to JavaScript mode. */\n Auto,\n /** WebAssembly mode. */\n WebAssembly,\n /** JavaScript mode. */\n JavaScript\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 _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 }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, PhysXJoint._defaultQuat);\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._pxJoint = null;\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 _anchor: Vector3;\n private _connectedAnchor: Vector3;\n private _axisRotationQuaternion = 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 /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\n const xAxis = PhysXHingeJoint._xAxis;\n const axisRotationQuaternion = this._axisRotationQuaternion;\n xAxis.set(1, 0, 0);\n value.normalize();\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 this._setLocalPose(1, this._connectedAnchor, axisRotationQuaternion);\n }\n\n override setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, this._axisRotationQuaternion);\n this._anchor = value;\n }\n\n override setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._axisRotationQuaternion);\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","import { IPlaneColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } 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\n this._pxGeometry = new physXPhysics._physX.PxSphereGeometry(this._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, Vector3, version } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n ICollision,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\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 { 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\n private _runTimeMode: PhysXRuntimeMode;\n private _initializeState: InitializeState = InitializeState.Uninitialized;\n private _initializePromise: Promise<void>;\n\n constructor(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto) {\n this._runTimeMode = runtimeMode;\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 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 const supported = (() => {\n try {\n if (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {}\n return false;\n })();\n if (supported) {\n runtimeMode = PhysXRuntimeMode.WebAssembly;\n } else {\n runtimeMode = PhysXRuntimeMode.JavaScript;\n }\n }\n\n if (runtimeMode == PhysXRuntimeMode.JavaScript) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*PXxaQrGL0XsAAAAAAAAAAAAAARQnAQ/physx.release.downgrade.js`;\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*0Qq8Rob3_5oAAAAAAAAAAAAAARQnAQ/physx.release.js`;\n }\n });\n\n const initializePromise = new Promise<void>((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX) => {\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 public destroy(): void {\n this._physX.PxCloseExtensions();\n this._pxPhysics.release();\n this._pxFoundation.release();\n this._physX = null;\n this._pxFoundation = null;\n this._pxPhysics = null;\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 manager = new PhysXPhysicsScene(\n this,\n physicsManager,\n onContactBegin,\n onContactEnd,\n onContactStay,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerStay\n );\n return manager;\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.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 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 pxPhysics = physX.PxCreatePhysics(version, pxFoundation, new physX.PxTolerancesScale(), false, null);\n\n physX.PxInitExtensions(pxPhysics, null);\n this._physX = physX;\n this._pxFoundation = pxFoundation;\n this._pxPhysics = pxPhysics;\n }\n}\n\nenum InitializeState {\n Uninitialized,\n Initializing,\n Initialized\n}\n","export { PhysXPhysics } from \"./PhysXPhysics\";\nexport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\n\n//@ts-ignore\nexport const version = `__buildVersion`;\n\nconsole.log(`Galacean PhysX version: ${version}`);\n"],"names":["PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_contractOffset","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","ShapeFlag","_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","flags","setFlags","_physX","PxShapeFlags","transform","translation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","setUUID","flag","Vector4","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","halfSize","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","max","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","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","delete","_removeColliderShape","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_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","_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","actor","postFilter","result","raycastSingle","origin","direction","PxQueryFilterCallback","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","pxControllerManager","createControllerManager","eventPool","currentEvents","eventMap","forEach","deleteByIndex","simulate","block","fetchResults","pop","TriggerEvent","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","PhysXJoint","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setAnchor","_defaultQuat","setConnectedAnchor","setMassScale","setInvMassScale0","setConnectedMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale0","setConnectedInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","createRevoluteJoint","setAxis","xAxis","_xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","_anchor","_connectedAnchor","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","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","PhysXPhysics","runtimeMode","Auto","_initializeState","_runTimeMode","initialize","Promise","resolve","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","WebAssembly","instantiate","module","Module","Uint8Array","of","Instance","e","JavaScript","src","initializePromise","then","window","PHYSX","_init","console","log","catch","PxCloseExtensions","_pxFoundation","createPhysicsManager","createPhysicsScene","manager","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createHingeJoint","createSpringJoint","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","PxCreatePhysics","PxTolerancesScale","PxInitExtensions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.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/_type_of.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","../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 _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","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 protected static _tempVector4 = new Vector4();\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n /** @internal */\n _contractOffset: number = 0.02;\n\n protected _physXPhysics: PhysXPhysics;\n protected _worldScale: Vector3 = new Vector3(1, 1, 1);\n protected _position: Vector3 = new Vector3();\n protected _rotation: Vector3 = new Vector3();\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 /** @internal */\n _pxMaterial: any;\n /** @internal */\n _pxShape: any;\n /** @internal */\n _pxGeometry: any;\n /** @internal */\n _id: number;\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 }\n\n /**\n * @internal\n */\n _setShapeFlags(flags: ShapeFlag) {\n this._shapeFlags = flags;\n this._pxShape.setFlags(new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags));\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 this._pxShape = this._physXPhysics._pxPhysics.createShape(\n this._pxGeometry,\n material._pxMaterial,\n true,\n new this._physXPhysics._physX.PxShapeFlags(this._shapeFlags)\n );\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.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.x);\n pxController.setHalfSideExtent(extents.y);\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/**\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 private _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(this._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.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\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 */\nenum 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 { 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 // 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 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.x;\n desc.halfSideExtent = shape._halfSize.y;\n desc.halfForwardExtent = shape._halfSize.z;\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 } else {\n throw \"unsupported shape type\";\n }\n\n desc.setMaterial(shape._pxMaterial);\n\n this._pxController = pxManager._getControllerManager().createController(desc);\n this._pxController.setUUID(shape._id);\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() {\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.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 break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(physX.PxRigidBodyFlag.eENABLE_CCD, 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 } 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 _tempNormal: Vector3 = new Vector3();\n\n private _physXPhysics: PhysXPhysics;\n private _physXManager: PhysXPhysicsManager;\n private _pxRaycastHit: any;\n private _pxFilterData: any;\n\n private _pxScene: 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 const physXSimulationCallbackInstance = physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = physX.getDefaultSceneDesc(pxPhysics.getTolerancesScale(), 0, physXSimulationCallbackInstance);\n this._pxScene = pxPhysics.createScene(sceneDesc);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.setGravity }\n */\n setGravity(value: Vector3) {\n this._pxScene.setGravity(value);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.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 IPhysicsManager.update }\n */\n update(elapsedTime: number): void {\n this._simulate(elapsedTime);\n this._fetchResults();\n this._fireEvent();\n }\n\n /**\n * {@inheritDoc IPhysicsManager.raycast }\n */\n raycast(\n ray: Ray,\n distance: number,\n onRaycast: (obj: number) => boolean,\n hit?: (shapeUniqueID: number, distance: number, position: Vector3, normal: Vector3) => void\n ): boolean {\n const { _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 postFilter: (filterData, hit) => {}\n };\n\n const result = this._pxScene.raycastSingle(\n ray.origin,\n ray.direction,\n distance,\n pxHitResult,\n this._pxFilterData,\n this._physXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback)\n );\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 * @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] = {};\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 _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 mode first, if WebAssembly mode is not supported, roll back to JavaScript mode. */\n Auto,\n /** WebAssembly mode. */\n WebAssembly,\n /** JavaScript mode. */\n JavaScript\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 _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 }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, PhysXJoint._defaultQuat);\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._pxJoint = null;\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 _anchor: Vector3;\n private _connectedAnchor: Vector3;\n private _axisRotationQuaternion = 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 /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\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 this._setLocalPose(1, this._connectedAnchor, axisRotationQuaternion);\n }\n\n override setAnchor(value: Vector3): void {\n this._setLocalPose(0, value, this._axisRotationQuaternion);\n this._anchor = value;\n }\n\n override setConnectedAnchor(value: Vector3): void {\n this._setLocalPose(1, value, this._axisRotationQuaternion);\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","import { IPlaneColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } 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\n this._pxGeometry = new physXPhysics._physX.PxSphereGeometry(this._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, Vector3, version } from \"@galacean/engine\";\nimport {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n ICollision,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\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 { 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\n private _runTimeMode: PhysXRuntimeMode;\n private _initializeState: InitializeState = InitializeState.Uninitialized;\n private _initializePromise: Promise<void>;\n\n constructor(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto) {\n this._runTimeMode = runtimeMode;\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 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 const supported = (() => {\n try {\n if (typeof WebAssembly === \"object\" && typeof WebAssembly.instantiate === \"function\") {\n const module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n if (module instanceof WebAssembly.Module)\n return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n }\n } catch (e) {}\n return false;\n })();\n if (supported) {\n runtimeMode = PhysXRuntimeMode.WebAssembly;\n } else {\n runtimeMode = PhysXRuntimeMode.JavaScript;\n }\n }\n\n if (runtimeMode == PhysXRuntimeMode.JavaScript) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*PXxaQrGL0XsAAAAAAAAAAAAAARQnAQ/physx.release.downgrade.js`;\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*0Qq8Rob3_5oAAAAAAAAAAAAAARQnAQ/physx.release.js`;\n }\n });\n\n const initializePromise = new Promise<void>((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX) => {\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 public destroy(): void {\n this._physX.PxCloseExtensions();\n this._pxPhysics.release();\n this._pxFoundation.release();\n this._physX = null;\n this._pxFoundation = null;\n this._pxPhysics = null;\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 manager = new PhysXPhysicsScene(\n this,\n physicsManager,\n onContactBegin,\n onContactEnd,\n onContactStay,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerStay\n );\n return manager;\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.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 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 pxPhysics = physX.PxCreatePhysics(version, pxFoundation, new physX.PxTolerancesScale(), false, null);\n\n physX.PxInitExtensions(pxPhysics, null);\n this._physX = physX;\n this._pxFoundation = pxFoundation;\n this._pxPhysics = pxPhysics;\n }\n}\n\nenum InitializeState {\n Uninitialized,\n Initializing,\n Initialized\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":["PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_contractOffset","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","ShapeFlag","_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","flags","setFlags","_physX","PxShapeFlags","transform","translation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","setUUID","flag","Vector4","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","halfSize","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","max","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","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","delete","_removeColliderShape","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_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","_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","actor","postFilter","result","raycastSingle","origin","direction","PxQueryFilterCallback","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","pxControllerManager","createControllerManager","eventPool","currentEvents","eventMap","forEach","deleteByIndex","simulate","block","fetchResults","pop","TriggerEvent","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","PhysXJoint","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setAnchor","_defaultQuat","setConnectedAnchor","setMassScale","setInvMassScale0","setConnectedMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale0","setConnectedInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","createRevoluteJoint","setAxis","xAxis","_xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","_anchor","_connectedAnchor","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","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","PhysXPhysics","runtimeMode","Auto","_initializeState","_runTimeMode","initialize","Promise","resolve","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","WebAssembly","instantiate","module","Module","Uint8Array","of","Instance","e","JavaScript","src","initializePromise","then","window","PHYSX","_init","console","log","catch","PxCloseExtensions","_pxFoundation","createPhysicsManager","createPhysicsScene","manager","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createHingeJoint","createSpringJoint","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","PxCreatePhysics","PxTolerancesScale","PxInitExtensions"],"mappings":"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"}
|