@galacean/engine-physics-physx 1.3.17 → 1.3.18
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 +1 -1
- 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 +1 -1
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +1 -1
- package/dist/module.js +1 -1
- package/dist/module.js.map +1 -1
- package/package.json +4 -4
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/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":["export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import { Quaternion, Vector3, DisorderedArray } from \"@galacean/engine\";\nimport { IColliderShape } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"../PhysXCharacterController\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\n\n/**\n * Flags which affect the behavior of Shapes.\n */\nexport enum ShapeFlag {\n /** The shape will partake in collision in the physical simulation. */\n SIMULATION_SHAPE = 1 << 0,\n /** The shape will partake in scene queries (ray casts, overlap tests, sweeps, ...). */\n SCENE_QUERY_SHAPE = 1 << 1,\n /** The shape is a trigger which can send reports whenever other shapes enter/leave its volume. */\n TRIGGER_SHAPE = 1 << 2\n}\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class PhysXColliderShape implements IColliderShape {\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n\n protected _physXPhysics: PhysXPhysics;\n protected _worldScale: Vector3 = new Vector3(1, 1, 1);\n protected _position: Vector3 = new Vector3();\n protected _rotation: Vector3 = null;\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 this._rotation = value;\n Quaternion.rotationYawPitchRoll(value.x, value.y, value.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.copyFrom(scale);\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._pxShape.setContactOffset(offset);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.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.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 private _sizeScale: Vector3 = new Vector3(1, 1, 1);\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._sizeScale, 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 this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n Vector3.multiply(this._halfSize, this._sizeScale, 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 private _sizeScale: Vector3 = new Vector3(1, 1, 1);\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._sizeScale;\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._sizeScale;\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.x, rotation.y, 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\n const sizeScale = this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\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 _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(slopeLimit);\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 }\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 }\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\";\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 _pxActor: any;\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 }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._pxActor.detachShape(shape._pxShape, true);\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 { 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.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n this._pxActor.setLinearVelocity(value, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n this._pxActor.setAngularVelocity(value, 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.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.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n this._pxActor.setMaxAngularVelocity(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 switch (value) {\n case CollisionDetectionMode.Continuous:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, true);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n const physX = this._physXPhysics._physX;\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.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.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 { IPhysicsScene } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\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?: (obj1: number, obj2: number) => void;\n private readonly _onContactExit?: (obj1: number, obj2: number) => void;\n private readonly _onContactStay?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerExit?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerStay?: (obj1: number, obj2: number) => void;\n\n private _currentEvents: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n physXPhysics: PhysXPhysics,\n physicsManager: PhysXPhysicsManager,\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._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: (index1, index2) => {\n this._onContactEnter(index1, index2);\n },\n onContactEnd: (index1, index2) => {\n this._onContactExit(index1, index2);\n },\n onContactPersist: (index1, index2) => {\n this._onContactStay(index1, index2);\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.addColliderShape }\n */\n addColliderShape(colliderShape: PhysXColliderShape) {\n this._physXManager._eventMap[colliderShape._id] = {};\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeColliderShape }\n */\n removeColliderShape(colliderShape: PhysXColliderShape) {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n const { _id: id } = colliderShape;\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 /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(collider: PhysXCollider): void {\n this._pxScene.addActor(collider._pxActor, null);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCollider }\n */\n removeCollider(collider: PhysXCollider): void {\n this._pxScene.removeActor(collider._pxActor, true);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCharacterController }\n */\n addCharacterController(characterController: PhysXCharacterController): void {\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 }\n }\n characterController._pxManager = this;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCharacterController }\n */\n removeCharacterController(characterController: PhysXCharacterController): void {\n characterController._pxManager = null;\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 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 _xAxis = new Vector3(1, 0, 0);\n protected static _defaultVec = new Vector3();\n protected static _defaultQuat = new Quaternion();\n\n protected _pxJoint: any;\n protected _collider: PhysXCollider;\n private _connectedAnchor = new Vector3();\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(value?._pxActor || null, this._collider?._pxActor || null);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._connectedAnchor.copyFrom(value);\n this._setLocalPose(0, value, PhysXJoint._defaultQuat);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedMassScale }\n */\n setConnectedMassScale(value: number): void {\n this._pxJoint.setInvMassScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedInertiaScale }\n */\n setConnectedInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setMassScale }\n */\n setMassScale(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.setInvInertiaScale1(1 / 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 * 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 null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n}\n","import { IHingeJoint } from \"@galacean/engine-design\";\nimport { 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 private _axisRotationQuaternion = new Quaternion();\n private _swingOffset = new Vector3();\n\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createRevoluteJoint(\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n\n /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\n const xAxis = PhysXJoint._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\n this._setLocalPose(0, this._swingOffset, axisRotationQuaternion);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setSwingOffset }\n */\n setSwingOffset(value: Vector3): void {\n this._swingOffset.copyFrom(value);\n this._setLocalPose(1, this._swingOffset, this._axisRotationQuaternion);\n }\n\n /**\n * {@inheritDoc IHingeJoint.getAngle }\n */\n getAngle(): number {\n return 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(lowerLimit, 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(lowerLimit, upperLimit, stiffness, damping);\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 private _swingOffset = new Vector3();\n\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.setSwingOffset }\n */\n setSwingOffset(value: Vector3): void {\n this._swingOffset.copyFrom(value);\n this._setLocalPose(1, value, PhysXJoint._defaultQuat);\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 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*rnDeR58NNGoAAAAAAAAAAAAAARQnAQ/physx.release.js.js`;\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*nA97QLQehRMAAAAAAAAAAAAAARQnAQ/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?: (obj1: number, obj2: number) => void,\n onContactEnd?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => 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":["ShapeFlag","SIMULATION_SHAPE","SCENE_QUERY_SHAPE","TRIGGER_SHAPE","PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","_physXPhysics","setRotation","value","rotationYawPitchRoll","x","y","z","multiply","normalize","_setLocalPose","setPosition","copyFrom","controllers","i","n","length","get","_updateShapePosition","setWorldScale","scale","setContactOffset","offset","_pxShape","_pxController","setMaterial","_pxMaterial","setIsTrigger","_modifyFlag","_setShapeFlags","destroy","release","flags","setFlags","_physX","PxShapeFlags","transform","translation","rotation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","_pxGeometry","setUUID","flag","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","_sizeScale","halfSize","set","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","Math","abs","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","Y","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","X","max","Z","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","ColliderShapeUpAxis","PhysXCharacterController","_shapeScaledPosition","_worldPosition","move","disp","minDist","elapsedTime","setWorldPosition","position","_updateNativePosition","getWorldPosition","getPosition","subtract","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","addShape","shape","_pxManager","_createPXController","_shape","add","removeShape","_destroyPXController","delete","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_getControllerManager","createController","shapePosition","worldScale","worldPosition","_tempVec","PhysXCollider","_pxActor","attachShape","detachShape","setWorldTransform","setGlobalPose","_transform","getWorldTransform","outPosition","outRotation","getGlobalPose","w","pos","rot","_tempTransform","CollisionDetectionMode","Discrete","Continuous","ContinuousDynamic","ContinuousSpeculative","PhysXDynamicCollider","createRigidDynamic","setLinearDamping","setAngularDamping","setLinearVelocity","setAngularVelocity","setMass","setCenterOfMass","setCMassLocalPose","setInertiaTensor","setMassSpaceInertiaTensor","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","setSolverIterationCounts","setCollisionDetectionMode","setRigidBodyFlag","PxRigidBodyFlag","eENABLE_CCD","eENABLE_CCD_FRICTION","eENABLE_SPECULATIVE_CCD","physX","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","_tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","wakeUp","PhysXPhysicsManager","_eventMap","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","CombineMode","Average","Minimum","Multiply","Maximum","PhysXPhysicsScene","physicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_pxControllerManager","_currentEvents","_eventPool","_physXManager","_pxRaycastHit","PxRaycastHit","_pxFilterData","PxQueryFilterData","PxQueryFlags","QueryFlag","STATIC","DYNAMIC","PRE_FILTER","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","triggerCallback","onContactBegin","index1","index2","onContactEnd","onContactPersist","onTriggerBegin","event","_getTrigger","state","Enter","onTriggerEnd","subMap","undefined","Exit","pxPhysics","physXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","eventMap","forEach","deleteByIndex","push","addCollider","collider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","_fireEvent","raycast","ray","distance","onRaycast","hit","pxHitResult","min","raycastCallback","preFilter","filterData","index","actor","postFilter","result","raycastSingle","origin","direction","PxQueryFilterCallback","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","pxControllerManager","createControllerManager","simulate","block","fetchResults","pop","TriggerEvent","Stay","POST_FILTER","ANY_HIT","NO_BLOCK","TriggerEventState","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","Auto","WebAssembly","JavaScript","PhysXJoint","_connectedAnchor","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setConnectedAnchor","_defaultQuat","setConnectedMassScale","setInvMassScale0","setConnectedInertiaScale","setInvInertiaScale0","setMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_xAxis","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_swingOffset","createRevoluteJoint","setAxis","xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","setSwingOffset","getAngle","getVelocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","velocity","autowake","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","PhysXPhysics","runtimeMode","_initializeState","Uninitialized","_runTimeMode","initialize","Initialized","Promise","resolve","Initializing","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","instantiate","module","Module","Uint8Array","of","Instance","e","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","InitializeState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.1/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":["export function _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else return left instanceof right;\n}\nexport { _instanceof as _ };\n","export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import { Quaternion, Vector3, DisorderedArray } from \"@galacean/engine\";\nimport { IColliderShape } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"../PhysXCharacterController\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\n\n/**\n * Flags which affect the behavior of Shapes.\n */\nexport enum ShapeFlag {\n /** The shape will partake in collision in the physical simulation. */\n SIMULATION_SHAPE = 1 << 0,\n /** The shape will partake in scene queries (ray casts, overlap tests, sweeps, ...). */\n SCENE_QUERY_SHAPE = 1 << 1,\n /** The shape is a trigger which can send reports whenever other shapes enter/leave its volume. */\n TRIGGER_SHAPE = 1 << 2\n}\n\n/**\n * Abstract class for collider shapes.\n */\nexport abstract class PhysXColliderShape implements IColliderShape {\n static readonly halfSqrt: number = 0.70710678118655;\n static transform = {\n translation: new Vector3(),\n rotation: null\n };\n\n /** @internal */\n _controllers: DisorderedArray<PhysXCharacterController> = new DisorderedArray<PhysXCharacterController>();\n\n protected _physXPhysics: PhysXPhysics;\n protected _worldScale: Vector3 = new Vector3(1, 1, 1);\n protected _position: Vector3 = new Vector3();\n protected _rotation: Vector3 = null;\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 this._rotation = value;\n Quaternion.rotationYawPitchRoll(value.x, value.y, value.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.copyFrom(scale);\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._pxShape.setContactOffset(offset);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController?.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.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 private _sizeScale: Vector3 = new Vector3(1, 1, 1);\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._sizeScale, 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 this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\n const tempExtents = PhysXBoxColliderShape._tempHalfExtents;\n Vector3.multiply(this._halfSize, this._sizeScale, 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 private _sizeScale: Vector3 = new Vector3(1, 1, 1);\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._sizeScale;\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._sizeScale;\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.x, rotation.y, 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\n const sizeScale = this._sizeScale.set(Math.abs(scale.x), Math.abs(scale.y), Math.abs(scale.z));\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 _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(slopeLimit);\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 }\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 }\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\";\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 _pxActor: any;\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 }\n\n /**\n * {@inheritDoc ICollider.removeShape }\n */\n removeShape(shape: PhysXColliderShape): void {\n this._pxActor.detachShape(shape._pxShape, true);\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 { 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.setLinearVelocity }\n */\n setLinearVelocity(value: Vector3): void {\n this._pxActor.setLinearVelocity(value, true);\n }\n\n /**\n * {@inheritDoc IDynamicCollider.setAngularVelocity }\n */\n setAngularVelocity(value: Vector3): void {\n this._pxActor.setAngularVelocity(value, 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.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.setMaxAngularVelocity }\n */\n setMaxAngularVelocity(value: number): void {\n this._pxActor.setMaxAngularVelocity(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 switch (value) {\n case CollisionDetectionMode.Continuous:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, true);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(this._physXPhysics._physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n const physX = this._physXPhysics._physX;\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.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.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 { IPhysicsScene } from \"@galacean/engine-design\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\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?: (obj1: number, obj2: number) => void;\n private readonly _onContactExit?: (obj1: number, obj2: number) => void;\n private readonly _onContactStay?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerEnter?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerExit?: (obj1: number, obj2: number) => void;\n private readonly _onTriggerStay?: (obj1: number, obj2: number) => void;\n\n private _currentEvents: DisorderedArray<TriggerEvent> = new DisorderedArray<TriggerEvent>();\n\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n physXPhysics: PhysXPhysics,\n physicsManager: PhysXPhysicsManager,\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._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: (index1, index2) => {\n this._onContactEnter(index1, index2);\n },\n onContactEnd: (index1, index2) => {\n this._onContactExit(index1, index2);\n },\n onContactPersist: (index1, index2) => {\n this._onContactStay(index1, index2);\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.addColliderShape }\n */\n addColliderShape(colliderShape: PhysXColliderShape) {\n this._physXManager._eventMap[colliderShape._id] = {};\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeColliderShape }\n */\n removeColliderShape(colliderShape: PhysXColliderShape) {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n const { _id: id } = colliderShape;\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 /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(collider: PhysXCollider): void {\n this._pxScene.addActor(collider._pxActor, null);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCollider }\n */\n removeCollider(collider: PhysXCollider): void {\n this._pxScene.removeActor(collider._pxActor, true);\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCharacterController }\n */\n addCharacterController(characterController: PhysXCharacterController): void {\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 }\n }\n characterController._pxManager = this;\n }\n\n /**\n * {@inheritDoc IPhysicsManager.removeCharacterController }\n */\n removeCharacterController(characterController: PhysXCharacterController): void {\n characterController._pxManager = null;\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 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 _xAxis = new Vector3(1, 0, 0);\n protected static _defaultVec = new Vector3();\n protected static _defaultQuat = new Quaternion();\n\n protected _pxJoint: any;\n protected _collider: PhysXCollider;\n private _connectedAnchor = new Vector3();\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(value?._pxActor || null, this._collider?._pxActor || null);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedAnchor }\n */\n setConnectedAnchor(value: Vector3): void {\n this._connectedAnchor.copyFrom(value);\n this._setLocalPose(0, value, PhysXJoint._defaultQuat);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedMassScale }\n */\n setConnectedMassScale(value: number): void {\n this._pxJoint.setInvMassScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setConnectedInertiaScale }\n */\n setConnectedInertiaScale(value: number): void {\n this._pxJoint.setInvInertiaScale0(1 / value);\n }\n\n /**\n * {@inheritDoc IJoint.setMassScale }\n */\n setMassScale(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.setInvInertiaScale1(1 / 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 * 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 null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n}\n","import { IHingeJoint } from \"@galacean/engine-design\";\nimport { 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 private _axisRotationQuaternion = new Quaternion();\n private _swingOffset = new Vector3();\n\n constructor(physXPhysics: PhysXPhysics, collider: PhysXCollider) {\n super(physXPhysics);\n this._collider = collider;\n this._pxJoint = physXPhysics._pxPhysics.createRevoluteJoint(\n null,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat,\n collider._pxActor,\n PhysXJoint._defaultVec,\n PhysXJoint._defaultQuat\n );\n }\n\n /**\n * {@inheritDoc IHingeJoint.setAxis }\n */\n setAxis(value: Vector3): void {\n const xAxis = PhysXJoint._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\n this._setLocalPose(0, this._swingOffset, axisRotationQuaternion);\n }\n\n /**\n * {@inheritDoc IHingeJoint.setSwingOffset }\n */\n setSwingOffset(value: Vector3): void {\n this._swingOffset.copyFrom(value);\n this._setLocalPose(1, this._swingOffset, this._axisRotationQuaternion);\n }\n\n /**\n * {@inheritDoc IHingeJoint.getAngle }\n */\n getAngle(): number {\n return 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(lowerLimit, 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(lowerLimit, upperLimit, stiffness, damping);\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 private _swingOffset = new Vector3();\n\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.setSwingOffset }\n */\n setSwingOffset(value: Vector3): void {\n this._swingOffset.copyFrom(value);\n this._setLocalPose(1, value, PhysXJoint._defaultQuat);\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 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*rnDeR58NNGoAAAAAAAAAAAAAARQnAQ/physx.release.js.js`;\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src = `https://mdn.alipayobjects.com/rms/afts/file/A*nA97QLQehRMAAAAAAAAAAAAAARQnAQ/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?: (obj1: number, obj2: number) => void,\n onContactEnd?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => 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":["ShapeFlag","SIMULATION_SHAPE","SCENE_QUERY_SHAPE","TRIGGER_SHAPE","PhysXColliderShape","physXPhysics","_controllers","DisorderedArray","_worldScale","Vector3","_position","_rotation","_axis","_physXRotation","Quaternion","_shapeFlags","_physXPhysics","setRotation","value","rotationYawPitchRoll","x","y","z","multiply","normalize","_setLocalPose","setPosition","copyFrom","controllers","i","n","length","get","_updateShapePosition","setWorldScale","scale","setContactOffset","offset","_pxShape","_pxController","setMaterial","_pxMaterial","setIsTrigger","_modifyFlag","_setShapeFlags","destroy","release","flags","setFlags","_physX","PxShapeFlags","transform","translation","rotation","setLocalPose","_initialize","material","id","_id","_pxPhysics","createShape","_pxGeometry","setUUID","flag","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","_sizeScale","halfSize","set","PxBoxGeometry","setSize","tempExtents","_tempHalfExtents","halfExtents","setGeometry","_updateController","Math","abs","extents","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","PhysXCapsuleColliderShape","radius","height","_upAxis","Y","_radius","_halfHeight","PxCapsuleGeometry","setRadius","sizeScale","X","max","Z","setHeight","halfHeight","setUpAxis","upAxis","axis","physXRotation","geometry","ColliderShapeUpAxis","PhysXCharacterController","_shapeScaledPosition","_worldPosition","move","disp","minDist","elapsedTime","setWorldPosition","position","_updateNativePosition","getWorldPosition","getPosition","subtract","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","addShape","shape","_pxManager","_createPXController","_shape","add","removeShape","_destroyPXController","delete","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_getControllerManager","createController","shapePosition","worldScale","worldPosition","_tempVec","PhysXCollider","_pxActor","attachShape","detachShape","setWorldTransform","setGlobalPose","_transform","getWorldTransform","outPosition","outRotation","getGlobalPose","w","pos","rot","_tempTransform","CollisionDetectionMode","Discrete","Continuous","ContinuousDynamic","ContinuousSpeculative","PhysXDynamicCollider","createRigidDynamic","setLinearDamping","setAngularDamping","setLinearVelocity","setAngularVelocity","setMass","setCenterOfMass","setCMassLocalPose","setInertiaTensor","setMassSpaceInertiaTensor","setMaxAngularVelocity","setMaxDepenetrationVelocity","setSleepThreshold","setSolverIterations","setSolverIterationCounts","setCollisionDetectionMode","setRigidBodyFlag","PxRigidBodyFlag","eENABLE_CCD","eENABLE_CCD_FRICTION","eENABLE_SPECULATIVE_CCD","physX","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","_tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","wakeUp","PhysXPhysicsManager","_eventMap","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","CombineMode","Average","Minimum","Multiply","Maximum","PhysXPhysicsScene","physicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_pxControllerManager","_currentEvents","_eventPool","_physXManager","_pxRaycastHit","PxRaycastHit","_pxFilterData","PxQueryFilterData","PxQueryFlags","QueryFlag","STATIC","DYNAMIC","PRE_FILTER","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","triggerCallback","onContactBegin","index1","index2","onContactEnd","onContactPersist","onTriggerBegin","event","_getTrigger","state","Enter","onTriggerEnd","subMap","undefined","Exit","pxPhysics","physXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","eventMap","forEach","deleteByIndex","push","addCollider","collider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","_fireEvent","raycast","ray","distance","onRaycast","hit","pxHitResult","min","raycastCallback","preFilter","filterData","index","actor","postFilter","result","raycastSingle","origin","direction","PxQueryFilterCallback","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","getUUID","pxControllerManager","createControllerManager","simulate","block","fetchResults","pop","TriggerEvent","Stay","POST_FILTER","ANY_HIT","NO_BLOCK","TriggerEventState","PhysXStaticCollider","createRigidStatic","PhysXRuntimeMode","Auto","WebAssembly","JavaScript","PhysXJoint","_connectedAnchor","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","_pxJoint","setActors","_collider","setConnectedAnchor","_defaultQuat","setConnectedMassScale","setInvMassScale0","setConnectedInertiaScale","setInvInertiaScale0","setMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","_xAxis","_defaultVec","PhysXFixedJoint","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_swingOffset","createRevoluteJoint","setAxis","xAxis","axisRotationQuaternion","angle","acos","dot","cross","rotationAxisAngle","setSwingOffset","getAngle","getVelocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","velocity","autowake","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","PhysXPhysics","runtimeMode","_initializeState","Uninitialized","_runTimeMode","initialize","Initialized","Promise","resolve","Initializing","_initializePromise","scriptPromise","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","instantiate","module","Module","Uint8Array","of","Instance","e","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","InitializeState"],"mappings":"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"}
|