angular-three-cannon 1.5.2 → 2.0.0-beta.2
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/README.md +4 -12
- package/debug/{lib/debug.d.ts → debug.d.ts} +10 -10
- package/debug/index.d.ts +1 -1
- package/esm2022/angular-three-cannon.mjs +5 -0
- package/esm2022/debug/angular-three-cannon-debug.mjs +5 -0
- package/esm2022/debug/debug.mjs +99 -0
- package/esm2022/debug/index.mjs +2 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/physics.mjs +297 -0
- package/esm2022/services/angular-three-cannon-services.mjs +5 -0
- package/esm2022/services/body.mjs +289 -0
- package/esm2022/services/constraint.mjs +59 -0
- package/esm2022/services/contact-material.mjs +20 -0
- package/esm2022/services/index.mjs +7 -0
- package/esm2022/services/ray.mjs +30 -0
- package/esm2022/services/raycast-vehicle.mjs +72 -0
- package/esm2022/services/spring.mjs +34 -0
- package/fesm2022/angular-three-cannon-debug.mjs +105 -0
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-services.mjs +494 -0
- package/fesm2022/angular-three-cannon-services.mjs.map +1 -0
- package/fesm2022/angular-three-cannon.mjs +303 -0
- package/fesm2022/angular-three-cannon.mjs.map +1 -0
- package/index.d.ts +1 -3
- package/package.json +19 -29
- package/physics.d.ts +97 -0
- package/plugin/package.json +2 -2
- package/plugin/src/generators/init/compat.js +1 -1
- package/plugin/src/generators/init/compat.js.map +1 -1
- package/plugin/src/generators/init/init.d.ts +2 -2
- package/plugin/src/generators/init/init.js +16 -20
- package/plugin/src/generators/init/init.js.map +1 -1
- package/plugin/src/index.js.map +1 -1
- package/services/{lib/body.d.ts → body.d.ts} +19 -39
- package/services/constraint.d.ts +31 -0
- package/services/contact-material.d.ts +9 -0
- package/services/index.d.ts +6 -6
- package/services/ray.d.ts +12 -0
- package/services/{lib/raycast-vehicle.d.ts → raycast-vehicle.d.ts} +8 -3
- package/services/{lib/spring.d.ts → spring.d.ts} +8 -3
- package/esm2020/angular-three-cannon.mjs +0 -5
- package/esm2020/debug/angular-three-cannon-debug.mjs +0 -5
- package/esm2020/debug/index.mjs +0 -2
- package/esm2020/debug/lib/debug.mjs +0 -117
- package/esm2020/index.mjs +0 -4
- package/esm2020/lib/physics.mjs +0 -261
- package/esm2020/lib/store.mjs +0 -21
- package/esm2020/lib/utils.mjs +0 -47
- package/esm2020/services/angular-three-cannon-services.mjs +0 -5
- package/esm2020/services/index.mjs +0 -7
- package/esm2020/services/lib/body.mjs +0 -271
- package/esm2020/services/lib/constraint.mjs +0 -69
- package/esm2020/services/lib/contact-material.mjs +0 -18
- package/esm2020/services/lib/ray.mjs +0 -32
- package/esm2020/services/lib/raycast-vehicle.mjs +0 -76
- package/esm2020/services/lib/spring.mjs +0 -37
- package/esm2020/services/lib/utils.mjs +0 -5
- package/fesm2015/angular-three-cannon-debug.mjs +0 -124
- package/fesm2015/angular-three-cannon-debug.mjs.map +0 -1
- package/fesm2015/angular-three-cannon-services.mjs +0 -488
- package/fesm2015/angular-three-cannon-services.mjs.map +0 -1
- package/fesm2015/angular-three-cannon.mjs +0 -333
- package/fesm2015/angular-three-cannon.mjs.map +0 -1
- package/fesm2020/angular-three-cannon-debug.mjs +0 -124
- package/fesm2020/angular-three-cannon-debug.mjs.map +0 -1
- package/fesm2020/angular-three-cannon-services.mjs +0 -489
- package/fesm2020/angular-three-cannon-services.mjs.map +0 -1
- package/fesm2020/angular-three-cannon.mjs +0 -331
- package/fesm2020/angular-three-cannon.mjs.map +0 -1
- package/lib/physics.d.ts +0 -43
- package/lib/store.d.ts +0 -34
- package/lib/utils.d.ts +0 -16
- package/services/lib/constraint.d.ts +0 -25
- package/services/lib/contact-material.d.ts +0 -3
- package/services/lib/ray.d.ts +0 -4
- package/services/lib/utils.d.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-three-cannon-services.mjs","sources":["../../../../libs/cannon/services/src/body.ts","../../../../libs/cannon/services/src/constraint.ts","../../../../libs/cannon/services/src/contact-material.ts","../../../../libs/cannon/services/src/ray.ts","../../../../libs/cannon/services/src/raycast-vehicle.ts","../../../../libs/cannon/services/src/spring.ts","../../../../libs/cannon/services/src/angular-three-cannon-services.ts"],"sourcesContent":["import { ElementRef, Injector, Signal, computed, effect, inject, runInInjectionContext } from '@angular/core';\nimport type {\n AtomicName,\n AtomicProps,\n BodyProps,\n BodyShapeType,\n BoxProps,\n CannonWorkerAPI,\n CompoundBodyProps,\n ConvexPolyhedronArgs,\n ConvexPolyhedronProps,\n CylinderProps,\n HeightfieldProps,\n ParticleProps,\n PlaneProps,\n PropValue,\n Quad,\n SetOpName,\n SphereArgs,\n SphereProps,\n SubscriptionName,\n SubscriptionTarget,\n Subscriptions,\n TrimeshProps,\n Triplet,\n VectorName,\n} from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, NgtInjectedRef, assertInjectionContext, injectNgtRef } from 'angular-three';\nimport { NGTC_PHYSICS_API, NgtcCannonEvents } from 'angular-three-cannon';\nimport { NGTC_DEBUG_API } from 'angular-three-cannon/debug';\nimport * as THREE from 'three';\n\nexport type NgtcAtomicApi<K extends AtomicName> = {\n set: (value: AtomicProps[K]) => void;\n subscribe: (callback: (value: AtomicProps[K]) => void) => () => void;\n};\n\nexport type NgtcQuaternionApi = {\n copy: ({ w, x, y, z }: THREE.Quaternion) => void;\n set: (x: number, y: number, z: number, w: number) => void;\n subscribe: (callback: (value: Quad) => void) => () => void;\n};\n\nexport type NgtcVectorApi = {\n copy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => void;\n set: (x: number, y: number, z: number) => void;\n subscribe: (callback: (value: Triplet) => void) => () => void;\n};\n\nexport type NgtcWorkerApi = {\n [K in AtomicName]: NgtcAtomicApi<K>;\n} & {\n [K in VectorName]: NgtcVectorApi;\n} & {\n applyForce: (force: Triplet, worldPoint: Triplet) => void;\n applyImpulse: (impulse: Triplet, worldPoint: Triplet) => void;\n applyLocalForce: (force: Triplet, localPoint: Triplet) => void;\n applyLocalImpulse: (impulse: Triplet, localPoint: Triplet) => void;\n applyTorque: (torque: Triplet) => void;\n quaternion: NgtcQuaternionApi;\n rotation: NgtcVectorApi;\n scaleOverride: (scale: Triplet) => void;\n sleep: () => void;\n wakeUp: () => void;\n remove: () => void;\n};\n\nexport interface NgtcBodyPublicApi extends NgtcWorkerApi {\n at: (index: number) => NgtcWorkerApi;\n}\n\nexport interface NgtcBodyReturn<TObject extends THREE.Object3D> {\n ref: NgtInjectedRef<TObject>;\n api: Signal<NgtcBodyPublicApi>;\n}\n\nexport type NgtcGetByIndex<T extends BodyProps> = (index: number) => T;\nexport type NgtcArgFn<T> = (args: T) => unknown[];\n\nconst temp = new THREE.Object3D();\n\nfunction capitalize<T extends string>(str: T): Capitalize<T> {\n return (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize<T>;\n}\n\nexport function getUUID(ref: ElementRef<THREE.Object3D>, index?: number): string | null {\n const suffix = index === undefined ? '' : `/${index}`;\n if (typeof ref === 'function') return null;\n return ref && ref.nativeElement && `${ref.nativeElement.uuid}${suffix}`;\n}\n\nconst e = new THREE.Euler();\nconst q = new THREE.Quaternion();\n\nconst quaternionToRotation = (callback: (v: Triplet) => void) => {\n return (v: Quad) => callback(e.setFromQuaternion(q.fromArray(v)).toArray() as Triplet);\n};\n\nlet incrementingId = 0;\n\nexport function subscribe<T extends SubscriptionName>(\n ref: ElementRef<THREE.Object3D>,\n worker: CannonWorkerAPI,\n subscriptions: Subscriptions,\n type: T,\n index?: number,\n target: SubscriptionTarget = 'bodies'\n) {\n return (callback: (value: PropValue<T>) => void) => {\n const id = incrementingId++;\n subscriptions[id] = { [type]: callback };\n const uuid = getUUID(ref, index);\n uuid && worker.subscribe({ props: { id, target, type }, uuid });\n return () => {\n delete subscriptions[id];\n worker.unsubscribe({ props: id });\n };\n };\n}\n\nfunction prepare(object: THREE.Object3D, { position = [0, 0, 0], rotation = [0, 0, 0], userData = {} }: BodyProps) {\n object.userData = userData;\n object.position.set(...position);\n object.rotation.set(...rotation);\n object.updateMatrix();\n}\n\nfunction setupCollision(\n events: NgtcCannonEvents,\n { onCollide, onCollideBegin, onCollideEnd }: Partial<BodyProps>,\n uuid: string\n) {\n events[uuid] = {\n collide: onCollide,\n collideBegin: onCollideBegin,\n collideEnd: onCollideEnd,\n };\n}\n\nfunction makeTriplet(v: THREE.Vector3 | Triplet): Triplet {\n return v instanceof THREE.Vector3 ? [v.x, v.y, v.z] : v;\n}\n\nexport interface NgtcBodyOptions<TObject extends THREE.Object3D> {\n ref?: NgtInjectedRef<TObject>;\n deps?: () => NgtAnyRecord;\n injector?: Injector;\n}\n\nexport function injectPlane<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<PlaneProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Plane', fn, () => [], opts);\n}\n\nexport function injectBox<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<BoxProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n const defaultBoxArgs: Triplet = [1, 1, 1];\n return injectBody('Box', fn, (args = defaultBoxArgs): Triplet => args, opts);\n}\n\nexport function injectCylinder<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<CylinderProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Cylinder', fn, (args = [] as []) => args, opts);\n}\n\nexport function injectHeightfield<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<HeightfieldProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Heightfield', fn, (args) => args, opts);\n}\n\nexport function injectParticle<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<ParticleProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Particle', fn, () => [], opts);\n}\nexport function injectSphere<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<SphereProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody(\n 'Sphere',\n fn,\n (args: SphereArgs = [1]): SphereArgs => {\n if (!Array.isArray(args)) throw new Error('useSphere args must be an array');\n return [args[0]];\n },\n opts\n );\n}\nexport function injectTrimesh<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<TrimeshProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Trimesh', fn, (args) => args, opts);\n}\n\nexport function injectConvexPolyhedron<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<ConvexPolyhedronProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody(\n 'ConvexPolyhedron',\n fn,\n ([vertices, faces, normals, axes, boundingSphereRadius] = []): ConvexPolyhedronArgs<Triplet> => [\n vertices && vertices.map(makeTriplet),\n faces,\n normals && normals.map(makeTriplet),\n axes && axes.map(makeTriplet),\n boundingSphereRadius,\n ],\n opts\n );\n}\nexport function injectCompoundBody<TObject extends THREE.Object3D>(\n fn: NgtcGetByIndex<CompoundBodyProps>,\n opts?: NgtcBodyOptions<TObject>\n) {\n return injectBody('Compound', fn, (args) => args as unknown[], opts);\n}\n\nfunction injectBody<TBodyProps extends BodyProps, TObject extends THREE.Object3D>(\n type: BodyShapeType,\n getPropsFn: NgtcGetByIndex<TBodyProps>,\n argsFn: NgtcArgFn<TBodyProps['args']>,\n { ref, injector, deps = () => ({}) }: NgtcBodyOptions<TObject> = {}\n): NgtcBodyReturn<TObject> {\n injector = assertInjectionContext(injectBody, injector);\n return runInInjectionContext(injector, () => {\n let bodyRef = injectNgtRef<TObject>();\n\n if (ref) bodyRef = ref;\n\n const physicsApi = inject(NGTC_PHYSICS_API);\n const debugApi = inject(NGTC_DEBUG_API, { optional: true });\n\n const { refs, worker, subscriptions, scaleOverrides, events } = physicsApi();\n const { add: debugAdd, remove: debugRemove } = debugApi?.() || {};\n\n effect(\n (onCleanup) => {\n // register deps\n deps();\n\n if (!bodyRef.untracked) {\n bodyRef.nativeElement = new THREE.Object3D() as TObject;\n }\n\n const object = bodyRef.untracked;\n const currentWorker = worker;\n\n const objectCount =\n object instanceof THREE.InstancedMesh\n ? (object.instanceMatrix.setUsage(THREE.DynamicDrawUsage), object.count)\n : 1;\n\n const uuid =\n object instanceof THREE.InstancedMesh\n ? new Array(objectCount).fill(0).map((_, i) => `${object.uuid}/${i}`)\n : [object.uuid];\n\n const props: (TBodyProps & { args: unknown })[] =\n object instanceof THREE.InstancedMesh\n ? uuid.map((id, i) => {\n const props = getPropsFn(i);\n prepare(temp, props);\n object.setMatrixAt(i, temp.matrix);\n object.instanceMatrix.needsUpdate = true;\n refs[id] = object;\n debugAdd?.(id, props, type);\n setupCollision(events, props, id);\n return { ...props, args: argsFn(props.args) };\n })\n : uuid.map((id, i) => {\n const props = getPropsFn(i);\n prepare(object, props);\n refs[id] = object;\n debugAdd?.(id, props, type);\n setupCollision(events, props, id);\n return { ...props, args: argsFn(props.args) };\n });\n\n // Register on mount, unregister on unmount\n currentWorker.addBodies({\n props: props.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => {\n return { onCollide: Boolean(onCollide), ...serializableProps };\n }),\n type,\n uuid,\n });\n\n onCleanup(() => {\n uuid.forEach((id) => {\n delete refs[id];\n debugRemove?.(id);\n delete events[id];\n });\n currentWorker.removeBodies({ uuid });\n });\n },\n { allowSignalWrites: true }\n );\n\n const api = computed(() => {\n const makeAtomic = <T extends AtomicName>(type: T, index?: number) => {\n const op: SetOpName<T> = `set${capitalize(type)}`;\n\n return {\n set: (value: PropValue<T>) => {\n const uuid = getUUID(bodyRef, index);\n uuid &&\n worker[op]({\n props: value,\n uuid,\n } as never);\n },\n subscribe: subscribe(bodyRef, worker, subscriptions, type, index),\n };\n };\n\n const makeQuaternion = (index?: number) => {\n const type = 'quaternion';\n return {\n copy: ({ w, x, y, z }: THREE.Quaternion) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n set: (x: number, y: number, z: number, w: number) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n subscribe: subscribe(bodyRef, worker, subscriptions, type, index),\n };\n };\n\n const makeRotation = (index?: number) => {\n return {\n copy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n set: (x: number, y: number, z: number) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n subscribe: (callback: (value: Triplet) => void) => {\n const id = incrementingId++;\n const target = 'bodies';\n const type = 'quaternion';\n const uuid = getUUID(bodyRef, index);\n\n subscriptions[id] = { [type]: quaternionToRotation(callback) };\n uuid && worker.subscribe({ props: { id, target, type }, uuid });\n return () => {\n delete subscriptions[id];\n worker.unsubscribe({ props: id });\n };\n },\n };\n };\n\n const makeVec = (type: VectorName, index?: number) => {\n const op: SetOpName<VectorName> = `set${capitalize(type)}`;\n return {\n copy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n set: (x: number, y: number, z: number) => {\n const uuid = getUUID(bodyRef, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n subscribe: subscribe(bodyRef, worker, subscriptions, type, index),\n };\n };\n\n const makeRemove = (index?: number) => {\n const uuid = getUUID(bodyRef, index);\n return () => {\n if (uuid) worker.removeBodies({ uuid: [uuid] });\n };\n };\n\n function makeApi(index?: number): NgtcWorkerApi {\n return {\n allowSleep: makeAtomic('allowSleep', index),\n angularDamping: makeAtomic('angularDamping', index),\n angularFactor: makeVec('angularFactor', index),\n angularVelocity: makeVec('angularVelocity', index),\n applyForce(force: Triplet, worldPoint: Triplet) {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.applyForce({ props: [force, worldPoint], uuid });\n },\n applyImpulse(impulse: Triplet, worldPoint: Triplet) {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.applyImpulse({ props: [impulse, worldPoint], uuid });\n },\n applyLocalForce(force: Triplet, localPoint: Triplet) {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.applyLocalForce({ props: [force, localPoint], uuid });\n },\n applyLocalImpulse(impulse: Triplet, localPoint: Triplet) {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.applyLocalImpulse({ props: [impulse, localPoint], uuid });\n },\n applyTorque(torque: Triplet) {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.applyTorque({ props: [torque], uuid });\n },\n collisionFilterGroup: makeAtomic('collisionFilterGroup', index),\n collisionFilterMask: makeAtomic('collisionFilterMask', index),\n collisionResponse: makeAtomic('collisionResponse', index),\n fixedRotation: makeAtomic('fixedRotation', index),\n isTrigger: makeAtomic('isTrigger', index),\n linearDamping: makeAtomic('linearDamping', index),\n linearFactor: makeVec('linearFactor', index),\n mass: makeAtomic('mass', index),\n material: makeAtomic('material', index),\n position: makeVec('position', index),\n quaternion: makeQuaternion(index),\n rotation: makeRotation(index),\n scaleOverride(scale) {\n const uuid = getUUID(bodyRef, index);\n if (uuid) scaleOverrides[uuid] = new THREE.Vector3(...scale);\n },\n sleep() {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.sleep({ uuid });\n },\n sleepSpeedLimit: makeAtomic('sleepSpeedLimit', index),\n sleepTimeLimit: makeAtomic('sleepTimeLimit', index),\n userData: makeAtomic('userData', index),\n velocity: makeVec('velocity', index),\n remove: makeRemove(index),\n wakeUp() {\n const uuid = getUUID(bodyRef, index);\n uuid && worker.wakeUp({ uuid });\n },\n };\n }\n\n const cache: { [index: number]: NgtcWorkerApi } = {};\n return {\n ...makeApi(undefined),\n at: (index: number) => cache[index] || (cache[index] = makeApi(index)),\n };\n });\n\n return { ref: bodyRef, api };\n });\n}\n","import { Injector, Signal, computed, effect, inject, runInInjectionContext, untracked } from '@angular/core';\nimport {\n ConstraintOptns,\n ConstraintTypes,\n HingeConstraintOpts,\n PointToPointConstraintOpts,\n} from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, NgtInjectedRef, assertInjectionContext, injectNgtRef, is, makeId } from 'angular-three';\nimport { NGTC_PHYSICS_API } from 'angular-three-cannon';\nimport * as THREE from 'three';\n\nexport interface NgtcConstraintApi {\n disable: () => void;\n enable: () => void;\n remove: () => void;\n}\n\nexport interface NgtcHingeConstraintApi extends NgtcConstraintApi {\n disableMotor: () => void;\n enableMotor: () => void;\n setMotorMaxForce: (value: number) => void;\n setMotorSpeed: (value: number) => void;\n}\n\nexport type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes\n ? NgtcConstraintApi\n : NgtcHingeConstraintApi;\n\nexport interface NgtcConstraintReturn<\n T extends 'Hinge' | ConstraintTypes,\n TObjectA extends THREE.Object3D = THREE.Object3D,\n TObjectB extends THREE.Object3D = THREE.Object3D\n> {\n bodyA: NgtInjectedRef<TObjectA>;\n bodyB: NgtInjectedRef<TObjectB>;\n api: Signal<NgtcConstraintORHingeApi<T>>;\n}\n\nexport interface NgtcConstraintOptions<\n TConstraintType extends 'Hinge' | ConstraintTypes,\n TOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge'\n ? HingeConstraintOpts\n : ConstraintOptns\n> {\n injector?: Injector;\n deps?: () => NgtAnyRecord;\n opts?: () => TOptions;\n}\n\nexport function usePointToPointConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n opts?: NgtcConstraintOptions<'PointToPoint', PointToPointConstraintOpts>\n) {\n return injectConstraint('PointToPoint', bodyA, bodyB, opts);\n}\nexport function useConeTwistConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n opts?: NgtcConstraintOptions<'ConeTwist', PointToPointConstraintOpts>\n) {\n return injectConstraint('ConeTwist', bodyA, bodyB, opts);\n}\nexport function useDistanceConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n opts?: NgtcConstraintOptions<'Distance', PointToPointConstraintOpts>\n) {\n return injectConstraint('Distance', bodyA, bodyB, opts);\n}\nexport function useHingeConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n opts?: NgtcConstraintOptions<'Hinge', PointToPointConstraintOpts>\n) {\n return injectConstraint('Hinge', bodyA, bodyB, opts);\n}\nexport function useLockConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n opts?: NgtcConstraintOptions<'Lock', PointToPointConstraintOpts>\n) {\n return injectConstraint('Lock', bodyA, bodyB, opts);\n}\n\nfunction injectConstraint<\n TConstraintType extends 'Hinge' | ConstraintTypes,\n A extends THREE.Object3D,\n B extends THREE.Object3D,\n TOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge'\n ? HingeConstraintOpts\n : ConstraintOptns\n>(\n type: TConstraintType,\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n {\n injector,\n deps = () => ({}),\n opts = () => ({} as TOptions),\n }: NgtcConstraintOptions<TConstraintType, TOptions> = {}\n): NgtcConstraintReturn<TConstraintType, A, B> {\n injector = assertInjectionContext(injectConstraint, injector);\n return runInInjectionContext(injector, () => {\n const physicsApi = inject(NGTC_PHYSICS_API);\n const { worker } = physicsApi();\n\n const uuid = makeId();\n\n const bodyARef = is.ref(bodyA) ? bodyA : injectNgtRef(bodyA);\n const bodyBRef = is.ref(bodyB) ? bodyB : injectNgtRef(bodyB);\n\n effect((onCleanup) => {\n deps();\n if (bodyARef.nativeElement && bodyBRef.nativeElement) {\n worker.addConstraint({\n props: [bodyARef.untracked.uuid, bodyBRef.untracked.uuid, untracked(opts)],\n type,\n uuid,\n });\n onCleanup(() => worker.removeConstraint({ uuid }));\n }\n });\n\n const api = computed(() => {\n deps();\n const enableDisable = {\n disable: () => worker.disableConstraint({ uuid }),\n enable: () => worker.enableConstraint({ uuid }),\n remove: () => worker.removeConstraint({ uuid }),\n };\n\n if (type === 'Hinge') {\n return {\n ...enableDisable,\n disableMotor: () => worker.disableConstraintMotor({ uuid }),\n enableMotor: () => worker.enableConstraintMotor({ uuid }),\n setMotorMaxForce: (value: number) => worker.setConstraintMotorMaxForce({ props: value, uuid }),\n setMotorSpeed: (value: number) => worker.setConstraintMotorSpeed({ props: value, uuid }),\n } as NgtcConstraintORHingeApi<TConstraintType>;\n }\n\n return enableDisable as NgtcConstraintORHingeApi<TConstraintType>;\n });\n\n return { bodyA: bodyARef, bodyB: bodyBRef, api };\n });\n}\n","import { Injector, effect, inject, runInInjectionContext, untracked } from '@angular/core';\nimport { ContactMaterialOptions, MaterialOptions } from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, assertInjectionContext, makeId } from 'angular-three';\nimport { NGTC_PHYSICS_API } from 'angular-three-cannon';\n\nexport function injectContactMaterial(\n materialB: MaterialOptions,\n materialA: MaterialOptions,\n {\n opts,\n deps = () => ({}),\n injector,\n }: { opts: () => ContactMaterialOptions; deps?: () => NgtAnyRecord; injector?: Injector }\n): void {\n injector = assertInjectionContext(injectContactMaterial, injector);\n return runInInjectionContext(injector, () => {\n const physicsApi = inject(NGTC_PHYSICS_API);\n const { worker } = physicsApi();\n const uuid = makeId();\n effect((onCleanup) => {\n deps();\n worker.addContactMaterial({\n props: [materialA, materialB, untracked(opts)],\n uuid,\n });\n onCleanup(() => worker.removeContactMaterial({ uuid }));\n });\n });\n}\n","import { Injector, effect, inject, runInInjectionContext, untracked } from '@angular/core';\nimport { RayMode, RayOptions, RayhitEvent } from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, assertInjectionContext, makeId } from 'angular-three';\nimport { NGTC_PHYSICS_API } from 'angular-three-cannon';\n\nexport interface NgtcRayOptions {\n options: () => RayOptions;\n callback: (e: RayhitEvent) => void;\n injector?: Injector;\n deps?: () => NgtAnyRecord;\n}\n\nexport function injectRaycastClosest(opts: NgtcRayOptions) {\n return injectRay('Closest', opts);\n}\n\nexport function injectRaycastAny(opts: NgtcRayOptions) {\n return injectRay('Any', opts);\n}\n\nexport function useRaycastAll(opts: NgtcRayOptions) {\n return injectRay('All', opts);\n}\n\nfunction injectRay(mode: RayMode, { options, callback, deps = () => ({}), injector }: NgtcRayOptions) {\n injector = assertInjectionContext(injectRay, injector);\n return runInInjectionContext(injector, () => {\n const physicsApi = inject(NGTC_PHYSICS_API);\n const { worker, events } = physicsApi();\n const uuid = makeId();\n\n effect((onCleanup) => {\n deps();\n events[uuid] = { rayhit: callback };\n worker.addRay({ props: { ...untracked(options), mode }, uuid });\n onCleanup(() => {\n worker.removeRay({ uuid });\n delete events[uuid];\n });\n });\n });\n}\n","import { Injector, Signal, computed, effect, inject, runInInjectionContext, untracked } from '@angular/core';\nimport { WheelInfoOptions } from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, NgtInjectedRef, assertInjectionContext, injectNgtRef } from 'angular-three';\nimport { NGTC_PHYSICS_API } from 'angular-three-cannon';\nimport * as THREE from 'three';\nimport { getUUID, subscribe } from './body';\n\nfunction isString(v: unknown): v is string {\n return typeof v === 'string';\n}\n\nexport interface NgtcRaycastVehicleProps {\n chassisBody: NgtInjectedRef<THREE.Object3D>;\n wheelInfos: WheelInfoOptions[];\n wheels: Array<NgtInjectedRef<THREE.Object3D>>;\n indexForwardAxis?: number;\n indexRightAxis?: number;\n indexUpAxis?: number;\n}\n\nexport interface NgtcRaycastVehiclePublicApi {\n applyEngineForce: (value: number, wheelIndex: number) => void;\n setBrake: (brake: number, wheelIndex: number) => void;\n setSteeringValue: (value: number, wheelIndex: number) => void;\n sliding: { subscribe: (callback: (sliding: boolean) => void) => void };\n remove: () => void;\n}\n\nexport interface NgtcRaycastVehicleReturn<TObject extends THREE.Object3D = THREE.Object3D> {\n ref: NgtInjectedRef<TObject>;\n api: Signal<NgtcRaycastVehiclePublicApi>;\n}\n\nexport function injectRaycastVehicle<TObject extends THREE.Object3D = THREE.Object3D>(\n fn: () => NgtcRaycastVehicleProps,\n {\n ref,\n injector,\n deps = () => ({}),\n }: { ref?: NgtInjectedRef<TObject>; injector?: Injector; deps?: () => NgtAnyRecord } = {}\n): NgtcRaycastVehicleReturn<TObject> {\n injector = assertInjectionContext(injectRaycastVehicle, injector);\n return runInInjectionContext(injector, () => {\n const physicsApi = inject(NGTC_PHYSICS_API);\n const { worker, subscriptions } = physicsApi();\n\n let instanceRef = injectNgtRef<TObject>();\n if (ref) instanceRef = ref;\n\n effect(\n (onCleanup) => {\n deps();\n if (!instanceRef.untracked) {\n instanceRef.nativeElement = new THREE.Object3D() as TObject;\n }\n\n const currentWorker = worker;\n const uuid: string = instanceRef.nativeElement.uuid;\n const {\n chassisBody,\n indexForwardAxis = 2,\n indexRightAxis = 0,\n indexUpAxis = 1,\n wheelInfos,\n wheels,\n } = untracked(fn);\n\n const chassisBodyUUID = getUUID(chassisBody);\n const wheelUUIDs = wheels.map((ref) => getUUID(ref));\n\n if (!chassisBodyUUID || !wheelUUIDs.every(isString)) return;\n\n currentWorker.addRaycastVehicle({\n props: [chassisBodyUUID, wheelUUIDs, wheelInfos, indexForwardAxis, indexRightAxis, indexUpAxis],\n uuid,\n });\n onCleanup(() => {\n currentWorker.removeRaycastVehicle({ uuid });\n });\n },\n { allowSignalWrites: true }\n );\n\n const api = computed<NgtcRaycastVehiclePublicApi>(() => {\n deps();\n return {\n applyEngineForce(value: number, wheelIndex: number) {\n const uuid = getUUID(instanceRef);\n uuid &&\n worker.applyRaycastVehicleEngineForce({\n props: [value, wheelIndex],\n uuid,\n });\n },\n setBrake(brake: number, wheelIndex: number) {\n const uuid = getUUID(instanceRef);\n uuid && worker.setRaycastVehicleBrake({ props: [brake, wheelIndex], uuid });\n },\n setSteeringValue(value: number, wheelIndex: number) {\n const uuid = getUUID(instanceRef);\n uuid &&\n worker.setRaycastVehicleSteeringValue({\n props: [value, wheelIndex],\n uuid,\n });\n },\n sliding: {\n subscribe: subscribe(instanceRef, worker, subscriptions, 'sliding', undefined, 'vehicles'),\n },\n\n remove: () => {\n const uuid = getUUID(instanceRef);\n uuid && worker.removeRaycastVehicle({ uuid });\n },\n };\n });\n\n return { ref: instanceRef, api };\n });\n}\n","import { Injector, Signal, computed, effect, inject, runInInjectionContext, untracked } from '@angular/core';\nimport { SpringOptns } from '@pmndrs/cannon-worker-api';\nimport { NgtAnyRecord, NgtInjectedRef, assertInjectionContext, injectNgtRef, is, makeId } from 'angular-three';\nimport { NGTC_PHYSICS_API } from 'angular-three-cannon';\n\nexport interface NgtcSpringApi {\n setDamping: (value: number) => void;\n setRestLength: (value: number) => void;\n setStiffness: (value: number) => void;\n remove: () => void;\n}\n\nexport interface NgtcSpringReturn<\n TObjectA extends THREE.Object3D = THREE.Object3D,\n TObjectB extends THREE.Object3D = THREE.Object3D\n> {\n bodyA: NgtInjectedRef<TObjectA>;\n bodyB: NgtInjectedRef<TObjectB>;\n api: Signal<NgtcSpringApi>;\n}\n\nexport function injectSpring<A extends THREE.Object3D, B extends THREE.Object3D>(\n bodyA: NgtInjectedRef<A> | A,\n bodyB: NgtInjectedRef<B> | B,\n {\n injector,\n opts = () => ({}),\n deps = () => ({}),\n }: { injector?: Injector; deps?: () => NgtAnyRecord; opts?: () => SpringOptns } = {}\n): NgtcSpringReturn<A, B> {\n injector = assertInjectionContext(injectSpring, injector);\n return runInInjectionContext(injector, () => {\n const physicsApi = inject(NGTC_PHYSICS_API);\n const { worker } = physicsApi();\n\n const uuid = makeId();\n\n const bodyARef = is.ref(bodyA) ? bodyA : injectNgtRef(bodyA);\n const bodyBRef = is.ref(bodyB) ? bodyB : injectNgtRef(bodyB);\n\n effect((onCleanup) => {\n deps();\n if (bodyARef.nativeElement && bodyBRef.nativeElement) {\n worker.addSpring({\n props: [bodyARef.nativeElement.uuid, bodyBRef.nativeElement.uuid, untracked(opts)],\n uuid,\n });\n onCleanup(() => worker.removeSpring({ uuid }));\n }\n });\n\n const api = computed(() => {\n deps();\n return {\n setDamping: (value: number) => worker.setSpringDamping({ props: value, uuid }),\n setRestLength: (value: number) => worker.setSpringRestLength({ props: value, uuid }),\n setStiffness: (value: number) => worker.setSpringStiffness({ props: value, uuid }),\n remove: () => worker.removeSpring({ uuid }),\n };\n });\n\n return { bodyA: bodyARef, bodyB: bodyBRef, api };\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, computed, effect, untracked, Component, Input } from '@angular/core';
|
|
3
|
+
import { CannonWorkerAPI } from '@pmndrs/cannon-worker-api';
|
|
4
|
+
import { NgtSignalStore, NgtStore, requestAnimationInInjectionContext, injectBeforeRender } from 'angular-three';
|
|
5
|
+
import * as THREE from 'three';
|
|
6
|
+
|
|
7
|
+
const v = new THREE.Vector3();
|
|
8
|
+
const s = new THREE.Vector3(1, 1, 1);
|
|
9
|
+
const q = new THREE.Quaternion();
|
|
10
|
+
const m = new THREE.Matrix4();
|
|
11
|
+
function apply(index, positions, quaternions, scale = s, object) {
|
|
12
|
+
if (index !== undefined) {
|
|
13
|
+
m.compose(v.fromArray(positions, index * 3), q.fromArray(quaternions, index * 4), scale);
|
|
14
|
+
if (object) {
|
|
15
|
+
object.matrixAutoUpdate = false;
|
|
16
|
+
object.matrix.copy(m);
|
|
17
|
+
}
|
|
18
|
+
return m;
|
|
19
|
+
}
|
|
20
|
+
return m.identity();
|
|
21
|
+
}
|
|
22
|
+
const NGTC_PHYSICS_API = new InjectionToken('NgtcPhysics API');
|
|
23
|
+
class NgtcPhysics extends NgtSignalStore {
|
|
24
|
+
set isPaused(isPaused) {
|
|
25
|
+
this.set({ isPaused });
|
|
26
|
+
}
|
|
27
|
+
set maxSubSteps(maxSubSteps) {
|
|
28
|
+
this.set({ maxSubSteps });
|
|
29
|
+
}
|
|
30
|
+
set shouldInvalidate(shouldInvalidate) {
|
|
31
|
+
this.set({ shouldInvalidate });
|
|
32
|
+
}
|
|
33
|
+
set stepSize(stepSize) {
|
|
34
|
+
this.set({ stepSize });
|
|
35
|
+
}
|
|
36
|
+
set size(size) {
|
|
37
|
+
this.set({ size });
|
|
38
|
+
}
|
|
39
|
+
set allowSleep(allowSleep) {
|
|
40
|
+
this.set({ allowSleep });
|
|
41
|
+
}
|
|
42
|
+
set axisIndex(axisIndex) {
|
|
43
|
+
this.set({ axisIndex });
|
|
44
|
+
}
|
|
45
|
+
set broadphase(broadphase) {
|
|
46
|
+
this.set({ broadphase });
|
|
47
|
+
}
|
|
48
|
+
set defaultContactMaterial(defaultContactMaterial) {
|
|
49
|
+
this.set({ defaultContactMaterial });
|
|
50
|
+
}
|
|
51
|
+
set frictionGravity(frictionGravity) {
|
|
52
|
+
this.set({ frictionGravity });
|
|
53
|
+
}
|
|
54
|
+
set gravity(gravity) {
|
|
55
|
+
this.set({ gravity });
|
|
56
|
+
}
|
|
57
|
+
set iterations(iterations) {
|
|
58
|
+
this.set({ iterations });
|
|
59
|
+
}
|
|
60
|
+
set quatNormalizeFast(quatNormalizeFast) {
|
|
61
|
+
this.set({ quatNormalizeFast });
|
|
62
|
+
}
|
|
63
|
+
set quatNormalizeSkip(quatNormalizeSkip) {
|
|
64
|
+
this.set({ quatNormalizeSkip });
|
|
65
|
+
}
|
|
66
|
+
set solver(solver) {
|
|
67
|
+
this.set({ solver });
|
|
68
|
+
}
|
|
69
|
+
set tolerance(tolerance) {
|
|
70
|
+
this.set({ tolerance });
|
|
71
|
+
}
|
|
72
|
+
#store;
|
|
73
|
+
#bodies;
|
|
74
|
+
#events;
|
|
75
|
+
#refs;
|
|
76
|
+
#scaleOverrides;
|
|
77
|
+
#subscriptions;
|
|
78
|
+
#allowSleep;
|
|
79
|
+
#defaultContactMaterial;
|
|
80
|
+
#frictionGravity;
|
|
81
|
+
#quatNormalizeFast;
|
|
82
|
+
#quatNormalizeSkip;
|
|
83
|
+
#size;
|
|
84
|
+
#solver;
|
|
85
|
+
#workerProps;
|
|
86
|
+
constructor() {
|
|
87
|
+
super({
|
|
88
|
+
allowSleep: false,
|
|
89
|
+
axisIndex: 0,
|
|
90
|
+
broadphase: 'Naive',
|
|
91
|
+
defaultContactMaterial: { contactEquationStiffness: 1e6 },
|
|
92
|
+
frictionGravity: null,
|
|
93
|
+
gravity: [0, -9.81, 0],
|
|
94
|
+
isPaused: false,
|
|
95
|
+
iterations: 5,
|
|
96
|
+
maxSubSteps: 10,
|
|
97
|
+
quatNormalizeFast: false,
|
|
98
|
+
quatNormalizeSkip: 0,
|
|
99
|
+
shouldInvalidate: true,
|
|
100
|
+
size: 1000,
|
|
101
|
+
solver: 'GS',
|
|
102
|
+
stepSize: 1 / 60,
|
|
103
|
+
tolerance: 0.001,
|
|
104
|
+
});
|
|
105
|
+
this.#store = inject(NgtStore);
|
|
106
|
+
this.#bodies = {};
|
|
107
|
+
this.#events = {};
|
|
108
|
+
this.#refs = {};
|
|
109
|
+
this.#scaleOverrides = {};
|
|
110
|
+
this.#subscriptions = {};
|
|
111
|
+
this.#allowSleep = this.select('allowSleep');
|
|
112
|
+
this.#defaultContactMaterial = this.select('defaultContactMaterial');
|
|
113
|
+
this.#frictionGravity = this.select('frictionGravity');
|
|
114
|
+
this.#quatNormalizeFast = this.select('quatNormalizeFast');
|
|
115
|
+
this.#quatNormalizeSkip = this.select('quatNormalizeSkip');
|
|
116
|
+
this.#size = this.select('size');
|
|
117
|
+
this.#solver = this.select('solver');
|
|
118
|
+
this.#workerProps = computed(() => ({
|
|
119
|
+
allowSleep: this.#allowSleep(),
|
|
120
|
+
axisIndex: this.get('axisIndex'),
|
|
121
|
+
broadphase: this.get('broadphase'),
|
|
122
|
+
defaultContactMaterial: this.#defaultContactMaterial(),
|
|
123
|
+
frictionGravity: this.#frictionGravity(),
|
|
124
|
+
gravity: this.get('gravity'),
|
|
125
|
+
iterations: this.get('iterations'),
|
|
126
|
+
quatNormalizeFast: this.#quatNormalizeFast(),
|
|
127
|
+
quatNormalizeSkip: this.#quatNormalizeSkip(),
|
|
128
|
+
size: this.#size(),
|
|
129
|
+
solver: this.#solver(),
|
|
130
|
+
tolerance: this.get('tolerance'),
|
|
131
|
+
}));
|
|
132
|
+
this.worker = computed(() => {
|
|
133
|
+
const workerProps = this.#workerProps();
|
|
134
|
+
return new CannonWorkerAPI(workerProps);
|
|
135
|
+
});
|
|
136
|
+
this.api = computed(() => ({
|
|
137
|
+
bodies: this.#bodies,
|
|
138
|
+
events: this.#events,
|
|
139
|
+
refs: this.#refs,
|
|
140
|
+
scaleOverrides: this.#scaleOverrides,
|
|
141
|
+
subscriptions: this.#subscriptions,
|
|
142
|
+
worker: this.worker(),
|
|
143
|
+
}));
|
|
144
|
+
requestAnimationInInjectionContext(() => {
|
|
145
|
+
this.#connectWorker();
|
|
146
|
+
this.#updateWorkerProp('axisIndex');
|
|
147
|
+
this.#updateWorkerProp('broadphase');
|
|
148
|
+
this.#updateWorkerProp('gravity');
|
|
149
|
+
this.#updateWorkerProp('iterations');
|
|
150
|
+
this.#updateWorkerProp('tolerance');
|
|
151
|
+
injectBeforeRender(this.#onBeforeRender.bind(this, 0));
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
#updateWorkerProp(key) {
|
|
155
|
+
const compute = this.select(key);
|
|
156
|
+
effect(() => {
|
|
157
|
+
const worker = untracked(this.worker);
|
|
158
|
+
const value = compute();
|
|
159
|
+
// @ts-expect-error
|
|
160
|
+
worker[key] = value;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
#connectWorker() {
|
|
164
|
+
effect((onCleanup) => {
|
|
165
|
+
const worker = this.worker();
|
|
166
|
+
worker.connect();
|
|
167
|
+
worker.init();
|
|
168
|
+
worker.on('collide', this.#collideHandler.bind(this));
|
|
169
|
+
worker.on('collideBegin', this.#collideBeginHandler.bind(this));
|
|
170
|
+
worker.on('collideEnd', this.#collideEndHandler.bind(this));
|
|
171
|
+
worker.on('frame', this.#frameHandler.bind(this));
|
|
172
|
+
worker.on('rayhit', this.#rayhitHandler.bind(this));
|
|
173
|
+
onCleanup(() => {
|
|
174
|
+
worker.terminate();
|
|
175
|
+
worker.removeAllListeners();
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
#onBeforeRender(timeSinceLastCalled, { delta }) {
|
|
180
|
+
const { isPaused, maxSubSteps, stepSize } = this.get();
|
|
181
|
+
const worker = this.worker();
|
|
182
|
+
if (isPaused)
|
|
183
|
+
return;
|
|
184
|
+
timeSinceLastCalled += delta;
|
|
185
|
+
worker.step({ maxSubSteps, stepSize: stepSize, timeSinceLastCalled });
|
|
186
|
+
timeSinceLastCalled = 0;
|
|
187
|
+
}
|
|
188
|
+
#collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }) {
|
|
189
|
+
const cb = this.#events[target]?.collide;
|
|
190
|
+
if (cb) {
|
|
191
|
+
cb({
|
|
192
|
+
body: this.#refs[body],
|
|
193
|
+
contact: { bi: this.#refs[bi], bj: this.#refs[bj], ...contactRest },
|
|
194
|
+
target: this.#refs[target],
|
|
195
|
+
...rest,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
#collideBeginHandler({ bodyA, bodyB }) {
|
|
200
|
+
const cbA = this.#events[bodyA]?.collideBegin;
|
|
201
|
+
if (cbA)
|
|
202
|
+
cbA({ body: this.#refs[bodyB], op: 'event', target: this.#refs[bodyA], type: 'collideBegin' });
|
|
203
|
+
const cbB = this.#events[bodyB]?.collideBegin;
|
|
204
|
+
if (cbB)
|
|
205
|
+
cbB({ body: this.#refs[bodyA], op: 'event', target: this.#refs[bodyB], type: 'collideBegin' });
|
|
206
|
+
}
|
|
207
|
+
#collideEndHandler({ bodyA, bodyB }) {
|
|
208
|
+
const cbA = this.#events[bodyA]?.collideEnd;
|
|
209
|
+
if (cbA)
|
|
210
|
+
cbA({ body: this.#refs[bodyB], op: 'event', target: this.#refs[bodyA], type: 'collideEnd' });
|
|
211
|
+
const cbB = this.#events[bodyB]?.collideEnd;
|
|
212
|
+
if (cbB)
|
|
213
|
+
cbB({ body: this.#refs[bodyA], op: 'event', target: this.#refs[bodyB], type: 'collideEnd' });
|
|
214
|
+
}
|
|
215
|
+
#frameHandler({ active, bodies: uuids = [], observations, positions, quaternions }) {
|
|
216
|
+
const invalidate = this.#store.get('invalidate');
|
|
217
|
+
const shouldInvalidate = this.get('shouldInvalidate');
|
|
218
|
+
for (let i = 0; i < uuids.length; i++) {
|
|
219
|
+
this.#bodies[uuids[i]] = i;
|
|
220
|
+
}
|
|
221
|
+
observations.forEach(([id, value, type]) => {
|
|
222
|
+
const subscription = this.#subscriptions[id] || {};
|
|
223
|
+
const cb = subscription[type];
|
|
224
|
+
// HELP: We clearly know the type of the callback, but typescript can't deal with it
|
|
225
|
+
cb && cb(value);
|
|
226
|
+
});
|
|
227
|
+
if (active) {
|
|
228
|
+
for (const ref of Object.values(this.#refs)) {
|
|
229
|
+
if (ref instanceof THREE.InstancedMesh) {
|
|
230
|
+
for (let i = 0; i < ref.count; i++) {
|
|
231
|
+
const uuid = `${ref.uuid}/${i}`;
|
|
232
|
+
const index = this.#bodies[uuid];
|
|
233
|
+
if (index !== undefined) {
|
|
234
|
+
ref.setMatrixAt(i, apply(index, positions, quaternions, this.#scaleOverrides[uuid]));
|
|
235
|
+
ref.instanceMatrix.needsUpdate = true;
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
const scale = this.#scaleOverrides[ref.uuid] || ref.scale;
|
|
241
|
+
apply(this.#bodies[ref.uuid], positions, quaternions, scale, ref);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
if (shouldInvalidate)
|
|
245
|
+
invalidate();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
#rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }) {
|
|
249
|
+
const cb = this.#events[uuid]?.rayhit;
|
|
250
|
+
if (cb)
|
|
251
|
+
cb({ body: body ? this.#refs[body] : null, ray: { uuid, ...rayRest }, ...rest });
|
|
252
|
+
}
|
|
253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { isPaused: "isPaused", maxSubSteps: "maxSubSteps", shouldInvalidate: "shouldInvalidate", stepSize: "stepSize", size: "size", allowSleep: "allowSleep", axisIndex: "axisIndex", broadphase: "broadphase", defaultContactMaterial: "defaultContactMaterial", frictionGravity: "frictionGravity", gravity: "gravity", iterations: "iterations", quatNormalizeFast: "quatNormalizeFast", quatNormalizeSkip: "quatNormalizeSkip", solver: "solver", tolerance: "tolerance" }, providers: [{ provide: NGTC_PHYSICS_API, useFactory: (physics) => physics.api, deps: [NgtcPhysics] }], usesInheritance: true, ngImport: i0, template: `<ng-content />`, isInline: true }); }
|
|
255
|
+
}
|
|
256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NgtcPhysics, decorators: [{
|
|
257
|
+
type: Component,
|
|
258
|
+
args: [{
|
|
259
|
+
selector: 'ngtc-physics',
|
|
260
|
+
standalone: true,
|
|
261
|
+
template: `<ng-content />`,
|
|
262
|
+
providers: [{ provide: NGTC_PHYSICS_API, useFactory: (physics) => physics.api, deps: [NgtcPhysics] }],
|
|
263
|
+
}]
|
|
264
|
+
}], ctorParameters: function () { return []; }, propDecorators: { isPaused: [{
|
|
265
|
+
type: Input
|
|
266
|
+
}], maxSubSteps: [{
|
|
267
|
+
type: Input
|
|
268
|
+
}], shouldInvalidate: [{
|
|
269
|
+
type: Input
|
|
270
|
+
}], stepSize: [{
|
|
271
|
+
type: Input
|
|
272
|
+
}], size: [{
|
|
273
|
+
type: Input
|
|
274
|
+
}], allowSleep: [{
|
|
275
|
+
type: Input
|
|
276
|
+
}], axisIndex: [{
|
|
277
|
+
type: Input
|
|
278
|
+
}], broadphase: [{
|
|
279
|
+
type: Input
|
|
280
|
+
}], defaultContactMaterial: [{
|
|
281
|
+
type: Input
|
|
282
|
+
}], frictionGravity: [{
|
|
283
|
+
type: Input
|
|
284
|
+
}], gravity: [{
|
|
285
|
+
type: Input
|
|
286
|
+
}], iterations: [{
|
|
287
|
+
type: Input
|
|
288
|
+
}], quatNormalizeFast: [{
|
|
289
|
+
type: Input
|
|
290
|
+
}], quatNormalizeSkip: [{
|
|
291
|
+
type: Input
|
|
292
|
+
}], solver: [{
|
|
293
|
+
type: Input
|
|
294
|
+
}], tolerance: [{
|
|
295
|
+
type: Input
|
|
296
|
+
}] } });
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* Generated bundle index. Do not edit.
|
|
300
|
+
*/
|
|
301
|
+
|
|
302
|
+
export { NGTC_PHYSICS_API, NgtcPhysics };
|
|
303
|
+
//# sourceMappingURL=angular-three-cannon.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular-three-cannon.mjs","sources":["../../../../libs/cannon/src/physics.ts","../../../../libs/cannon/src/angular-three-cannon.ts"],"sourcesContent":["import { Component, InjectionToken, Input, computed, effect, inject, untracked, type Signal } from '@angular/core';\nimport {\n CannonWorkerAPI,\n type Broadphase,\n type CannonWorkerProps,\n type CollideBeginEvent,\n type CollideEndEvent,\n type CollideEvent,\n type ContactMaterialOptions,\n type RayhitEvent,\n type Refs,\n type Solver,\n type Subscriptions,\n type Triplet,\n type WorkerCollideBeginEvent,\n type WorkerCollideEndEvent,\n type WorkerCollideEvent,\n type WorkerFrameMessage,\n type WorkerRayhitEvent,\n} from '@pmndrs/cannon-worker-api';\nimport {\n NgtSignalStore,\n NgtStore,\n injectBeforeRender,\n requestAnimationInInjectionContext,\n type NgtRenderState,\n} from 'angular-three';\nimport * as THREE from 'three';\n\nconst v = new THREE.Vector3();\nconst s = new THREE.Vector3(1, 1, 1);\nconst q = new THREE.Quaternion();\nconst m = new THREE.Matrix4();\n\nfunction apply(index: number, positions: Float32Array, quaternions: Float32Array, scale = s, object?: THREE.Object3D) {\n if (index !== undefined) {\n m.compose(v.fromArray(positions, index * 3), q.fromArray(quaternions, index * 4), scale);\n if (object) {\n object.matrixAutoUpdate = false;\n object.matrix.copy(m);\n }\n return m;\n }\n return m.identity();\n}\n\nexport type NgtcPhysicsState = CannonWorkerProps & {\n isPaused?: boolean;\n maxSubSteps?: number;\n shouldInvalidate?: boolean;\n stepSize?: number;\n};\n\ntype NgtcCannonEvent = CollideBeginEvent | CollideEndEvent | CollideEvent | RayhitEvent;\ntype NgtcCallbackByType<T extends { type: string }> = {\n [K in T['type']]?: T extends { type: K } ? (e: T) => void : never;\n};\n\nexport type NgtcCannonEvents = { [uuid: string]: Partial<NgtcCallbackByType<NgtcCannonEvent>> };\n\nexport type ScaleOverrides = { [uuid: string]: THREE.Vector3 };\n\nexport interface NgtcPhysicsApi {\n bodies: { [uuid: string]: number };\n events: NgtcCannonEvents;\n refs: Refs;\n scaleOverrides: ScaleOverrides;\n subscriptions: Subscriptions;\n worker: CannonWorkerAPI;\n}\n\nexport const NGTC_PHYSICS_API = new InjectionToken<Signal<NgtcPhysicsApi>>('NgtcPhysics API');\n\n@Component({\n selector: 'ngtc-physics',\n standalone: true,\n template: `<ng-content />`,\n providers: [{ provide: NGTC_PHYSICS_API, useFactory: (physics: NgtcPhysics) => physics.api, deps: [NgtcPhysics] }],\n})\nexport class NgtcPhysics extends NgtSignalStore<NgtcPhysicsState> {\n @Input() set isPaused(isPaused: boolean) {\n this.set({ isPaused });\n }\n\n @Input() set maxSubSteps(maxSubSteps: number) {\n this.set({ maxSubSteps });\n }\n\n @Input() set shouldInvalidate(shouldInvalidate: boolean) {\n this.set({ shouldInvalidate });\n }\n\n @Input() set stepSize(stepSize: number) {\n this.set({ stepSize });\n }\n\n @Input() set size(size: number) {\n this.set({ size });\n }\n\n @Input() set allowSleep(allowSleep: boolean) {\n this.set({ allowSleep });\n }\n\n @Input() set axisIndex(axisIndex: 0 | 1 | 2) {\n this.set({ axisIndex });\n }\n\n @Input() set broadphase(broadphase: Broadphase) {\n this.set({ broadphase });\n }\n\n @Input() set defaultContactMaterial(defaultContactMaterial: ContactMaterialOptions) {\n this.set({ defaultContactMaterial });\n }\n\n @Input() set frictionGravity(frictionGravity: Triplet | null) {\n this.set({ frictionGravity });\n }\n\n @Input() set gravity(gravity: Triplet) {\n this.set({ gravity });\n }\n\n @Input() set iterations(iterations: number) {\n this.set({ iterations });\n }\n\n @Input() set quatNormalizeFast(quatNormalizeFast: boolean) {\n this.set({ quatNormalizeFast });\n }\n\n @Input() set quatNormalizeSkip(quatNormalizeSkip: number) {\n this.set({ quatNormalizeSkip });\n }\n\n @Input() set solver(solver: Solver) {\n this.set({ solver });\n }\n\n @Input() set tolerance(tolerance: number) {\n this.set({ tolerance });\n }\n\n readonly #store = inject(NgtStore);\n\n readonly #bodies: { [uuid: string]: number } = {};\n readonly #events: NgtcCannonEvents = {};\n readonly #refs: Refs = {};\n readonly #scaleOverrides: ScaleOverrides = {};\n readonly #subscriptions: Subscriptions = {};\n\n readonly #allowSleep = this.select('allowSleep');\n readonly #defaultContactMaterial = this.select('defaultContactMaterial');\n readonly #frictionGravity = this.select('frictionGravity');\n readonly #quatNormalizeFast = this.select('quatNormalizeFast');\n readonly #quatNormalizeSkip = this.select('quatNormalizeSkip');\n readonly #size = this.select('size');\n readonly #solver = this.select('solver');\n\n readonly #workerProps = computed(() => ({\n allowSleep: this.#allowSleep(),\n axisIndex: this.get('axisIndex'),\n broadphase: this.get('broadphase'),\n defaultContactMaterial: this.#defaultContactMaterial(),\n frictionGravity: this.#frictionGravity(),\n gravity: this.get('gravity'),\n iterations: this.get('iterations'),\n quatNormalizeFast: this.#quatNormalizeFast(),\n quatNormalizeSkip: this.#quatNormalizeSkip(),\n size: this.#size(),\n solver: this.#solver(),\n tolerance: this.get('tolerance'),\n }));\n\n readonly worker = computed(() => {\n const workerProps = this.#workerProps();\n return new CannonWorkerAPI(workerProps);\n });\n\n readonly api = computed(() => ({\n bodies: this.#bodies,\n events: this.#events,\n refs: this.#refs,\n scaleOverrides: this.#scaleOverrides,\n subscriptions: this.#subscriptions,\n worker: this.worker(),\n }));\n\n constructor() {\n super({\n allowSleep: false,\n axisIndex: 0,\n broadphase: 'Naive',\n defaultContactMaterial: { contactEquationStiffness: 1e6 },\n frictionGravity: null,\n gravity: [0, -9.81, 0],\n isPaused: false,\n iterations: 5,\n maxSubSteps: 10,\n quatNormalizeFast: false,\n quatNormalizeSkip: 0,\n shouldInvalidate: true,\n size: 1000,\n solver: 'GS',\n stepSize: 1 / 60,\n tolerance: 0.001,\n });\n requestAnimationInInjectionContext(() => {\n this.#connectWorker();\n this.#updateWorkerProp('axisIndex');\n this.#updateWorkerProp('broadphase');\n this.#updateWorkerProp('gravity');\n this.#updateWorkerProp('iterations');\n this.#updateWorkerProp('tolerance');\n injectBeforeRender(this.#onBeforeRender.bind(this, 0));\n });\n }\n\n #updateWorkerProp(key: keyof NgtcPhysicsState) {\n const compute = this.select(key);\n effect(() => {\n const worker = untracked(this.worker);\n const value = compute();\n // @ts-expect-error\n worker[key] = value;\n });\n }\n\n #connectWorker() {\n effect((onCleanup) => {\n const worker = this.worker();\n\n worker.connect();\n worker.init();\n\n (worker as any).on('collide', this.#collideHandler.bind(this));\n (worker as any).on('collideBegin', this.#collideBeginHandler.bind(this));\n (worker as any).on('collideEnd', this.#collideEndHandler.bind(this));\n (worker as any).on('frame', this.#frameHandler.bind(this));\n (worker as any).on('rayhit', this.#rayhitHandler.bind(this));\n\n onCleanup(() => {\n worker.terminate();\n (worker as any).removeAllListeners();\n });\n });\n }\n\n #onBeforeRender(timeSinceLastCalled: number, { delta }: NgtRenderState) {\n const { isPaused, maxSubSteps, stepSize } = this.get();\n const worker = this.worker();\n if (isPaused) return;\n timeSinceLastCalled += delta;\n worker.step({ maxSubSteps, stepSize: stepSize!, timeSinceLastCalled });\n timeSinceLastCalled = 0;\n }\n\n #collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }: WorkerCollideEvent['data']) {\n const cb = this.#events[target]?.collide;\n\n if (cb) {\n cb({\n body: this.#refs[body],\n contact: { bi: this.#refs[bi], bj: this.#refs[bj], ...contactRest },\n target: this.#refs[target],\n ...rest,\n });\n }\n }\n\n #collideBeginHandler({ bodyA, bodyB }: WorkerCollideBeginEvent['data']) {\n const cbA = this.#events[bodyA]?.collideBegin;\n if (cbA) cbA({ body: this.#refs[bodyB], op: 'event', target: this.#refs[bodyA], type: 'collideBegin' });\n const cbB = this.#events[bodyB]?.collideBegin;\n if (cbB) cbB({ body: this.#refs[bodyA], op: 'event', target: this.#refs[bodyB], type: 'collideBegin' });\n }\n\n #collideEndHandler({ bodyA, bodyB }: WorkerCollideEndEvent['data']) {\n const cbA = this.#events[bodyA]?.collideEnd;\n if (cbA) cbA({ body: this.#refs[bodyB], op: 'event', target: this.#refs[bodyA], type: 'collideEnd' });\n const cbB = this.#events[bodyB]?.collideEnd;\n if (cbB) cbB({ body: this.#refs[bodyA], op: 'event', target: this.#refs[bodyB], type: 'collideEnd' });\n }\n\n #frameHandler({ active, bodies: uuids = [], observations, positions, quaternions }: WorkerFrameMessage['data']) {\n const invalidate = this.#store.get('invalidate');\n const shouldInvalidate = this.get('shouldInvalidate');\n\n for (let i = 0; i < uuids.length; i++) {\n this.#bodies[uuids[i]] = i;\n }\n\n observations.forEach(([id, value, type]) => {\n const subscription = this.#subscriptions[id] || {};\n const cb = subscription[type];\n // HELP: We clearly know the type of the callback, but typescript can't deal with it\n cb && cb(value as never);\n });\n\n if (active) {\n for (const ref of Object.values(this.#refs)) {\n if (ref instanceof THREE.InstancedMesh) {\n for (let i = 0; i < ref.count; i++) {\n const uuid = `${ref.uuid}/${i}`;\n const index = this.#bodies[uuid];\n if (index !== undefined) {\n ref.setMatrixAt(i, apply(index, positions, quaternions, this.#scaleOverrides[uuid]));\n ref.instanceMatrix.needsUpdate = true;\n }\n }\n } else {\n const scale = this.#scaleOverrides[ref.uuid] || ref.scale;\n apply(this.#bodies[ref.uuid], positions, quaternions, scale, ref);\n }\n }\n if (shouldInvalidate) invalidate();\n }\n }\n\n #rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }: WorkerRayhitEvent['data']) {\n const cb = this.#events[uuid]?.rayhit;\n if (cb) cb({ body: body ? this.#refs[body] : null, ray: { uuid, ...rayRest }, ...rest });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-cannon",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/angular-threejs/cannon"
|
|
9
|
+
"url": "https://github.com/angular-threejs/angular-three/tree/main/libs/cannon"
|
|
10
10
|
},
|
|
11
11
|
"author": {
|
|
12
12
|
"name": "Chau Tran",
|
|
@@ -23,27 +23,23 @@
|
|
|
23
23
|
],
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@angular/common": "^
|
|
27
|
-
"@angular/core": "^
|
|
26
|
+
"@angular/common": " ^16.0.0",
|
|
27
|
+
"@angular/core": " ^16.0.0",
|
|
28
28
|
"@pmndrs/cannon-worker-api": "^2.3.2",
|
|
29
|
-
"angular-three": "^
|
|
29
|
+
"angular-three": "^2.0.0",
|
|
30
30
|
"cannon-es": "^0.20.0",
|
|
31
31
|
"cannon-es-debugger": "^1.0.0",
|
|
32
|
-
"three": "^0.148.0 || ^0.149.0 || ^0.150.0"
|
|
33
|
-
"rxjs": "~7.8.0"
|
|
32
|
+
"three": "^0.148.0 || ^0.149.0 || ^0.150.0 || ^0.151.0 || ^0.152.0"
|
|
34
33
|
},
|
|
35
34
|
"dependencies": {
|
|
36
|
-
"
|
|
37
|
-
"
|
|
35
|
+
"tslib": "^2.3.0",
|
|
36
|
+
"@nx/devkit": "^16.0.0",
|
|
37
|
+
"nx": "^16.0.0"
|
|
38
38
|
},
|
|
39
39
|
"sideEffects": false,
|
|
40
40
|
"generators": "./plugin/generators.json",
|
|
41
41
|
"schematics": "./plugin/generators.json",
|
|
42
|
-
"module": "
|
|
43
|
-
"es2020": "fesm2020/angular-three-cannon.mjs",
|
|
44
|
-
"esm2020": "esm2020/angular-three-cannon.mjs",
|
|
45
|
-
"fesm2020": "fesm2020/angular-three-cannon.mjs",
|
|
46
|
-
"fesm2015": "fesm2015/angular-three-cannon.mjs",
|
|
42
|
+
"module": "fesm2022/angular-three-cannon.mjs",
|
|
47
43
|
"typings": "index.d.ts",
|
|
48
44
|
"exports": {
|
|
49
45
|
"./package.json": {
|
|
@@ -51,27 +47,21 @@
|
|
|
51
47
|
},
|
|
52
48
|
".": {
|
|
53
49
|
"types": "./index.d.ts",
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"node": "./fesm2015/angular-three-cannon.mjs",
|
|
58
|
-
"default": "./fesm2020/angular-three-cannon.mjs"
|
|
50
|
+
"esm2022": "./esm2022/angular-three-cannon.mjs",
|
|
51
|
+
"esm": "./esm2022/angular-three-cannon.mjs",
|
|
52
|
+
"default": "./fesm2022/angular-three-cannon.mjs"
|
|
59
53
|
},
|
|
60
54
|
"./debug": {
|
|
61
55
|
"types": "./debug/index.d.ts",
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"node": "./fesm2015/angular-three-cannon-debug.mjs",
|
|
66
|
-
"default": "./fesm2020/angular-three-cannon-debug.mjs"
|
|
56
|
+
"esm2022": "./esm2022/debug/angular-three-cannon-debug.mjs",
|
|
57
|
+
"esm": "./esm2022/debug/angular-three-cannon-debug.mjs",
|
|
58
|
+
"default": "./fesm2022/angular-three-cannon-debug.mjs"
|
|
67
59
|
},
|
|
68
60
|
"./services": {
|
|
69
61
|
"types": "./services/index.d.ts",
|
|
70
|
-
"
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"node": "./fesm2015/angular-three-cannon-services.mjs",
|
|
74
|
-
"default": "./fesm2020/angular-three-cannon-services.mjs"
|
|
62
|
+
"esm2022": "./esm2022/services/angular-three-cannon-services.mjs",
|
|
63
|
+
"esm": "./esm2022/services/angular-three-cannon-services.mjs",
|
|
64
|
+
"default": "./fesm2022/angular-three-cannon-services.mjs"
|
|
75
65
|
}
|
|
76
66
|
}
|
|
77
67
|
}
|