@galacean/engine-physics-physx 0.9.21 → 0.9.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/enum/PhysXRuntimeMode.ts","../src/joint/PhysXJoint.ts","../src/joint/PhysXFixedJoint.ts","../src/joint/PhysXHingeJoint.ts","../src/joint/PhysXSpringJoint.ts","../src/DisorderedArray.ts","../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/PhysXStaticCollider.ts","../src/shape/PhysXPlaneColliderShape.ts","../src/shape/PhysXSphereColliderShape.ts","../src/StaticInterfaceImplement.ts","../src/PhysXPhysics.ts"],"sourcesContent":["/**\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 { PhysXCollider } from \"../PhysXCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 /**\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 { PhysXJoint } from \"./PhysXJoint\";\nimport { IFixedJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\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(collider: PhysXCollider) {\n super();\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 { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXJoint } from \"./PhysXJoint\";\nimport { IHingeJoint } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 private _velocity = new Vector3();\n\n constructor(collider: PhysXCollider) {\n super();\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<Vector3> {\n const velocity = this._velocity;\n velocity.copyFrom(this._pxJoint.getVelocity());\n return velocity;\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): void {\n this._pxJoint.setDriveVelocity(velocity);\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(collider: PhysXCollider) {\n super();\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","/**\n * High-performance unordered array, delete uses exchange method to improve performance, internal capacity only increases.\n */\nexport class DisorderedArray<T> {\n _elements: T[];\n\n length: number = 0;\n\n constructor(count: number = 0) {\n this._elements = new Array<T>(count);\n }\n\n add(element: T): void {\n if (this.length === this._elements.length) this._elements.push(element);\n else this._elements[this.length] = element;\n this.length++;\n }\n\n delete(element: T): void {\n //TODO: It can be optimized for custom binary search and other algorithms, currently this._elements>=this.length wastes performance.\n const index = this._elements.indexOf(element);\n this.deleteByIndex(index);\n }\n\n get(index: number): T {\n if (index >= this.length) {\n throw \"Index is out of range.\";\n }\n return this._elements[index];\n }\n\n /**\n *\n * @param index\n * @returns The replaced item is used to reset its index.\n */\n deleteByIndex(index: number): T {\n var elements: T[] = this._elements;\n let end: T = null;\n const lastIndex = this.length - 1;\n if (index !== lastIndex) {\n end = elements[lastIndex];\n elements[index] = end;\n }\n this.length--;\n return end;\n }\n\n garbageCollection(): void {\n this._elements.length = this.length;\n }\n}\n","import { IColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { DisorderedArray } from \"../DisorderedArray\";\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 _scale: 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 _pxMaterials: any[] = new Array(1);\n /** @internal */\n _pxShape: any;\n /** @internal */\n _pxGeometry: any;\n /** @internal */\n _id: number;\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 this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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._pxMaterials[0] = value._pxMaterial;\n this._pxShape.setMaterials(this._pxMaterials);\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 PhysXPhysics._physX.PxShapeFlags(this._shapeFlags));\n }\n\n protected _setLocalPose(): void {\n const transform = PhysXColliderShape.transform;\n Vector3.multiply(this._position, this._scale, 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._pxMaterials[0] = material._pxMaterial;\n this._pxShape = PhysXPhysics._pxPhysics.createShape(\n this._pxGeometry,\n material._pxMaterial,\n true,\n new PhysXPhysics._physX.PxShapeFlags(this._shapeFlags)\n );\n this._pxShape.setQueryFilterData(new PhysXPhysics._physX.PxFilterData(id, 0, 0, 0));\n }\n\n private _modifyFlag(flag: ShapeFlag, value: boolean): void {\n this._shapeFlags = value ? this._shapeFlags | flag : this._shapeFlags & ~flag;\n }\n}\n","import { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Box collider shape in PhysX.\n */\nexport class PhysXBoxColliderShape extends PhysXColliderShape implements IBoxColliderShape {\n private static _tempHalfExtents = new Vector3();\n /** @internal */\n _halfSize: Vector3 = new Vector3();\n\n /**\n * Init Box Shape and alloc PhysX objects.\n * @param uniqueID - UniqueID mark Shape.\n * @param size - Size of Shape.\n * @param material - Material of PhysXCollider.\n */\n constructor(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial) {\n super();\n\n this._halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n\n this._pxGeometry = new PhysXPhysics._physX.PxBoxGeometry(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n this._halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n Vector3.multiply(this._halfSize, this._scale, PhysXBoxColliderShape._tempHalfExtents);\n this._pxGeometry.halfExtents = PhysXBoxColliderShape._tempHalfExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n pxController.setHalfHeight(this._halfSize.x);\n pxController.setHalfSideExtent(this._halfSize.y);\n pxController.setHalfForwardExtent(this._halfSize.z);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n Vector3.multiply(this._halfSize, this._scale, PhysXBoxColliderShape._tempHalfExtents);\n this._pxGeometry.halfExtents = PhysXBoxColliderShape._tempHalfExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { ICapsuleColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Capsule collider shape in PhysX.\n */\nexport class PhysXCapsuleColliderShape extends PhysXColliderShape implements ICapsuleColliderShape {\n /** @internal */\n _radius: number;\n /** @internal */\n _halfHeight: number;\n private _upAxis: ColliderShapeUpAxis = ColliderShapeUpAxis.Y;\n\n /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Radius of CapsuleCollider\n * @param height - Height of CapsuleCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, height: number, material: PhysXPhysicsMaterial) {\n super();\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 switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.y, this._scale.z);\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.x, this._scale.z);\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.x, this._scale.y);\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController.setRadius(value);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setHeight }\n */\n setHeight(value: number): void {\n this._halfHeight = value * 0.5;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController.setHeight(value);\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 setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(scale.y, scale.z);\n this._pxGeometry.halfHeight = this._halfHeight * scale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(scale.x, scale.z);\n this._pxGeometry.halfHeight = this._halfHeight * scale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(scale.x, scale.y);\n this._pxGeometry.halfHeight = this._halfHeight * scale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\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 { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\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 /** @internal */\n _id: number;\n /** @internal */\n _pxController: any;\n /** @internal */\n _pxManager: PhysXPhysicsManager;\n /** @internal */\n _shape: PhysXColliderShape;\n /**\n * {@inheritDoc ICharacterController.move }\n */\n move(disp: Vector3, minDist: number, elapsedTime: number): number {\n return this._pxController.move(disp, minDist, elapsedTime);\n }\n\n /**\n * {@inheritDoc ICharacterController.setWorldPosition }\n */\n setWorldPosition(position: Vector3): void {\n this._pxController && this._pxController.setPosition(position);\n }\n\n /**\n * {@inheritDoc ICharacterController.getWorldPosition }\n */\n getWorldPosition(position: Vector3): void {\n position.copyFrom(this._pxController.getPosition());\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 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: PhysXPhysicsManager, shape: PhysXColliderShape): void {\n let desc: any;\n if (shape instanceof PhysXBoxColliderShape) {\n desc = new 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 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._pxMaterials[0]);\n\n this._pxController = pxManager._getControllerManager().createController(desc);\n this._pxController.setQueryFilterData(new PhysXPhysics._physX.PxFilterData(shape._id, 0, 0, 0));\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","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 /**\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(position: Vector3, rotation: Quaternion) {\n super();\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(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, true);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(PhysXPhysics._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(PhysXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, true);\n } else {\n this._pxActor.setRigidBodyFlag(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 { Ray, Vector3 } from \"@galacean/engine\";\nimport { DisorderedArray } from \"./DisorderedArray\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class PhysXPhysicsManager implements IPhysicsManager {\n /** @internal */\n _pxControllerManager: any = null;\n\n private static _tempPosition: Vector3 = new Vector3();\n private static _tempNormal: Vector3 = new Vector3();\n private static _pxRaycastHit: any;\n private static _pxFilterData: any;\n\n static _init() {\n PhysXPhysicsManager._pxRaycastHit = new PhysXPhysics._physX.PxRaycastHit();\n PhysXPhysicsManager._pxFilterData = new PhysXPhysics._physX.PxQueryFilterData();\n PhysXPhysicsManager._pxFilterData.flags = new PhysXPhysics._physX.PxQueryFlags(\n QueryFlag.STATIC | QueryFlag.DYNAMIC | QueryFlag.PRE_FILTER\n );\n }\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 private _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._onContactEnter = onContactEnter;\n this._onContactExit = onContactExit;\n this._onContactStay = onContactStay;\n this._onTriggerEnter = onTriggerEnter;\n this._onTriggerExit = onTriggerExit;\n this._onTriggerStay = onTriggerStay;\n\n const triggerCallback = {\n onContactBegin: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactEnter(index1, index2);\n },\n onContactEnd: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactExit(index1, index2);\n },\n onContactPersist: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactStay(index1, index2);\n },\n onTriggerBegin: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\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: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n let event: TriggerEvent;\n if (index1 < index2) {\n const subMap = this._eventMap[index1];\n event = subMap[index2];\n subMap[index2] = undefined;\n } else {\n const subMap = this._eventMap[index2];\n event = subMap[index1];\n subMap[index1] = undefined;\n }\n event.state = TriggerEventState.Exit;\n }\n };\n\n const PHYSXSimulationCallbackInstance = PhysXPhysics._physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = PhysXPhysics._physX.getDefaultSceneDesc(\n PhysXPhysics._pxPhysics.getTolerancesScale(),\n 0,\n PHYSXSimulationCallbackInstance\n );\n this._pxScene = PhysXPhysics._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._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: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(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 } = PhysXPhysicsManager;\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physx raycast.\n\n const raycastCallback = {\n preFilter: (filterData, shape, actor) => {\n const index = shape.getQueryFilterData().word0;\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 PhysXPhysicsManager._pxFilterData,\n PhysXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback)\n );\n\n if (result && hit != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsManager;\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().getQueryFilterData().word0, 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._eventMap[index1][index2] = event;\n return event;\n }\n\n private _fireEvent(): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.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 this._onTriggerExit(event.index1, event.index2);\n currentEvents.deleteByIndex(i);\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 */\nclass 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 { PhysXPhysics } from \"./PhysXPhysics\";\nimport { IPhysicsMaterial } from \"@galacean/engine-design\";\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 constructor(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: CombineMode,\n bounceCombine: CombineMode\n ) {\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 { PhysXPhysics } from \"./PhysXPhysics\";\nimport { IStaticCollider } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A static collider component that will not move.\n * @remarks Mostly used for object which always stays at the same place and never moves around.\n */\nexport class PhysXStaticCollider extends PhysXCollider implements IStaticCollider {\n /**\n * Initialize PhysX static actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._pxActor = PhysXPhysics._pxPhysics.createRigidStatic(this._transform(position, rotation));\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 /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, material: PhysXPhysicsMaterial) {\n super();\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 /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n }\n}\n","import { PhysXPhysics } from \"../PhysXPhysics\";\nimport { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { Vector3 } from \"@galacean/engine\";\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 /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Size of SphereCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, material: PhysXPhysicsMaterial) {\n super();\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 setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\n this._pxGeometry.radius = this._radius * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","/**\n * Static interface implement decorator.\n * https://stackoverflow.com/questions/13955157/how-to-define-static-property-in-typescript-interface\n */\nexport function StaticInterfaceImplement<T>() {\n return <U extends T>(constructor: U) => {\n constructor;\n };\n}\n","import {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\nimport { PhysXFixedJoint } from \"./joint/PhysXFixedJoint\";\nimport { PhysXHingeJoint } from \"./joint/PhysXHingeJoint\";\nimport { PhysXSpringJoint } from \"./joint/PhysXSpringJoint\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXDynamicCollider } from \"./PhysXDynamicCollider\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXPhysicsMaterial } from \"./PhysXPhysicsMaterial\";\nimport { PhysXStaticCollider } from \"./PhysXStaticCollider\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXPlaneColliderShape } from \"./shape/PhysXPlaneColliderShape\";\nimport { PhysXSphereColliderShape } from \"./shape/PhysXSphereColliderShape\";\nimport { StaticInterfaceImplement } from \"./StaticInterfaceImplement\";\n\n/**\n * PhysX object creation.\n */\n@StaticInterfaceImplement<IPhysics>()\nexport class PhysXPhysics {\n /** @internal PhysX wasm object */\n static _physX: any;\n /** @internal PhysX Foundation SDK singleton class */\n static _pxFoundation: any;\n /** @internal Physx physics object */\n static _pxPhysics: any;\n\n /**\n * Initialize PhysXPhysics.\n * @param runtimeMode - Runtime mode\n * @returns Promise object\n */\n public static initialize(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto): Promise<void> {\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 =\n \"https://gw.alipayobjects.com/os/lib/oasis-engine/physics-physx/0.9.0-beta.56/libs/physx.release.js.js\";\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src =\n \"https://gw.alipayobjects.com/os/lib/oasis-engine/physics-physx/0.9.0-beta.56/libs/physx.release.js\";\n }\n });\n\n return new Promise((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX) => {\n PhysXPhysics._init(PHYSX);\n console.log(\"PhysX loaded.\");\n resolve();\n }, reject),\n reject\n )\n .catch(reject);\n });\n }\n\n /**\n * Destroy PhysXPhysics.\n */\n public static destroy(): void {\n this._pxFoundation.release();\n this._pxPhysics.release();\n this._physX = null;\n this._pxFoundation = null;\n this._pxPhysics = null;\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n static createPhysicsManager(\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 ): IPhysicsManager {\n return new PhysXPhysicsManager(\n onContactBegin,\n onContactEnd,\n onContactStay,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerStay\n );\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n static createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new PhysXStaticCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n static createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new PhysXDynamicCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n static createCharacterController(): ICharacterController {\n return new PhysXCharacterController();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsMaterial }\n */\n static createPhysicsMaterial(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ): IPhysicsMaterial {\n return new PhysXPhysicsMaterial(staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n static createBoxColliderShape(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial): IBoxColliderShape {\n return new PhysXBoxColliderShape(uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n static createSphereColliderShape(\n uniqueID: number,\n radius: number,\n material: PhysXPhysicsMaterial\n ): ISphereColliderShape {\n return new PhysXSphereColliderShape(uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n static createPlaneColliderShape(uniqueID: number, material: PhysXPhysicsMaterial): IPlaneColliderShape {\n return new PhysXPlaneColliderShape(uniqueID, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n static createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ): ICapsuleColliderShape {\n return new PhysXCapsuleColliderShape(uniqueID, radius, height, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n static createFixedJoint(collider: PhysXCollider): IFixedJoint {\n return new PhysXFixedJoint(collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n static createHingeJoint(collider: PhysXCollider): IHingeJoint {\n return new PhysXHingeJoint(collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n static createSpringJoint(collider: PhysXCollider): ISpringJoint {\n return new PhysXSpringJoint(collider);\n }\n\n private static _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 PhysXPhysics._physX = physX;\n PhysXPhysics._pxFoundation = pxFoundation;\n PhysXPhysics._pxPhysics = pxPhysics;\n PhysXPhysicsManager._init();\n }\n}\n"],"names":["PhysXRuntimeMode","Auto","WebAssembly","JavaScript","PhysXJoint","_connectedAnchor","Vector3","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","value","_pxJoint","setActors","_pxActor","_collider","setConnectedAnchor","copyFrom","_setLocalPose","_defaultQuat","setConnectedMassScale","setInvMassScale0","setConnectedInertiaScale","setInvInertiaScale0","setMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","actor","position","rotation","setLocalPose","_xAxis","_defaultVec","Quaternion","PhysXFixedJoint","collider","PhysXPhysics","_pxPhysics","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_swingOffset","_velocity","createRevoluteJoint","setAxis","xAxis","axisRotationQuaternion","set","normalize","angle","Math","acos","dot","cross","rotationAxisAngle","setSwingOffset","getAngle","getVelocity","velocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","flag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","distance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","DisorderedArray","count","length","_elements","Array","add","element","push","delete","index","indexOf","deleteByIndex","get","elements","end","lastIndex","garbageCollection","ShapeFlag","SIMULATION_SHAPE","SCENE_QUERY_SHAPE","TRIGGER_SHAPE","PhysXColliderShape","_controllers","_scale","_position","_rotation","_axis","_physxRotation","_shapeFlags","_pxMaterials","setRotation","rotationYawPitchRoll","x","y","z","multiply","setPosition","setContactOffset","offset","_pxShape","controllers","i","n","_pxController","setMaterial","_pxMaterial","setMaterials","setIsTrigger","_modifyFlag","_setShapeFlags","destroy","release","flags","setFlags","_physX","PxShapeFlags","transform","translation","_initialize","material","id","_id","createShape","_pxGeometry","setQueryFilterData","PxFilterData","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","PxBoxGeometry","setSize","_tempHalfExtents","halfExtents","setGeometry","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","setWorldScale","scale","PhysXCapsuleColliderShape","radius","height","_upAxis","Y","_radius","_halfHeight","PxCapsuleGeometry","setRadius","X","max","Z","setHeight","halfHeight","setUpAxis","upAxis","axis","physxRotation","ColliderShapeUpAxis","PhysXCharacterController","move","disp","minDist","elapsedTime","setWorldPosition","getWorldPosition","getPosition","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","addShape","shape","_pxManager","_createPXController","_shape","removeShape","_destroyPXController","pxManager","desc","_instanceof","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_getControllerManager","createController","PhysXCollider","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","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","_tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","wakeUp","PhysXPhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_pxControllerManager","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","triggerCallback","onContactBegin","obj1","obj2","index1","getQueryFilterData","word0","index2","onContactEnd","onContactPersist","onTriggerBegin","event","_getTrigger","state","Enter","onTriggerEnd","subMap","undefined","Exit","PHYSXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","shapeID","currentEvents","addCollider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","_fireEvent","raycast","ray","onRaycast","hit","pxHitResult","_pxRaycastHit","min","raycastCallback","preFilter","filterData","postFilter","result","raycastSingle","origin","direction","_pxFilterData","PxQueryFilterCallback","_tempPosition","normal","_tempNormal","pxNormal","pxPosition","getShape","pxControllerManager","createControllerManager","simulate","block","fetchResults","pop","TriggerEvent","Stay","_init","PxRaycastHit","PxQueryFilterData","PxQueryFlags","QueryFlag","DYNAMIC","PRE_FILTER","STATIC","POST_FILTER","ANY_HIT","NO_BLOCK","TriggerEventState","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","CombineMode","Average","Minimum","Multiply","Maximum","PhysXStaticCollider","createRigidStatic","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","StaticInterfaceImplement","constructor","initialize","runtimeMode","scriptPromise","Promise","resolve","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","instantiate","module","Module","Uint8Array","of","Instance","e","src","then","window","PHYSX","console","log","catch","_pxFoundation","createPhysicsManager","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createHingeJoint","createSpringJoint","physX","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","pxPhysics","PxCreatePhysics","PxTolerancesScale","PxInitExtensions"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.1/node_modules/@swc/helpers/esm/_instanceof.js","../../../node_modules/.pnpm/tslib@2.4.1/node_modules/tslib/tslib.es6.js","../src/enum/PhysXRuntimeMode.ts","../../../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/joint/PhysXJoint.ts","../src/joint/PhysXFixedJoint.ts","../src/joint/PhysXHingeJoint.ts","../src/joint/PhysXSpringJoint.ts","../src/DisorderedArray.ts","../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/PhysXStaticCollider.ts","../src/shape/PhysXPlaneColliderShape.ts","../src/shape/PhysXSphereColliderShape.ts","../src/StaticInterfaceImplement.ts","../src/PhysXPhysics.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","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\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","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 { IJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 /**\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 { PhysXJoint } from \"./PhysXJoint\";\nimport { IFixedJoint } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\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(collider: PhysXCollider) {\n super();\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 { PhysXCollider } from \"../PhysXCollider\";\nimport { PhysXJoint } from \"./PhysXJoint\";\nimport { IHingeJoint } from \"@galacean/engine-design\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 private _velocity = new Vector3();\n\n constructor(collider: PhysXCollider) {\n super();\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<Vector3> {\n const velocity = this._velocity;\n velocity.copyFrom(this._pxJoint.getVelocity());\n return velocity;\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): void {\n this._pxJoint.setDriveVelocity(velocity);\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(collider: PhysXCollider) {\n super();\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","/**\n * High-performance unordered array, delete uses exchange method to improve performance, internal capacity only increases.\n */\nexport class DisorderedArray<T> {\n _elements: T[];\n\n length: number = 0;\n\n constructor(count: number = 0) {\n this._elements = new Array<T>(count);\n }\n\n add(element: T): void {\n if (this.length === this._elements.length) this._elements.push(element);\n else this._elements[this.length] = element;\n this.length++;\n }\n\n delete(element: T): void {\n //TODO: It can be optimized for custom binary search and other algorithms, currently this._elements>=this.length wastes performance.\n const index = this._elements.indexOf(element);\n this.deleteByIndex(index);\n }\n\n get(index: number): T {\n if (index >= this.length) {\n throw \"Index is out of range.\";\n }\n return this._elements[index];\n }\n\n /**\n *\n * @param index\n * @returns The replaced item is used to reset its index.\n */\n deleteByIndex(index: number): T {\n var elements: T[] = this._elements;\n let end: T = null;\n const lastIndex = this.length - 1;\n if (index !== lastIndex) {\n end = elements[lastIndex];\n elements[index] = end;\n }\n this.length--;\n return end;\n }\n\n garbageCollection(): void {\n this._elements.length = this.length;\n }\n}\n","import { IColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { DisorderedArray } from \"../DisorderedArray\";\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 _scale: 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 _pxMaterials: any[] = new Array(1);\n /** @internal */\n _pxShape: any;\n /** @internal */\n _pxGeometry: any;\n /** @internal */\n _id: number;\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 this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n abstract setWorldScale(scale: Vector3): void;\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._pxMaterials[0] = value._pxMaterial;\n this._pxShape.setMaterials(this._pxMaterials);\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 PhysXPhysics._physX.PxShapeFlags(this._shapeFlags));\n }\n\n protected _setLocalPose(): void {\n const transform = PhysXColliderShape.transform;\n Vector3.multiply(this._position, this._scale, 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._pxMaterials[0] = material._pxMaterial;\n this._pxShape = PhysXPhysics._pxPhysics.createShape(\n this._pxGeometry,\n material._pxMaterial,\n true,\n new PhysXPhysics._physX.PxShapeFlags(this._shapeFlags)\n );\n this._pxShape.setQueryFilterData(new PhysXPhysics._physX.PxFilterData(id, 0, 0, 0));\n }\n\n private _modifyFlag(flag: ShapeFlag, value: boolean): void {\n this._shapeFlags = value ? this._shapeFlags | flag : this._shapeFlags & ~flag;\n }\n}\n","import { IBoxColliderShape } from \"@galacean/engine-design\";\nimport { Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Box collider shape in PhysX.\n */\nexport class PhysXBoxColliderShape extends PhysXColliderShape implements IBoxColliderShape {\n private static _tempHalfExtents = new Vector3();\n /** @internal */\n _halfSize: Vector3 = new Vector3();\n\n /**\n * Init Box Shape and alloc PhysX objects.\n * @param uniqueID - UniqueID mark Shape.\n * @param size - Size of Shape.\n * @param material - Material of PhysXCollider.\n */\n constructor(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial) {\n super();\n\n this._halfSize.set(size.x * 0.5, size.y * 0.5, size.z * 0.5);\n\n this._pxGeometry = new PhysXPhysics._physX.PxBoxGeometry(\n this._halfSize.x * this._scale.x,\n this._halfSize.y * this._scale.y,\n this._halfSize.z * this._scale.z\n );\n this._initialize(material, uniqueID);\n this._setLocalPose();\n }\n\n /**\n * {@inheritDoc IBoxColliderShape.setSize }\n */\n setSize(value: Vector3): void {\n this._halfSize.set(value.x * 0.5, value.y * 0.5, value.z * 0.5);\n Vector3.multiply(this._halfSize, this._scale, PhysXBoxColliderShape._tempHalfExtents);\n this._pxGeometry.halfExtents = PhysXBoxColliderShape._tempHalfExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n const pxController = controllers.get(i)._pxController;\n pxController.setHalfHeight(this._halfSize.x);\n pxController.setHalfSideExtent(this._halfSize.y);\n pxController.setHalfForwardExtent(this._halfSize.z);\n }\n }\n\n /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n Vector3.multiply(this._halfSize, this._scale, PhysXBoxColliderShape._tempHalfExtents);\n this._pxGeometry.halfExtents = PhysXBoxColliderShape._tempHalfExtents;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","import { ICapsuleColliderShape } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXPhysics } from \"../PhysXPhysics\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\n\n/**\n * Capsule collider shape in PhysX.\n */\nexport class PhysXCapsuleColliderShape extends PhysXColliderShape implements ICapsuleColliderShape {\n /** @internal */\n _radius: number;\n /** @internal */\n _halfHeight: number;\n private _upAxis: ColliderShapeUpAxis = ColliderShapeUpAxis.Y;\n\n /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Radius of CapsuleCollider\n * @param height - Height of CapsuleCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, height: number, material: PhysXPhysicsMaterial) {\n super();\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 switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.y, this._scale.z);\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.x, this._scale.z);\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(this._scale.x, this._scale.y);\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController.setRadius(value);\n }\n }\n\n /**\n * {@inheritDoc ICapsuleColliderShape.setHeight }\n */\n setHeight(value: number): void {\n this._halfHeight = value * 0.5;\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.halfHeight = this._halfHeight * this._scale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\n\n const controllers = this._controllers;\n for (let i = 0, n = controllers.length; i < n; i++) {\n controllers.get(i)._pxController.setHeight(value);\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 setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n switch (this._upAxis) {\n case ColliderShapeUpAxis.X:\n this._pxGeometry.radius = this._radius * Math.max(scale.y, scale.z);\n this._pxGeometry.halfHeight = this._halfHeight * scale.x;\n break;\n case ColliderShapeUpAxis.Y:\n this._pxGeometry.radius = this._radius * Math.max(scale.x, scale.z);\n this._pxGeometry.halfHeight = this._halfHeight * scale.y;\n break;\n case ColliderShapeUpAxis.Z:\n this._pxGeometry.radius = this._radius * Math.max(scale.x, scale.y);\n this._pxGeometry.halfHeight = this._halfHeight * scale.z;\n break;\n }\n this._pxShape.setGeometry(this._pxGeometry);\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 { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\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 /** @internal */\n _id: number;\n /** @internal */\n _pxController: any;\n /** @internal */\n _pxManager: PhysXPhysicsManager;\n /** @internal */\n _shape: PhysXColliderShape;\n /**\n * {@inheritDoc ICharacterController.move }\n */\n move(disp: Vector3, minDist: number, elapsedTime: number): number {\n return this._pxController.move(disp, minDist, elapsedTime);\n }\n\n /**\n * {@inheritDoc ICharacterController.setWorldPosition }\n */\n setWorldPosition(position: Vector3): void {\n this._pxController && this._pxController.setPosition(position);\n }\n\n /**\n * {@inheritDoc ICharacterController.getWorldPosition }\n */\n getWorldPosition(position: Vector3): void {\n position.copyFrom(this._pxController.getPosition());\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 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: PhysXPhysicsManager, shape: PhysXColliderShape): void {\n let desc: any;\n if (shape instanceof PhysXBoxColliderShape) {\n desc = new 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 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._pxMaterials[0]);\n\n this._pxController = pxManager._getControllerManager().createController(desc);\n this._pxController.setQueryFilterData(new PhysXPhysics._physX.PxFilterData(shape._id, 0, 0, 0));\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","import { ICollider } from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\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 /**\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(position: Vector3, rotation: Quaternion) {\n super();\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(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, true);\n break;\n case CollisionDetectionMode.ContinuousDynamic:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, true);\n break;\n case CollisionDetectionMode.ContinuousSpeculative:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_SPECULATIVE_CCD, true);\n break;\n case CollisionDetectionMode.Discrete:\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD, false);\n this._pxActor.setRigidBodyFlag(PhysXPhysics._physX.PxRigidBodyFlag.eENABLE_CCD_FRICTION, false);\n this._pxActor.setRigidBodyFlag(PhysXPhysics._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(PhysXPhysics._physX.PxRigidBodyFlag.eKINEMATIC, true);\n } else {\n this._pxActor.setRigidBodyFlag(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 { Ray, Vector3 } from \"@galacean/engine\";\nimport { DisorderedArray } from \"./DisorderedArray\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXPhysics } from \"./PhysXPhysics\";\nimport { PhysXColliderShape } from \"./shape/PhysXColliderShape\";\n\n/**\n * A manager is a collection of colliders and constraints which can interact.\n */\nexport class PhysXPhysicsManager implements IPhysicsManager {\n /** @internal */\n _pxControllerManager: any = null;\n\n private static _tempPosition: Vector3 = new Vector3();\n private static _tempNormal: Vector3 = new Vector3();\n private static _pxRaycastHit: any;\n private static _pxFilterData: any;\n\n static _init() {\n PhysXPhysicsManager._pxRaycastHit = new PhysXPhysics._physX.PxRaycastHit();\n PhysXPhysicsManager._pxFilterData = new PhysXPhysics._physX.PxQueryFilterData();\n PhysXPhysicsManager._pxFilterData.flags = new PhysXPhysics._physX.PxQueryFlags(\n QueryFlag.STATIC | QueryFlag.DYNAMIC | QueryFlag.PRE_FILTER\n );\n }\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 private _eventMap: Record<number, Record<number, TriggerEvent>> = {};\n private _eventPool: TriggerEvent[] = [];\n\n constructor(\n onContactEnter?: (obj1: number, obj2: number) => void,\n onContactExit?: (obj1: number, obj2: number) => void,\n onContactStay?: (obj1: number, obj2: number) => void,\n onTriggerEnter?: (obj1: number, obj2: number) => void,\n onTriggerExit?: (obj1: number, obj2: number) => void,\n onTriggerStay?: (obj1: number, obj2: number) => void\n ) {\n this._onContactEnter = onContactEnter;\n this._onContactExit = onContactExit;\n this._onContactStay = onContactStay;\n this._onTriggerEnter = onTriggerEnter;\n this._onTriggerExit = onTriggerExit;\n this._onTriggerStay = onTriggerStay;\n\n const triggerCallback = {\n onContactBegin: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactEnter(index1, index2);\n },\n onContactEnd: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactExit(index1, index2);\n },\n onContactPersist: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n this._onContactStay(index1, index2);\n },\n onTriggerBegin: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\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: (obj1, obj2) => {\n const index1 = obj1.getQueryFilterData().word0;\n const index2 = obj2.getQueryFilterData().word0;\n let event: TriggerEvent;\n if (index1 < index2) {\n const subMap = this._eventMap[index1];\n event = subMap[index2];\n subMap[index2] = undefined;\n } else {\n const subMap = this._eventMap[index2];\n event = subMap[index1];\n subMap[index1] = undefined;\n }\n event.state = TriggerEventState.Exit;\n }\n };\n\n const PHYSXSimulationCallbackInstance = PhysXPhysics._physX.PxSimulationEventCallback.implement(triggerCallback);\n const sceneDesc = PhysXPhysics._physX.getDefaultSceneDesc(\n PhysXPhysics._pxPhysics.getTolerancesScale(),\n 0,\n PHYSXSimulationCallbackInstance\n );\n this._pxScene = PhysXPhysics._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._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: shapeID } = colliderShape;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.index1 == shapeID || event.index2 == shapeID) {\n currentEvents.deleteByIndex(i);\n eventPool.push(event);\n }\n }\n delete this._eventMap[shapeID];\n }\n\n /**\n * {@inheritDoc IPhysicsManager.addCollider }\n */\n addCollider(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 } = PhysXPhysicsManager;\n distance = Math.min(distance, 3.4e38); // float32 max value limit in physx raycast.\n\n const raycastCallback = {\n preFilter: (filterData, shape, actor) => {\n const index = shape.getQueryFilterData().word0;\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 PhysXPhysicsManager._pxFilterData,\n PhysXPhysics._physX.PxQueryFilterCallback.implement(raycastCallback)\n );\n\n if (result && hit != undefined) {\n const { _tempPosition: position, _tempNormal: normal } = PhysXPhysicsManager;\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().getQueryFilterData().word0, 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._eventMap[index1][index2] = event;\n return event;\n }\n\n private _fireEvent(): void {\n const { _eventPool: eventPool, _currentEvents: currentEvents } = this;\n for (let i = currentEvents.length - 1; i >= 0; i--) {\n const event = currentEvents.get(i);\n if (event.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 this._onTriggerExit(event.index1, event.index2);\n currentEvents.deleteByIndex(i);\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 */\nclass 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 { PhysXPhysics } from \"./PhysXPhysics\";\nimport { IPhysicsMaterial } from \"@galacean/engine-design\";\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 constructor(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: CombineMode,\n bounceCombine: CombineMode\n ) {\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 { PhysXPhysics } from \"./PhysXPhysics\";\nimport { IStaticCollider } from \"@galacean/engine-design\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\n\n/**\n * A static collider component that will not move.\n * @remarks Mostly used for object which always stays at the same place and never moves around.\n */\nexport class PhysXStaticCollider extends PhysXCollider implements IStaticCollider {\n /**\n * Initialize PhysX static actor.\n * @param position - The global position\n * @param rotation - The global rotation\n */\n constructor(position: Vector3, rotation: Quaternion) {\n super();\n this._pxActor = PhysXPhysics._pxPhysics.createRigidStatic(this._transform(position, rotation));\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 /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, material: PhysXPhysicsMaterial) {\n super();\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 /**\n * {@inheritDoc IColliderShape.setWorldScale }\n */\n setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n }\n}\n","import { PhysXPhysics } from \"../PhysXPhysics\";\nimport { ISphereColliderShape } from \"@galacean/engine-design\";\nimport { PhysXColliderShape } from \"./PhysXColliderShape\";\nimport { PhysXPhysicsMaterial } from \"../PhysXPhysicsMaterial\";\nimport { Vector3 } from \"@galacean/engine\";\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 /**\n * Init PhysXCollider and alloc PhysX objects.\n * @param uniqueID - UniqueID mark collider\n * @param radius - Size of SphereCollider\n * @param material - Material of PhysXCollider\n */\n constructor(uniqueID: number, radius: number, material: PhysXPhysicsMaterial) {\n super();\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 setWorldScale(scale: Vector3): void {\n this._scale.copyFrom(scale);\n this._setLocalPose();\n\n this._maxScale = Math.max(scale.x, Math.max(scale.x, scale.y));\n this._pxGeometry.radius = this._radius * this._maxScale;\n this._pxShape.setGeometry(this._pxGeometry);\n }\n}\n","/**\n * Static interface implement decorator.\n * https://stackoverflow.com/questions/13955157/how-to-define-static-property-in-typescript-interface\n */\nexport function StaticInterfaceImplement<T>() {\n return <U extends T>(constructor: U) => {\n constructor;\n };\n}\n","import {\n IBoxColliderShape,\n ICapsuleColliderShape,\n ICharacterController,\n IDynamicCollider,\n IFixedJoint,\n IHingeJoint,\n IPhysics,\n IPhysicsManager,\n IPhysicsMaterial,\n IPlaneColliderShape,\n ISphereColliderShape,\n ISpringJoint,\n IStaticCollider\n} from \"@galacean/engine-design\";\nimport { Quaternion, Vector3 } from \"@galacean/engine\";\nimport { PhysXRuntimeMode } from \"./enum/PhysXRuntimeMode\";\nimport { PhysXFixedJoint } from \"./joint/PhysXFixedJoint\";\nimport { PhysXHingeJoint } from \"./joint/PhysXHingeJoint\";\nimport { PhysXSpringJoint } from \"./joint/PhysXSpringJoint\";\nimport { PhysXCharacterController } from \"./PhysXCharacterController\";\nimport { PhysXCollider } from \"./PhysXCollider\";\nimport { PhysXDynamicCollider } from \"./PhysXDynamicCollider\";\nimport { PhysXPhysicsManager } from \"./PhysXPhysicsManager\";\nimport { PhysXPhysicsMaterial } from \"./PhysXPhysicsMaterial\";\nimport { PhysXStaticCollider } from \"./PhysXStaticCollider\";\nimport { PhysXBoxColliderShape } from \"./shape/PhysXBoxColliderShape\";\nimport { PhysXCapsuleColliderShape } from \"./shape/PhysXCapsuleColliderShape\";\nimport { PhysXPlaneColliderShape } from \"./shape/PhysXPlaneColliderShape\";\nimport { PhysXSphereColliderShape } from \"./shape/PhysXSphereColliderShape\";\nimport { StaticInterfaceImplement } from \"./StaticInterfaceImplement\";\n\n/**\n * PhysX object creation.\n */\n@StaticInterfaceImplement<IPhysics>()\nexport class PhysXPhysics {\n /** @internal PhysX wasm object */\n static _physX: any;\n /** @internal PhysX Foundation SDK singleton class */\n static _pxFoundation: any;\n /** @internal Physx physics object */\n static _pxPhysics: any;\n\n /**\n * Initialize PhysXPhysics.\n * @param runtimeMode - Runtime mode\n * @returns Promise object\n */\n public static initialize(runtimeMode: PhysXRuntimeMode = PhysXRuntimeMode.Auto): Promise<void> {\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 =\n \"https://gw.alipayobjects.com/os/lib/oasis-engine/physics-physx/0.9.0-beta.56/libs/physx.release.js.js\";\n } else if (runtimeMode == PhysXRuntimeMode.WebAssembly) {\n script.src =\n \"https://gw.alipayobjects.com/os/lib/oasis-engine/physics-physx/0.9.0-beta.56/libs/physx.release.js\";\n }\n });\n\n return new Promise((resolve, reject) => {\n scriptPromise\n .then(\n () =>\n (<any>window).PHYSX().then((PHYSX) => {\n PhysXPhysics._init(PHYSX);\n console.log(\"PhysX loaded.\");\n resolve();\n }, reject),\n reject\n )\n .catch(reject);\n });\n }\n\n /**\n * Destroy PhysXPhysics.\n */\n public static destroy(): void {\n this._pxFoundation.release();\n this._pxPhysics.release();\n this._physX = null;\n this._pxFoundation = null;\n this._pxPhysics = null;\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsManager }\n */\n static createPhysicsManager(\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 ): IPhysicsManager {\n return new PhysXPhysicsManager(\n onContactBegin,\n onContactEnd,\n onContactStay,\n onTriggerBegin,\n onTriggerEnd,\n onTriggerStay\n );\n }\n\n /**\n * {@inheritDoc IPhysics.createStaticCollider }\n */\n static createStaticCollider(position: Vector3, rotation: Quaternion): IStaticCollider {\n return new PhysXStaticCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createDynamicCollider }\n */\n static createDynamicCollider(position: Vector3, rotation: Quaternion): IDynamicCollider {\n return new PhysXDynamicCollider(position, rotation);\n }\n\n /**\n * {@inheritDoc IPhysics.createCharacterController }\n */\n static createCharacterController(): ICharacterController {\n return new PhysXCharacterController();\n }\n\n /**\n * {@inheritDoc IPhysics.createPhysicsMaterial }\n */\n static createPhysicsMaterial(\n staticFriction: number,\n dynamicFriction: number,\n bounciness: number,\n frictionCombine: number,\n bounceCombine: number\n ): IPhysicsMaterial {\n return new PhysXPhysicsMaterial(staticFriction, dynamicFriction, bounciness, frictionCombine, bounceCombine);\n }\n\n /**\n * {@inheritDoc IPhysics.createBoxColliderShape }\n */\n static createBoxColliderShape(uniqueID: number, size: Vector3, material: PhysXPhysicsMaterial): IBoxColliderShape {\n return new PhysXBoxColliderShape(uniqueID, size, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createSphereColliderShape }\n */\n static createSphereColliderShape(\n uniqueID: number,\n radius: number,\n material: PhysXPhysicsMaterial\n ): ISphereColliderShape {\n return new PhysXSphereColliderShape(uniqueID, radius, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createPlaneColliderShape }\n */\n static createPlaneColliderShape(uniqueID: number, material: PhysXPhysicsMaterial): IPlaneColliderShape {\n return new PhysXPlaneColliderShape(uniqueID, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createCapsuleColliderShape }\n */\n static createCapsuleColliderShape(\n uniqueID: number,\n radius: number,\n height: number,\n material: PhysXPhysicsMaterial\n ): ICapsuleColliderShape {\n return new PhysXCapsuleColliderShape(uniqueID, radius, height, material);\n }\n\n /**\n * {@inheritDoc IPhysics.createFixedJoint }\n */\n static createFixedJoint(collider: PhysXCollider): IFixedJoint {\n return new PhysXFixedJoint(collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createHingeJoint }\n */\n static createHingeJoint(collider: PhysXCollider): IHingeJoint {\n return new PhysXHingeJoint(collider);\n }\n\n /**\n * {@inheritDoc IPhysics.createSpringJoint }\n */\n static createSpringJoint(collider: PhysXCollider): ISpringJoint {\n return new PhysXSpringJoint(collider);\n }\n\n private static _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 PhysXPhysics._physX = physX;\n PhysXPhysics._pxFoundation = pxFoundation;\n PhysXPhysics._pxPhysics = pxPhysics;\n PhysXPhysicsManager._init();\n }\n}\n"],"names":["PhysXRuntimeMode","Auto","WebAssembly","JavaScript","PhysXJoint","_connectedAnchor","Vector3","_breakForce","Number","MAX_VALUE","_breakTorque","setConnectedCollider","value","_pxJoint","setActors","_pxActor","_collider","setConnectedAnchor","copyFrom","_setLocalPose","_defaultQuat","setConnectedMassScale","setInvMassScale0","setConnectedInertiaScale","setInvInertiaScale0","setMassScale","setInvMassScale1","setInertiaScale","setInvInertiaScale1","setBreakForce","setBreakTorque","actor","position","rotation","setLocalPose","_xAxis","_defaultVec","Quaternion","PhysXFixedJoint","collider","PhysXPhysics","_pxPhysics","createFixedJoint","PhysXHingeJoint","_axisRotationQuaternion","_swingOffset","_velocity","createRevoluteJoint","setAxis","xAxis","axisRotationQuaternion","set","normalize","angle","Math","acos","dot","cross","rotationAxisAngle","setSwingOffset","getAngle","getVelocity","velocity","setHardLimit","lowerLimit","upperLimit","contactDist","setSoftLimit","stiffness","damping","setDriveVelocity","setDriveForceLimit","limit","setDriveGearRatio","ratio","setHingeJointFlag","flag","setRevoluteJointFlag","PhysXSpringJoint","createDistanceJoint","setDistanceJointFlag","setMinDistance","distance","setMaxDistance","setTolerance","tolerance","setStiffness","setDamping","DisorderedArray","count","length","_elements","Array","add","element","push","delete","index","indexOf","deleteByIndex","get","elements","end","lastIndex","garbageCollection","ShapeFlag","SIMULATION_SHAPE","SCENE_QUERY_SHAPE","TRIGGER_SHAPE","PhysXColliderShape","_controllers","_scale","_position","_rotation","_axis","_physxRotation","_shapeFlags","_pxMaterials","setRotation","rotationYawPitchRoll","x","y","z","multiply","setPosition","setContactOffset","offset","_pxShape","controllers","i","n","_pxController","setMaterial","_pxMaterial","setMaterials","setIsTrigger","_modifyFlag","_setShapeFlags","destroy","release","flags","setFlags","_physX","PxShapeFlags","transform","translation","_initialize","material","id","_id","createShape","_pxGeometry","setQueryFilterData","PxFilterData","halfSqrt","PhysXBoxColliderShape","uniqueID","size","_halfSize","PxBoxGeometry","setSize","_tempHalfExtents","halfExtents","setGeometry","pxController","setHalfHeight","setHalfSideExtent","setHalfForwardExtent","setWorldScale","scale","PhysXCapsuleColliderShape","radius","height","_upAxis","Y","_radius","_halfHeight","PxCapsuleGeometry","setRadius","X","max","Z","setHeight","halfHeight","setUpAxis","upAxis","axis","physxRotation","ColliderShapeUpAxis","PhysXCharacterController","move","disp","minDist","elapsedTime","setWorldPosition","getWorldPosition","getPosition","setStepOffset","setNonWalkableMode","setUpDirection","up","setSlopeLimit","slopeLimit","addShape","shape","_pxManager","_createPXController","_shape","removeShape","_destroyPXController","pxManager","desc","PxBoxControllerDesc","halfSideExtent","halfForwardExtent","PxCapsuleControllerDesc","climbingMode","_getControllerManager","createController","PhysXCollider","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","setIsKinematic","eKINEMATIC","setConstraints","setRigidDynamicLockFlags","addForce","force","addTorque","torque","positionOrRotation","setKinematicTarget","tempTranslation","_tempTranslation","tempRotation","_tempRotation","sleep","putToSleep","wakeUp","PhysXPhysicsManager","onContactEnter","onContactExit","onContactStay","onTriggerEnter","onTriggerExit","onTriggerStay","_pxControllerManager","_currentEvents","_eventMap","_eventPool","_onContactEnter","_onContactExit","_onContactStay","_onTriggerEnter","_onTriggerExit","_onTriggerStay","triggerCallback","onContactBegin","obj1","obj2","index1","getQueryFilterData","word0","index2","onContactEnd","onContactPersist","onTriggerBegin","event","_getTrigger","state","Enter","onTriggerEnd","subMap","undefined","Exit","PHYSXSimulationCallbackInstance","PxSimulationEventCallback","implement","sceneDesc","getDefaultSceneDesc","getTolerancesScale","_pxScene","createScene","setGravity","addColliderShape","colliderShape","removeColliderShape","eventPool","currentEvents","shapeID","addCollider","addActor","removeCollider","removeActor","addCharacterController","characterController","lastPXManager","removeCharacterController","update","_simulate","_fetchResults","_fireEvent","raycast","ray","onRaycast","hit","pxHitResult","_pxRaycastHit","min","raycastCallback","preFilter","filterData","postFilter","result","raycastSingle","origin","direction","_pxFilterData","PxQueryFilterCallback","_tempPosition","_tempNormal","normal","pxNormal","pxPosition","getShape","pxControllerManager","createControllerManager","simulate","block","fetchResults","pop","TriggerEvent","Stay","_init","PxRaycastHit","PxQueryFilterData","PxQueryFlags","QueryFlag","STATIC","DYNAMIC","PRE_FILTER","POST_FILTER","ANY_HIT","NO_BLOCK","TriggerEventState","PhysXPhysicsMaterial","staticFriction","dynamicFriction","bounciness","frictionCombine","bounceCombine","pxMaterial","createMaterial","setFrictionCombineMode","setRestitutionCombineMode","setBounciness","setRestitution","setDynamicFriction","setStaticFriction","setBounceCombine","setFrictionCombine","CombineMode","Average","Minimum","Multiply","Maximum","PhysXStaticCollider","createRigidStatic","PhysXPlaneColliderShape","PxPlaneGeometry","PhysXSphereColliderShape","_maxScale","PxSphereGeometry","StaticInterfaceImplement","constructor","initialize","runtimeMode","scriptPromise","Promise","resolve","reject","script","document","createElement","body","appendChild","async","onload","onerror","supported","instantiate","module","Module","Uint8Array","of","Instance","e","src","then","window","PHYSX","console","log","catch","_pxFoundation","createPhysicsManager","createStaticCollider","createDynamicCollider","createCharacterController","createPhysicsMaterial","createBoxColliderShape","createSphereColliderShape","createPlaneColliderShape","createCapsuleColliderShape","createHingeJoint","createSpringJoint","physX","version","PX_PHYSICS_VERSION","defaultErrorCallback","PxDefaultErrorCallback","allocator","PxDefaultAllocator","pxFoundation","PxCreateFoundation","pxPhysics","PxCreatePhysics","PxTolerancesScale","PxInitExtensions"],"mappings":"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"}