angular-three-cannon 2.0.0-beta.9 → 2.1.0
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 +71 -4
- package/body/README.md +49 -0
- package/body/index.d.ts +2 -0
- package/body/lib/body.d.ts +17 -0
- package/body/lib/types.d.ts +49 -0
- package/body/lib/utils.d.ts +50 -0
- package/constraint/README.md +47 -0
- package/constraint/index.d.ts +1 -0
- package/constraint/lib/constraint.d.ts +32 -0
- package/debug/README.md +48 -2
- package/debug/lib/debug.d.ts +15 -33
- package/esm2022/body/angular-three-cannon-body.mjs +5 -0
- package/esm2022/body/index.mjs +2 -0
- package/esm2022/body/lib/body.mjs +108 -0
- package/esm2022/body/lib/types.mjs +2 -0
- package/esm2022/body/lib/utils.mjs +193 -0
- package/esm2022/constraint/angular-three-cannon-constraint.mjs +5 -0
- package/esm2022/constraint/index.mjs +2 -0
- package/esm2022/constraint/lib/constraint.mjs +67 -0
- package/esm2022/debug/lib/debug.mjs +56 -71
- package/esm2022/lib/physics.mjs +79 -176
- package/fesm2022/angular-three-cannon-body.mjs +306 -0
- package/fesm2022/angular-three-cannon-body.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-constraint.mjs +74 -0
- package/fesm2022/angular-three-cannon-constraint.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-debug.mjs +56 -71
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -1
- package/fesm2022/angular-three-cannon.mjs +79 -176
- package/fesm2022/angular-three-cannon.mjs.map +1 -1
- package/lib/physics.d.ts +31 -49
- package/package.json +25 -15
- package/esm2022/services/angular-three-cannon-services.mjs +0 -5
- package/esm2022/services/index.mjs +0 -7
- package/esm2022/services/lib/body.mjs +0 -293
- package/esm2022/services/lib/constraints.mjs +0 -58
- package/esm2022/services/lib/contact-material.mjs +0 -20
- package/esm2022/services/lib/ray.mjs +0 -30
- package/esm2022/services/lib/raycast-vehicle.mjs +0 -68
- package/esm2022/services/lib/spring.mjs +0 -31
- package/fesm2022/angular-three-cannon-services.mjs +0 -490
- package/fesm2022/angular-three-cannon-services.mjs.map +0 -1
- package/services/README.md +0 -3
- package/services/index.d.ts +0 -6
- package/services/lib/body.d.ts +0 -60
- package/services/lib/constraints.d.ts +0 -31
- package/services/lib/contact-material.d.ts +0 -9
- package/services/lib/ray.d.ts +0 -12
- package/services/lib/raycast-vehicle.d.ts +0 -30
- package/services/lib/spring.d.ts +0 -19
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-cannon-services.mjs","sources":["../../../../libs/cannon/services/src/lib/body.ts","../../../../libs/cannon/services/src/lib/constraints.ts","../../../../libs/cannon/services/src/lib/contact-material.ts","../../../../libs/cannon/services/src/lib/ray.ts","../../../../libs/cannon/services/src/lib/raycast-vehicle.ts","../../../../libs/cannon/services/src/lib/spring.ts","../../../../libs/cannon/services/src/angular-three-cannon-services.ts"],"sourcesContent":["import { effect, runInInjectionContext, type ElementRef, type Injector } from '@angular/core';\nimport type {\n\tAtomicName,\n\tAtomicProps,\n\tBodyProps,\n\tBodyShapeType,\n\tBoxProps,\n\tCannonWorkerAPI,\n\tCompoundBodyProps,\n\tConvexPolyhedronArgs,\n\tConvexPolyhedronProps,\n\tCylinderProps,\n\tHeightfieldProps,\n\tParticleProps,\n\tPlaneProps,\n\tPropValue,\n\tQuad,\n\tSetOpName,\n\tSphereArgs,\n\tSphereProps,\n\tSubscriptionName,\n\tSubscriptionTarget,\n\tSubscriptions,\n\tTrimeshProps,\n\tTriplet,\n\tVectorName,\n} from '@pmndrs/cannon-worker-api';\nimport { assertInjectionContext, injectNgtRef, type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';\nimport { injectNgtcPhysicsApi, type NgtcCannonEvents } from 'angular-three-cannon';\nimport { injectNgtcDebugApi } from 'angular-three-cannon/debug';\nimport * as THREE from 'three';\n\nexport type NgtcAtomicApi<K extends AtomicName> = {\n\tset: (value: AtomicProps[K]) => void;\n\tsubscribe: (callback: (value: AtomicProps[K]) => void) => () => void;\n};\n\nexport type NgtcQuaternionApi = {\n\tcopy: ({ w, x, y, z }: THREE.Quaternion) => void;\n\tset: (x: number, y: number, z: number, w: number) => void;\n\tsubscribe: (callback: (value: Quad) => void) => () => void;\n};\n\nexport type NgtcVectorApi = {\n\tcopy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => void;\n\tset: (x: number, y: number, z: number) => void;\n\tsubscribe: (callback: (value: Triplet) => void) => () => void;\n};\n\nexport type NgtcWorkerApi = {\n\t[K in AtomicName]: NgtcAtomicApi<K>;\n} & {\n\t[K in VectorName]: NgtcVectorApi;\n} & {\n\tapplyForce: (force: Triplet, worldPoint: Triplet) => void;\n\tapplyImpulse: (impulse: Triplet, worldPoint: Triplet) => void;\n\tapplyLocalForce: (force: Triplet, localPoint: Triplet) => void;\n\tapplyLocalImpulse: (impulse: Triplet, localPoint: Triplet) => void;\n\tapplyTorque: (torque: Triplet) => void;\n\tquaternion: NgtcQuaternionApi;\n\trotation: NgtcVectorApi;\n\tscaleOverride: (scale: Triplet) => void;\n\tsleep: () => void;\n\twakeUp: () => void;\n\tremove: () => void;\n};\n\nexport interface NgtcBodyPublicApi extends NgtcWorkerApi {\n\tat: (index: number) => NgtcWorkerApi;\n}\n\nexport interface NgtcBodyReturn<TObject extends THREE.Object3D> {\n\tref: NgtInjectedRef<TObject>;\n\tapi: 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\treturn (str.charAt(0).toUpperCase() + str.slice(1)) as Capitalize<T>;\n}\n\nexport function getUUID(ref: ElementRef<THREE.Object3D>, index?: number): string | null {\n\tconst suffix = index === undefined ? '' : `/${index}`;\n\tif (typeof ref === 'function') return null;\n\treturn 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\treturn (v: Quad) => callback(e.setFromQuaternion(q.fromArray(v)).toArray() as Triplet);\n};\n\nlet incrementingId = 0;\n\nexport function subscribe<T extends SubscriptionName>(\n\tref: ElementRef<THREE.Object3D>,\n\tworker: CannonWorkerAPI,\n\tsubscriptions: Subscriptions,\n\ttype: T,\n\tindex?: number,\n\ttarget: SubscriptionTarget = 'bodies',\n) {\n\treturn (callback: (value: PropValue<T>) => void) => {\n\t\tconst id = incrementingId++;\n\t\tsubscriptions[id] = { [type]: callback };\n\t\tconst uuid = getUUID(ref, index);\n\t\tuuid && worker.subscribe({ props: { id, target, type }, uuid });\n\t\treturn () => {\n\t\t\tdelete subscriptions[id];\n\t\t\tworker.unsubscribe({ props: id });\n\t\t};\n\t};\n}\n\nfunction prepare(object: THREE.Object3D, { position = [0, 0, 0], rotation = [0, 0, 0], userData = {} }: BodyProps) {\n\tobject.userData = userData;\n\tobject.position.set(...position);\n\tobject.rotation.set(...rotation);\n\tobject.updateMatrix();\n}\n\nfunction setupCollision(\n\tevents: NgtcCannonEvents,\n\t{ onCollide, onCollideBegin, onCollideEnd }: Partial<BodyProps>,\n\tuuid: string,\n) {\n\tevents[uuid] = {\n\t\tcollide: onCollide,\n\t\tcollideBegin: onCollideBegin,\n\t\tcollideEnd: onCollideEnd,\n\t};\n}\n\nfunction makeTriplet(v: THREE.Vector3 | Triplet): Triplet {\n\treturn v instanceof THREE.Vector3 ? [v.x, v.y, v.z] : v;\n}\n\nexport interface NgtcBodyOptions<TObject extends THREE.Object3D> {\n\tref?: NgtInjectedRef<TObject>;\n\tdeps?: () => NgtAnyRecord;\n\tinjector?: Injector;\n}\n\nexport function injectPlane<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<PlaneProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Plane', fn, () => [], opts);\n}\n\nexport function injectBox<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<BoxProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\tconst defaultBoxArgs: Triplet = [1, 1, 1];\n\treturn injectBody('Box', fn, (args = defaultBoxArgs): Triplet => args, opts);\n}\n\nexport function injectCylinder<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<CylinderProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Cylinder', fn, (args = [] as []) => args, opts);\n}\n\nexport function injectHeightfield<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<HeightfieldProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Heightfield', fn, (args) => args, opts);\n}\n\nexport function injectParticle<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<ParticleProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Particle', fn, () => [], opts);\n}\nexport function injectSphere<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<SphereProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody(\n\t\t'Sphere',\n\t\tfn,\n\t\t(args: SphereArgs = [1]): SphereArgs => {\n\t\t\tif (!Array.isArray(args)) throw new Error('useSphere args must be an array');\n\t\t\treturn [args[0]];\n\t\t},\n\t\topts,\n\t);\n}\nexport function injectTrimesh<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<TrimeshProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Trimesh', fn, (args) => args, opts);\n}\n\nexport function injectConvexPolyhedron<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<ConvexPolyhedronProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody(\n\t\t'ConvexPolyhedron',\n\t\tfn,\n\t\t([vertices, faces, normals, axes, boundingSphereRadius] = []): ConvexPolyhedronArgs<Triplet> => [\n\t\t\tvertices && vertices.map(makeTriplet),\n\t\t\tfaces,\n\t\t\tnormals && normals.map(makeTriplet),\n\t\t\taxes && axes.map(makeTriplet),\n\t\t\tboundingSphereRadius,\n\t\t],\n\t\topts,\n\t);\n}\nexport function injectCompoundBody<TObject extends THREE.Object3D>(\n\tfn: NgtcGetByIndex<CompoundBodyProps>,\n\topts?: NgtcBodyOptions<TObject>,\n) {\n\treturn injectBody('Compound', fn, (args) => args as unknown[], opts);\n}\n\nfunction injectBody<TBodyProps extends BodyProps, TObject extends THREE.Object3D>(\n\ttype: BodyShapeType,\n\tgetPropsFn: NgtcGetByIndex<TBodyProps>,\n\targsFn: NgtcArgFn<TBodyProps['args']>,\n\t{ ref, injector, deps = () => ({}) }: NgtcBodyOptions<TObject> = {},\n): NgtcBodyReturn<TObject> {\n\tinjector = assertInjectionContext(injectBody, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst bodyRef = ref || injectNgtRef<TObject>();\n\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst debugApi = injectNgtcDebugApi({ optional: true });\n\n\t\tconst { add: debugAdd, remove: debugRemove } = debugApi || {};\n\t\tconst { refs, subscriptions, scaleOverrides, events, bodies } = physicsApi.get();\n\t\tconst worker = physicsApi.select('worker');\n\n\t\teffect((onCleanup) => {\n\t\t\t// register deps\n\t\t\tdeps();\n\n\t\t\tif (!bodyRef.nativeElement) {\n\t\t\t\tbodyRef.nativeElement = new THREE.Object3D() as TObject;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst object = bodyRef.nativeElement;\n\t\t\tconst currentWorker = worker();\n\n\t\t\tif (!currentWorker) return;\n\n\t\t\tconst objectCount =\n\t\t\t\tobject instanceof THREE.InstancedMesh\n\t\t\t\t\t? (object.instanceMatrix.setUsage(THREE.DynamicDrawUsage), object.count)\n\t\t\t\t\t: 1;\n\n\t\t\tconst uuid =\n\t\t\t\tobject instanceof THREE.InstancedMesh\n\t\t\t\t\t? new Array(objectCount).fill(0).map((_, i) => `${object.uuid}/${i}`)\n\t\t\t\t\t: [object.uuid];\n\n\t\t\tconst props: (TBodyProps & { args: unknown })[] =\n\t\t\t\tobject instanceof THREE.InstancedMesh\n\t\t\t\t\t? uuid.map((id, i) => {\n\t\t\t\t\t\t\tconst props = getPropsFn(i);\n\t\t\t\t\t\t\tprepare(temp, props);\n\t\t\t\t\t\t\tobject.setMatrixAt(i, temp.matrix);\n\t\t\t\t\t\t\tobject.instanceMatrix.needsUpdate = true;\n\t\t\t\t\t\t\trefs[id] = object;\n\t\t\t\t\t\t\tdebugAdd?.(id, props, type);\n\t\t\t\t\t\t\tsetupCollision(events, props, id);\n\t\t\t\t\t\t\treturn { ...props, args: argsFn(props.args) };\n\t\t\t\t\t })\n\t\t\t\t\t: uuid.map((id, i) => {\n\t\t\t\t\t\t\tconst props = getPropsFn(i);\n\t\t\t\t\t\t\tprepare(object, props);\n\t\t\t\t\t\t\trefs[id] = object;\n\t\t\t\t\t\t\tdebugAdd?.(id, props, type);\n\t\t\t\t\t\t\tsetupCollision(events, props, id);\n\t\t\t\t\t\t\treturn { ...props, args: argsFn(props.args) };\n\t\t\t\t\t });\n\n\t\t\t// Register on mount, unregister on unmount\n\t\t\tcurrentWorker.addBodies({\n\t\t\t\tprops: props.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => {\n\t\t\t\t\treturn { onCollide: Boolean(onCollide), ...serializableProps };\n\t\t\t\t}),\n\t\t\t\ttype,\n\t\t\t\tuuid,\n\t\t\t});\n\n\t\t\tonCleanup(() => {\n\t\t\t\tuuid.forEach((id) => {\n\t\t\t\t\tdelete refs[id];\n\t\t\t\t\tdebugRemove?.(id);\n\t\t\t\t\tdelete events[id];\n\t\t\t\t});\n\t\t\t\tcurrentWorker.removeBodies({ uuid });\n\t\t\t});\n\t\t});\n\n\t\tconst api = (() => {\n\t\t\tconst makeAtomic = <T extends AtomicName>(type: T, index?: number) => {\n\t\t\t\tconst op: SetOpName<T> = `set${capitalize(type)}`;\n\n\t\t\t\treturn {\n\t\t\t\t\tset: (value: PropValue<T>) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid &&\n\t\t\t\t\t\t\tworker()[op]({\n\t\t\t\t\t\t\t\tprops: value,\n\t\t\t\t\t\t\t\tuuid,\n\t\t\t\t\t\t\t} as never);\n\t\t\t\t\t},\n\t\t\t\t\tsubscribe: subscribe(bodyRef, worker(), subscriptions, type, index),\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst makeQuaternion = (index?: number) => {\n\t\t\t\tconst type = 'quaternion';\n\t\t\t\treturn {\n\t\t\t\t\tcopy: ({ w, x, y, z }: THREE.Quaternion) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().setQuaternion({ props: [x, y, z, w], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tset: (x: number, y: number, z: number, w: number) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().setQuaternion({ props: [x, y, z, w], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tsubscribe: subscribe(bodyRef, worker(), subscriptions, type, index),\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst makeRotation = (index?: number) => {\n\t\t\t\treturn {\n\t\t\t\t\tcopy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().setRotation({ props: [x, y, z], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tset: (x: number, y: number, z: number) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().setRotation({ props: [x, y, z], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tsubscribe: (callback: (value: Triplet) => void) => {\n\t\t\t\t\t\tconst id = incrementingId++;\n\t\t\t\t\t\tconst target = 'bodies';\n\t\t\t\t\t\tconst type = 'quaternion';\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\n\t\t\t\t\t\tsubscriptions[id] = { [type]: quaternionToRotation(callback) };\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().subscribe({ props: { id, target, type }, uuid });\n\t\t\t\t\t\treturn () => {\n\t\t\t\t\t\t\tdelete subscriptions[id];\n\t\t\t\t\t\t\tworker().unsubscribe({ props: id });\n\t\t\t\t\t\t};\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst makeVec = (type: VectorName, index?: number) => {\n\t\t\t\tconst op: SetOpName<VectorName> = `set${capitalize(type)}`;\n\t\t\t\treturn {\n\t\t\t\t\tcopy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker()[op]({ props: [x, y, z], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tset: (x: number, y: number, z: number) => {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker()[op]({ props: [x, y, z], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tsubscribe: subscribe(bodyRef, worker(), subscriptions, type, index),\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tconst makeRemove = (index?: number) => {\n\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\treturn () => {\n\t\t\t\t\tif (uuid) worker().removeBodies({ uuid: [uuid] });\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tfunction makeApi(index?: number): NgtcWorkerApi {\n\t\t\t\treturn {\n\t\t\t\t\tallowSleep: makeAtomic('allowSleep', index),\n\t\t\t\t\tangularDamping: makeAtomic('angularDamping', index),\n\t\t\t\t\tangularFactor: makeVec('angularFactor', index),\n\t\t\t\t\tangularVelocity: makeVec('angularVelocity', index),\n\t\t\t\t\tapplyForce(force: Triplet, worldPoint: Triplet) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().applyForce({ props: [force, worldPoint], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tapplyImpulse(impulse: Triplet, worldPoint: Triplet) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().applyImpulse({ props: [impulse, worldPoint], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tapplyLocalForce(force: Triplet, localPoint: Triplet) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().applyLocalForce({ props: [force, localPoint], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tapplyLocalImpulse(impulse: Triplet, localPoint: Triplet) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid &&\n\t\t\t\t\t\t\tbodies[uuid] != null &&\n\t\t\t\t\t\t\tworker().applyLocalImpulse({ props: [impulse, localPoint], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tapplyTorque(torque: Triplet) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().applyTorque({ props: [torque], uuid });\n\t\t\t\t\t},\n\t\t\t\t\tcollisionFilterGroup: makeAtomic('collisionFilterGroup', index),\n\t\t\t\t\tcollisionFilterMask: makeAtomic('collisionFilterMask', index),\n\t\t\t\t\tcollisionResponse: makeAtomic('collisionResponse', index),\n\t\t\t\t\tfixedRotation: makeAtomic('fixedRotation', index),\n\t\t\t\t\tisTrigger: makeAtomic('isTrigger', index),\n\t\t\t\t\tlinearDamping: makeAtomic('linearDamping', index),\n\t\t\t\t\tlinearFactor: makeVec('linearFactor', index),\n\t\t\t\t\tmass: makeAtomic('mass', index),\n\t\t\t\t\tmaterial: makeAtomic('material', index),\n\t\t\t\t\tposition: makeVec('position', index),\n\t\t\t\t\tquaternion: makeQuaternion(index),\n\t\t\t\t\trotation: makeRotation(index),\n\t\t\t\t\tscaleOverride(scale) {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tif (uuid) scaleOverrides[uuid] = new THREE.Vector3(...scale);\n\t\t\t\t\t},\n\t\t\t\t\tsleep() {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().sleep({ uuid });\n\t\t\t\t\t},\n\t\t\t\t\tsleepSpeedLimit: makeAtomic('sleepSpeedLimit', index),\n\t\t\t\t\tsleepTimeLimit: makeAtomic('sleepTimeLimit', index),\n\t\t\t\t\tuserData: makeAtomic('userData', index),\n\t\t\t\t\tvelocity: makeVec('velocity', index),\n\t\t\t\t\tremove: makeRemove(index),\n\t\t\t\t\twakeUp() {\n\t\t\t\t\t\tconst uuid = getUUID(bodyRef, index);\n\t\t\t\t\t\tuuid && bodies[uuid] != null && worker().wakeUp({ uuid });\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst cache: { [index: number]: NgtcWorkerApi } = {};\n\t\t\treturn {\n\t\t\t\t...makeApi(undefined),\n\t\t\t\tat: (index: number) => cache[index] || (cache[index] = makeApi(index)),\n\t\t\t};\n\t\t})();\n\n\t\treturn { ref: bodyRef, api };\n\t});\n}\n","import { effect, runInInjectionContext, untracked, type Injector } from '@angular/core';\nimport type {\n\tConstraintOptns,\n\tConstraintTypes,\n\tHingeConstraintOpts,\n\tPointToPointConstraintOpts,\n} from '@pmndrs/cannon-worker-api';\nimport {\n\tassertInjectionContext,\n\tinjectNgtRef,\n\tis,\n\tmakeId,\n\ttype NgtAnyRecord,\n\ttype NgtInjectedRef,\n} from 'angular-three';\nimport { injectNgtcPhysicsApi } from 'angular-three-cannon';\nimport * as THREE from 'three';\n\nexport type NgtcConstraintApi = {\n\tdisable: () => void;\n\tenable: () => void;\n\tremove: () => void;\n};\n\nexport type NgtcHingeConstraintApi = NgtcConstraintApi & {\n\tdisableMotor: () => void;\n\tenableMotor: () => void;\n\tsetMotorMaxForce: (value: number) => void;\n\tsetMotorSpeed: (value: number) => void;\n};\n\nexport type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes\n\t? NgtcConstraintApi\n\t: NgtcHingeConstraintApi;\n\nexport type NgtcConstraintReturn<\n\tT extends 'Hinge' | ConstraintTypes,\n\tTObjectA extends THREE.Object3D = THREE.Object3D,\n\tTObjectB extends THREE.Object3D = THREE.Object3D,\n> = {\n\tbodyA: NgtInjectedRef<TObjectA>;\n\tbodyB: NgtInjectedRef<TObjectB>;\n\tapi: NgtcConstraintORHingeApi<T>;\n};\n\nexport type NgtcConstraintOptions<\n\tTConstraintType extends 'Hinge' | ConstraintTypes,\n\tTOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge'\n\t\t? HingeConstraintOpts\n\t\t: ConstraintOptns,\n> = { injector?: Injector; deps?: () => NgtAnyRecord; opts?: () => TOptions };\n\nexport function usePointToPointConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\topts?: NgtcConstraintOptions<'PointToPoint', PointToPointConstraintOpts>,\n) {\n\treturn injectConstraint('PointToPoint', bodyA, bodyB, opts);\n}\nexport function useConeTwistConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\topts?: NgtcConstraintOptions<'ConeTwist', PointToPointConstraintOpts>,\n) {\n\treturn injectConstraint('ConeTwist', bodyA, bodyB, opts);\n}\nexport function useDistanceConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\topts?: NgtcConstraintOptions<'Distance', PointToPointConstraintOpts>,\n) {\n\treturn injectConstraint('Distance', bodyA, bodyB, opts);\n}\nexport function useHingeConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\topts?: NgtcConstraintOptions<'Hinge', PointToPointConstraintOpts>,\n) {\n\treturn injectConstraint('Hinge', bodyA, bodyB, opts);\n}\nexport function useLockConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\topts?: NgtcConstraintOptions<'Lock', PointToPointConstraintOpts>,\n) {\n\treturn injectConstraint('Lock', bodyA, bodyB, opts);\n}\n\nfunction injectConstraint<\n\tTConstraintType extends 'Hinge' | ConstraintTypes,\n\tA extends THREE.Object3D,\n\tB extends THREE.Object3D,\n\tTOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge'\n\t\t? HingeConstraintOpts\n\t\t: ConstraintOptns,\n>(\n\ttype: TConstraintType,\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\t{\n\t\tinjector,\n\t\tdeps = () => ({}),\n\t\topts = () => ({}) as TOptions,\n\t}: NgtcConstraintOptions<TConstraintType, TOptions> = {},\n): NgtcConstraintReturn<TConstraintType, A, B> {\n\tinjector = assertInjectionContext(injectConstraint, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst worker = physicsApi.select('worker');\n\n\t\tconst uuid = makeId();\n\n\t\tconst bodyARef = is.ref(bodyA) ? bodyA : injectNgtRef(bodyA);\n\t\tconst bodyBRef = is.ref(bodyB) ? bodyB : injectNgtRef(bodyB);\n\n\t\teffect((onCleanup) => {\n\t\t\tdeps();\n\t\t\tif (bodyARef.nativeElement && bodyBRef.nativeElement) {\n\t\t\t\tworker().addConstraint({\n\t\t\t\t\tprops: [bodyARef.untracked.uuid, bodyBRef.untracked.uuid, untracked(opts)],\n\t\t\t\t\ttype,\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t\tonCleanup(() => worker().removeConstraint({ uuid }));\n\t\t\t}\n\t\t});\n\n\t\tconst api = (() => {\n\t\t\tconst enableDisable = {\n\t\t\t\tdisable: () => worker().disableConstraint({ uuid }),\n\t\t\t\tenable: () => worker().enableConstraint({ uuid }),\n\t\t\t\tremove: () => worker().removeConstraint({ uuid }),\n\t\t\t};\n\n\t\t\tif (type === 'Hinge') {\n\t\t\t\treturn {\n\t\t\t\t\t...enableDisable,\n\t\t\t\t\tdisableMotor: () => worker().disableConstraintMotor({ uuid }),\n\t\t\t\t\tenableMotor: () => worker().enableConstraintMotor({ uuid }),\n\t\t\t\t\tsetMotorMaxForce: (value: number) => worker().setConstraintMotorMaxForce({ props: value, uuid }),\n\t\t\t\t\tsetMotorSpeed: (value: number) => worker().setConstraintMotorSpeed({ props: value, uuid }),\n\t\t\t\t} as NgtcConstraintORHingeApi<TConstraintType>;\n\t\t\t}\n\n\t\t\treturn enableDisable as NgtcConstraintORHingeApi<TConstraintType>;\n\t\t})();\n\n\t\treturn { bodyA: bodyARef, bodyB: bodyBRef, api };\n\t});\n}\n","import { effect, runInInjectionContext, untracked, type Injector } from '@angular/core';\nimport type { ContactMaterialOptions, MaterialOptions } from '@pmndrs/cannon-worker-api';\nimport { assertInjectionContext, makeId, type NgtAnyRecord } from 'angular-three';\nimport { injectNgtcPhysicsApi } from 'angular-three-cannon';\n\nexport function injectContactMaterial(\n\tmaterialB: MaterialOptions,\n\tmaterialA: MaterialOptions,\n\t{\n\t\topts,\n\t\tdeps = () => ({}),\n\t\tinjector,\n\t}: { opts: () => ContactMaterialOptions; deps?: () => NgtAnyRecord; injector?: Injector },\n): void {\n\tinjector = assertInjectionContext(injectContactMaterial, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst worker = physicsApi.select('worker');\n\t\tconst uuid = makeId();\n\t\teffect((onCleanup) => {\n\t\t\tdeps();\n\t\t\tworker().addContactMaterial({\n\t\t\t\tprops: [materialA, materialB, untracked(opts)],\n\t\t\t\tuuid,\n\t\t\t});\n\t\t\tonCleanup(() => worker().removeContactMaterial({ uuid }));\n\t\t});\n\t});\n}\n","import { effect, runInInjectionContext, untracked, type Injector } from '@angular/core';\nimport type { RayMode, RayOptions, RayhitEvent } from '@pmndrs/cannon-worker-api';\nimport { assertInjectionContext, makeId, type NgtAnyRecord } from 'angular-three';\nimport { injectNgtcPhysicsApi } from 'angular-three-cannon';\n\nexport type NgtcRayOptions = {\n\toptions: () => RayOptions;\n\tcallback: (e: RayhitEvent) => void;\n\tinjector?: Injector;\n\tdeps?: () => NgtAnyRecord;\n};\n\nexport function injectRaycastClosest(opts: NgtcRayOptions) {\n\treturn injectRay('Closest', opts);\n}\n\nexport function injectRaycastAny(opts: NgtcRayOptions) {\n\treturn injectRay('Any', opts);\n}\n\nexport function useRaycastAll(opts: NgtcRayOptions) {\n\treturn injectRay('All', opts);\n}\n\nfunction injectRay(mode: RayMode, { options, callback, deps = () => ({}), injector }: NgtcRayOptions) {\n\tinjector = assertInjectionContext(injectRay, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst [worker, events] = [physicsApi.select('worker'), physicsApi.get('events')];\n\t\tconst uuid = makeId();\n\n\t\teffect((onCleanup) => {\n\t\t\tdeps();\n\t\t\tevents[uuid] = { rayhit: callback };\n\t\t\tworker().addRay({ props: { ...untracked(options), mode }, uuid });\n\t\t\tonCleanup(() => {\n\t\t\t\tworker().removeRay({ uuid });\n\t\t\t\tdelete events[uuid];\n\t\t\t});\n\t\t});\n\t});\n}\n","import { effect, runInInjectionContext, untracked, type Injector } from '@angular/core';\nimport type { WheelInfoOptions } from '@pmndrs/cannon-worker-api';\nimport { assertInjectionContext, injectNgtRef, type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';\nimport { injectNgtcPhysicsApi } from 'angular-three-cannon';\nimport * as THREE from 'three';\nimport { getUUID, subscribe } from './body';\n\nfunction isString(v: unknown): v is string {\n\treturn typeof v === 'string';\n}\n\nexport type NgtcRaycastVehicleState = {\n\tchassisBody: NgtInjectedRef<THREE.Object3D>;\n\twheelInfos: WheelInfoOptions[];\n\twheels: Array<NgtInjectedRef<THREE.Object3D>>;\n\tindexForwardAxis?: number;\n\tindexRightAxis?: number;\n\tindexUpAxis?: number;\n};\n\nexport type NgtcRaycastVehiclePublicApi = {\n\tapplyEngineForce: (value: number, wheelIndex: number) => void;\n\tsetBrake: (brake: number, wheelIndex: number) => void;\n\tsetSteeringValue: (value: number, wheelIndex: number) => void;\n\tsliding: { subscribe: (callback: (sliding: boolean) => void) => void };\n\tremove: () => void;\n};\n\nexport type NgtcRaycastVehicleReturn<TObject extends THREE.Object3D = THREE.Object3D> = {\n\tref: NgtInjectedRef<TObject>;\n\tapi: NgtcRaycastVehiclePublicApi;\n};\n\nexport function injectRaycastVehicle<TObject extends THREE.Object3D = THREE.Object3D>(\n\tfn: () => NgtcRaycastVehicleState,\n\t{\n\t\tref,\n\t\tinjector,\n\t\tdeps = () => ({}),\n\t}: { ref?: NgtInjectedRef<TObject>; injector?: Injector; deps?: () => NgtAnyRecord } = {},\n): NgtcRaycastVehicleReturn<TObject> {\n\tinjector = assertInjectionContext(injectRaycastVehicle, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst [worker, subscriptions] = [physicsApi.select('worker'), physicsApi.get('subscriptions')];\n\n\t\tconst instanceRef = ref || injectNgtRef<TObject>();\n\n\t\teffect((onCleanup) => {\n\t\t\tdeps();\n\t\t\tif (!instanceRef.nativeElement) {\n\t\t\t\tinstanceRef.nativeElement = new THREE.Object3D() as TObject;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst currentWorker = worker();\n\t\t\tconst uuid: string = instanceRef.nativeElement.uuid;\n\t\t\tconst {\n\t\t\t\tchassisBody,\n\t\t\t\tindexForwardAxis = 2,\n\t\t\t\tindexRightAxis = 0,\n\t\t\t\tindexUpAxis = 1,\n\t\t\t\twheelInfos,\n\t\t\t\twheels,\n\t\t\t} = untracked(fn);\n\n\t\t\tconst chassisBodyUUID = getUUID(chassisBody);\n\t\t\tconst wheelUUIDs = wheels.map((ref) => getUUID(ref));\n\n\t\t\tif (!chassisBodyUUID || !wheelUUIDs.every(isString)) return;\n\n\t\t\tcurrentWorker.addRaycastVehicle({\n\t\t\t\tprops: [chassisBodyUUID, wheelUUIDs, wheelInfos, indexForwardAxis, indexRightAxis, indexUpAxis],\n\t\t\t\tuuid,\n\t\t\t});\n\t\t\tonCleanup(() => {\n\t\t\t\tcurrentWorker.removeRaycastVehicle({ uuid });\n\t\t\t});\n\t\t});\n\n\t\tconst api = (() => ({\n\t\t\tapplyEngineForce(value: number, wheelIndex: number) {\n\t\t\t\tconst uuid = getUUID(instanceRef);\n\t\t\t\tuuid &&\n\t\t\t\t\tworker().applyRaycastVehicleEngineForce({\n\t\t\t\t\t\tprops: [value, wheelIndex],\n\t\t\t\t\t\tuuid,\n\t\t\t\t\t});\n\t\t\t},\n\t\t\tsetBrake(brake: number, wheelIndex: number) {\n\t\t\t\tconst uuid = getUUID(instanceRef);\n\t\t\t\tuuid && worker().setRaycastVehicleBrake({ props: [brake, wheelIndex], uuid });\n\t\t\t},\n\t\t\tsetSteeringValue(value: number, wheelIndex: number) {\n\t\t\t\tconst uuid = getUUID(instanceRef);\n\t\t\t\tuuid &&\n\t\t\t\t\tworker().setRaycastVehicleSteeringValue({\n\t\t\t\t\t\tprops: [value, wheelIndex],\n\t\t\t\t\t\tuuid,\n\t\t\t\t\t});\n\t\t\t},\n\t\t\tsliding: {\n\t\t\t\tsubscribe: subscribe(instanceRef, worker(), subscriptions, 'sliding', undefined, 'vehicles'),\n\t\t\t},\n\n\t\t\tremove: () => {\n\t\t\t\tconst uuid = getUUID(instanceRef);\n\t\t\t\tuuid && worker().removeRaycastVehicle({ uuid });\n\t\t\t},\n\t\t}))();\n\n\t\treturn { ref: instanceRef, api };\n\t});\n}\n","import { effect, runInInjectionContext, untracked, type Injector } from '@angular/core';\nimport type { SpringOptns } from '@pmndrs/cannon-worker-api';\nimport {\n\tassertInjectionContext,\n\tinjectNgtRef,\n\tis,\n\tmakeId,\n\ttype NgtAnyRecord,\n\ttype NgtInjectedRef,\n} from 'angular-three';\nimport { injectNgtcPhysicsApi } from 'angular-three-cannon';\n\nexport type NgtcSpringApi = {\n\tsetDamping: (value: number) => void;\n\tsetRestLength: (value: number) => void;\n\tsetStiffness: (value: number) => void;\n\tremove: () => void;\n};\n\nexport type NgtcSpringReturn<\n\tTObjectA extends THREE.Object3D = THREE.Object3D,\n\tTObjectB extends THREE.Object3D = THREE.Object3D,\n> = {\n\tbodyA: NgtInjectedRef<TObjectA>;\n\tbodyB: NgtInjectedRef<TObjectB>;\n\tapi: NgtcSpringApi;\n};\n\nexport function injectSpring<A extends THREE.Object3D, B extends THREE.Object3D>(\n\tbodyA: NgtInjectedRef<A> | A,\n\tbodyB: NgtInjectedRef<B> | B,\n\t{\n\t\tinjector,\n\t\topts = () => ({}),\n\t\tdeps = () => ({}),\n\t}: { injector?: Injector; deps?: () => NgtAnyRecord; opts?: () => SpringOptns } = {},\n): NgtcSpringReturn<A, B> {\n\tinjector = assertInjectionContext(injectSpring, injector);\n\treturn runInInjectionContext(injector, () => {\n\t\tconst physicsApi = injectNgtcPhysicsApi();\n\t\tconst worker = physicsApi.select('worker');\n\n\t\tconst uuid = makeId();\n\n\t\tconst bodyARef = is.ref(bodyA) ? bodyA : injectNgtRef(bodyA);\n\t\tconst bodyBRef = is.ref(bodyB) ? bodyB : injectNgtRef(bodyB);\n\n\t\teffect((onCleanup) => {\n\t\t\tdeps();\n\t\t\tif (bodyARef.nativeElement && bodyBRef.nativeElement) {\n\t\t\t\tworker().addSpring({\n\t\t\t\t\tprops: [bodyARef.nativeElement.uuid, bodyBRef.nativeElement.uuid, untracked(opts)],\n\t\t\t\t\tuuid,\n\t\t\t\t});\n\t\t\t\tonCleanup(() => worker().removeSpring({ uuid }));\n\t\t\t}\n\t\t});\n\n\t\tconst api = (() => ({\n\t\t\tsetDamping: (value: number) => worker().setSpringDamping({ props: value, uuid }),\n\t\t\tsetRestLength: (value: number) => worker().setSpringRestLength({ props: value, uuid }),\n\t\t\tsetStiffness: (value: number) => worker().setSpringStiffness({ props: value, uuid }),\n\t\t\tremove: () => worker().removeSpring({ uuid }),\n\t\t}))();\n\n\t\treturn { bodyA: bodyARef, bodyB: bodyBRef, api };\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/services/README.md
DELETED
package/services/index.d.ts
DELETED
package/services/lib/body.d.ts
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { type ElementRef, type Injector } from '@angular/core';
|
|
2
|
-
import type { AtomicName, AtomicProps, BodyProps, BoxProps, CannonWorkerAPI, CompoundBodyProps, ConvexPolyhedronProps, CylinderProps, HeightfieldProps, ParticleProps, PlaneProps, PropValue, Quad, SphereProps, SubscriptionName, SubscriptionTarget, Subscriptions, TrimeshProps, Triplet, VectorName } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import { type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
export type NgtcAtomicApi<K extends AtomicName> = {
|
|
6
|
-
set: (value: AtomicProps[K]) => void;
|
|
7
|
-
subscribe: (callback: (value: AtomicProps[K]) => void) => () => void;
|
|
8
|
-
};
|
|
9
|
-
export type NgtcQuaternionApi = {
|
|
10
|
-
copy: ({ w, x, y, z }: THREE.Quaternion) => void;
|
|
11
|
-
set: (x: number, y: number, z: number, w: number) => void;
|
|
12
|
-
subscribe: (callback: (value: Quad) => void) => () => void;
|
|
13
|
-
};
|
|
14
|
-
export type NgtcVectorApi = {
|
|
15
|
-
copy: ({ x, y, z }: THREE.Vector3 | THREE.Euler) => void;
|
|
16
|
-
set: (x: number, y: number, z: number) => void;
|
|
17
|
-
subscribe: (callback: (value: Triplet) => void) => () => void;
|
|
18
|
-
};
|
|
19
|
-
export type NgtcWorkerApi = {
|
|
20
|
-
[K in AtomicName]: NgtcAtomicApi<K>;
|
|
21
|
-
} & {
|
|
22
|
-
[K in VectorName]: NgtcVectorApi;
|
|
23
|
-
} & {
|
|
24
|
-
applyForce: (force: Triplet, worldPoint: Triplet) => void;
|
|
25
|
-
applyImpulse: (impulse: Triplet, worldPoint: Triplet) => void;
|
|
26
|
-
applyLocalForce: (force: Triplet, localPoint: Triplet) => void;
|
|
27
|
-
applyLocalImpulse: (impulse: Triplet, localPoint: Triplet) => void;
|
|
28
|
-
applyTorque: (torque: Triplet) => void;
|
|
29
|
-
quaternion: NgtcQuaternionApi;
|
|
30
|
-
rotation: NgtcVectorApi;
|
|
31
|
-
scaleOverride: (scale: Triplet) => void;
|
|
32
|
-
sleep: () => void;
|
|
33
|
-
wakeUp: () => void;
|
|
34
|
-
remove: () => void;
|
|
35
|
-
};
|
|
36
|
-
export interface NgtcBodyPublicApi extends NgtcWorkerApi {
|
|
37
|
-
at: (index: number) => NgtcWorkerApi;
|
|
38
|
-
}
|
|
39
|
-
export interface NgtcBodyReturn<TObject extends THREE.Object3D> {
|
|
40
|
-
ref: NgtInjectedRef<TObject>;
|
|
41
|
-
api: NgtcBodyPublicApi;
|
|
42
|
-
}
|
|
43
|
-
export type NgtcGetByIndex<T extends BodyProps> = (index: number) => T;
|
|
44
|
-
export type NgtcArgFn<T> = (args: T) => unknown[];
|
|
45
|
-
export declare function getUUID(ref: ElementRef<THREE.Object3D>, index?: number): string | null;
|
|
46
|
-
export declare function subscribe<T extends SubscriptionName>(ref: ElementRef<THREE.Object3D>, worker: CannonWorkerAPI, subscriptions: Subscriptions, type: T, index?: number, target?: SubscriptionTarget): (callback: (value: PropValue<T>) => void) => () => void;
|
|
47
|
-
export interface NgtcBodyOptions<TObject extends THREE.Object3D> {
|
|
48
|
-
ref?: NgtInjectedRef<TObject>;
|
|
49
|
-
deps?: () => NgtAnyRecord;
|
|
50
|
-
injector?: Injector;
|
|
51
|
-
}
|
|
52
|
-
export declare function injectPlane<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<PlaneProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
53
|
-
export declare function injectBox<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<BoxProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
54
|
-
export declare function injectCylinder<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<CylinderProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
55
|
-
export declare function injectHeightfield<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<HeightfieldProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
56
|
-
export declare function injectParticle<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<ParticleProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
57
|
-
export declare function injectSphere<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<SphereProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
58
|
-
export declare function injectTrimesh<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<TrimeshProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
59
|
-
export declare function injectConvexPolyhedron<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<ConvexPolyhedronProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
60
|
-
export declare function injectCompoundBody<TObject extends THREE.Object3D>(fn: NgtcGetByIndex<CompoundBodyProps>, opts?: NgtcBodyOptions<TObject>): NgtcBodyReturn<TObject>;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { type Injector } from '@angular/core';
|
|
2
|
-
import type { ConstraintOptns, ConstraintTypes, HingeConstraintOpts, PointToPointConstraintOpts } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import { type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
export type NgtcConstraintApi = {
|
|
6
|
-
disable: () => void;
|
|
7
|
-
enable: () => void;
|
|
8
|
-
remove: () => void;
|
|
9
|
-
};
|
|
10
|
-
export type NgtcHingeConstraintApi = NgtcConstraintApi & {
|
|
11
|
-
disableMotor: () => void;
|
|
12
|
-
enableMotor: () => void;
|
|
13
|
-
setMotorMaxForce: (value: number) => void;
|
|
14
|
-
setMotorSpeed: (value: number) => void;
|
|
15
|
-
};
|
|
16
|
-
export type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes ? NgtcConstraintApi : NgtcHingeConstraintApi;
|
|
17
|
-
export type NgtcConstraintReturn<T extends 'Hinge' | ConstraintTypes, TObjectA extends THREE.Object3D = THREE.Object3D, TObjectB extends THREE.Object3D = THREE.Object3D> = {
|
|
18
|
-
bodyA: NgtInjectedRef<TObjectA>;
|
|
19
|
-
bodyB: NgtInjectedRef<TObjectB>;
|
|
20
|
-
api: NgtcConstraintORHingeApi<T>;
|
|
21
|
-
};
|
|
22
|
-
export type NgtcConstraintOptions<TConstraintType extends 'Hinge' | ConstraintTypes, TOptions extends HingeConstraintOpts | ConstraintOptns = TConstraintType extends 'Hinge' ? HingeConstraintOpts : ConstraintOptns> = {
|
|
23
|
-
injector?: Injector;
|
|
24
|
-
deps?: () => NgtAnyRecord;
|
|
25
|
-
opts?: () => TOptions;
|
|
26
|
-
};
|
|
27
|
-
export declare function usePointToPointConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, opts?: NgtcConstraintOptions<'PointToPoint', PointToPointConstraintOpts>): NgtcConstraintReturn<"PointToPoint", A, B>;
|
|
28
|
-
export declare function useConeTwistConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, opts?: NgtcConstraintOptions<'ConeTwist', PointToPointConstraintOpts>): NgtcConstraintReturn<"ConeTwist", A, B>;
|
|
29
|
-
export declare function useDistanceConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, opts?: NgtcConstraintOptions<'Distance', PointToPointConstraintOpts>): NgtcConstraintReturn<"Distance", A, B>;
|
|
30
|
-
export declare function useHingeConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, opts?: NgtcConstraintOptions<'Hinge', PointToPointConstraintOpts>): NgtcConstraintReturn<"Hinge", A, B>;
|
|
31
|
-
export declare function useLockConstraint<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, opts?: NgtcConstraintOptions<'Lock', PointToPointConstraintOpts>): NgtcConstraintReturn<"Lock", A, B>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/// <reference types="cannon-es" />
|
|
2
|
-
import { type Injector } from '@angular/core';
|
|
3
|
-
import type { ContactMaterialOptions, MaterialOptions } from '@pmndrs/cannon-worker-api';
|
|
4
|
-
import { type NgtAnyRecord } from 'angular-three';
|
|
5
|
-
export declare function injectContactMaterial(materialB: MaterialOptions, materialA: MaterialOptions, { opts, deps, injector, }: {
|
|
6
|
-
opts: () => ContactMaterialOptions;
|
|
7
|
-
deps?: () => NgtAnyRecord;
|
|
8
|
-
injector?: Injector;
|
|
9
|
-
}): void;
|
package/services/lib/ray.d.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type Injector } from '@angular/core';
|
|
2
|
-
import type { RayOptions, RayhitEvent } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import { type NgtAnyRecord } from 'angular-three';
|
|
4
|
-
export type NgtcRayOptions = {
|
|
5
|
-
options: () => RayOptions;
|
|
6
|
-
callback: (e: RayhitEvent) => void;
|
|
7
|
-
injector?: Injector;
|
|
8
|
-
deps?: () => NgtAnyRecord;
|
|
9
|
-
};
|
|
10
|
-
export declare function injectRaycastClosest(opts: NgtcRayOptions): void;
|
|
11
|
-
export declare function injectRaycastAny(opts: NgtcRayOptions): void;
|
|
12
|
-
export declare function useRaycastAll(opts: NgtcRayOptions): void;
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { type Injector } from '@angular/core';
|
|
2
|
-
import type { WheelInfoOptions } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import { type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';
|
|
4
|
-
import * as THREE from 'three';
|
|
5
|
-
export type NgtcRaycastVehicleState = {
|
|
6
|
-
chassisBody: NgtInjectedRef<THREE.Object3D>;
|
|
7
|
-
wheelInfos: WheelInfoOptions[];
|
|
8
|
-
wheels: Array<NgtInjectedRef<THREE.Object3D>>;
|
|
9
|
-
indexForwardAxis?: number;
|
|
10
|
-
indexRightAxis?: number;
|
|
11
|
-
indexUpAxis?: number;
|
|
12
|
-
};
|
|
13
|
-
export type NgtcRaycastVehiclePublicApi = {
|
|
14
|
-
applyEngineForce: (value: number, wheelIndex: number) => void;
|
|
15
|
-
setBrake: (brake: number, wheelIndex: number) => void;
|
|
16
|
-
setSteeringValue: (value: number, wheelIndex: number) => void;
|
|
17
|
-
sliding: {
|
|
18
|
-
subscribe: (callback: (sliding: boolean) => void) => void;
|
|
19
|
-
};
|
|
20
|
-
remove: () => void;
|
|
21
|
-
};
|
|
22
|
-
export type NgtcRaycastVehicleReturn<TObject extends THREE.Object3D = THREE.Object3D> = {
|
|
23
|
-
ref: NgtInjectedRef<TObject>;
|
|
24
|
-
api: NgtcRaycastVehiclePublicApi;
|
|
25
|
-
};
|
|
26
|
-
export declare function injectRaycastVehicle<TObject extends THREE.Object3D = THREE.Object3D>(fn: () => NgtcRaycastVehicleState, { ref, injector, deps, }?: {
|
|
27
|
-
ref?: NgtInjectedRef<TObject>;
|
|
28
|
-
injector?: Injector;
|
|
29
|
-
deps?: () => NgtAnyRecord;
|
|
30
|
-
}): NgtcRaycastVehicleReturn<TObject>;
|
package/services/lib/spring.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { type Injector } from '@angular/core';
|
|
2
|
-
import type { SpringOptns } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import { type NgtAnyRecord, type NgtInjectedRef } from 'angular-three';
|
|
4
|
-
export type NgtcSpringApi = {
|
|
5
|
-
setDamping: (value: number) => void;
|
|
6
|
-
setRestLength: (value: number) => void;
|
|
7
|
-
setStiffness: (value: number) => void;
|
|
8
|
-
remove: () => void;
|
|
9
|
-
};
|
|
10
|
-
export type NgtcSpringReturn<TObjectA extends THREE.Object3D = THREE.Object3D, TObjectB extends THREE.Object3D = THREE.Object3D> = {
|
|
11
|
-
bodyA: NgtInjectedRef<TObjectA>;
|
|
12
|
-
bodyB: NgtInjectedRef<TObjectB>;
|
|
13
|
-
api: NgtcSpringApi;
|
|
14
|
-
};
|
|
15
|
-
export declare function injectSpring<A extends THREE.Object3D, B extends THREE.Object3D>(bodyA: NgtInjectedRef<A> | A, bodyB: NgtInjectedRef<B> | B, { injector, opts, deps, }?: {
|
|
16
|
-
injector?: Injector;
|
|
17
|
-
deps?: () => NgtAnyRecord;
|
|
18
|
-
opts?: () => SpringOptns;
|
|
19
|
-
}): NgtcSpringReturn<A, B>;
|