angular-three-cannon 4.0.0-next.110 → 4.0.0-next.112
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/fesm2022/angular-three-cannon-body.mjs +2 -2
- package/fesm2022/angular-three-cannon-body.mjs.map +1 -1
- package/fesm2022/angular-three-cannon-constraint.mjs +3 -3
- package/fesm2022/angular-three-cannon-constraint.mjs.map +1 -1
- package/fesm2022/angular-three-cannon-debug.mjs +4 -4
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -1
- package/fesm2022/angular-three-cannon.mjs +5 -5
- package/fesm2022/angular-three-cannon.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -210,7 +210,7 @@ function body(type, getPropFn, ref, { transformArgs, injector } = {}) {
|
|
|
210
210
|
const transform = transformArgs ?? defaultTransformArgs[type];
|
|
211
211
|
const isRefSignal = isSignal(ref);
|
|
212
212
|
const bodyRef = (isRefSignal ? ref : signal(ref));
|
|
213
|
-
const body = computed(() => resolveRef(bodyRef()));
|
|
213
|
+
const body = computed(() => resolveRef(bodyRef()), ...(ngDevMode ? [{ debugName: "body" }] : []));
|
|
214
214
|
const api = computed(() => {
|
|
215
215
|
const _body = body();
|
|
216
216
|
if (!_body)
|
|
@@ -220,7 +220,7 @@ function body(type, getPropFn, ref, { transformArgs, injector } = {}) {
|
|
|
220
220
|
if (!_worker)
|
|
221
221
|
return null;
|
|
222
222
|
return makeBodyApi(_body, _worker, rest);
|
|
223
|
-
});
|
|
223
|
+
}, ...(ngDevMode ? [{ debugName: "api" }] : []));
|
|
224
224
|
effect((onCleanup) => {
|
|
225
225
|
const currentWorker = physics.worker();
|
|
226
226
|
if (!currentWorker)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-cannon-body.mjs","sources":["../tmp-esm2022/body/lib/utils.js","../tmp-esm2022/body/lib/body.js","../tmp-esm2022/body/angular-three-cannon-body.js"],"sourcesContent":["import { is } from 'angular-three';\nimport * as THREE from 'three';\nfunction capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\nfunction getUUID(body, index) {\n const suffix = index === undefined ? '' : `/${index}`;\n if (typeof body === 'function')\n return null;\n return body && body && `${body.uuid}${suffix}`;\n}\nconst e = new THREE.Euler();\nconst q = new THREE.Quaternion();\nfunction quaternionToRotation(callback) {\n return (v) => callback(e.setFromQuaternion(q.fromArray(v)).toArray());\n}\nlet incrementingId = 0;\nexport function createSubscribe(body, worker, subscriptions, type, index, target = 'bodies') {\n return (callback) => {\n const id = incrementingId++;\n subscriptions[id] = { [type]: callback };\n const uuid = getUUID(body, index);\n uuid && worker.subscribe({ props: { id, target, type }, uuid });\n return () => {\n delete subscriptions[id];\n worker.unsubscribe({ props: id });\n };\n };\n}\nfunction makeTriplet(v) {\n return is.three(v, 'isVector3') ? [v.x, v.y, v.z] : v;\n}\nexport function prepare(object, { position = [0, 0, 0], rotation = [0, 0, 0], userData = {} }) {\n object.userData = userData;\n object.position.set(...position);\n object.rotation.set(...rotation);\n object.updateMatrix();\n}\nexport function setupCollision(events, { onCollide, onCollideBegin, onCollideEnd }, uuid) {\n events[uuid] = { collide: onCollide, collideBegin: onCollideBegin, collideEnd: onCollideEnd };\n}\nexport function makeBodyApi(body, worker, { subscriptions, scaleOverrides }) {\n const makeAtomic = (type, index) => {\n const op = `set${capitalize(type)}`;\n return {\n set: (value) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: value, uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeQuaternion = (index) => {\n const type = 'quaternion';\n return {\n copy: ({ w, x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n set: (x, y, z, w) => {\n const uuid = getUUID(body, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeRotation = (index) => {\n return {\n copy: ({ x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n set: (x, y, z) => {\n const uuid = getUUID(body, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n subscribe: (callback) => {\n const id = incrementingId++;\n const target = 'bodies';\n const type = 'quaternion';\n const uuid = getUUID(body, index);\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 const makeVec = (type, index) => {\n const op = `set${capitalize(type)}`;\n return {\n copy: ({ x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n set: (x, y, z) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeRemove = (index) => {\n const uuid = getUUID(body, index);\n return () => {\n if (uuid)\n worker.removeBodies({ uuid: [uuid] });\n };\n };\n function makeApi(index) {\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, worldPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyForce({ props: [force, worldPoint], uuid });\n },\n applyImpulse(impulse, worldPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyImpulse({ props: [impulse, worldPoint], uuid });\n },\n applyLocalForce(force, localPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyLocalForce({ props: [force, localPoint], uuid });\n },\n applyLocalImpulse(impulse, localPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyLocalImpulse({ props: [impulse, localPoint], uuid });\n },\n applyTorque(torque) {\n const uuid = getUUID(body, 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(body, index);\n if (uuid)\n scaleOverrides[uuid] = new THREE.Vector3(...scale);\n },\n sleep() {\n const uuid = getUUID(body, 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(body, index);\n uuid && worker.wakeUp({ uuid });\n },\n };\n }\n const cache = {};\n return { ...makeApi(), at: (index) => cache[index] || (cache[index] = makeApi(index)) };\n}\nexport const defaultTransformArgs = {\n Plane: (_) => [],\n Box: (args = [1, 1, 1]) => args,\n Trimesh: (args) => args,\n Cylinder: (_ = []) => [],\n Heightfield: (args) => args,\n ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius] = []) => [\n vertices && vertices.map(makeTriplet),\n faces,\n normals && normals.map(makeTriplet),\n axes && axes.map(makeTriplet),\n boundingSphereRadius,\n ],\n Particle: (_) => [],\n Sphere: (args = [1]) => {\n if (!Array.isArray(args))\n throw new Error('Sphere body args must be an array');\n return [args[0]];\n },\n Compound: (args) => args,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHL0IsU0FBUyxVQUFVLENBQW1CLEdBQU07SUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBa0IsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBb0IsRUFBRSxLQUFjO0lBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN0RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM1QyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1QixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUVqQyxTQUFTLG9CQUFvQixDQUFDLFFBQThCO0lBQzNELE9BQU8sQ0FBQyxDQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBYSxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELElBQUksY0FB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ZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEF0b21pY05hbWUsXG5cdEJvZHlQcm9wcyxcblx0Qm94UHJvcHMsXG5cdENhbm5vbldvcmtlckFQSSxcblx0Q29tcG91bmRCb2R5UHJvcHMsXG5cdENvbnZleFBvbHloZWRyb25BcmdzLFxuXHRDeWxpbmRlckFyZ3MsXG5cdEhlaWdodGZpZWxkQXJncyxcblx0UGFydGljbGVQcm9wcyxcblx0UGxhbmVQcm9wcyxcblx0UHJvcFZhbHVlLFxuXHRRdWFkLFxuXHRTZXRPcE5hbWUsXG5cdFNwaGVyZUFyZ3MsXG5cdFN1YnNjcmlwdGlvbk5hbWUsXG5cdFN1YnNjcmlwdGlvblRhcmdldCxcblx0U3Vic2NyaXB0aW9ucyxcblx0VHJpbWVzaEFyZ3MsXG5cdFRyaXBsZXQsXG5cdFZlY3Rvck5hbWUsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaXMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNDYW5ub25FdmVudHMsIE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1dvcmtlckFwaSB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBjYXBpdGFsaXplPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cjogVCk6IENhcGl0YWxpemU8VD4ge1xuXHRyZXR1cm4gKHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSkgYXMgQ2FwaXRhbGl6ZTxUPjtcbn1cblxuZnVuY3Rpb24gZ2V0VVVJRChib2R5OiBUSFJFRS5PYmplY3QzRCwgaW5kZXg/OiBudW1iZXIpIHtcblx0Y29uc3Qgc3VmZml4ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/ICcnIDogYC8ke2luZGV4fWA7XG5cdGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGw7XG5cdHJldHVybiBib2R5ICYmIGJvZHkgJiYgYCR7Ym9keS51dWlkfSR7c3VmZml4fWA7XG59XG5cbmNvbnN0IGUgPSBuZXcgVEhSRUUuRXVsZXIoKTtcbmNvbnN0IHEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuXG5mdW5jdGlvbiBxdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjazogKHY6IFRyaXBsZXQpID0+IHZvaWQpIHtcblx0cmV0dXJuICh2OiBRdWFkKSA9PiBjYWxsYmFjayhlLnNldEZyb21RdWF0ZXJuaW9uKHEuZnJvbUFycmF5KHYpKS50b0FycmF5KCkgYXMgVHJpcGxldCk7XG59XG5cbmxldCBpbmNyZW1lbnRpbmdJZCA9IDA7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Vic2NyaWJlPFQgZXh0ZW5kcyBTdWJzY3JpcHRpb25OYW1lPihcblx0Ym9keTogVEhSRUUuT2JqZWN0M0QsXG5cdHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJLFxuXHRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zLFxuXHR0eXBlOiBULFxuXHRpbmRleD86IG51bWJlcixcblx0dGFyZ2V0OiBTdWJzY3JpcHRpb25UYXJnZXQgPSAnYm9kaWVzJyxcbikge1xuXHRyZXR1cm4gKGNhbGxiYWNrOiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4gdm9pZCkgPT4ge1xuXHRcdGNvbnN0IGlkID0gaW5jcmVtZW50aW5nSWQrKztcblx0XHRzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBjYWxsYmFjayB9O1xuXHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHR1dWlkICYmIHdvcmtlci5zdWJzY3JpYmUoeyBwcm9wczogeyBpZCwgdGFyZ2V0LCB0eXBlIH0sIHV1aWQgfSk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcblx0XHRcdHdvcmtlci51bnN1YnNjcmliZSh7IHByb3BzOiBpZCB9KTtcblx0XHR9O1xuXHR9O1xufVxuXG5mdW5jdGlvbiBtYWtlVHJpcGxldCh2OiBUSFJFRS5WZWN0b3IzIHwgVHJpcGxldCk6IFRyaXBsZXQge1xuXHRyZXR1cm4gaXMudGhyZWU8VEhSRUUuVmVjdG9yMz4odiwgJ2lzVmVjdG9yMycpID8gW3YueCwgdi55LCB2LnpdIDogdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmUoXG5cdG9iamVjdDogVEhSRUUuT2JqZWN0M0QsXG5cdHsgcG9zaXRpb24gPSBbMCwgMCwgMF0sIHJvdGF0aW9uID0gWzAsIDAsIDBdLCB1c2VyRGF0YSA9IHt9IH06IEJvZHlQcm9wcyxcbikge1xuXHRvYmplY3QudXNlckRhdGEgPSB1c2VyRGF0YTtcblx0b2JqZWN0LnBvc2l0aW9uLnNldCguLi5wb3NpdGlvbik7XG5cdG9iamVjdC5yb3RhdGlvbi5zZXQoLi4ucm90YXRpb24pO1xuXHRvYmplY3QudXBkYXRlTWF0cml4KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbGxpc2lvbihcblx0ZXZlbnRzOiBOZ3RjQ2Fubm9uRXZlbnRzLFxuXHR7IG9uQ29sbGlkZSwgb25Db2xsaWRlQmVnaW4sIG9uQ29sbGlkZUVuZCB9OiBQYXJ0aWFsPEJvZHlQcm9wcz4sXG5cdHV1aWQ6IHN0cmluZyxcbikge1xuXHRldmVudHNbdXVpZF0gPSB7IGNvbGxpZGU6IG9uQ29sbGlkZSwgY29sbGlkZUJlZ2luOiBvbkNvbGxpZGVCZWdpbiwgY29sbGlkZUVuZDogb25Db2xsaWRlRW5kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQm9keUFwaShcblx0Ym9keTogVEhSRUUuT2JqZWN0M0QsXG5cdHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJLFxuXHR7IHN1YnNjcmlwdGlvbnMsIHNjYWxlT3ZlcnJpZGVzIH06IFBpY2s8Tmd0Y1BoeXNpY3MsICdzdWJzY3JpcHRpb25zJyB8ICdzY2FsZU92ZXJyaWRlcyc+LFxuKSB7XG5cdGNvbnN0IG1ha2VBdG9taWMgPSA8VCBleHRlbmRzIEF0b21pY05hbWU+KHR5cGU6IFQsIGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3Qgb3A6IFNldE9wTmFtZTxUPiA9IGBzZXQke2NhcGl0YWxpemUodHlwZSl9YDtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRzZXQ6ICh2YWx1ZTogUHJvcFZhbHVlPFQ+KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IHZhbHVlLCB1dWlkIH0gYXMgbmV2ZXIpO1xuXHRcdFx0fSxcblx0XHRcdHN1YnNjcmliZTogY3JlYXRlU3Vic2NyaWJlKGJvZHksIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpLFxuXHRcdH07XG5cdH07XG5cblx0Y29uc3QgbWFrZVF1YXRlcm5pb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcblx0XHRjb25zdCB0eXBlID0gJ3F1YXRlcm5pb24nO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB3LCB4LCB5LCB6IH06IFRIUkVFLlF1YXRlcm5pb24pID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzdWJzY3JpYmU6IGNyZWF0ZVN1YnNjcmliZShib2R5LCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KSxcblx0XHR9O1xuXHR9O1xuXG5cdGNvbnN0IG1ha2VSb3RhdGlvbiA9IChpbmRleD86IG51bWJlcikgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLnNldFJvdGF0aW9uKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2V0Um90YXRpb24oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFRyaXBsZXQpID0+IHZvaWQpID0+IHtcblx0XHRcdFx0Y29uc3QgaWQgPSBpbmNyZW1lbnRpbmdJZCsrO1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSAnYm9kaWVzJztcblx0XHRcdFx0Y29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHRzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBxdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjaykgfTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc3Vic2NyaWJlKHsgcHJvcHM6IHsgaWQsIHRhcmdldCwgdHlwZSB9LCB1dWlkIH0pO1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcblx0XHRcdFx0XHR3b3JrZXIudW5zdWJzY3JpYmUoeyBwcm9wczogaWQgfSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdH07XG5cdH07XG5cdGNvbnN0IG1ha2VWZWMgPSAodHlwZTogVmVjdG9yTmFtZSwgaW5kZXg/OiBudW1iZXIpID0+IHtcblx0XHRjb25zdCBvcDogU2V0T3BOYW1lPFZlY3Rvck5hbWU+ID0gYHNldCR7Y2FwaXRhbGl6ZSh0eXBlKX1gO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c3Vic2NyaWJlOiBjcmVhdGVTdWJzY3JpYmUoYm9keSwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCksXG5cdFx0fTtcblx0fTtcblxuXHRjb25zdCBtYWtlUmVtb3ZlID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRpZiAodXVpZCkgd29ya2VyLnJlbW92ZUJvZGllcyh7IHV1aWQ6IFt1dWlkXSB9KTtcblx0XHR9O1xuXHR9O1xuXG5cdGZ1bmN0aW9uIG1ha2VBcGkoaW5kZXg/OiBudW1iZXIpOiBOZ3RjV29ya2VyQXBpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0YWxsb3dTbGVlcDogbWFrZUF0b21pYygnYWxsb3dTbGVlcCcsIGluZGV4KSxcblx0XHRcdGFuZ3VsYXJEYW1waW5nOiBtYWtlQXRvbWljKCdhbmd1bGFyRGFtcGluZycsIGluZGV4KSxcblx0XHRcdGFuZ3VsYXJGYWN0b3I6IG1ha2VWZWMoJ2FuZ3VsYXJGYWN0b3InLCBpbmRleCksXG5cdFx0XHRhbmd1bGFyVmVsb2NpdHk6IG1ha2VWZWMoJ2FuZ3VsYXJWZWxvY2l0eScsIGluZGV4KSxcblx0XHRcdGFwcGx5Rm9yY2UoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUZvcmNlKHsgcHJvcHM6IFtmb3JjZSwgd29ybGRQb2ludF0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0YXBwbHlJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5TG9jYWxGb3JjZShmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLmFwcGx5TG9jYWxGb3JjZSh7IHByb3BzOiBbZm9yY2UsIGxvY2FsUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5TG9jYWxJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsSW1wdWxzZSh7IHByb3BzOiBbaW1wdWxzZSwgbG9jYWxQb2ludF0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0YXBwbHlUb3JxdWUodG9ycXVlOiBUcmlwbGV0KSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuYXBwbHlUb3JxdWUoeyBwcm9wczogW3RvcnF1ZV0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0Y29sbGlzaW9uRmlsdGVyR3JvdXA6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlckdyb3VwJywgaW5kZXgpLFxuXHRcdFx0Y29sbGlzaW9uRmlsdGVyTWFzazogbWFrZUF0b21pYygnY29sbGlzaW9uRmlsdGVyTWFzaycsIGluZGV4KSxcblx0XHRcdGNvbGxpc2lvblJlc3BvbnNlOiBtYWtlQXRvbWljKCdjb2xsaXNpb25SZXNwb25zZScsIGluZGV4KSxcblx0XHRcdGZpeGVkUm90YXRpb246IG1ha2VBdG9taWMoJ2ZpeGVkUm90YXRpb24nLCBpbmRleCksXG5cdFx0XHRpc1RyaWdnZXI6IG1ha2VBdG9taWMoJ2lzVHJpZ2dlcicsIGluZGV4KSxcblx0XHRcdGxpbmVhckRhbXBpbmc6IG1ha2VBdG9taWMoJ2xpbmVhckRhbXBpbmcnLCBpbmRleCksXG5cdFx0XHRsaW5lYXJGYWN0b3I6IG1ha2VWZWMoJ2xpbmVhckZhY3RvcicsIGluZGV4KSxcblx0XHRcdG1hc3M6IG1ha2VBdG9taWMoJ21hc3MnLCBpbmRleCksXG5cdFx0XHRtYXRlcmlhbDogbWFrZUF0b21pYygnbWF0ZXJpYWwnLCBpbmRleCksXG5cdFx0XHRwb3NpdGlvbjogbWFrZVZlYygncG9zaXRpb24nLCBpbmRleCksXG5cdFx0XHRxdWF0ZXJuaW9uOiBtYWtlUXVhdGVybmlvbihpbmRleCksXG5cdFx0XHRyb3RhdGlvbjogbWFrZVJvdGF0aW9uKGluZGV4KSxcblx0XHRcdHNjYWxlT3ZlcnJpZGUoc2NhbGUpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHRpZiAodXVpZCkgc2NhbGVPdmVycmlkZXNbdXVpZF0gPSBuZXcgVEhSRUUuVmVjdG9yMyguLi5zY2FsZSk7XG5cdFx0XHR9LFxuXHRcdFx0c2xlZXAoKSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2xlZXAoeyB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHNsZWVwU3BlZWRMaW1pdDogbWFrZUF0b21pYygnc2xlZXBTcGVlZExpbWl0JywgaW5kZXgpLFxuXHRcdFx0c2xlZXBUaW1lTGltaXQ6IG1ha2VBdG9taWMoJ3NsZWVwVGltZUxpbWl0JywgaW5kZXgpLFxuXHRcdFx0dXNlckRhdGE6IG1ha2VBdG9taWMoJ3VzZXJEYXRhJywgaW5kZXgpLFxuXHRcdFx0dmVsb2NpdHk6IG1ha2VWZWMoJ3ZlbG9jaXR5JywgaW5kZXgpLFxuXHRcdFx0cmVtb3ZlOiBtYWtlUmVtb3ZlKGluZGV4KSxcblx0XHRcdHdha2VVcCgpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci53YWtlVXAoeyB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cdGNvbnN0IGNhY2hlOiBSZWNvcmQ8bnVtYmVyLCBOZ3RjV29ya2VyQXBpPiA9IHt9O1xuXHRyZXR1cm4geyAuLi5tYWtlQXBpKCksIGF0OiAoaW5kZXg6IG51bWJlcikgPT4gY2FjaGVbaW5kZXhdIHx8IChjYWNoZVtpbmRleF0gPSBtYWtlQXBpKGluZGV4KSkgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1BcmdzID0ge1xuXHRQbGFuZTogKF86IFBsYW5lUHJvcHNbJ2FyZ3MnXSkgPT4gW10sXG5cdEJveDogKGFyZ3M6IEJveFByb3BzWydhcmdzJ10gPSBbMSwgMSwgMV0pID0+IGFyZ3MsXG5cdFRyaW1lc2g6IChhcmdzOiBUcmltZXNoQXJncykgPT4gYXJncyxcblx0Q3lsaW5kZXI6IChfOiBDeWxpbmRlckFyZ3MgPSBbXSkgPT4gW10sXG5cdEhlaWdodGZpZWxkOiAoYXJnczogSGVpZ2h0ZmllbGRBcmdzKSA9PiBhcmdzLFxuXHRDb252ZXhQb2x5aGVkcm9uOiAoW3ZlcnRpY2VzLCBmYWNlcywgbm9ybWFscywgYXhlcywgYm91bmRpbmdTcGhlcmVSYWRpdXNdOiBDb252ZXhQb2x5aGVkcm9uQXJncyA9IFtdKSA9PiBbXG5cdFx0dmVydGljZXMgJiYgdmVydGljZXMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRmYWNlcyxcblx0XHRub3JtYWxzICYmIG5vcm1hbHMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRheGVzICYmIGF4ZXMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRib3VuZGluZ1NwaGVyZVJhZGl1cyxcblx0XSxcblx0UGFydGljbGU6IChfOiBQYXJ0aWNsZVByb3BzWydhcmdzJ10pID0+IFtdLFxuXHRTcGhlcmU6IChhcmdzOiBTcGhlcmVBcmdzID0gWzFdKSA9PiB7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSB0aHJvdyBuZXcgRXJyb3IoJ1NwaGVyZSBib2R5IGFyZ3MgbXVzdCBiZSBhbiBhcnJheScpO1xuXHRcdHJldHVybiBbYXJnc1swXV07XG5cdH0sXG5cdENvbXBvdW5kOiAoYXJnczogQ29tcG91bmRCb2R5UHJvcHNbJ2FyZ3MnXSkgPT4gYXJncyxcbn07XG4iXX0=","import { computed, effect, inject, isSignal, signal, } from '@angular/core';\nimport { is, resolveRef } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { NgtcDebug } from 'angular-three-cannon/debug';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { defaultTransformArgs, makeBodyApi, prepare, setupCollision } from './utils';\nfunction createBody(type) {\n return (getPropFn, ref, options) => body(type, getPropFn, ref, options);\n}\nfunction body(type, getPropFn, ref, { transformArgs, injector } = {}) {\n return assertInjector(body, injector, () => {\n const physics = inject(NgtcPhysics, { optional: true });\n if (!physics) {\n throw new Error(`[NGT Cannon] injectBody was called outside of <ngtc-physics>`);\n }\n const debug = inject(NgtcDebug, { optional: true });\n const transform = transformArgs ?? defaultTransformArgs[type];\n const isRefSignal = isSignal(ref);\n const bodyRef = (isRefSignal ? ref : signal(ref));\n const body = computed(() => resolveRef(bodyRef()));\n const api = computed(() => {\n const _body = body();\n if (!_body)\n return null;\n const { worker, ...rest } = physics;\n const _worker = worker();\n if (!_worker)\n return null;\n return makeBodyApi(_body, _worker, rest);\n });\n effect((onCleanup) => {\n const currentWorker = physics.worker();\n if (!currentWorker)\n return;\n const object = body();\n if (!isRefSignal && !object) {\n bodyRef.set(resolveRef(ref));\n return;\n }\n if (!object)\n return;\n const [uuid, props] = (() => {\n let uuids = [];\n let temp;\n if (is.three(object, 'isInstancedMesh')) {\n object.instanceMatrix.setUsage(THREE.DynamicDrawUsage);\n uuids = new Array(object.count).fill(0).map((_, i) => `${object.uuid}/${i}`);\n temp = new THREE.Object3D();\n }\n else {\n uuids = [object.uuid];\n }\n return [\n uuids,\n uuids.map((id, index) => {\n const props = getPropFn(index);\n if (temp) {\n prepare(temp, props);\n object.setMatrixAt(index, temp.matrix);\n object.instanceMatrix.needsUpdate = true;\n }\n else {\n prepare(object, props);\n }\n physics.refs[id] = object;\n debug?.add(id, props, type);\n setupCollision(physics.events, props, id);\n // @ts-expect-error - if args is undefined, there's default\n return { ...props, args: transform(props.args) };\n }),\n ];\n })();\n // Register on mount, unregister on unmount\n currentWorker.addBodies({\n props: props.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => {\n return {\n onCollide: Boolean(onCollide),\n onCollideBegin: Boolean(onCollideBegin),\n onCollideEnd: Boolean(onCollideEnd),\n ...serializableProps,\n };\n }),\n type,\n uuid,\n });\n onCleanup(() => {\n uuid.forEach((id) => {\n delete physics.refs[id];\n debug?.remove(id);\n delete physics.events[id];\n });\n currentWorker.removeBodies({ uuid });\n });\n });\n return api;\n });\n}\nexport const box = createBody('Box');\nexport const convexPolyhedron = createBody('ConvexPolyhedron');\nexport const cylinder = createBody('Cylinder');\nexport const heightfield = createBody('Heightfield');\nexport const particle = createBody('Particle');\nexport const plane = createBody('Plane');\nexport const sphere = createBody('Sphere');\nexport const trimesh = createBody('Trimesh');\nexport const compound = createBody('Compound');\n/**\n * @deprecated Use `box` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectBox = box;\n/**\n * @deprecated Use `convexPolyhedron` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectConvexPolyhedron = convexPolyhedron;\n/**\n * @deprecated Use `cylinder` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectCylinder = cylinder;\n/**\n * @deprecated Use `heightfield` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectHeightfield = heightfield;\n/**\n * @deprecated Use `particle` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectParticle = particle;\n/**\n * @deprecated Use `plane` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectPlane = plane;\n/**\n * @deprecated Use `sphere` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectSphere = sphere;\n/**\n * @deprecated Use `trimesh` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectTrimesh = trimesh;\n/**\n * @deprecated Use `compound` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectCompound = compound;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU9yRixTQUFTLFVBQVUsQ0FBK0IsSUFBWTtJQUM3RCxPQUFPLENBQ04sU0FBbUQsRUFDbkQsR0FBc0YsRUFDdEYsT0FBaUMsRUFDaEMsRUFBRSxDQUFDLElBQUksQ0FBa0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUNaLElBQVksRUFDWixTQUFtRCxFQUNuRCxHQUFzRixFQUN0RixFQUFFLGFBQWEsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFekQsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FB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QU0sc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7QUFFdkQ7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUV2Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUM7QUFFN0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUV2Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRWpDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUM7QUFFbkM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQztBQUVyQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RWxlbWVudFJlZixcblx0SW5qZWN0b3IsXG5cdFNpZ25hbCxcblx0V3JpdGFibGVTaWduYWwsXG5cdGNvbXB1dGVkLFxuXHRlZmZlY3QsXG5cdGluamVjdCxcblx0aXNTaWduYWwsXG5cdHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb2R5U2hhcGVUeXBlIH0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpcywgcmVzb2x2ZVJlZiB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1BoeXNpY3MgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbic7XG5pbXBvcnQgeyBOZ3RjRGVidWcgfSBmcm9tICdhbmd1bGFyLXRocmVlLWNhbm5vbi9kZWJ1Zyc7XG5pbXBvcnQgeyBhc3NlcnRJbmplY3RvciB9IGZyb20gJ25neHRlbnNpb24vYXNzZXJ0LWluamVjdG9yJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcbmltcG9ydCB7IE5ndGNBcmdGbiwgTmd0Y0JvZHlQcm9wc01hcCwgTmd0Y0JvZHlQdWJsaWNBcGksIE5ndGNHZXRCeUluZGV4IH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJhbnNmb3JtQXJncywgbWFrZUJvZHlBcGksIHByZXBhcmUsIHNldHVwQ29sbGlzaW9uIH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0JvZHlPcHRpb25zPFRTaGFwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGU+IHtcblx0dHJhbnNmb3JtQXJncz86IE5ndGNBcmdGbjxOZ3RjQm9keVByb3BzTWFwW1RTaGFwZV0+O1xuXHRpbmplY3Rvcj86IEluamVjdG9yO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVCb2R5PFRTaGFwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGU+KHR5cGU6IFRTaGFwZSkge1xuXHRyZXR1cm4gPFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG5cdFx0Z2V0UHJvcEZuOiBOZ3RjR2V0QnlJbmRleDxOZ3RjQm9keVByb3BzTWFwW1RTaGFwZV0+LFxuXHRcdHJlZjogRWxlbWVudFJlZjxUT2JqZWN0PiB8IFRPYmplY3QgfCBTaWduYWw8RWxlbWVudFJlZjxUT2JqZWN0PiB8IFRPYmplY3QgfCB1bmRlZmluZWQ+LFxuXHRcdG9wdGlvbnM/OiBOZ3RjQm9keU9wdGlvbnM8VFNoYXBlPixcblx0KSA9PiBib2R5PFRTaGFwZSwgVE9iamVjdD4odHlwZSwgZ2V0UHJvcEZuLCByZWYsIG9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiBib2R5PFRTaGFwZSBleHRlbmRzIEJvZHlTaGFwZVR5cGUsIFRPYmplY3QgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRD4oXG5cdHR5cGU6IFRTaGFwZSxcblx0Z2V0UHJvcEZuOiBOZ3RjR2V0QnlJbmRleDxOZ3RjQm9keVByb3BzTWFwW1RTaGFwZV0+LFxuXHRyZWY6IEVsZW1lbnRSZWY8VE9iamVjdD4gfCBUT2JqZWN0IHwgU2lnbmFsPEVsZW1lbnRSZWY8VE9iamVjdD4gfCBUT2JqZWN0IHwgdW5kZWZpbmVkPixcblx0eyB0cmFuc2Zvcm1BcmdzLCBpbmplY3RvciB9OiBOZ3RjQm9keU9wdGlvbnM8VFNoYXBlPiA9IHt9LFxuKTogU2lnbmFsPE5ndGNCb2R5UHVibGljQXBpIHwgbnVsbD4ge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoYm9keSwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwaHlzaWNzID0gaW5qZWN0KE5ndGNQaHlzaWNzLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0aWYgKCFwaHlzaWNzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1QgQ2Fubm9uXSBpbmplY3RCb2R5IHdhcyBjYWxsZWQgb3V0c2lkZSBvZiA8bmd0Yy1waHlzaWNzPmApO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRlYnVnID0gaW5qZWN0KE5ndGNEZWJ1ZywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRcdGNvbnN0IHRyYW5zZm9ybSA9IHRyYW5zZm9ybUFyZ3MgPz8gZGVmYXVsdFRyYW5zZm9ybUFyZ3NbdHlwZV07XG5cdFx0Y29uc3QgaXNSZWZTaWduYWwgPSBpc1NpZ25hbChyZWYpO1xuXHRcdGNvbnN0IGJvZHlSZWYgPSAoaXNSZWZTaWduYWwgPyByZWYgOiBzaWduYWwocmVmKSkgYXMgV3JpdGFibGVTaWduYWw8VE9iamVjdCB8IHVuZGVmaW5lZD47XG5cdFx0Y29uc3QgYm9keSA9IGNvbXB1dGVkKCgpID0+IHJlc29sdmVSZWYoYm9keVJlZigpKSk7XG5cblx0XHRjb25zdCBhcGkgPSBjb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBfYm9keSA9IGJvZHkoKTtcblx0XHRcdGlmICghX2JvZHkpIHJldHVybiBudWxsO1xuXG5cdFx0XHRjb25zdCB7IHdvcmtlciwgLi4ucmVzdCB9ID0gcGh5c2ljcztcblx0XHRcdGNvbnN0IF93b3JrZXIgPSB3b3JrZXIoKTtcblx0XHRcdGlmICghX3dvcmtlcikgcmV0dXJuIG51bGw7XG5cblx0XHRcdHJldHVybiBtYWtlQm9keUFwaShfYm9keSwgX3dvcmtlciwgcmVzdCk7XG5cdFx0fSk7XG5cblx0XHRlZmZlY3QoKG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0Y29uc3QgY3VycmVudFdvcmtlciA9IHBoeXNpY3Mud29ya2VyKCk7XG5cdFx0XHRpZiAoIWN1cnJlbnRXb3JrZXIpIHJldHVybjtcblxuXHRcdFx0Y29uc3Qgb2JqZWN0ID0gYm9keSgpO1xuXG5cdFx0XHRpZiAoIWlzUmVmU2lnbmFsICYmICFvYmplY3QpIHtcblx0XHRcdFx0Ym9keVJlZi5zZXQocmVzb2x2ZVJlZihyZWYpKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIW9iamVjdCkgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbdXVpZCwgcHJvcHNdID0gKCgpID0+IHtcblx0XHRcdFx0bGV0IHV1aWRzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdFx0XHRsZXQgdGVtcDogVEhSRUUuT2JqZWN0M0Q7XG5cdFx0XHRcdGlmIChpcy50aHJlZTxUSFJFRS5JbnN0YW5jZWRNZXNoPihvYmplY3QsICdpc0luc3RhbmNlZE1lc2gnKSkge1xuXHRcdFx0XHRcdG9iamVjdC5pbnN0YW5jZU1hdHJpeC5zZXRVc2FnZShUSFJFRS5EeW5hbWljRHJhd1VzYWdlKTtcblx0XHRcdFx0XHR1dWlkcyA9IG5ldyBBcnJheShvYmplY3QuY291bnQpLmZpbGwoMCkubWFwKChfLCBpKSA9PiBgJHtvYmplY3QudXVpZH0vJHtpfWApO1xuXHRcdFx0XHRcdHRlbXAgPSBuZXcgVEhSRUUuT2JqZWN0M0QoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1dWlkcyA9IFtvYmplY3QudXVpZF07XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHR1dWlkcyxcblx0XHRcdFx0XHR1dWlkcy5tYXAoKGlkLCBpbmRleCkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgcHJvcHMgPSBnZXRQcm9wRm4oaW5kZXgpO1xuXHRcdFx0XHRcdFx0aWYgKHRlbXApIHtcblx0XHRcdFx0XHRcdFx0cHJlcGFyZSh0ZW1wLCBwcm9wcyk7XG5cdFx0XHRcdFx0XHRcdChvYmplY3QgYXMgdW5rbm93biBhcyBUSFJFRS5JbnN0YW5jZWRNZXNoKS5zZXRNYXRyaXhBdChpbmRleCwgdGVtcC5tYXRyaXgpO1xuXHRcdFx0XHRcdFx0XHQob2JqZWN0IGFzIHVua25vd24gYXMgVEhSRUUuSW5zdGFuY2VkTWVzaCkuaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0cHJlcGFyZShvYmplY3QsIHByb3BzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHBoeXNpY3MucmVmc1tpZF0gPSBvYmplY3Q7XG5cdFx0XHRcdFx0XHRkZWJ1Zz8uYWRkKGlkLCBwcm9wcywgdHlwZSk7XG5cdFx0XHRcdFx0XHRzZXR1cENvbGxpc2lvbihwaHlzaWNzLmV2ZW50cywgcHJvcHMsIGlkKTtcblx0XHRcdFx0XHRcdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBpZiBhcmdzIGlzIHVuZGVmaW5lZCwgdGhlcmUncyBkZWZhdWx0XG5cdFx0XHRcdFx0XHRyZXR1cm4geyAuLi5wcm9wcywgYXJnczogdHJhbnNmb3JtKHByb3BzLmFyZ3MpIH07XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdF07XG5cdFx0XHR9KSgpO1xuXG5cdFx0XHQvLyBSZWdpc3RlciBvbiBtb3VudCwgdW5yZWdpc3RlciBvbiB1bm1vdW50XG5cdFx0XHRjdXJyZW50V29ya2VyLmFkZEJvZGllcyh7XG5cdFx0XHRcdHByb3BzOiBwcm9wcy5tYXAoKHsgb25Db2xsaWRlLCBvbkNvbGxpZGVCZWdpbiwgb25Db2xsaWRlRW5kLCAuLi5zZXJpYWxpemFibGVQcm9wcyB9KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdG9uQ29sbGlkZTogQm9vbGVhbihvbkNvbGxpZGUpLFxuXHRcdFx0XHRcdFx0b25Db2xsaWRlQmVnaW46IEJvb2xlYW4ob25Db2xsaWRlQmVnaW4pLFxuXHRcdFx0XHRcdFx0b25Db2xsaWRlRW5kOiBCb29sZWFuKG9uQ29sbGlkZUVuZCksXG5cdFx0XHRcdFx0XHQuLi5zZXJpYWxpemFibGVQcm9wcyxcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dHlwZSxcblx0XHRcdFx0dXVpZCxcblx0XHRcdH0pO1xuXG5cdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHR1dWlkLmZvckVhY2goKGlkKSA9PiB7XG5cdFx0XHRcdFx0ZGVsZXRlIHBoeXNpY3MucmVmc1tpZF07XG5cdFx0XHRcdFx0ZGVidWc/LnJlbW92ZShpZCk7XG5cdFx0XHRcdFx0ZGVsZXRlIHBoeXNpY3MuZXZlbnRzW2lkXTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGN1cnJlbnRXb3JrZXIucmVtb3ZlQm9kaWVzKHsgdXVpZCB9KTtcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIGFwaTtcblx0fSk7XG59XG5cbmV4cG9ydCBjb25zdCBib3ggPSBjcmVhdGVCb2R5KCdCb3gnKTtcbmV4cG9ydCBjb25zdCBjb252ZXhQb2x5aGVkcm9uID0gY3JlYXRlQm9keSgnQ29udmV4UG9seWhlZHJvbicpO1xuZXhwb3J0IGNvbnN0IGN5bGluZGVyID0gY3JlYXRlQm9keSgnQ3lsaW5kZXInKTtcbmV4cG9ydCBjb25zdCBoZWlnaHRmaWVsZCA9IGNyZWF0ZUJvZHkoJ0hlaWdodGZpZWxkJyk7XG5leHBvcnQgY29uc3QgcGFydGljbGUgPSBjcmVhdGVCb2R5KCdQYXJ0aWNsZScpO1xuZXhwb3J0IGNvbnN0IHBsYW5lID0gY3JlYXRlQm9keSgnUGxhbmUnKTtcbmV4cG9ydCBjb25zdCBzcGhlcmUgPSBjcmVhdGVCb2R5KCdTcGhlcmUnKTtcbmV4cG9ydCBjb25zdCB0cmltZXNoID0gY3JlYXRlQm9keSgnVHJpbWVzaCcpO1xuZXhwb3J0IGNvbnN0IGNvbXBvdW5kID0gY3JlYXRlQm9keSgnQ29tcG91bmQnKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGJveGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0Qm94ID0gYm94O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgY29udmV4UG9seWhlZHJvbmAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0Q29udmV4UG9seWhlZHJvbiA9IGNvbnZleFBvbHloZWRyb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBjeWxpbmRlcmAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0Q3lsaW5kZXIgPSBjeWxpbmRlcjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGhlaWdodGZpZWxkYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RIZWlnaHRmaWVsZCA9IGhlaWdodGZpZWxkO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgcGFydGljbGVgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdFBhcnRpY2xlID0gcGFydGljbGU7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBwbGFuZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0UGxhbmUgPSBwbGFuZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHNwaGVyZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0U3BoZXJlID0gc3BoZXJlO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgdHJpbWVzaGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0VHJpbWVzaCA9IHRyaW1lc2g7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBjb21wb3VuZGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0Q29tcG91bmQgPSBjb21wb3VuZDtcbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWJvZHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-cannon-body.mjs","sources":["../tmp-esm2022/body/lib/utils.js","../tmp-esm2022/body/lib/body.js","../tmp-esm2022/body/angular-three-cannon-body.js"],"sourcesContent":["import { is } from 'angular-three';\nimport * as THREE from 'three';\nfunction capitalize(str) {\n return (str.charAt(0).toUpperCase() + str.slice(1));\n}\nfunction getUUID(body, index) {\n const suffix = index === undefined ? '' : `/${index}`;\n if (typeof body === 'function')\n return null;\n return body && body && `${body.uuid}${suffix}`;\n}\nconst e = new THREE.Euler();\nconst q = new THREE.Quaternion();\nfunction quaternionToRotation(callback) {\n return (v) => callback(e.setFromQuaternion(q.fromArray(v)).toArray());\n}\nlet incrementingId = 0;\nexport function createSubscribe(body, worker, subscriptions, type, index, target = 'bodies') {\n return (callback) => {\n const id = incrementingId++;\n subscriptions[id] = { [type]: callback };\n const uuid = getUUID(body, index);\n uuid && worker.subscribe({ props: { id, target, type }, uuid });\n return () => {\n delete subscriptions[id];\n worker.unsubscribe({ props: id });\n };\n };\n}\nfunction makeTriplet(v) {\n return is.three(v, 'isVector3') ? [v.x, v.y, v.z] : v;\n}\nexport function prepare(object, { position = [0, 0, 0], rotation = [0, 0, 0], userData = {} }) {\n object.userData = userData;\n object.position.set(...position);\n object.rotation.set(...rotation);\n object.updateMatrix();\n}\nexport function setupCollision(events, { onCollide, onCollideBegin, onCollideEnd }, uuid) {\n events[uuid] = { collide: onCollide, collideBegin: onCollideBegin, collideEnd: onCollideEnd };\n}\nexport function makeBodyApi(body, worker, { subscriptions, scaleOverrides }) {\n const makeAtomic = (type, index) => {\n const op = `set${capitalize(type)}`;\n return {\n set: (value) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: value, uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeQuaternion = (index) => {\n const type = 'quaternion';\n return {\n copy: ({ w, x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n set: (x, y, z, w) => {\n const uuid = getUUID(body, index);\n uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeRotation = (index) => {\n return {\n copy: ({ x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n set: (x, y, z) => {\n const uuid = getUUID(body, index);\n uuid && worker.setRotation({ props: [x, y, z], uuid });\n },\n subscribe: (callback) => {\n const id = incrementingId++;\n const target = 'bodies';\n const type = 'quaternion';\n const uuid = getUUID(body, index);\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 const makeVec = (type, index) => {\n const op = `set${capitalize(type)}`;\n return {\n copy: ({ x, y, z }) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n set: (x, y, z) => {\n const uuid = getUUID(body, index);\n uuid && worker[op]({ props: [x, y, z], uuid });\n },\n subscribe: createSubscribe(body, worker, subscriptions, type, index),\n };\n };\n const makeRemove = (index) => {\n const uuid = getUUID(body, index);\n return () => {\n if (uuid)\n worker.removeBodies({ uuid: [uuid] });\n };\n };\n function makeApi(index) {\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, worldPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyForce({ props: [force, worldPoint], uuid });\n },\n applyImpulse(impulse, worldPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyImpulse({ props: [impulse, worldPoint], uuid });\n },\n applyLocalForce(force, localPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyLocalForce({ props: [force, localPoint], uuid });\n },\n applyLocalImpulse(impulse, localPoint) {\n const uuid = getUUID(body, index);\n uuid && worker.applyLocalImpulse({ props: [impulse, localPoint], uuid });\n },\n applyTorque(torque) {\n const uuid = getUUID(body, 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(body, index);\n if (uuid)\n scaleOverrides[uuid] = new THREE.Vector3(...scale);\n },\n sleep() {\n const uuid = getUUID(body, 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(body, index);\n uuid && worker.wakeUp({ uuid });\n },\n };\n }\n const cache = {};\n return { ...makeApi(), at: (index) => cache[index] || (cache[index] = makeApi(index)) };\n}\nexport const defaultTransformArgs = {\n Plane: (_) => [],\n Box: (args = [1, 1, 1]) => args,\n Trimesh: (args) => args,\n Cylinder: (_ = []) => [],\n Heightfield: (args) => args,\n ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius] = []) => [\n vertices && vertices.map(makeTriplet),\n faces,\n normals && normals.map(makeTriplet),\n axes && axes.map(makeTriplet),\n boundingSphereRadius,\n ],\n Particle: (_) => [],\n Sphere: (args = [1]) => {\n if (!Array.isArray(args))\n throw new Error('Sphere body args must be an array');\n return [args[0]];\n },\n Compound: (args) => args,\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkMsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7QUFHL0IsU0FBUyxVQUFVLENBQW1CLEdBQU07SUFDM0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBa0IsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBb0IsRUFBRSxLQUFjO0lBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUN0RCxJQUFJLE9BQU8sSUFBSSxLQUFLLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQztJQUM1QyxPQUFPLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2hELENBQUM7QUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUM1QixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUVqQyxTQUFTLG9CQUFvQixDQUFDLFFBQThCO0lBQzNELE9BQU8sQ0FBQyxDQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBYSxDQUFDLENBQUM7QUFDeEYsQ0FBQztBQUVELElBQUksY0FB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ZXNDb250ZW50IjpbImltcG9ydCB7XG5cdEF0b21pY05hbWUsXG5cdEJvZHlQcm9wcyxcblx0Qm94UHJvcHMsXG5cdENhbm5vbldvcmtlckFQSSxcblx0Q29tcG91bmRCb2R5UHJvcHMsXG5cdENvbnZleFBvbHloZWRyb25BcmdzLFxuXHRDeWxpbmRlckFyZ3MsXG5cdEhlaWdodGZpZWxkQXJncyxcblx0UGFydGljbGVQcm9wcyxcblx0UGxhbmVQcm9wcyxcblx0UHJvcFZhbHVlLFxuXHRRdWFkLFxuXHRTZXRPcE5hbWUsXG5cdFNwaGVyZUFyZ3MsXG5cdFN1YnNjcmlwdGlvbk5hbWUsXG5cdFN1YnNjcmlwdGlvblRhcmdldCxcblx0U3Vic2NyaXB0aW9ucyxcblx0VHJpbWVzaEFyZ3MsXG5cdFRyaXBsZXQsXG5cdFZlY3Rvck5hbWUsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaXMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNDYW5ub25FdmVudHMsIE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1dvcmtlckFwaSB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBjYXBpdGFsaXplPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cjogVCk6IENhcGl0YWxpemU8VD4ge1xuXHRyZXR1cm4gKHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSkgYXMgQ2FwaXRhbGl6ZTxUPjtcbn1cblxuZnVuY3Rpb24gZ2V0VVVJRChib2R5OiBUSFJFRS5PYmplY3QzRCwgaW5kZXg/OiBudW1iZXIpIHtcblx0Y29uc3Qgc3VmZml4ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/ICcnIDogYC8ke2luZGV4fWA7XG5cdGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGw7XG5cdHJldHVybiBib2R5ICYmIGJvZHkgJiYgYCR7Ym9keS51dWlkfSR7c3VmZml4fWA7XG59XG5cbmNvbnN0IGUgPSBuZXcgVEhSRUUuRXVsZXIoKTtcbmNvbnN0IHEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuXG5mdW5jdGlvbiBxdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjazogKHY6IFRyaXBsZXQpID0+IHZvaWQpIHtcblx0cmV0dXJuICh2OiBRdWFkKSA9PiBjYWxsYmFjayhlLnNldEZyb21RdWF0ZXJuaW9uKHEuZnJvbUFycmF5KHYpKS50b0FycmF5KCkgYXMgVHJpcGxldCk7XG59XG5cbmxldCBpbmNyZW1lbnRpbmdJZCA9IDA7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Vic2NyaWJlPFQgZXh0ZW5kcyBTdWJzY3JpcHRpb25OYW1lPihcblx0Ym9keTogVEhSRUUuT2JqZWN0M0QsXG5cdHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJLFxuXHRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zLFxuXHR0eXBlOiBULFxuXHRpbmRleD86IG51bWJlcixcblx0dGFyZ2V0OiBTdWJzY3JpcHRpb25UYXJnZXQgPSAnYm9kaWVzJyxcbikge1xuXHRyZXR1cm4gKGNhbGxiYWNrOiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4gdm9pZCkgPT4ge1xuXHRcdGNvbnN0IGlkID0gaW5jcmVtZW50aW5nSWQrKztcblx0XHRzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBjYWxsYmFjayB9O1xuXHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHR1dWlkICYmIHdvcmtlci5zdWJzY3JpYmUoeyBwcm9wczogeyBpZCwgdGFyZ2V0LCB0eXBlIH0sIHV1aWQgfSk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcblx0XHRcdHdvcmtlci51bnN1YnNjcmliZSh7IHByb3BzOiBpZCB9KTtcblx0XHR9O1xuXHR9O1xufVxuXG5mdW5jdGlvbiBtYWtlVHJpcGxldCh2OiBUSFJFRS5WZWN0b3IzIHwgVHJpcGxldCk6IFRyaXBsZXQge1xuXHRyZXR1cm4gaXMudGhyZWU8VEhSRUUuVmVjdG9yMz4odiwgJ2lzVmVjdG9yMycpID8gW3YueCwgdi55LCB2LnpdIDogdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByZXBhcmUoXG5cdG9iamVjdDogVEhSRUUuT2JqZWN0M0QsXG5cdHsgcG9zaXRpb24gPSBbMCwgMCwgMF0sIHJvdGF0aW9uID0gWzAsIDAsIDBdLCB1c2VyRGF0YSA9IHt9IH06IEJvZHlQcm9wcyxcbikge1xuXHRvYmplY3QudXNlckRhdGEgPSB1c2VyRGF0YTtcblx0b2JqZWN0LnBvc2l0aW9uLnNldCguLi5wb3NpdGlvbik7XG5cdG9iamVjdC5yb3RhdGlvbi5zZXQoLi4ucm90YXRpb24pO1xuXHRvYmplY3QudXBkYXRlTWF0cml4KCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cENvbGxpc2lvbihcblx0ZXZlbnRzOiBOZ3RjQ2Fubm9uRXZlbnRzLFxuXHR7IG9uQ29sbGlkZSwgb25Db2xsaWRlQmVnaW4sIG9uQ29sbGlkZUVuZCB9OiBQYXJ0aWFsPEJvZHlQcm9wcz4sXG5cdHV1aWQ6IHN0cmluZyxcbikge1xuXHRldmVudHNbdXVpZF0gPSB7IGNvbGxpZGU6IG9uQ29sbGlkZSwgY29sbGlkZUJlZ2luOiBvbkNvbGxpZGVCZWdpbiwgY29sbGlkZUVuZDogb25Db2xsaWRlRW5kIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQm9keUFwaShcblx0Ym9keTogVEhSRUUuT2JqZWN0M0QsXG5cdHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJLFxuXHR7IHN1YnNjcmlwdGlvbnMsIHNjYWxlT3ZlcnJpZGVzIH06IFBpY2s8Tmd0Y1BoeXNpY3MsICdzdWJzY3JpcHRpb25zJyB8ICdzY2FsZU92ZXJyaWRlcyc+LFxuKSB7XG5cdGNvbnN0IG1ha2VBdG9taWMgPSA8VCBleHRlbmRzIEF0b21pY05hbWU+KHR5cGU6IFQsIGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3Qgb3A6IFNldE9wTmFtZTxUPiA9IGBzZXQke2NhcGl0YWxpemUodHlwZSl9YDtcblxuXHRcdHJldHVybiB7XG5cdFx0XHRzZXQ6ICh2YWx1ZTogUHJvcFZhbHVlPFQ+KSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXJbb3BdKHsgcHJvcHM6IHZhbHVlLCB1dWlkIH0gYXMgbmV2ZXIpO1xuXHRcdFx0fSxcblx0XHRcdHN1YnNjcmliZTogY3JlYXRlU3Vic2NyaWJlKGJvZHksIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpLFxuXHRcdH07XG5cdH07XG5cblx0Y29uc3QgbWFrZVF1YXRlcm5pb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcblx0XHRjb25zdCB0eXBlID0gJ3F1YXRlcm5pb24nO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB3LCB4LCB5LCB6IH06IFRIUkVFLlF1YXRlcm5pb24pID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyLCB3OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5zZXRRdWF0ZXJuaW9uKHsgcHJvcHM6IFt4LCB5LCB6LCB3XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzdWJzY3JpYmU6IGNyZWF0ZVN1YnNjcmliZShib2R5LCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KSxcblx0XHR9O1xuXHR9O1xuXG5cdGNvbnN0IG1ha2VSb3RhdGlvbiA9IChpbmRleD86IG51bWJlcikgPT4ge1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLnNldFJvdGF0aW9uKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzZXQ6ICh4OiBudW1iZXIsIHk6IG51bWJlciwgejogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2V0Um90YXRpb24oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHN1YnNjcmliZTogKGNhbGxiYWNrOiAodmFsdWU6IFRyaXBsZXQpID0+IHZvaWQpID0+IHtcblx0XHRcdFx0Y29uc3QgaWQgPSBpbmNyZW1lbnRpbmdJZCsrO1xuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSAnYm9kaWVzJztcblx0XHRcdFx0Y29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHRzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBxdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjaykgfTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc3Vic2NyaWJlKHsgcHJvcHM6IHsgaWQsIHRhcmdldCwgdHlwZSB9LCB1dWlkIH0pO1xuXHRcdFx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0XHRcdGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcblx0XHRcdFx0XHR3b3JrZXIudW5zdWJzY3JpYmUoeyBwcm9wczogaWQgfSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9LFxuXHRcdH07XG5cdH07XG5cdGNvbnN0IG1ha2VWZWMgPSAodHlwZTogVmVjdG9yTmFtZSwgaW5kZXg/OiBudW1iZXIpID0+IHtcblx0XHRjb25zdCBvcDogU2V0T3BOYW1lPFZlY3Rvck5hbWU+ID0gYHNldCR7Y2FwaXRhbGl6ZSh0eXBlKX1gO1xuXHRcdHJldHVybiB7XG5cdFx0XHRjb3B5OiAoeyB4LCB5LCB6IH06IFRIUkVFLlZlY3RvcjMgfCBUSFJFRS5FdWxlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c3Vic2NyaWJlOiBjcmVhdGVTdWJzY3JpYmUoYm9keSwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCksXG5cdFx0fTtcblx0fTtcblxuXHRjb25zdCBtYWtlUmVtb3ZlID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdHJldHVybiAoKSA9PiB7XG5cdFx0XHRpZiAodXVpZCkgd29ya2VyLnJlbW92ZUJvZGllcyh7IHV1aWQ6IFt1dWlkXSB9KTtcblx0XHR9O1xuXHR9O1xuXG5cdGZ1bmN0aW9uIG1ha2VBcGkoaW5kZXg/OiBudW1iZXIpOiBOZ3RjV29ya2VyQXBpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0YWxsb3dTbGVlcDogbWFrZUF0b21pYygnYWxsb3dTbGVlcCcsIGluZGV4KSxcblx0XHRcdGFuZ3VsYXJEYW1waW5nOiBtYWtlQXRvbWljKCdhbmd1bGFyRGFtcGluZycsIGluZGV4KSxcblx0XHRcdGFuZ3VsYXJGYWN0b3I6IG1ha2VWZWMoJ2FuZ3VsYXJGYWN0b3InLCBpbmRleCksXG5cdFx0XHRhbmd1bGFyVmVsb2NpdHk6IG1ha2VWZWMoJ2FuZ3VsYXJWZWxvY2l0eScsIGluZGV4KSxcblx0XHRcdGFwcGx5Rm9yY2UoZm9yY2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUZvcmNlKHsgcHJvcHM6IFtmb3JjZSwgd29ybGRQb2ludF0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0YXBwbHlJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIHdvcmxkUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5TG9jYWxGb3JjZShmb3JjZTogVHJpcGxldCwgbG9jYWxQb2ludDogVHJpcGxldCkge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLmFwcGx5TG9jYWxGb3JjZSh7IHByb3BzOiBbZm9yY2UsIGxvY2FsUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5TG9jYWxJbXB1bHNlKGltcHVsc2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsSW1wdWxzZSh7IHByb3BzOiBbaW1wdWxzZSwgbG9jYWxQb2ludF0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0YXBwbHlUb3JxdWUodG9ycXVlOiBUcmlwbGV0KSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuYXBwbHlUb3JxdWUoeyBwcm9wczogW3RvcnF1ZV0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0Y29sbGlzaW9uRmlsdGVyR3JvdXA6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlckdyb3VwJywgaW5kZXgpLFxuXHRcdFx0Y29sbGlzaW9uRmlsdGVyTWFzazogbWFrZUF0b21pYygnY29sbGlzaW9uRmlsdGVyTWFzaycsIGluZGV4KSxcblx0XHRcdGNvbGxpc2lvblJlc3BvbnNlOiBtYWtlQXRvbWljKCdjb2xsaXNpb25SZXNwb25zZScsIGluZGV4KSxcblx0XHRcdGZpeGVkUm90YXRpb246IG1ha2VBdG9taWMoJ2ZpeGVkUm90YXRpb24nLCBpbmRleCksXG5cdFx0XHRpc1RyaWdnZXI6IG1ha2VBdG9taWMoJ2lzVHJpZ2dlcicsIGluZGV4KSxcblx0XHRcdGxpbmVhckRhbXBpbmc6IG1ha2VBdG9taWMoJ2xpbmVhckRhbXBpbmcnLCBpbmRleCksXG5cdFx0XHRsaW5lYXJGYWN0b3I6IG1ha2VWZWMoJ2xpbmVhckZhY3RvcicsIGluZGV4KSxcblx0XHRcdG1hc3M6IG1ha2VBdG9taWMoJ21hc3MnLCBpbmRleCksXG5cdFx0XHRtYXRlcmlhbDogbWFrZUF0b21pYygnbWF0ZXJpYWwnLCBpbmRleCksXG5cdFx0XHRwb3NpdGlvbjogbWFrZVZlYygncG9zaXRpb24nLCBpbmRleCksXG5cdFx0XHRxdWF0ZXJuaW9uOiBtYWtlUXVhdGVybmlvbihpbmRleCksXG5cdFx0XHRyb3RhdGlvbjogbWFrZVJvdGF0aW9uKGluZGV4KSxcblx0XHRcdHNjYWxlT3ZlcnJpZGUoc2NhbGUpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHRpZiAodXVpZCkgc2NhbGVPdmVycmlkZXNbdXVpZF0gPSBuZXcgVEhSRUUuVmVjdG9yMyguLi5zY2FsZSk7XG5cdFx0XHR9LFxuXHRcdFx0c2xlZXAoKSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2xlZXAoeyB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHNsZWVwU3BlZWRMaW1pdDogbWFrZUF0b21pYygnc2xlZXBTcGVlZExpbWl0JywgaW5kZXgpLFxuXHRcdFx0c2xlZXBUaW1lTGltaXQ6IG1ha2VBdG9taWMoJ3NsZWVwVGltZUxpbWl0JywgaW5kZXgpLFxuXHRcdFx0dXNlckRhdGE6IG1ha2VBdG9taWMoJ3VzZXJEYXRhJywgaW5kZXgpLFxuXHRcdFx0dmVsb2NpdHk6IG1ha2VWZWMoJ3ZlbG9jaXR5JywgaW5kZXgpLFxuXHRcdFx0cmVtb3ZlOiBtYWtlUmVtb3ZlKGluZGV4KSxcblx0XHRcdHdha2VVcCgpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci53YWtlVXAoeyB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9XG5cdGNvbnN0IGNhY2hlOiBSZWNvcmQ8bnVtYmVyLCBOZ3RjV29ya2VyQXBpPiA9IHt9O1xuXHRyZXR1cm4geyAuLi5tYWtlQXBpKCksIGF0OiAoaW5kZXg6IG51bWJlcikgPT4gY2FjaGVbaW5kZXhdIHx8IChjYWNoZVtpbmRleF0gPSBtYWtlQXBpKGluZGV4KSkgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRUcmFuc2Zvcm1BcmdzID0ge1xuXHRQbGFuZTogKF86IFBsYW5lUHJvcHNbJ2FyZ3MnXSkgPT4gW10sXG5cdEJveDogKGFyZ3M6IEJveFByb3BzWydhcmdzJ10gPSBbMSwgMSwgMV0pID0+IGFyZ3MsXG5cdFRyaW1lc2g6IChhcmdzOiBUcmltZXNoQXJncykgPT4gYXJncyxcblx0Q3lsaW5kZXI6IChfOiBDeWxpbmRlckFyZ3MgPSBbXSkgPT4gW10sXG5cdEhlaWdodGZpZWxkOiAoYXJnczogSGVpZ2h0ZmllbGRBcmdzKSA9PiBhcmdzLFxuXHRDb252ZXhQb2x5aGVkcm9uOiAoW3ZlcnRpY2VzLCBmYWNlcywgbm9ybWFscywgYXhlcywgYm91bmRpbmdTcGhlcmVSYWRpdXNdOiBDb252ZXhQb2x5aGVkcm9uQXJncyA9IFtdKSA9PiBbXG5cdFx0dmVydGljZXMgJiYgdmVydGljZXMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRmYWNlcyxcblx0XHRub3JtYWxzICYmIG5vcm1hbHMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRheGVzICYmIGF4ZXMubWFwKG1ha2VUcmlwbGV0KSxcblx0XHRib3VuZGluZ1NwaGVyZVJhZGl1cyxcblx0XSxcblx0UGFydGljbGU6IChfOiBQYXJ0aWNsZVByb3BzWydhcmdzJ10pID0+IFtdLFxuXHRTcGhlcmU6IChhcmdzOiBTcGhlcmVBcmdzID0gWzFdKSA9PiB7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KGFyZ3MpKSB0aHJvdyBuZXcgRXJyb3IoJ1NwaGVyZSBib2R5IGFyZ3MgbXVzdCBiZSBhbiBhcnJheScpO1xuXHRcdHJldHVybiBbYXJnc1swXV07XG5cdH0sXG5cdENvbXBvdW5kOiAoYXJnczogQ29tcG91bmRCb2R5UHJvcHNbJ2FyZ3MnXSkgPT4gYXJncyxcbn07XG4iXX0=","import { computed, effect, inject, isSignal, signal, } from '@angular/core';\nimport { is, resolveRef } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { NgtcDebug } from 'angular-three-cannon/debug';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\nimport { defaultTransformArgs, makeBodyApi, prepare, setupCollision } from './utils';\nfunction createBody(type) {\n return (getPropFn, ref, options) => body(type, getPropFn, ref, options);\n}\nfunction body(type, getPropFn, ref, { transformArgs, injector } = {}) {\n return assertInjector(body, injector, () => {\n const physics = inject(NgtcPhysics, { optional: true });\n if (!physics) {\n throw new Error(`[NGT Cannon] injectBody was called outside of <ngtc-physics>`);\n }\n const debug = inject(NgtcDebug, { optional: true });\n const transform = transformArgs ?? defaultTransformArgs[type];\n const isRefSignal = isSignal(ref);\n const bodyRef = (isRefSignal ? ref : signal(ref));\n const body = computed(() => resolveRef(bodyRef()), ...(ngDevMode ? [{ debugName: \"body\" }] : []));\n const api = computed(() => {\n const _body = body();\n if (!_body)\n return null;\n const { worker, ...rest } = physics;\n const _worker = worker();\n if (!_worker)\n return null;\n return makeBodyApi(_body, _worker, rest);\n }, ...(ngDevMode ? [{ debugName: \"api\" }] : []));\n effect((onCleanup) => {\n const currentWorker = physics.worker();\n if (!currentWorker)\n return;\n const object = body();\n if (!isRefSignal && !object) {\n bodyRef.set(resolveRef(ref));\n return;\n }\n if (!object)\n return;\n const [uuid, props] = (() => {\n let uuids = [];\n let temp;\n if (is.three(object, 'isInstancedMesh')) {\n object.instanceMatrix.setUsage(THREE.DynamicDrawUsage);\n uuids = new Array(object.count).fill(0).map((_, i) => `${object.uuid}/${i}`);\n temp = new THREE.Object3D();\n }\n else {\n uuids = [object.uuid];\n }\n return [\n uuids,\n uuids.map((id, index) => {\n const props = getPropFn(index);\n if (temp) {\n prepare(temp, props);\n object.setMatrixAt(index, temp.matrix);\n object.instanceMatrix.needsUpdate = true;\n }\n else {\n prepare(object, props);\n }\n physics.refs[id] = object;\n debug?.add(id, props, type);\n setupCollision(physics.events, props, id);\n // @ts-expect-error - if args is undefined, there's default\n return { ...props, args: transform(props.args) };\n }),\n ];\n })();\n // Register on mount, unregister on unmount\n currentWorker.addBodies({\n props: props.map(({ onCollide, onCollideBegin, onCollideEnd, ...serializableProps }) => {\n return {\n onCollide: Boolean(onCollide),\n onCollideBegin: Boolean(onCollideBegin),\n onCollideEnd: Boolean(onCollideEnd),\n ...serializableProps,\n };\n }),\n type,\n uuid,\n });\n onCleanup(() => {\n uuid.forEach((id) => {\n delete physics.refs[id];\n debug?.remove(id);\n delete physics.events[id];\n });\n currentWorker.removeBodies({ uuid });\n });\n });\n return api;\n });\n}\nexport const box = createBody('Box');\nexport const convexPolyhedron = createBody('ConvexPolyhedron');\nexport const cylinder = createBody('Cylinder');\nexport const heightfield = createBody('Heightfield');\nexport const particle = createBody('Particle');\nexport const plane = createBody('Plane');\nexport const sphere = createBody('Sphere');\nexport const trimesh = createBody('Trimesh');\nexport const compound = createBody('Compound');\n/**\n * @deprecated Use `box` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectBox = box;\n/**\n * @deprecated Use `convexPolyhedron` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectConvexPolyhedron = convexPolyhedron;\n/**\n * @deprecated Use `cylinder` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectCylinder = cylinder;\n/**\n * @deprecated Use `heightfield` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectHeightfield = heightfield;\n/**\n * @deprecated Use `particle` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectParticle = particle;\n/**\n * @deprecated Use `plane` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectPlane = plane;\n/**\n * @deprecated Use `sphere` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectSphere = sphere;\n/**\n * @deprecated Use `trimesh` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectTrimesh = trimesh;\n/**\n * @deprecated Use `compound` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectCompound = compound;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2xpYi9ib2R5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFLTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBRS9CLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQU9yRixTQUFTLFVBQVUsQ0FBK0IsSUFBWTtJQUM3RCxPQUFPLENBQ04sU0FBbUQsRUFDbkQsR0FBc0YsRUFDdEYsT0FBaUMsRUFDaEMsRUFBRSxDQUFDLElBQUksQ0FBa0IsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUNaLElBQVksRUFDWixTQUFtRCxFQUNuRCxHQUFzRixFQUN0RixFQUFFLGFBQWEsRUFBRSxRQUFRLEtBQThCLEVBQUU7SUFFekQsT0FBTyxjQUFjLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FB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TUFBTSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUV2RDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFdBQVcsQ0FBQztBQUU3Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDO0FBRXZDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFFakM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQztBQUVuQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRFbGVtZW50UmVmLFxuXHRJbmplY3Rvcixcblx0U2lnbmFsLFxuXHRXcml0YWJsZVNpZ25hbCxcblx0Y29tcHV0ZWQsXG5cdGVmZmVjdCxcblx0aW5qZWN0LFxuXHRpc1NpZ25hbCxcblx0c2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvZHlTaGFwZVR5cGUgfSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGlzLCByZXNvbHZlUmVmIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjUGh5c2ljcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IE5ndGNEZWJ1ZyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uL2RlYnVnJztcbmltcG9ydCB7IGFzc2VydEluamVjdG9yIH0gZnJvbSAnbmd4dGVuc2lvbi9hc3NlcnQtaW5qZWN0b3InO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0Y0FyZ0ZuLCBOZ3RjQm9keVByb3BzTWFwLCBOZ3RjQm9keVB1YmxpY0FwaSwgTmd0Y0dldEJ5SW5kZXggfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZmF1bHRUcmFuc2Zvcm1BcmdzLCBtYWtlQm9keUFwaSwgcHJlcGFyZSwgc2V0dXBDb2xsaXNpb24gfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQm9keU9wdGlvbnM8VFNoYXBlIGV4dGVuZHMgQm9keVNoYXBlVHlwZT4ge1xuXHR0cmFuc2Zvcm1BcmdzPzogTmd0Y0FyZ0ZuPE5ndGNCb2R5UHJvcHNNYXBbVFNoYXBlXT47XG5cdGluamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJvZHk8VFNoYXBlIGV4dGVuZHMgQm9keVNoYXBlVHlwZT4odHlwZTogVFNoYXBlKSB7XG5cdHJldHVybiA8VE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcblx0XHRnZXRQcm9wRm46IE5ndGNHZXRCeUluZGV4PE5ndGNCb2R5UHJvcHNNYXBbVFNoYXBlXT4sXG5cdFx0cmVmOiBFbGVtZW50UmVmPFRPYmplY3Q+IHwgVE9iamVjdCB8IFNpZ25hbDxFbGVtZW50UmVmPFRPYmplY3Q+IHwgVE9iamVjdCB8IHVuZGVmaW5lZD4sXG5cdFx0b3B0aW9ucz86IE5ndGNCb2R5T3B0aW9uczxUU2hhcGU+LFxuXHQpID0+IGJvZHk8VFNoYXBlLCBUT2JqZWN0Pih0eXBlLCBnZXRQcm9wRm4sIHJlZiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGJvZHk8VFNoYXBlIGV4dGVuZHMgQm9keVNoYXBlVHlwZSwgVE9iamVjdCBleHRlbmRzIFRIUkVFLk9iamVjdDNEPihcblx0dHlwZTogVFNoYXBlLFxuXHRnZXRQcm9wRm46IE5ndGNHZXRCeUluZGV4PE5ndGNCb2R5UHJvcHNNYXBbVFNoYXBlXT4sXG5cdHJlZjogRWxlbWVudFJlZjxUT2JqZWN0PiB8IFRPYmplY3QgfCBTaWduYWw8RWxlbWVudFJlZjxUT2JqZWN0PiB8IFRPYmplY3QgfCB1bmRlZmluZWQ+LFxuXHR7IHRyYW5zZm9ybUFyZ3MsIGluamVjdG9yIH06IE5ndGNCb2R5T3B0aW9uczxUU2hhcGU+ID0ge30sXG4pOiBTaWduYWw8Tmd0Y0JvZHlQdWJsaWNBcGkgfCBudWxsPiB7XG5cdHJldHVybiBhc3NlcnRJbmplY3Rvcihib2R5LCBpbmplY3RvciwgKCkgPT4ge1xuXHRcdGNvbnN0IHBoeXNpY3MgPSBpbmplY3QoTmd0Y1BoeXNpY3MsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cblx0XHRpZiAoIXBoeXNpY3MpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcihgW05HVCBDYW5ub25dIGluamVjdEJvZHkgd2FzIGNhbGxlZCBvdXRzaWRlIG9mIDxuZ3RjLXBoeXNpY3M+YCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZGVidWcgPSBpbmplY3QoTmd0Y0RlYnVnLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0Y29uc3QgdHJhbnNmb3JtID0gdHJhbnNmb3JtQXJncyA/PyBkZWZhdWx0VHJhbnNmb3JtQXJnc1t0eXBlXTtcblx0XHRjb25zdCBpc1JlZlNpZ25hbCA9IGlzU2lnbmFsKHJlZik7XG5cdFx0Y29uc3QgYm9keVJlZiA9IChpc1JlZlNpZ25hbCA/IHJlZiA6IHNpZ25hbChyZWYpKSBhcyBXcml0YWJsZVNpZ25hbDxUT2JqZWN0IHwgdW5kZWZpbmVkPjtcblx0XHRjb25zdCBib2R5ID0gY29tcHV0ZWQoKCkgPT4gcmVzb2x2ZVJlZihib2R5UmVmKCkpKTtcblxuXHRcdGNvbnN0IGFwaSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF9ib2R5ID0gYm9keSgpO1xuXHRcdFx0aWYgKCFfYm9keSkgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IHsgd29ya2VyLCAuLi5yZXN0IH0gPSBwaHlzaWNzO1xuXHRcdFx0Y29uc3QgX3dvcmtlciA9IHdvcmtlcigpO1xuXHRcdFx0aWYgKCFfd29ya2VyKSByZXR1cm4gbnVsbDtcblxuXHRcdFx0cmV0dXJuIG1ha2VCb2R5QXBpKF9ib2R5LCBfd29ya2VyLCByZXN0KTtcblx0XHR9KTtcblxuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50V29ya2VyID0gcGh5c2ljcy53b3JrZXIoKTtcblx0XHRcdGlmICghY3VycmVudFdvcmtlcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBvYmplY3QgPSBib2R5KCk7XG5cblx0XHRcdGlmICghaXNSZWZTaWduYWwgJiYgIW9iamVjdCkge1xuXHRcdFx0XHRib2R5UmVmLnNldChyZXNvbHZlUmVmKHJlZikpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICghb2JqZWN0KSByZXR1cm47XG5cblx0XHRcdGNvbnN0IFt1dWlkLCBwcm9wc10gPSAoKCkgPT4ge1xuXHRcdFx0XHRsZXQgdXVpZHM6IHN0cmluZ1tdID0gW107XG5cdFx0XHRcdGxldCB0ZW1wOiBUSFJFRS5PYmplY3QzRDtcblx0XHRcdFx0aWYgKGlzLnRocmVlPFRIUkVFLkluc3RhbmNlZE1lc2g+KG9iamVjdCwgJ2lzSW5zdGFuY2VkTWVzaCcpKSB7XG5cdFx0XHRcdFx0b2JqZWN0Lmluc3RhbmNlTWF0cml4LnNldFVzYWdlKFRIUkVFLkR5bmFtaWNEcmF3VXNhZ2UpO1xuXHRcdFx0XHRcdHV1aWRzID0gbmV3IEFycmF5KG9iamVjdC5jb3VudCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IGAke29iamVjdC51dWlkfS8ke2l9YCk7XG5cdFx0XHRcdFx0dGVtcCA9IG5ldyBUSFJFRS5PYmplY3QzRCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHV1aWRzID0gW29iamVjdC51dWlkXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHRcdHV1aWRzLFxuXHRcdFx0XHRcdHV1aWRzLm1hcCgoaWQsIGluZGV4KSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zdCBwcm9wcyA9IGdldFByb3BGbihpbmRleCk7XG5cdFx0XHRcdFx0XHRpZiAodGVtcCkge1xuXHRcdFx0XHRcdFx0XHRwcmVwYXJlKHRlbXAsIHByb3BzKTtcblx0XHRcdFx0XHRcdFx0KG9iamVjdCBhcyB1bmtub3duIGFzIFRIUkVFLkluc3RhbmNlZE1lc2gpLnNldE1hdHJpeEF0KGluZGV4LCB0ZW1wLm1hdHJpeCk7XG5cdFx0XHRcdFx0XHRcdChvYmplY3QgYXMgdW5rbm93biBhcyBUSFJFRS5JbnN0YW5jZWRNZXNoKS5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRwcmVwYXJlKG9iamVjdCwgcHJvcHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cGh5c2ljcy5yZWZzW2lkXSA9IG9iamVjdDtcblx0XHRcdFx0XHRcdGRlYnVnPy5hZGQoaWQsIHByb3BzLCB0eXBlKTtcblx0XHRcdFx0XHRcdHNldHVwQ29sbGlzaW9uKHBoeXNpY3MuZXZlbnRzLCBwcm9wcywgaWQpO1xuXHRcdFx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIGlmIGFyZ3MgaXMgdW5kZWZpbmVkLCB0aGVyZSdzIGRlZmF1bHRcblx0XHRcdFx0XHRcdHJldHVybiB7IC4uLnByb3BzLCBhcmdzOiB0cmFuc2Zvcm0ocHJvcHMuYXJncykgfTtcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XTtcblx0XHRcdH0pKCk7XG5cblx0XHRcdC8vIFJlZ2lzdGVyIG9uIG1vdW50LCB1bnJlZ2lzdGVyIG9uIHVubW91bnRcblx0XHRcdGN1cnJlbnRXb3JrZXIuYWRkQm9kaWVzKHtcblx0XHRcdFx0cHJvcHM6IHByb3BzLm1hcCgoeyBvbkNvbGxpZGUsIG9uQ29sbGlkZUJlZ2luLCBvbkNvbGxpZGVFbmQsIC4uLnNlcmlhbGl6YWJsZVByb3BzIH0pID0+IHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0b25Db2xsaWRlOiBCb29sZWFuKG9uQ29sbGlkZSksXG5cdFx0XHRcdFx0XHRvbkNvbGxpZGVCZWdpbjogQm9vbGVhbihvbkNvbGxpZGVCZWdpbiksXG5cdFx0XHRcdFx0XHRvbkNvbGxpZGVFbmQ6IEJvb2xlYW4ob25Db2xsaWRlRW5kKSxcblx0XHRcdFx0XHRcdC4uLnNlcmlhbGl6YWJsZVByb3BzLFxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0pLFxuXHRcdFx0XHR0eXBlLFxuXHRcdFx0XHR1dWlkLFxuXHRcdFx0fSk7XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XG5cdFx0XHRcdHV1aWQuZm9yRWFjaCgoaWQpID0+IHtcblx0XHRcdFx0XHRkZWxldGUgcGh5c2ljcy5yZWZzW2lkXTtcblx0XHRcdFx0XHRkZWJ1Zz8ucmVtb3ZlKGlkKTtcblx0XHRcdFx0XHRkZWxldGUgcGh5c2ljcy5ldmVudHNbaWRdO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0Y3VycmVudFdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gYXBpO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNvbnN0IGJveCA9IGNyZWF0ZUJvZHkoJ0JveCcpO1xuZXhwb3J0IGNvbnN0IGNvbnZleFBvbHloZWRyb24gPSBjcmVhdGVCb2R5KCdDb252ZXhQb2x5aGVkcm9uJyk7XG5leHBvcnQgY29uc3QgY3lsaW5kZXIgPSBjcmVhdGVCb2R5KCdDeWxpbmRlcicpO1xuZXhwb3J0IGNvbnN0IGhlaWdodGZpZWxkID0gY3JlYXRlQm9keSgnSGVpZ2h0ZmllbGQnKTtcbmV4cG9ydCBjb25zdCBwYXJ0aWNsZSA9IGNyZWF0ZUJvZHkoJ1BhcnRpY2xlJyk7XG5leHBvcnQgY29uc3QgcGxhbmUgPSBjcmVhdGVCb2R5KCdQbGFuZScpO1xuZXhwb3J0IGNvbnN0IHNwaGVyZSA9IGNyZWF0ZUJvZHkoJ1NwaGVyZScpO1xuZXhwb3J0IGNvbnN0IHRyaW1lc2ggPSBjcmVhdGVCb2R5KCdUcmltZXNoJyk7XG5leHBvcnQgY29uc3QgY29tcG91bmQgPSBjcmVhdGVCb2R5KCdDb21wb3VuZCcpO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgYm94YCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RCb3ggPSBib3g7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBjb252ZXhQb2x5aGVkcm9uYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RDb252ZXhQb2x5aGVkcm9uID0gY29udmV4UG9seWhlZHJvbjtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGN5bGluZGVyYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RDeWxpbmRlciA9IGN5bGluZGVyO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgaGVpZ2h0ZmllbGRgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdEhlaWdodGZpZWxkID0gaGVpZ2h0ZmllbGQ7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBwYXJ0aWNsZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0UGFydGljbGUgPSBwYXJ0aWNsZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHBsYW5lYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RQbGFuZSA9IHBsYW5lO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgc3BoZXJlYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RTcGhlcmUgPSBzcGhlcmU7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGB0cmltZXNoYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RUcmltZXNoID0gdHJpbWVzaDtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGNvbXBvdW5kYCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RDb21wb3VuZCA9IGNvbXBvdW5kO1xuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tYm9keS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2JvZHkvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWJvZHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -16,8 +16,8 @@ function constraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart
|
|
|
16
16
|
const uuid = makeId();
|
|
17
17
|
const bodyARef = isSignal(bodyA) ? bodyA : signal(bodyA);
|
|
18
18
|
const bodyBRef = isSignal(bodyB) ? bodyB : signal(bodyB);
|
|
19
|
-
const bodyAValue = computed(() => resolveRef(bodyARef()));
|
|
20
|
-
const bodyBValue = computed(() => resolveRef(bodyBRef()));
|
|
19
|
+
const bodyAValue = computed(() => resolveRef(bodyARef()), ...(ngDevMode ? [{ debugName: "bodyAValue" }] : []));
|
|
20
|
+
const bodyBValue = computed(() => resolveRef(bodyBRef()), ...(ngDevMode ? [{ debugName: "bodyBValue" }] : []));
|
|
21
21
|
const constraintApi = computed(() => {
|
|
22
22
|
const _worker = worker();
|
|
23
23
|
if (!_worker)
|
|
@@ -37,7 +37,7 @@ function constraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart
|
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
return enableDisable;
|
|
40
|
-
});
|
|
40
|
+
}, ...(ngDevMode ? [{ debugName: "constraintApi" }] : []));
|
|
41
41
|
let alreadyDisabled = false;
|
|
42
42
|
effect((onCleanup) => {
|
|
43
43
|
const currentWorker = worker();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-cannon-constraint.mjs","sources":["../tmp-esm2022/constraint/lib/constraint.js","../tmp-esm2022/constraint/angular-three-cannon-constraint.js"],"sourcesContent":["import { computed, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { makeId, resolveRef } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { assertInjector } from 'ngxtension/assert-injector';\nfunction createConstraint(type) {\n return (bodyA, bodyB, options) => constraint(type, bodyA, bodyB, options);\n}\nfunction constraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart = false, } = {}) {\n return assertInjector(constraint, injector, () => {\n const physics = inject(NgtcPhysics, { optional: true });\n if (!physics) {\n throw new Error(`[NGT Cannon] injectConstraint was called outside of <ngtc-physics>`);\n }\n const worker = physics.worker;\n const uuid = makeId();\n const bodyARef = isSignal(bodyA) ? bodyA : signal(bodyA);\n const bodyBRef = isSignal(bodyB) ? bodyB : signal(bodyB);\n const bodyAValue = computed(() => resolveRef(bodyARef()));\n const bodyBValue = computed(() => resolveRef(bodyBRef()));\n const constraintApi = computed(() => {\n const _worker = worker();\n if (!_worker)\n return null;\n const enableDisable = {\n disable: () => _worker.disableConstraint({ uuid }),\n enable: () => _worker.enableConstraint({ uuid }),\n remove: () => _worker.removeConstraint({ uuid }),\n };\n if (type === 'Hinge') {\n return {\n ...enableDisable,\n disableMotor: () => _worker.disableConstraintMotor({ uuid }),\n enableMotor: () => _worker.enableConstraintMotor({ uuid }),\n setMotorMaxForce: (value) => _worker.setConstraintMotorMaxForce({ props: value, uuid }),\n setMotorSpeed: (value) => _worker.setConstraintMotorSpeed({ props: value, uuid }),\n };\n }\n return enableDisable;\n });\n let alreadyDisabled = false;\n effect((onCleanup) => {\n const currentWorker = worker();\n if (!currentWorker)\n return;\n const [a, b, api] = [bodyAValue(), bodyBValue(), untracked(constraintApi)];\n if (!a || !b)\n return;\n currentWorker.addConstraint({\n props: [a.uuid, b.uuid, options],\n type,\n uuid,\n });\n if (disableOnStart && !alreadyDisabled) {\n alreadyDisabled = true;\n api?.disable();\n }\n onCleanup(() => currentWorker.removeConstraint({ uuid }));\n });\n return constraintApi;\n });\n}\nexport const pointToPoint = createConstraint('PointToPoint');\nexport const coneTwist = createConstraint('ConeTwist');\nexport const distance = createConstraint('Distance');\nexport const lock = createConstraint('Lock');\nexport const hinge = createConstraint('Hinge');\n/**\n * @deprecated Use `pointToPoint` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectPointToPoint = pointToPoint;\n/**\n * @deprecated Use `coneTwist` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectConeTwist = coneTwist;\n/**\n * @deprecated Use `distance` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectDistance = distance;\n/**\n * @deprecated Use `lock` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectLock = lock;\n/**\n * @deprecated Use `hinge` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectHinge = hinge;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTcEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQWtDNUQsU0FBUyxnQkFBZ0IsQ0FBZ0QsSUFBaUI7SUFDekYsT0FBTyxDQUNOLEtBQWdFLEVBQ2hFLEtBQWdFLEVBQ2hFLE9BQTRDLEVBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQW9CLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FLbEIsSUFBaUIsRUFDakIsS0FBZ0UsRUFDaEUsS0FBZ0UsRUFDaEUsRUFDQyxRQUFRLEVBQ1IsT0FBTyxHQUFHLEVBQTJDLEVBQ3JELGNBQWMsR0FBRyxLQUFLLE1BQ2lCLEVBQUU7SUFFMUMsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFD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QztZQUNoQixDQUFDO1lBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDO0FBRS9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUV2Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RvciwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q29uZVR3aXN0Q29uc3RyYWludE9wdHMsXG5cdENvbnN0cmFpbnRUeXBlcyxcblx0RGlzdGFuY2VDb25zdHJhaW50T3B0cyxcblx0SGluZ2VDb25zdHJhaW50T3B0cyxcblx0TG9ja0NvbnN0cmFpbnRPcHRzLFxuXHRQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBtYWtlSWQsIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0NvbnN0cmFpbnRBcGkge1xuXHRkaXNhYmxlOiAoKSA9PiB2b2lkO1xuXHRlbmFibGU6ICgpID0+IHZvaWQ7XG5cdHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjSGluZ2VDb25zdHJhaW50QXBpIGV4dGVuZHMgTmd0Y0NvbnN0cmFpbnRBcGkge1xuXHRkaXNhYmxlTW90b3I6ICgpID0+IHZvaWQ7XG5cdGVuYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuXHRzZXRNb3Rvck1heEZvcmNlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcblx0c2V0TW90b3JTcGVlZDogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNDb25zdHJhaW50T1JIaW5nZUFwaTxUIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcz4gPSBUIGV4dGVuZHMgQ29uc3RyYWludFR5cGVzXG5cdD8gTmd0Y0NvbnN0cmFpbnRBcGlcblx0OiBOZ3RjSGluZ2VDb25zdHJhaW50QXBpO1xuXG5leHBvcnQgdHlwZSBOZ3RjQ29uc3RyYWludE9wdGlvbnNNYXAgPSB7XG5cdENvbmVUd2lzdDogQ29uZVR3aXN0Q29uc3RyYWludE9wdHM7XG5cdFBvaW50VG9Qb2ludDogUG9pbnRUb1BvaW50Q29uc3RyYWludE9wdHM7XG5cdERpc3RhbmNlOiBEaXN0YW5jZUNvbnN0cmFpbnRPcHRzO1xuXHRMb2NrOiBMb2NrQ29uc3RyYWludE9wdHM7XG5cdEhpbmdlOiBIaW5nZUNvbnN0cmFpbnRPcHRzO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Y0NvbnN0cmFpbnRPcHRpb25zPFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXM+ID0ge1xuXHRpbmplY3Rvcj86IEluamVjdG9yO1xuXHRkaXNhYmxlT25TdGFydD86IGJvb2xlYW47XG5cdG9wdGlvbnM/OiBOZ3RjQ29uc3RyYWludE9wdGlvbnNNYXBbVENvbnN0cmFpbnRUeXBlXTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnN0cmFpbnQ8VENvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50VHlwZXMgfCAnSGluZ2UnPih0eXBlOiBUQ29uc3RyYWludCkge1xuXHRyZXR1cm4gPEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELCBCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRD4oXG5cdFx0Ym9keUE6IEVsZW1lbnRSZWY8QT4gfCBBIHwgU2lnbmFsPEVsZW1lbnRSZWY8QT4gfCBBIHwgdW5kZWZpbmVkPixcblx0XHRib2R5QjogRWxlbWVudFJlZjxCPiB8IEIgfCBTaWduYWw8RWxlbWVudFJlZjxCPiB8IEIgfCB1bmRlZmluZWQ+LFxuXHRcdG9wdGlvbnM/OiBOZ3RjQ29uc3RyYWludE9wdGlvbnM8VENvbnN0cmFpbnQ+LFxuXHQpID0+IGNvbnN0cmFpbnQ8VENvbnN0cmFpbnQsIEEsIEI+KHR5cGUsIGJvZHlBLCBib2R5Qiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cmFpbnQ8XG5cdFRDb25zdHJhaW50IGV4dGVuZHMgQ29uc3RyYWludFR5cGVzIHwgJ0hpbmdlJyxcblx0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG5cdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuPihcblx0dHlwZTogVENvbnN0cmFpbnQsXG5cdGJvZHlBOiBFbGVtZW50UmVmPEE+IHwgQSB8IFNpZ25hbDxFbGVtZW50UmVmPEE+IHwgQSB8IHVuZGVmaW5lZD4sXG5cdGJvZHlCOiBFbGVtZW50UmVmPEI+IHwgQiB8IFNpZ25hbDxFbGVtZW50UmVmPEI+IHwgQiB8IHVuZGVmaW5lZD4sXG5cdHtcblx0XHRpbmplY3Rvcixcblx0XHRvcHRpb25zID0ge30gYXMgTmd0Y0NvbnN0cmFpbnRPcHRpb25zTWFwW1RDb25zdHJhaW50XSxcblx0XHRkaXNhYmxlT25TdGFydCA9IGZhbHNlLFxuXHR9OiBOZ3RjQ29uc3RyYWludE9wdGlvbnM8VENvbnN0cmFpbnQ+ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGNvbnN0cmFpbnQsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgcGh5c2ljcyA9IGluamVjdChOZ3RjUGh5c2ljcywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRcdGlmICghcGh5c2ljcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBbTkdUIENhbm5vbl0gaW5qZWN0Q29uc3RyYWludCB3YXMgY2FsbGVkIG91dHNpZGUgb2YgPG5ndGMtcGh5c2ljcz5gKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3JrZXIgPSBwaHlzaWNzLndvcmtlcjtcblxuXHRcdGNvbnN0IHV1aWQgPSBtYWtlSWQoKTtcblx0XHRjb25zdCBib2R5QVJlZiA9IGlzU2lnbmFsKGJvZHlBKSA/IGJvZHlBIDogc2lnbmFsKGJvZHlBKTtcblx0XHRjb25zdCBib2R5QlJlZiA9IGlzU2lnbmFsKGJvZHlCKSA/IGJvZHlCIDogc2lnbmFsKGJvZHlCKTtcblx0XHRjb25zdCBib2R5QVZhbHVlID0gY29tcHV0ZWQoKCkgPT4gcmVzb2x2ZVJlZihib2R5QVJlZigpKSk7XG5cdFx0Y29uc3QgYm9keUJWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHJlc29sdmVSZWYoYm9keUJSZWYoKSkpO1xuXG5cdFx0Y29uc3QgY29uc3RyYWludEFwaSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF93b3JrZXIgPSB3b3JrZXIoKTtcblx0XHRcdGlmICghX3dvcmtlcikgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IGVuYWJsZURpc2FibGUgPSB7XG5cdFx0XHRcdGRpc2FibGU6ICgpID0+IF93b3JrZXIuZGlzYWJsZUNvbnN0cmFpbnQoeyB1dWlkIH0pLFxuXHRcdFx0XHRlbmFibGU6ICgpID0+IF93b3JrZXIuZW5hYmxlQ29uc3RyYWludCh7IHV1aWQgfSksXG5cdFx0XHRcdHJlbW92ZTogKCkgPT4gX3dvcmtlci5yZW1vdmVDb25zdHJhaW50KHsgdXVpZCB9KSxcblx0XHRcdH07XG5cdFx0XHRpZiAodHlwZSA9PT0gJ0hpbmdlJykge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdC4uLmVuYWJsZURpc2FibGUsXG5cdFx0XHRcdFx0ZGlzYWJsZU1vdG9yOiAoKSA9PiBfd29ya2VyLmRpc2FibGVDb25zdHJhaW50TW90b3IoeyB1dWlkIH0pLFxuXHRcdFx0XHRcdGVuYWJsZU1vdG9yOiAoKSA9PiBfd29ya2VyLmVuYWJsZUNvbnN0cmFpbnRNb3Rvcih7IHV1aWQgfSksXG5cdFx0XHRcdFx0c2V0TW90b3JNYXhGb3JjZTogKHZhbHVlOiBudW1iZXIpID0+IF93b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yTWF4Rm9yY2UoeyBwcm9wczogdmFsdWUsIHV1aWQgfSksXG5cdFx0XHRcdFx0c2V0TW90b3JTcGVlZDogKHZhbHVlOiBudW1iZXIpID0+IF93b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yU3BlZWQoeyBwcm9wczogdmFsdWUsIHV1aWQgfSksXG5cdFx0XHRcdH0gYXMgTmd0Y0hpbmdlQ29uc3RyYWludEFwaTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBlbmFibGVEaXNhYmxlIGFzIE5ndGNDb25zdHJhaW50QXBpO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGFscmVhZHlEaXNhYmxlZCA9IGZhbHNlO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50V29ya2VyID0gd29ya2VyKCk7XG5cdFx0XHRpZiAoIWN1cnJlbnRXb3JrZXIpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgW2EsIGIsIGFwaV0gPSBbYm9keUFWYWx1ZSgpLCBib2R5QlZhbHVlKCksIHVudHJhY2tlZChjb25zdHJhaW50QXBpKV07XG5cdFx0XHRpZiAoIWEgfHwgIWIpIHJldHVybjtcblxuXHRcdFx0Y3VycmVudFdvcmtlci5hZGRDb25zdHJhaW50KHtcblx0XHRcdFx0cHJvcHM6IFthLnV1aWQsIGIudXVpZCwgb3B0aW9uc10sXG5cdFx0XHRcdHR5cGUsXG5cdFx0XHRcdHV1aWQsXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGRpc2FibGVPblN0YXJ0ICYmICFhbHJlYWR5RGlzYWJsZWQpIHtcblx0XHRcdFx0YWxyZWFkeURpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0YXBpPy5kaXNhYmxlKCk7XG5cdFx0XHR9XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjdXJyZW50V29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBjb25zdHJhaW50QXBpO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50VG9Qb2ludCA9IGNyZWF0ZUNvbnN0cmFpbnQoJ1BvaW50VG9Qb2ludCcpO1xuZXhwb3J0IGNvbnN0IGNvbmVUd2lzdCA9IGNyZWF0ZUNvbnN0cmFpbnQoJ0NvbmVUd2lzdCcpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gY3JlYXRlQ29uc3RyYWludCgnRGlzdGFuY2UnKTtcbmV4cG9ydCBjb25zdCBsb2NrID0gY3JlYXRlQ29uc3RyYWludCgnTG9jaycpO1xuZXhwb3J0IGNvbnN0IGhpbmdlID0gY3JlYXRlQ29uc3RyYWludCgnSGluZ2UnKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHBvaW50VG9Qb2ludGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0UG9pbnRUb1BvaW50ID0gcG9pbnRUb1BvaW50O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgY29uZVR3aXN0YCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RDb25lVHdpc3QgPSBjb25lVHdpc3Q7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBkaXN0YW5jZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGxvY2tgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdExvY2sgPSBsb2NrO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgaGluZ2VgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdEhpbmdlID0gaGluZ2U7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWNvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-cannon-constraint.mjs","sources":["../tmp-esm2022/constraint/lib/constraint.js","../tmp-esm2022/constraint/angular-three-cannon-constraint.js"],"sourcesContent":["import { computed, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport { makeId, resolveRef } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { assertInjector } from 'ngxtension/assert-injector';\nfunction createConstraint(type) {\n return (bodyA, bodyB, options) => constraint(type, bodyA, bodyB, options);\n}\nfunction constraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart = false, } = {}) {\n return assertInjector(constraint, injector, () => {\n const physics = inject(NgtcPhysics, { optional: true });\n if (!physics) {\n throw new Error(`[NGT Cannon] injectConstraint was called outside of <ngtc-physics>`);\n }\n const worker = physics.worker;\n const uuid = makeId();\n const bodyARef = isSignal(bodyA) ? bodyA : signal(bodyA);\n const bodyBRef = isSignal(bodyB) ? bodyB : signal(bodyB);\n const bodyAValue = computed(() => resolveRef(bodyARef()), ...(ngDevMode ? [{ debugName: \"bodyAValue\" }] : []));\n const bodyBValue = computed(() => resolveRef(bodyBRef()), ...(ngDevMode ? [{ debugName: \"bodyBValue\" }] : []));\n const constraintApi = computed(() => {\n const _worker = worker();\n if (!_worker)\n return null;\n const enableDisable = {\n disable: () => _worker.disableConstraint({ uuid }),\n enable: () => _worker.enableConstraint({ uuid }),\n remove: () => _worker.removeConstraint({ uuid }),\n };\n if (type === 'Hinge') {\n return {\n ...enableDisable,\n disableMotor: () => _worker.disableConstraintMotor({ uuid }),\n enableMotor: () => _worker.enableConstraintMotor({ uuid }),\n setMotorMaxForce: (value) => _worker.setConstraintMotorMaxForce({ props: value, uuid }),\n setMotorSpeed: (value) => _worker.setConstraintMotorSpeed({ props: value, uuid }),\n };\n }\n return enableDisable;\n }, ...(ngDevMode ? [{ debugName: \"constraintApi\" }] : []));\n let alreadyDisabled = false;\n effect((onCleanup) => {\n const currentWorker = worker();\n if (!currentWorker)\n return;\n const [a, b, api] = [bodyAValue(), bodyBValue(), untracked(constraintApi)];\n if (!a || !b)\n return;\n currentWorker.addConstraint({\n props: [a.uuid, b.uuid, options],\n type,\n uuid,\n });\n if (disableOnStart && !alreadyDisabled) {\n alreadyDisabled = true;\n api?.disable();\n }\n onCleanup(() => currentWorker.removeConstraint({ uuid }));\n });\n return constraintApi;\n });\n}\nexport const pointToPoint = createConstraint('PointToPoint');\nexport const coneTwist = createConstraint('ConeTwist');\nexport const distance = createConstraint('Distance');\nexport const lock = createConstraint('Lock');\nexport const hinge = createConstraint('Hinge');\n/**\n * @deprecated Use `pointToPoint` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectPointToPoint = pointToPoint;\n/**\n * @deprecated Use `coneTwist` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectConeTwist = coneTwist;\n/**\n * @deprecated Use `distance` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectDistance = distance;\n/**\n * @deprecated Use `lock` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectLock = lock;\n/**\n * @deprecated Use `hinge` instead. Will be removed in v5.0.0\n * @since v4.0.0\n */\nexport const injectHinge = hinge;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTcEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQWtDNUQsU0FBUyxnQkFBZ0IsQ0FBZ0QsSUFBaUI7SUFDekYsT0FBTyxDQUNOLEtBQWdFLEVBQ2hFLEtBQWdFLEVBQ2hFLE9BQTRDLEVBQzNDLEVBQUUsQ0FBQyxVQUFVLENBQW9CLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FLbEIsSUFBaUIsRUFDakIsS0FBZ0UsRUFDaEUsS0FBZ0UsRUFDaEUsRUFDQyxRQUFRLEVBQ1IsT0FBTyxHQUFHLEVBQTJDLEVBQ3JELGNBQWMsR0FBRyxLQUFLLE1BQ2lCLEVBQUU7SUFFMUMsT0FBTyxjQUFjLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFD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Q0FBQztZQUNoQixDQUFDO1lBRUQsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMzRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sYUFBYSxDQUFDO0lBQ3RCLENBQUMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDdkQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFFL0M7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsWUFBWSxDQUFDO0FBRS9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUM7QUFFekM7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQztBQUV2Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBRS9COzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RvciwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q29uZVR3aXN0Q29uc3RyYWludE9wdHMsXG5cdENvbnN0cmFpbnRUeXBlcyxcblx0RGlzdGFuY2VDb25zdHJhaW50T3B0cyxcblx0SGluZ2VDb25zdHJhaW50T3B0cyxcblx0TG9ja0NvbnN0cmFpbnRPcHRzLFxuXHRQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBtYWtlSWQsIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0NvbnN0cmFpbnRBcGkge1xuXHRkaXNhYmxlOiAoKSA9PiB2b2lkO1xuXHRlbmFibGU6ICgpID0+IHZvaWQ7XG5cdHJlbW92ZTogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjSGluZ2VDb25zdHJhaW50QXBpIGV4dGVuZHMgTmd0Y0NvbnN0cmFpbnRBcGkge1xuXHRkaXNhYmxlTW90b3I6ICgpID0+IHZvaWQ7XG5cdGVuYWJsZU1vdG9yOiAoKSA9PiB2b2lkO1xuXHRzZXRNb3Rvck1heEZvcmNlOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcblx0c2V0TW90b3JTcGVlZDogKHZhbHVlOiBudW1iZXIpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNDb25zdHJhaW50T1JIaW5nZUFwaTxUIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcz4gPSBUIGV4dGVuZHMgQ29uc3RyYWludFR5cGVzXG5cdD8gTmd0Y0NvbnN0cmFpbnRBcGlcblx0OiBOZ3RjSGluZ2VDb25zdHJhaW50QXBpO1xuXG5leHBvcnQgdHlwZSBOZ3RjQ29uc3RyYWludE9wdGlvbnNNYXAgPSB7XG5cdENvbmVUd2lzdDogQ29uZVR3aXN0Q29uc3RyYWludE9wdHM7XG5cdFBvaW50VG9Qb2ludDogUG9pbnRUb1BvaW50Q29uc3RyYWludE9wdHM7XG5cdERpc3RhbmNlOiBEaXN0YW5jZUNvbnN0cmFpbnRPcHRzO1xuXHRMb2NrOiBMb2NrQ29uc3RyYWludE9wdHM7XG5cdEhpbmdlOiBIaW5nZUNvbnN0cmFpbnRPcHRzO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Y0NvbnN0cmFpbnRPcHRpb25zPFRDb25zdHJhaW50VHlwZSBleHRlbmRzICdIaW5nZScgfCBDb25zdHJhaW50VHlwZXM+ID0ge1xuXHRpbmplY3Rvcj86IEluamVjdG9yO1xuXHRkaXNhYmxlT25TdGFydD86IGJvb2xlYW47XG5cdG9wdGlvbnM/OiBOZ3RjQ29uc3RyYWludE9wdGlvbnNNYXBbVENvbnN0cmFpbnRUeXBlXTtcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnN0cmFpbnQ8VENvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50VHlwZXMgfCAnSGluZ2UnPih0eXBlOiBUQ29uc3RyYWludCkge1xuXHRyZXR1cm4gPEEgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELCBCIGV4dGVuZHMgVEhSRUUuT2JqZWN0M0QgPSBUSFJFRS5PYmplY3QzRD4oXG5cdFx0Ym9keUE6IEVsZW1lbnRSZWY8QT4gfCBBIHwgU2lnbmFsPEVsZW1lbnRSZWY8QT4gfCBBIHwgdW5kZWZpbmVkPixcblx0XHRib2R5QjogRWxlbWVudFJlZjxCPiB8IEIgfCBTaWduYWw8RWxlbWVudFJlZjxCPiB8IEIgfCB1bmRlZmluZWQ+LFxuXHRcdG9wdGlvbnM/OiBOZ3RjQ29uc3RyYWludE9wdGlvbnM8VENvbnN0cmFpbnQ+LFxuXHQpID0+IGNvbnN0cmFpbnQ8VENvbnN0cmFpbnQsIEEsIEI+KHR5cGUsIGJvZHlBLCBib2R5Qiwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIGNvbnN0cmFpbnQ8XG5cdFRDb25zdHJhaW50IGV4dGVuZHMgQ29uc3RyYWludFR5cGVzIHwgJ0hpbmdlJyxcblx0QSBleHRlbmRzIFRIUkVFLk9iamVjdDNEID0gVEhSRUUuT2JqZWN0M0QsXG5cdEIgZXh0ZW5kcyBUSFJFRS5PYmplY3QzRCA9IFRIUkVFLk9iamVjdDNELFxuPihcblx0dHlwZTogVENvbnN0cmFpbnQsXG5cdGJvZHlBOiBFbGVtZW50UmVmPEE+IHwgQSB8IFNpZ25hbDxFbGVtZW50UmVmPEE+IHwgQSB8IHVuZGVmaW5lZD4sXG5cdGJvZHlCOiBFbGVtZW50UmVmPEI+IHwgQiB8IFNpZ25hbDxFbGVtZW50UmVmPEI+IHwgQiB8IHVuZGVmaW5lZD4sXG5cdHtcblx0XHRpbmplY3Rvcixcblx0XHRvcHRpb25zID0ge30gYXMgTmd0Y0NvbnN0cmFpbnRPcHRpb25zTWFwW1RDb25zdHJhaW50XSxcblx0XHRkaXNhYmxlT25TdGFydCA9IGZhbHNlLFxuXHR9OiBOZ3RjQ29uc3RyYWludE9wdGlvbnM8VENvbnN0cmFpbnQ+ID0ge30sXG4pIHtcblx0cmV0dXJuIGFzc2VydEluamVjdG9yKGNvbnN0cmFpbnQsIGluamVjdG9yLCAoKSA9PiB7XG5cdFx0Y29uc3QgcGh5c2ljcyA9IGluamVjdChOZ3RjUGh5c2ljcywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuXHRcdGlmICghcGh5c2ljcykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBbTkdUIENhbm5vbl0gaW5qZWN0Q29uc3RyYWludCB3YXMgY2FsbGVkIG91dHNpZGUgb2YgPG5ndGMtcGh5c2ljcz5gKTtcblx0XHR9XG5cblx0XHRjb25zdCB3b3JrZXIgPSBwaHlzaWNzLndvcmtlcjtcblxuXHRcdGNvbnN0IHV1aWQgPSBtYWtlSWQoKTtcblx0XHRjb25zdCBib2R5QVJlZiA9IGlzU2lnbmFsKGJvZHlBKSA/IGJvZHlBIDogc2lnbmFsKGJvZHlBKTtcblx0XHRjb25zdCBib2R5QlJlZiA9IGlzU2lnbmFsKGJvZHlCKSA/IGJvZHlCIDogc2lnbmFsKGJvZHlCKTtcblx0XHRjb25zdCBib2R5QVZhbHVlID0gY29tcHV0ZWQoKCkgPT4gcmVzb2x2ZVJlZihib2R5QVJlZigpKSk7XG5cdFx0Y29uc3QgYm9keUJWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHJlc29sdmVSZWYoYm9keUJSZWYoKSkpO1xuXG5cdFx0Y29uc3QgY29uc3RyYWludEFwaSA9IGNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IF93b3JrZXIgPSB3b3JrZXIoKTtcblx0XHRcdGlmICghX3dvcmtlcikgcmV0dXJuIG51bGw7XG5cblx0XHRcdGNvbnN0IGVuYWJsZURpc2FibGUgPSB7XG5cdFx0XHRcdGRpc2FibGU6ICgpID0+IF93b3JrZXIuZGlzYWJsZUNvbnN0cmFpbnQoeyB1dWlkIH0pLFxuXHRcdFx0XHRlbmFibGU6ICgpID0+IF93b3JrZXIuZW5hYmxlQ29uc3RyYWludCh7IHV1aWQgfSksXG5cdFx0XHRcdHJlbW92ZTogKCkgPT4gX3dvcmtlci5yZW1vdmVDb25zdHJhaW50KHsgdXVpZCB9KSxcblx0XHRcdH07XG5cdFx0XHRpZiAodHlwZSA9PT0gJ0hpbmdlJykge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdC4uLmVuYWJsZURpc2FibGUsXG5cdFx0XHRcdFx0ZGlzYWJsZU1vdG9yOiAoKSA9PiBfd29ya2VyLmRpc2FibGVDb25zdHJhaW50TW90b3IoeyB1dWlkIH0pLFxuXHRcdFx0XHRcdGVuYWJsZU1vdG9yOiAoKSA9PiBfd29ya2VyLmVuYWJsZUNvbnN0cmFpbnRNb3Rvcih7IHV1aWQgfSksXG5cdFx0XHRcdFx0c2V0TW90b3JNYXhGb3JjZTogKHZhbHVlOiBudW1iZXIpID0+IF93b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yTWF4Rm9yY2UoeyBwcm9wczogdmFsdWUsIHV1aWQgfSksXG5cdFx0XHRcdFx0c2V0TW90b3JTcGVlZDogKHZhbHVlOiBudW1iZXIpID0+IF93b3JrZXIuc2V0Q29uc3RyYWludE1vdG9yU3BlZWQoeyBwcm9wczogdmFsdWUsIHV1aWQgfSksXG5cdFx0XHRcdH0gYXMgTmd0Y0hpbmdlQ29uc3RyYWludEFwaTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBlbmFibGVEaXNhYmxlIGFzIE5ndGNDb25zdHJhaW50QXBpO1xuXHRcdH0pO1xuXG5cdFx0bGV0IGFscmVhZHlEaXNhYmxlZCA9IGZhbHNlO1xuXHRcdGVmZmVjdCgob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRjb25zdCBjdXJyZW50V29ya2VyID0gd29ya2VyKCk7XG5cdFx0XHRpZiAoIWN1cnJlbnRXb3JrZXIpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgW2EsIGIsIGFwaV0gPSBbYm9keUFWYWx1ZSgpLCBib2R5QlZhbHVlKCksIHVudHJhY2tlZChjb25zdHJhaW50QXBpKV07XG5cdFx0XHRpZiAoIWEgfHwgIWIpIHJldHVybjtcblxuXHRcdFx0Y3VycmVudFdvcmtlci5hZGRDb25zdHJhaW50KHtcblx0XHRcdFx0cHJvcHM6IFthLnV1aWQsIGIudXVpZCwgb3B0aW9uc10sXG5cdFx0XHRcdHR5cGUsXG5cdFx0XHRcdHV1aWQsXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGRpc2FibGVPblN0YXJ0ICYmICFhbHJlYWR5RGlzYWJsZWQpIHtcblx0XHRcdFx0YWxyZWFkeURpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0YXBpPy5kaXNhYmxlKCk7XG5cdFx0XHR9XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjdXJyZW50V29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBjb25zdHJhaW50QXBpO1xuXHR9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHBvaW50VG9Qb2ludCA9IGNyZWF0ZUNvbnN0cmFpbnQoJ1BvaW50VG9Qb2ludCcpO1xuZXhwb3J0IGNvbnN0IGNvbmVUd2lzdCA9IGNyZWF0ZUNvbnN0cmFpbnQoJ0NvbmVUd2lzdCcpO1xuZXhwb3J0IGNvbnN0IGRpc3RhbmNlID0gY3JlYXRlQ29uc3RyYWludCgnRGlzdGFuY2UnKTtcbmV4cG9ydCBjb25zdCBsb2NrID0gY3JlYXRlQ29uc3RyYWludCgnTG9jaycpO1xuZXhwb3J0IGNvbnN0IGhpbmdlID0gY3JlYXRlQ29uc3RyYWludCgnSGluZ2UnKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYHBvaW50VG9Qb2ludGAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0UG9pbnRUb1BvaW50ID0gcG9pbnRUb1BvaW50O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgY29uZVR3aXN0YCBpbnN0ZWFkLiBXaWxsIGJlIHJlbW92ZWQgaW4gdjUuMC4wXG4gKiBAc2luY2UgdjQuMC4wXG4gKi9cbmV4cG9ydCBjb25zdCBpbmplY3RDb25lVHdpc3QgPSBjb25lVHdpc3Q7XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIGBkaXN0YW5jZWAgaW5zdGVhZC4gV2lsbCBiZSByZW1vdmVkIGluIHY1LjAuMFxuICogQHNpbmNlIHY0LjAuMFxuICovXG5leHBvcnQgY29uc3QgaW5qZWN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgYGxvY2tgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdExvY2sgPSBsb2NrO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBgaGluZ2VgIGluc3RlYWQuIFdpbGwgYmUgcmVtb3ZlZCBpbiB2NS4wLjBcbiAqIEBzaW5jZSB2NC4wLjBcbiAqL1xuZXhwb3J0IGNvbnN0IGluamVjdEhpbmdlID0gaGluZ2U7XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWNvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ const defaultOptions = {
|
|
|
26
26
|
};
|
|
27
27
|
class NgtcDebug {
|
|
28
28
|
constructor() {
|
|
29
|
-
this.debug = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
29
|
+
this.debug = input(defaultOptions, ...(ngDevMode ? [{ debugName: "debug", transform: mergeInputs(defaultOptions) }] : [{ transform: mergeInputs(defaultOptions) }]));
|
|
30
30
|
this.physics = inject(NgtcPhysics);
|
|
31
31
|
this.store = injectStore();
|
|
32
32
|
this.defaultScene = this.store.scene;
|
|
@@ -72,10 +72,10 @@ class NgtcDebug {
|
|
|
72
72
|
this.bodies.splice(debugBodyIndex, 1);
|
|
73
73
|
delete this.bodyMap[uuid];
|
|
74
74
|
}
|
|
75
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
76
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
76
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: NgtcDebug, isStandalone: true, selector: "ngtc-physics[debug]", inputs: { debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
77
77
|
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NgtcDebug, decorators: [{
|
|
79
79
|
type: Directive,
|
|
80
80
|
args: [{ selector: 'ngtc-physics[debug]' }]
|
|
81
81
|
}], ctorParameters: () => [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-cannon-debug.mjs","sources":["../tmp-esm2022/debug/lib/debug.js","../tmp-esm2022/debug/angular-three-cannon-debug.js"],"sourcesContent":["import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { propsToBody } from '@pmndrs/cannon-worker-api';\nimport { beforeRender, injectStore, is } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport CannonDebugger from 'cannon-es-debugger';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport * as i0 from \"@angular/core\";\nconst q = new THREE.Quaternion();\nconst s = new THREE.Vector3(1, 1, 1);\nconst v = new THREE.Vector3();\nconst m = new THREE.Matrix4();\nfunction getMatrix(o) {\n if (is.three(o, 'isInstancedMesh')) {\n o.getMatrixAt(parseInt(o.uuid.split('/')[1]), m);\n return m;\n }\n return o.matrix;\n}\nconst defaultOptions = {\n enabled: true,\n scale: 1,\n color: 'black',\n impl: CannonDebugger,\n};\nexport class NgtcDebug {\n constructor() {\n this.debug = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n this.physics = inject(NgtcPhysics);\n this.store = injectStore();\n this.defaultScene = this.store.scene;\n this.debuggerScene = new THREE.Scene();\n this.bodies = [];\n this.bodyMap = {};\n // NOTE: afterNextRender so we only instantiate once after inputs have been resolved\n afterNextRender(() => {\n this.defaultScene().add(this.debuggerScene);\n this.cannonDebugger = this.debug().impl(this.debuggerScene, { bodies: this.bodies }, {\n color: this.debug().color,\n scale: this.debug().scale,\n });\n });\n beforeRender(() => {\n if (!this.cannonDebugger)\n return;\n const enabled = this.debug().enabled;\n const refs = this.physics.refs;\n for (const uuid in this.bodyMap) {\n const ref = refs[uuid];\n const body = this.bodyMap[uuid];\n if (ref) {\n getMatrix(ref).decompose(v, q, s);\n body.position.copy(v);\n body.quaternion.copy(q);\n }\n }\n for (const child of this.debuggerScene.children)\n child.visible = enabled;\n if (enabled)\n this.cannonDebugger.update();\n });\n }\n add(uuid, props, type) {\n const body = propsToBody({ uuid, props, type });\n this.bodies.push(body);\n this.bodyMap[uuid] = body;\n }\n remove(uuid) {\n const debugBodyIndex = this.bodies.indexOf(this.bodyMap[uuid]);\n if (debugBodyIndex > -1)\n this.bodies.splice(debugBodyIndex, 1);\n delete this.bodyMap[uuid];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.3\", type: NgtcDebug, isStandalone: true, selector: \"ngtc-physics[debug]\", inputs: { debug: { classPropertyName: \"debug\", publicName: \"debug\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgtcDebug, decorators: [{\n type: Directive,\n args: [{ selector: 'ngtc-physics[debug]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvbGliL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUE0QixXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFOUIsU0FBUyxTQUFTLENBQUMsQ0FBaUI7SUFDbkMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFzQixDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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QUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNsQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQXREVyxTQUFTO2tHQUFULFNBQVM7OzJGQUFULFNBQVM7a0JBRHJCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGFmdGVyTmV4dFJlbmRlciwgaW5qZWN0LCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9keVByb3BzLCBCb2R5U2hhcGVUeXBlLCBwcm9wc1RvQm9keSB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgYmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgaXMgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgQm9keSwgUXVhdGVybmlvbiBhcyBDUXVhcnRlcm5pb24sIFZlYzMsIFdvcmxkIH0gZnJvbSAnY2Fubm9uLWVzJztcbmltcG9ydCBDYW5ub25EZWJ1Z2dlciBmcm9tICdjYW5ub24tZXMtZGVidWdnZXInO1xuaW1wb3J0IHsgbWVyZ2VJbnB1dHMgfSBmcm9tICduZ3h0ZW5zaW9uL2luamVjdC1pbnB1dHMnO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5jb25zdCBxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IHMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAxLCAxKTtcbmNvbnN0IHYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgbSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cbmZ1bmN0aW9uIGdldE1hdHJpeChvOiBUSFJFRS5PYmplY3QzRCkge1xuXHRpZiAoaXMudGhyZWU8VEhSRUUuSW5zdGFuY2VkTWVzaD4obywgJ2lzSW5zdGFuY2VkTWVzaCcpKSB7XG5cdFx0by5nZXRNYXRyaXhBdChwYXJzZUludChvLnV1aWQuc3BsaXQoJy8nKVsxXSksIG0pO1xuXHRcdHJldHVybiBtO1xuXHR9XG5cdHJldHVybiBvLm1hdHJpeDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjRGVidWdJbnB1dHMge1xuXHRlbmFibGVkOiBib29sZWFuO1xuXHRjb2xvcjogc3RyaW5nO1xuXHRpbXBsOiB0eXBlb2YgQ2Fubm9uRGVidWdnZXI7XG5cdHNjYWxlOiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RjRGVidWdJbnB1dHMgPSB7XG5cdGVuYWJsZWQ6IHRydWUsXG5cdHNjYWxlOiAxLFxuXHRjb2xvcjogJ2JsYWNrJyxcblx0aW1wbDogQ2Fubm9uRGVidWdnZXIsXG59O1xuXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICduZ3RjLXBoeXNpY3NbZGVidWddJyB9KVxuZXhwb3J0IGNsYXNzIE5ndGNEZWJ1ZyB7XG5cdGRlYnVnID0gaW5wdXQoZGVmYXVsdE9wdGlvbnMsIHsgdHJhbnNmb3JtOiBtZXJnZUlucHV0cyhkZWZhdWx0T3B0aW9ucykgfSk7XG5cblx0cHJpdmF0ZSBwaHlzaWNzID0gaW5qZWN0KE5ndGNQaHlzaWNzKTtcblxuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBkZWZhdWx0U2NlbmUgPSB0aGlzLnN0b3JlLnNjZW5lO1xuXG5cdHByaXZhdGUgZGVidWdnZXJTY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuXHRwcml2YXRlIGJvZGllczogQm9keVtdID0gW107XG5cdHByaXZhdGUgYm9keU1hcDogUmVjb3JkPHN0cmluZywgQm9keT4gPSB7fTtcblxuXHRwcml2YXRlIGNhbm5vbkRlYnVnZ2VyITogUmV0dXJuVHlwZTx0eXBlb2YgQ2Fubm9uRGVidWdnZXI+O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdC8vIE5PVEU6IGFmdGVyTmV4dFJlbmRlciBzbyB3ZSBvbmx5IGluc3RhbnRpYXRlIG9uY2UgYWZ0ZXIgaW5wdXRzIGhhdmUgYmVlbiByZXNvbHZlZFxuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmRlZmF1bHRTY2VuZSgpLmFkZCh0aGlzLmRlYnVnZ2VyU2NlbmUpO1xuXHRcdFx0dGhpcy5jYW5ub25EZWJ1Z2dlciA9IHRoaXMuZGVidWcoKS5pbXBsKHRoaXMuZGVidWdnZXJTY2VuZSwgeyBib2RpZXM6IHRoaXMuYm9kaWVzIH0gYXMgV29ybGQsIHtcblx0XHRcdFx0Y29sb3I6IHRoaXMuZGVidWcoKS5jb2xvcixcblx0XHRcdFx0c2NhbGU6IHRoaXMuZGVidWcoKS5zY2FsZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXG5cdFx0YmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGlmICghdGhpcy5jYW5ub25EZWJ1Z2dlcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBlbmFibGVkID0gdGhpcy5kZWJ1ZygpLmVuYWJsZWQ7XG5cdFx0XHRjb25zdCByZWZzID0gdGhpcy5waHlzaWNzLnJlZnM7XG5cdFx0XHRmb3IgKGNvbnN0IHV1aWQgaW4gdGhpcy5ib2R5TWFwKSB7XG5cdFx0XHRcdGNvbnN0IHJlZiA9IHJlZnNbdXVpZF07XG5cdFx0XHRcdGNvbnN0IGJvZHkgPSB0aGlzLmJvZHlNYXBbdXVpZF07XG5cdFx0XHRcdGlmIChyZWYpIHtcblx0XHRcdFx0XHRnZXRNYXRyaXgocmVmKS5kZWNvbXBvc2UodiwgcSwgcyk7XG5cdFx0XHRcdFx0Ym9keS5wb3NpdGlvbi5jb3B5KHYgYXMgdW5rbm93biBhcyBWZWMzKTtcblx0XHRcdFx0XHRib2R5LnF1YXRlcm5pb24uY29weShxIGFzIHVua25vd24gYXMgQ1F1YXJ0ZXJuaW9uKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuZGVidWdnZXJTY2VuZS5jaGlsZHJlbikgY2hpbGQudmlzaWJsZSA9IGVuYWJsZWQ7XG5cdFx0XHRpZiAoZW5hYmxlZCkgdGhpcy5jYW5ub25EZWJ1Z2dlci51cGRhdGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdGFkZCh1dWlkOiBzdHJpbmcsIHByb3BzOiBCb2R5UHJvcHMsIHR5cGU6IEJvZHlTaGFwZVR5cGUpIHtcblx0XHRjb25zdCBib2R5ID0gcHJvcHNUb0JvZHkoeyB1dWlkLCBwcm9wcywgdHlwZSB9KTtcblx0XHR0aGlzLmJvZGllcy5wdXNoKGJvZHkpO1xuXHRcdHRoaXMuYm9keU1hcFt1dWlkXSA9IGJvZHk7XG5cdH1cblxuXHRyZW1vdmUodXVpZDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgZGVidWdCb2R5SW5kZXggPSB0aGlzLmJvZGllcy5pbmRleE9mKHRoaXMuYm9keU1hcFt1dWlkXSk7XG5cdFx0aWYgKGRlYnVnQm9keUluZGV4ID4gLTEpIHRoaXMuYm9kaWVzLnNwbGljZShkZWJ1Z0JvZHlJbmRleCwgMSk7XG5cdFx0ZGVsZXRlIHRoaXMuYm9keU1hcFt1dWlkXTtcblx0fVxufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvYW5ndWxhci10aHJlZS1jYW5ub24tZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-cannon-debug.mjs","sources":["../tmp-esm2022/debug/lib/debug.js","../tmp-esm2022/debug/angular-three-cannon-debug.js"],"sourcesContent":["import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { propsToBody } from '@pmndrs/cannon-worker-api';\nimport { beforeRender, injectStore, is } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport CannonDebugger from 'cannon-es-debugger';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport * as i0 from \"@angular/core\";\nconst q = new THREE.Quaternion();\nconst s = new THREE.Vector3(1, 1, 1);\nconst v = new THREE.Vector3();\nconst m = new THREE.Matrix4();\nfunction getMatrix(o) {\n if (is.three(o, 'isInstancedMesh')) {\n o.getMatrixAt(parseInt(o.uuid.split('/')[1]), m);\n return m;\n }\n return o.matrix;\n}\nconst defaultOptions = {\n enabled: true,\n scale: 1,\n color: 'black',\n impl: CannonDebugger,\n};\nexport class NgtcDebug {\n constructor() {\n this.debug = input(defaultOptions, ...(ngDevMode ? [{ debugName: \"debug\", transform: mergeInputs(defaultOptions) }] : [{ transform: mergeInputs(defaultOptions) }]));\n this.physics = inject(NgtcPhysics);\n this.store = injectStore();\n this.defaultScene = this.store.scene;\n this.debuggerScene = new THREE.Scene();\n this.bodies = [];\n this.bodyMap = {};\n // NOTE: afterNextRender so we only instantiate once after inputs have been resolved\n afterNextRender(() => {\n this.defaultScene().add(this.debuggerScene);\n this.cannonDebugger = this.debug().impl(this.debuggerScene, { bodies: this.bodies }, {\n color: this.debug().color,\n scale: this.debug().scale,\n });\n });\n beforeRender(() => {\n if (!this.cannonDebugger)\n return;\n const enabled = this.debug().enabled;\n const refs = this.physics.refs;\n for (const uuid in this.bodyMap) {\n const ref = refs[uuid];\n const body = this.bodyMap[uuid];\n if (ref) {\n getMatrix(ref).decompose(v, q, s);\n body.position.copy(v);\n body.quaternion.copy(q);\n }\n }\n for (const child of this.debuggerScene.children)\n child.visible = enabled;\n if (enabled)\n this.cannonDebugger.update();\n });\n }\n add(uuid, props, type) {\n const body = propsToBody({ uuid, props, type });\n this.bodies.push(body);\n this.bodyMap[uuid] = body;\n }\n remove(uuid) {\n const debugBodyIndex = this.bodies.indexOf(this.bodyMap[uuid]);\n if (debugBodyIndex > -1)\n this.bodies.splice(debugBodyIndex, 1);\n delete this.bodyMap[uuid];\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: NgtcDebug, isStandalone: true, selector: \"ngtc-physics[debug]\", inputs: { debug: { classPropertyName: \"debug\", publicName: \"debug\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NgtcDebug, decorators: [{\n type: Directive,\n args: [{ selector: 'ngtc-physics[debug]' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvbGliL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUE0QixXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELE9BQU8sY0FBYyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQzs7QUFFL0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDakMsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckMsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDOUIsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFOUIsU0FBUyxTQUFTLENBQUMsQ0FBaUI7SUFDbkMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFzQixDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1FBQ3pELENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxD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Q0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQVk7UUFDbEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQy9ELElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztZQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQzs4R0F0RFcsU0FBUztrR0FBVCxTQUFTOzsyRkFBVCxTQUFTO2tCQURyQixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBhZnRlck5leHRSZW5kZXIsIGluamVjdCwgaW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJvZHlQcm9wcywgQm9keVNoYXBlVHlwZSwgcHJvcHNUb0JvZHkgfSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIGlzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjUGh5c2ljcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IEJvZHksIFF1YXRlcm5pb24gYXMgQ1F1YXJ0ZXJuaW9uLCBWZWMzLCBXb3JsZCB9IGZyb20gJ2Nhbm5vbi1lcyc7XG5pbXBvcnQgQ2Fubm9uRGVidWdnZXIgZnJvbSAnY2Fubm9uLWVzLWRlYnVnZ2VyJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuY29uc3QgcSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBzID0gbmV3IFRIUkVFLlZlY3RvcjMoMSwgMSwgMSk7XG5jb25zdCB2ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IG0gPSBuZXcgVEhSRUUuTWF0cml4NCgpO1xuXG5mdW5jdGlvbiBnZXRNYXRyaXgobzogVEhSRUUuT2JqZWN0M0QpIHtcblx0aWYgKGlzLnRocmVlPFRIUkVFLkluc3RhbmNlZE1lc2g+KG8sICdpc0luc3RhbmNlZE1lc2gnKSkge1xuXHRcdG8uZ2V0TWF0cml4QXQocGFyc2VJbnQoby51dWlkLnNwbGl0KCcvJylbMV0pLCBtKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXHRyZXR1cm4gby5tYXRyaXg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0RlYnVnSW5wdXRzIHtcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0Y29sb3I6IHN0cmluZztcblx0aW1wbDogdHlwZW9mIENhbm5vbkRlYnVnZ2VyO1xuXHRzY2FsZTogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0Y0RlYnVnSW5wdXRzID0ge1xuXHRlbmFibGVkOiB0cnVlLFxuXHRzY2FsZTogMSxcblx0Y29sb3I6ICdibGFjaycsXG5cdGltcGw6IENhbm5vbkRlYnVnZ2VyLFxufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0Yy1waHlzaWNzW2RlYnVnXScgfSlcbmV4cG9ydCBjbGFzcyBOZ3RjRGVidWcge1xuXHRkZWJ1ZyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgcGh5c2ljcyA9IGluamVjdChOZ3RjUGh5c2ljcyk7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cdHByaXZhdGUgZGVmYXVsdFNjZW5lID0gdGhpcy5zdG9yZS5zY2VuZTtcblxuXHRwcml2YXRlIGRlYnVnZ2VyU2NlbmUgPSBuZXcgVEhSRUUuU2NlbmUoKTtcblx0cHJpdmF0ZSBib2RpZXM6IEJvZHlbXSA9IFtdO1xuXHRwcml2YXRlIGJvZHlNYXA6IFJlY29yZDxzdHJpbmcsIEJvZHk+ID0ge307XG5cblx0cHJpdmF0ZSBjYW5ub25EZWJ1Z2dlciE6IFJldHVyblR5cGU8dHlwZW9mIENhbm5vbkRlYnVnZ2VyPjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHQvLyBOT1RFOiBhZnRlck5leHRSZW5kZXIgc28gd2Ugb25seSBpbnN0YW50aWF0ZSBvbmNlIGFmdGVyIGlucHV0cyBoYXZlIGJlZW4gcmVzb2x2ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5kZWZhdWx0U2NlbmUoKS5hZGQodGhpcy5kZWJ1Z2dlclNjZW5lKTtcblx0XHRcdHRoaXMuY2Fubm9uRGVidWdnZXIgPSB0aGlzLmRlYnVnKCkuaW1wbCh0aGlzLmRlYnVnZ2VyU2NlbmUsIHsgYm9kaWVzOiB0aGlzLmJvZGllcyB9IGFzIFdvcmxkLCB7XG5cdFx0XHRcdGNvbG9yOiB0aGlzLmRlYnVnKCkuY29sb3IsXG5cdFx0XHRcdHNjYWxlOiB0aGlzLmRlYnVnKCkuc2NhbGUsXG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdGJlZm9yZVJlbmRlcigoKSA9PiB7XG5cdFx0XHRpZiAoIXRoaXMuY2Fubm9uRGVidWdnZXIpIHJldHVybjtcblxuXHRcdFx0Y29uc3QgZW5hYmxlZCA9IHRoaXMuZGVidWcoKS5lbmFibGVkO1xuXHRcdFx0Y29uc3QgcmVmcyA9IHRoaXMucGh5c2ljcy5yZWZzO1xuXHRcdFx0Zm9yIChjb25zdCB1dWlkIGluIHRoaXMuYm9keU1hcCkge1xuXHRcdFx0XHRjb25zdCByZWYgPSByZWZzW3V1aWRdO1xuXHRcdFx0XHRjb25zdCBib2R5ID0gdGhpcy5ib2R5TWFwW3V1aWRdO1xuXHRcdFx0XHRpZiAocmVmKSB7XG5cdFx0XHRcdFx0Z2V0TWF0cml4KHJlZikuZGVjb21wb3NlKHYsIHEsIHMpO1xuXHRcdFx0XHRcdGJvZHkucG9zaXRpb24uY29weSh2IGFzIHVua25vd24gYXMgVmVjMyk7XG5cdFx0XHRcdFx0Ym9keS5xdWF0ZXJuaW9uLmNvcHkocSBhcyB1bmtub3duIGFzIENRdWFydGVybmlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmRlYnVnZ2VyU2NlbmUuY2hpbGRyZW4pIGNoaWxkLnZpc2libGUgPSBlbmFibGVkO1xuXHRcdFx0aWYgKGVuYWJsZWQpIHRoaXMuY2Fubm9uRGVidWdnZXIudXBkYXRlKCk7XG5cdFx0fSk7XG5cdH1cblxuXHRhZGQodXVpZDogc3RyaW5nLCBwcm9wczogQm9keVByb3BzLCB0eXBlOiBCb2R5U2hhcGVUeXBlKSB7XG5cdFx0Y29uc3QgYm9keSA9IHByb3BzVG9Cb2R5KHsgdXVpZCwgcHJvcHMsIHR5cGUgfSk7XG5cdFx0dGhpcy5ib2RpZXMucHVzaChib2R5KTtcblx0XHR0aGlzLmJvZHlNYXBbdXVpZF0gPSBib2R5O1xuXHR9XG5cblx0cmVtb3ZlKHV1aWQ6IHN0cmluZykge1xuXHRcdGNvbnN0IGRlYnVnQm9keUluZGV4ID0gdGhpcy5ib2RpZXMuaW5kZXhPZih0aGlzLmJvZHlNYXBbdXVpZF0pO1xuXHRcdGlmIChkZWJ1Z0JvZHlJbmRleCA+IC0xKSB0aGlzLmJvZGllcy5zcGxpY2UoZGVidWdCb2R5SW5kZXgsIDEpO1xuXHRcdGRlbGV0ZSB0aGlzLmJvZHlNYXBbdXVpZF07XG5cdH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvYW5ndWxhci10aHJlZS1jYW5ub24tZGVidWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":";;;;;;;;;AAQA,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,UAAU,EAAE;AAChC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACpC,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;AAC7B,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE;AAC7B,SAAS,SAAS,CAAC,CAAC,EAAE;AACtB,IAAI,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE;AACxC,QAAQ,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACxD,QAAQ,OAAO,CAAC;AAChB;AACA,IAAI,OAAO,CAAC,CAAC,MAAM;AACnB;AACA,MAAM,cAAc,GAAG;AACvB,IAAI,OAAO,EAAE,IAAI;AACjB,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,KAAK,EAAE,OAAO;AAClB,IAAI,IAAI,EAAE,cAAc;AACxB,CAAC;AACM,MAAM,SAAS,CAAC;AACvB,IAAI,WAAW,GAAG;AAClB,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5K,QAAQ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;AAC1C,QAAQ,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;AAClC,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAC5C,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;AAC9C,QAAQ,IAAI,CAAC,MAAM,GAAG,EAAE;AACxB,QAAQ,IAAI,CAAC,OAAO,GAAG,EAAE;AACzB;AACA,QAAQ,eAAe,CAAC,MAAM;AAC9B,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,YAAY,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE;AACjG,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;AACzC,gBAAgB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;AACzC,aAAa,CAAC;AACd,SAAS,CAAC;AACV,QAAQ,YAAY,CAAC,MAAM;AAC3B,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc;AACpC,gBAAgB;AAChB,YAAY,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;AAChD,YAAY,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAC1C,YAAY,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAC7C,gBAAgB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AACtC,gBAAgB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AAC/C,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACrD,oBAAoB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACzC,oBAAoB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3C;AACA;AACA,YAAY,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ;AAC3D,gBAAgB,KAAK,CAAC,OAAO,GAAG,OAAO;AACvC,YAAY,IAAI,OAAO;AACvB,gBAAgB,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC5C,SAAS,CAAC;AACV;AACA,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;AAC3B,QAAQ,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACvD,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AAC9B,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;AACjC;AACA,IAAI,MAAM,CAAC,IAAI,EAAE;AACjB,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,QAAQ,IAAI,cAAc,GAAG,CAAC,CAAC;AAC/B,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AACjD,QAAQ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACjC;AACA,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3K,IAAI,SAAS,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,oBAAoB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACtT;AACA,EAAE,CAAC,wBAAwB,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnH,YAAY,IAAI,EAAE,SAAS;AAC3B,YAAY,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;AACtD,SAAS,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;;AC/EvC;AACA;AACA;;;;"}
|
|
@@ -45,7 +45,7 @@ const defaultOptions = {
|
|
|
45
45
|
class NgtcPhysics {
|
|
46
46
|
constructor() {
|
|
47
47
|
this.store = injectStore();
|
|
48
|
-
this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
48
|
+
this.options = input(defaultOptions, ...(ngDevMode ? [{ debugName: "options", transform: mergeInputs(defaultOptions) }] : [{ transform: mergeInputs(defaultOptions) }]));
|
|
49
49
|
this.axisIndex = pick(this.options, 'axisIndex');
|
|
50
50
|
this.broadphase = pick(this.options, 'broadphase');
|
|
51
51
|
this.gravity = pick(this.options, 'gravity');
|
|
@@ -53,7 +53,7 @@ class NgtcPhysics {
|
|
|
53
53
|
this.tolerance = pick(this.options, 'tolerance');
|
|
54
54
|
this.invalidate = this.store.invalidate;
|
|
55
55
|
// @ts-expect-error - worker is not nullable, and we don't want to use ! operator.
|
|
56
|
-
this.cannonWorker = signal(null);
|
|
56
|
+
this.cannonWorker = signal(null, ...(ngDevMode ? [{ debugName: "cannonWorker" }] : []));
|
|
57
57
|
this.bodies = {};
|
|
58
58
|
this.events = {};
|
|
59
59
|
this.refs = {};
|
|
@@ -183,10 +183,10 @@ class NgtcPhysics {
|
|
|
183
183
|
if (cb)
|
|
184
184
|
cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });
|
|
185
185
|
}
|
|
186
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
187
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.
|
|
186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
187
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.7", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
188
188
|
}
|
|
189
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.7", ngImport: i0, type: NgtcPhysics, decorators: [{
|
|
190
190
|
type: Directive,
|
|
191
191
|
args: [{ selector: 'ngtc-physics' }]
|
|
192
192
|
}], ctorParameters: () => [] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"angular-three-cannon.mjs","sources":["../tmp-esm2022/lib/physics.js","../tmp-esm2022/angular-three-cannon.js"],"sourcesContent":["import { Directive, Injector, afterNextRender, effect, inject, input, signal, untracked } from '@angular/core';\nimport { CannonWorkerAPI, } from '@pmndrs/cannon-worker-api';\nimport { beforeRender, injectStore, is, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport * as i0 from \"@angular/core\";\nconst v = new THREE.Vector3();\nconst s = new THREE.Vector3(1, 1, 1);\nconst q = new THREE.Quaternion();\nconst m = new THREE.Matrix4();\nfunction apply(index, positions, quaternions, scale = s, object) {\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}\nfunction unique() {\n const values = [];\n return (value) => (values.includes(value) ? false : !!values.push(value));\n}\nconst defaultOptions = {\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};\nexport class NgtcPhysics {\n constructor() {\n this.store = injectStore();\n this.options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n this.axisIndex = pick(this.options, 'axisIndex');\n this.broadphase = pick(this.options, 'broadphase');\n this.gravity = pick(this.options, 'gravity');\n this.iterations = pick(this.options, 'iterations');\n this.tolerance = pick(this.options, 'tolerance');\n this.invalidate = this.store.invalidate;\n // @ts-expect-error - worker is not nullable, and we don't want to use ! operator.\n this.cannonWorker = signal(null);\n this.bodies = {};\n this.events = {};\n this.refs = {};\n this.scaleOverrides = {};\n this.subscriptions = {};\n this.worker = this.cannonWorker.asReadonly();\n const injector = inject(Injector);\n // NOTE: set new cannonworker in afterNextRender\n // - so inputs are resolved\n // - so the worker is instantiated only once\n // - effects are started after worker is instantiated\n afterNextRender(() => {\n this.cannonWorker.set(new CannonWorkerAPI(this.options()));\n effect((onCleanup) => {\n const cleanup = this.connectWorkerEffect();\n onCleanup(() => cleanup?.());\n }, { injector });\n effect(() => {\n this.updateWorkerStateEffect('axisIndex', this.axisIndex);\n this.updateWorkerStateEffect('broadphase', this.broadphase);\n this.updateWorkerStateEffect('gravity', this.gravity);\n this.updateWorkerStateEffect('iterations', this.iterations);\n this.updateWorkerStateEffect('tolerance', this.tolerance);\n }, { injector });\n });\n let timeSinceLastCalled = 0;\n beforeRender(({ delta }) => {\n const [{ isPaused, maxSubSteps, stepSize }, worker] = [this.options(), this.cannonWorker()];\n if (isPaused || !worker || stepSize == null)\n return;\n timeSinceLastCalled += delta;\n worker.step({ maxSubSteps, stepSize, timeSinceLastCalled });\n timeSinceLastCalled = 0;\n });\n }\n connectWorkerEffect() {\n const worker = this.cannonWorker();\n if (!worker)\n return;\n worker.connect();\n worker.init();\n worker.on('collide', this.collideHandler.bind(this));\n worker.on('collideBegin', this.collideBeginHandler.bind(this));\n worker.on('collideEnd', this.collideEndHandler.bind(this));\n worker.on('frame', this.frameHandler.bind(this));\n worker.on('rayhit', this.rayhitHandler.bind(this));\n return () => {\n worker.terminate();\n worker.removeAllListeners();\n };\n }\n updateWorkerStateEffect(key, option) {\n const worker = this.cannonWorker();\n if (!worker)\n return;\n Object.assign(worker, { [key]: option() });\n }\n collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }) {\n const { events, refs } = this;\n const cb = events[target]?.collide;\n if (cb) {\n cb({\n body: refs[body],\n contact: { bi: refs[bi], bj: refs[bj], ...contactRest },\n target: refs[target],\n ...rest,\n });\n }\n }\n collideBeginHandler({ bodyA, bodyB }) {\n const { events, refs } = this;\n const cbA = events[bodyA]?.collideBegin;\n if (cbA)\n cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideBegin' });\n const cbB = events[bodyB]?.collideBegin;\n if (cbB)\n cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideBegin' });\n }\n collideEndHandler({ bodyA, bodyB }) {\n const { events, refs } = this;\n const cbA = events[bodyA]?.collideEnd;\n if (cbA)\n cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideEnd' });\n const cbB = events[bodyB]?.collideEnd;\n if (cbB)\n cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideEnd' });\n }\n frameHandler({ active, bodies: uuids = [], observations, positions, quaternions, }) {\n const [{ shouldInvalidate }, { bodies, subscriptions, refs, scaleOverrides }, invalidate] = [\n untracked(this.options),\n this,\n this.invalidate(),\n ];\n for (let i = 0; i < uuids.length; i++) {\n bodies[uuids[i]] = i;\n }\n observations.forEach(([id, value, type]) => {\n const subscription = subscriptions[id] || {};\n const cb = subscription[type];\n // @ts-expect-error - We clearly know the type of the callback, but typescript can't deal with it\n cb && cb(value);\n });\n if (!active)\n return;\n for (const ref of Object.values(refs).filter(unique())) {\n if (is.three(ref, 'isInstancedMesh')) {\n for (let i = 0; i < ref.count; i++) {\n const uuid = `${ref.uuid}/${i}`;\n const index = bodies[uuid];\n if (index !== undefined) {\n ref.setMatrixAt(i, apply(index, positions, quaternions, scaleOverrides[uuid]));\n ref.instanceMatrix.needsUpdate = true;\n }\n }\n }\n else {\n const scale = scaleOverrides[ref.uuid] || ref.scale;\n apply(bodies[ref.uuid], positions, quaternions, scale, ref);\n }\n }\n if (shouldInvalidate)\n invalidate();\n }\n rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }) {\n const { events, refs } = this;\n const cb = events[uuid]?.rayhit;\n if (cb)\n cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.0.3\", type: NgtcPhysics, isStandalone: true, selector: \"ngtc-physics\", inputs: { options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.3\", ngImport: i0, type: NgtcPhysics, decorators: [{\n type: Directive,\n args: [{ selector: 'ngtc-physics' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQ04sZUFBZSxHQWFmLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBa0IvQixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUU5QixTQUFTLEtBQUssQ0FDYixLQUFhLEVBQ2IsU0FBNEIsRUFDNUIsV0FBOEIsRUFDOUIsS0FBSyxHQUFHLENBQUMsRUFDVCxNQUF1QjtJQUV2QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsT0FBTyxDQUNSLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDakMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFvQyxFQUFF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RyxPQUFPLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzs4R0FuS1csV0FBVztrR0FBWCxXQUFXOzsyRkFBWCxXQUFXO2tCQUR2QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIGFmdGVyTmV4dFJlbmRlciwgZWZmZWN0LCBpbmplY3QsIGlucHV0LCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q2Fubm9uV29ya2VyQVBJLFxuXHRDYW5ub25Xb3JrZXJQcm9wcyxcblx0Q29sbGlkZUJlZ2luRXZlbnQsXG5cdENvbGxpZGVFbmRFdmVudCxcblx0Q29sbGlkZUV2ZW50LFxuXHRSYXloaXRFdmVudCxcblx0UmVmcyxcblx0U3Vic2NyaXB0aW9ucyxcblx0V29ya2VyQ29sbGlkZUJlZ2luRXZlbnQsXG5cdFdvcmtlckNvbGxpZGVFbmRFdmVudCxcblx0V29ya2VyQ29sbGlkZUV2ZW50LFxuXHRXb3JrZXJGcmFtZU1lc3NhZ2UsXG5cdFdvcmtlclJheWhpdEV2ZW50LFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IGJlZm9yZVJlbmRlciwgaW5qZWN0U3RvcmUsIGlzLCBwaWNrIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBtZXJnZUlucHV0cyB9IGZyb20gJ25neHRlbnNpb24vaW5qZWN0LWlucHV0cyc7XG5pbXBvcnQgKiBhcyBUSFJFRSBmcm9tICd0aHJlZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0Nhbm5vbldvcmtlckV2ZW50cyB7XG5cdGNvbGxpZGU6IFdvcmtlckNvbGxpZGVFdmVudDtcblx0Y29sbGlkZUJlZ2luOiBXb3JrZXJDb2xsaWRlQmVnaW5FdmVudDtcblx0Y29sbGlkZUVuZDogV29ya2VyQ29sbGlkZUVuZEV2ZW50O1xuXHRmcmFtZTogV29ya2VyRnJhbWVNZXNzYWdlO1xuXHRyYXloaXQ6IFdvcmtlclJheWhpdEV2ZW50O1xufVxuXG5leHBvcnQgdHlwZSBOZ3RjQ2Fubm9uV29ya2VyID0gQ2Fubm9uV29ya2VyQVBJICYge1xuXHRvbjogPEsgZXh0ZW5kcyBrZXlvZiBOZ3RjQ2Fubm9uV29ya2VyRXZlbnRzPihcblx0XHRldmVudDogSyxcblx0XHRjYjogKGRhdGE6IE5ndGNDYW5ub25Xb3JrZXJFdmVudHNbS11bJ2RhdGEnXSkgPT4gdm9pZCxcblx0KSA9PiB2b2lkO1xuXHRyZW1vdmVBbGxMaXN0ZW5lcnM6ICgpID0+IHZvaWQ7XG59O1xuXG5jb25zdCB2ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IHMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAxLCAxKTtcbmNvbnN0IHEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgbSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cbmZ1bmN0aW9uIGFwcGx5KFxuXHRpbmRleDogbnVtYmVyLFxuXHRwb3NpdGlvbnM6IEFycmF5TGlrZTxudW1iZXI+LFxuXHRxdWF0ZXJuaW9uczogQXJyYXlMaWtlPG51bWJlcj4sXG5cdHNjYWxlID0gcyxcblx0b2JqZWN0PzogVEhSRUUuT2JqZWN0M0QsXG4pIHtcblx0aWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcblx0XHRtLmNvbXBvc2UoXG5cdFx0XHR2LmZyb21BcnJheShwb3NpdGlvbnMsIGluZGV4ICogMyksXG5cdFx0XHRxLmZyb21BcnJheShxdWF0ZXJuaW9ucyBhcyBUSFJFRS5RdWF0ZXJuaW9uVHVwbGUsIGluZGV4ICogNCksXG5cdFx0XHRzY2FsZSxcblx0XHQpO1xuXHRcdGlmIChvYmplY3QpIHtcblx0XHRcdG9iamVjdC5tYXRyaXhBdXRvVXBkYXRlID0gZmFsc2U7XG5cdFx0XHRvYmplY3QubWF0cml4LmNvcHkobSk7XG5cdFx0fVxuXHRcdHJldHVybiBtO1xuXHR9XG5cdHJldHVybiBtLmlkZW50aXR5KCk7XG59XG5cbmZ1bmN0aW9uIHVuaXF1ZSgpIHtcblx0Y29uc3QgdmFsdWVzOiB1bmtub3duW10gPSBbXTtcblx0cmV0dXJuICh2YWx1ZTogdW5rbm93bikgPT4gKHZhbHVlcy5pbmNsdWRlcyh2YWx1ZSkgPyBmYWxzZSA6ICEhdmFsdWVzLnB1c2godmFsdWUpKTtcbn1cblxudHlwZSBOZ3RjQ2Fubm9uRXZlbnQgPSBDb2xsaWRlQmVnaW5FdmVudCB8IENvbGxpZGVFbmRFdmVudCB8IENvbGxpZGVFdmVudCB8IFJheWhpdEV2ZW50O1xudHlwZSBOZ3RjQ2FsbGJhY2tCeVR5cGU8VCBleHRlbmRzIHsgdHlwZTogc3RyaW5nIH0+ID0ge1xuXHRbSyBpbiBUWyd0eXBlJ11dPzogVCBleHRlbmRzIHsgdHlwZTogSyB9ID8gKGU6IFQpID0+IHZvaWQgOiBuZXZlcjtcbn07XG5cbmV4cG9ydCB0eXBlIE5ndGNDYW5ub25FdmVudHMgPSBSZWNvcmQ8c3RyaW5nLCBQYXJ0aWFsPE5ndGNDYWxsYmFja0J5VHlwZTxOZ3RjQ2Fubm9uRXZlbnQ+Pj47XG5cbmV4cG9ydCB0eXBlIFNjYWxlT3ZlcnJpZGVzID0gUmVjb3JkPHN0cmluZywgVEhSRUUuVmVjdG9yMz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y1BoeXNpY3NPcHRpb25zIGV4dGVuZHMgQ2Fubm9uV29ya2VyUHJvcHMge1xuXHRpc1BhdXNlZD86IGJvb2xlYW47XG5cdG1heFN1YlN0ZXBzPzogbnVtYmVyO1xuXHRzaG91bGRJbnZhbGlkYXRlPzogYm9vbGVhbjtcblx0c3RlcFNpemU/OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBOZ3RjUGh5c2ljc09wdGlvbnMgPSB7XG5cdGFsbG93U2xlZXA6IGZhbHNlLFxuXHRheGlzSW5kZXg6IDAsXG5cdGJyb2FkcGhhc2U6ICdOYWl2ZScsXG5cdGRlZmF1bHRDb250YWN0TWF0ZXJpYWw6IHsgY29udGFjdEVxdWF0aW9uU3RpZmZuZXNzOiAxZTYgfSxcblx0ZnJpY3Rpb25HcmF2aXR5OiBudWxsLFxuXHRncmF2aXR5OiBbMCwgLTkuODEsIDBdLFxuXHRpc1BhdXNlZDogZmFsc2UsXG5cdGl0ZXJhdGlvbnM6IDUsXG5cdG1heFN1YlN0ZXBzOiAxMCxcblx0cXVhdE5vcm1hbGl6ZUZhc3Q6IGZhbHNlLFxuXHRxdWF0Tm9ybWFsaXplU2tpcDogMCxcblx0c2hvdWxkSW52YWxpZGF0ZTogdHJ1ZSxcblx0c2l6ZTogMTAwMCxcblx0c29sdmVyOiAnR1MnLFxuXHRzdGVwU2l6ZTogMSAvIDYwLFxuXHR0b2xlcmFuY2U6IDAuMDAxLFxufTtcblxudHlwZSBOZ3RzUGh5c2ljc1VwZGF0YWJsZU9wdGlvbnMgPSBFeHRyYWN0PFxuXHRrZXlvZiBOZ3RjUGh5c2ljc09wdGlvbnMsXG5cdCdncmF2aXR5JyB8ICdpdGVyYXRpb25zJyB8ICd0b2xlcmFuY2UnIHwgJ2Jyb2FkcGhhc2UnIHwgJ2F4aXNJbmRleCdcbj47XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ25ndGMtcGh5c2ljcycgfSlcbmV4cG9ydCBjbGFzcyBOZ3RjUGh5c2ljcyB7XG5cdHByaXZhdGUgc3RvcmUgPSBpbmplY3RTdG9yZSgpO1xuXG5cdG9wdGlvbnMgPSBpbnB1dChkZWZhdWx0T3B0aW9ucywgeyB0cmFuc2Zvcm06IG1lcmdlSW5wdXRzKGRlZmF1bHRPcHRpb25zKSB9KTtcblxuXHRwcml2YXRlIGF4aXNJbmRleCA9IHBpY2sodGhpcy5vcHRpb25zLCAnYXhpc0luZGV4Jyk7XG5cdHByaXZhdGUgYnJvYWRwaGFzZSA9IHBpY2sodGhpcy5vcHRpb25zLCAnYnJvYWRwaGFzZScpO1xuXHRwcml2YXRlIGdyYXZpdHkgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2dyYXZpdHknKTtcblx0cHJpdmF0ZSBpdGVyYXRpb25zID0gcGljayh0aGlzLm9wdGlvbnMsICdpdGVyYXRpb25zJyk7XG5cdHByaXZhdGUgdG9sZXJhbmNlID0gcGljayh0aGlzLm9wdGlvbnMsICd0b2xlcmFuY2UnKTtcblxuXHRwcml2YXRlIGludmFsaWRhdGUgPSB0aGlzLnN0b3JlLmludmFsaWRhdGU7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSB3b3JrZXIgaXMgbm90IG51bGxhYmxlLCBhbmQgd2UgZG9uJ3Qgd2FudCB0byB1c2UgISBvcGVyYXRvci5cblx0cHJpdmF0ZSBjYW5ub25Xb3JrZXIgPSBzaWduYWw8Q2Fubm9uV29ya2VyQVBJPihudWxsKTtcblxuXHRib2RpZXM6IHsgW3V1aWQ6IHN0cmluZ106IG51bWJlciB9ID0ge307XG5cdGV2ZW50czogTmd0Y0Nhbm5vbkV2ZW50cyA9IHt9O1xuXHRyZWZzOiBSZWZzID0ge307XG5cdHNjYWxlT3ZlcnJpZGVzOiBTY2FsZU92ZXJyaWRlcyA9IHt9O1xuXHRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zID0ge307XG5cdHdvcmtlciA9IHRoaXMuY2Fubm9uV29ya2VyLmFzUmVhZG9ubHkoKTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRjb25zdCBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0XHQvLyBOT1RFOiBzZXQgbmV3IGNhbm5vbndvcmtlciBpbiBhZnRlck5leHRSZW5kZXJcblx0XHQvLyAtIHNvIGlucHV0cyBhcmUgcmVzb2x2ZWRcblx0XHQvLyAtIHNvIHRoZSB3b3JrZXIgaXMgaW5zdGFudGlhdGVkIG9ubHkgb25jZVxuXHRcdC8vIC0gZWZmZWN0cyBhcmUgc3RhcnRlZCBhZnRlciB3b3JrZXIgaXMgaW5zdGFudGlhdGVkXG5cdFx0YWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcblx0XHRcdHRoaXMuY2Fubm9uV29ya2VyLnNldChuZXcgQ2Fubm9uV29ya2VyQVBJKHRoaXMub3B0aW9ucygpKSk7XG5cblx0XHRcdGVmZmVjdChcblx0XHRcdFx0KG9uQ2xlYW51cCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGNsZWFudXAgPSB0aGlzLmNvbm5lY3RXb3JrZXJFZmZlY3QoKTtcblx0XHRcdFx0XHRvbkNsZWFudXAoKCkgPT4gY2xlYW51cD8uKCkpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGluamVjdG9yIH0sXG5cdFx0XHQpO1xuXG5cdFx0XHRlZmZlY3QoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0KCdheGlzSW5kZXgnLCB0aGlzLmF4aXNJbmRleCk7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVXb3JrZXJTdGF0ZUVmZmVjdCgnYnJvYWRwaGFzZScsIHRoaXMuYnJvYWRwaGFzZSk7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVXb3JrZXJTdGF0ZUVmZmVjdCgnZ3Jhdml0eScsIHRoaXMuZ3Jhdml0eSk7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVXb3JrZXJTdGF0ZUVmZmVjdCgnaXRlcmF0aW9ucycsIHRoaXMuaXRlcmF0aW9ucyk7XG5cdFx0XHRcdFx0dGhpcy51cGRhdGVXb3JrZXJTdGF0ZUVmZmVjdCgndG9sZXJhbmNlJywgdGhpcy50b2xlcmFuY2UpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7IGluamVjdG9yIH0sXG5cdFx0XHQpO1xuXHRcdH0pO1xuXG5cdFx0bGV0IHRpbWVTaW5jZUxhc3RDYWxsZWQgPSAwO1xuXHRcdGJlZm9yZVJlbmRlcigoeyBkZWx0YSB9KSA9PiB7XG5cdFx0XHRjb25zdCBbeyBpc1BhdXNlZCwgbWF4U3ViU3RlcHMsIHN0ZXBTaXplIH0sIHdvcmtlcl0gPSBbdGhpcy5vcHRpb25zKCksIHRoaXMuY2Fubm9uV29ya2VyKCldO1xuXHRcdFx0aWYgKGlzUGF1c2VkIHx8ICF3b3JrZXIgfHwgc3RlcFNpemUgPT0gbnVsbCkgcmV0dXJuO1xuXHRcdFx0dGltZVNpbmNlTGFzdENhbGxlZCArPSBkZWx0YTtcblx0XHRcdHdvcmtlci5zdGVwKHsgbWF4U3ViU3RlcHMsIHN0ZXBTaXplLCB0aW1lU2luY2VMYXN0Q2FsbGVkIH0pO1xuXHRcdFx0dGltZVNpbmNlTGFzdENhbGxlZCA9IDA7XG5cdFx0fSk7XG5cdH1cblxuXHRwcml2YXRlIGNvbm5lY3RXb3JrZXJFZmZlY3QoKSB7XG5cdFx0Y29uc3Qgd29ya2VyID0gdGhpcy5jYW5ub25Xb3JrZXIoKSBhcyBOZ3RjQ2Fubm9uV29ya2VyO1xuXHRcdGlmICghd29ya2VyKSByZXR1cm47XG5cblx0XHR3b3JrZXIuY29ubmVjdCgpO1xuXHRcdHdvcmtlci5pbml0KCk7XG5cblx0XHR3b3JrZXIub24oJ2NvbGxpZGUnLCB0aGlzLmNvbGxpZGVIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdHdvcmtlci5vbignY29sbGlkZUJlZ2luJywgdGhpcy5jb2xsaWRlQmVnaW5IYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdHdvcmtlci5vbignY29sbGlkZUVuZCcsIHRoaXMuY29sbGlkZUVuZEhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0d29ya2VyLm9uKCdmcmFtZScsIHRoaXMuZnJhbWVIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdHdvcmtlci5vbigncmF5aGl0JywgdGhpcy5yYXloaXRIYW5kbGVyLmJpbmQodGhpcykpO1xuXG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdHdvcmtlci50ZXJtaW5hdGUoKTtcblx0XHRcdHdvcmtlci5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcblx0XHR9O1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVXb3JrZXJTdGF0ZUVmZmVjdDxUVXBkYXRhYmxlS2V5IGV4dGVuZHMgTmd0c1BoeXNpY3NVcGRhdGFibGVPcHRpb25zPihcblx0XHRrZXk6IFRVcGRhdGFibGVLZXksXG5cdFx0b3B0aW9uOiAoKSA9PiBOZ3RjUGh5c2ljc09wdGlvbnNbVFVwZGF0YWJsZUtleV0sXG5cdCkge1xuXHRcdGNvbnN0IHdvcmtlciA9IHRoaXMuY2Fubm9uV29ya2VyKCk7XG5cdFx0aWYgKCF3b3JrZXIpIHJldHVybjtcblx0XHRPYmplY3QuYXNzaWduKHdvcmtlciwgeyBba2V5XTogb3B0aW9uKCkgfSk7XG5cdH1cblxuXHRwcml2YXRlIGNvbGxpZGVIYW5kbGVyKHsgYm9keSwgY29udGFjdDogeyBiaSwgYmosIC4uLmNvbnRhY3RSZXN0IH0sIHRhcmdldCwgLi4ucmVzdCB9OiBXb3JrZXJDb2xsaWRlRXZlbnRbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IHsgZXZlbnRzLCByZWZzIH0gPSB0aGlzO1xuXHRcdGNvbnN0IGNiID0gZXZlbnRzW3RhcmdldF0/LmNvbGxpZGU7XG5cdFx0aWYgKGNiKSB7XG5cdFx0XHRjYih7XG5cdFx0XHRcdGJvZHk6IHJlZnNbYm9keV0sXG5cdFx0XHRcdGNvbnRhY3Q6IHsgYmk6IHJlZnNbYmldLCBiajogcmVmc1tial0sIC4uLmNvbnRhY3RSZXN0IH0sXG5cdFx0XHRcdHRhcmdldDogcmVmc1t0YXJnZXRdLFxuXHRcdFx0XHQuLi5yZXN0LFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBjb2xsaWRlQmVnaW5IYW5kbGVyKHsgYm9keUEsIGJvZHlCIH06IFdvcmtlckNvbGxpZGVCZWdpbkV2ZW50WydkYXRhJ10pIHtcblx0XHRjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gdGhpcztcblx0XHRjb25zdCBjYkEgPSBldmVudHNbYm9keUFdPy5jb2xsaWRlQmVnaW47XG5cdFx0aWYgKGNiQSkgY2JBKHsgYm9keTogcmVmc1tib2R5Ql0sIG9wOiAnZXZlbnQnLCB0YXJnZXQ6IHJlZnNbYm9keUFdLCB0eXBlOiAnY29sbGlkZUJlZ2luJyB9KTtcblx0XHRjb25zdCBjYkIgPSBldmVudHNbYm9keUJdPy5jb2xsaWRlQmVnaW47XG5cdFx0aWYgKGNiQikgY2JCKHsgYm9keTogcmVmc1tib2R5QV0sIG9wOiAnZXZlbnQnLCB0YXJnZXQ6IHJlZnNbYm9keUJdLCB0eXBlOiAnY29sbGlkZUJlZ2luJyB9KTtcblx0fVxuXG5cdHByaXZhdGUgY29sbGlkZUVuZEhhbmRsZXIoeyBib2R5QSwgYm9keUIgfTogV29ya2VyQ29sbGlkZUVuZEV2ZW50WydkYXRhJ10pIHtcblx0XHRjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gdGhpcztcblx0XHRjb25zdCBjYkEgPSBldmVudHNbYm9keUFdPy5jb2xsaWRlRW5kO1xuXHRcdGlmIChjYkEpIGNiQSh7IGJvZHk6IHJlZnNbYm9keUJdLCBvcDogJ2V2ZW50JywgdGFyZ2V0OiByZWZzW2JvZHlBXSwgdHlwZTogJ2NvbGxpZGVFbmQnIH0pO1xuXHRcdGNvbnN0IGNiQiA9IGV2ZW50c1tib2R5Ql0/LmNvbGxpZGVFbmQ7XG5cdFx0aWYgKGNiQikgY2JCKHsgYm9keTogcmVmc1tib2R5QV0sIG9wOiAnZXZlbnQnLCB0YXJnZXQ6IHJlZnNbYm9keUJdLCB0eXBlOiAnY29sbGlkZUVuZCcgfSk7XG5cdH1cblxuXHRwcml2YXRlIGZyYW1lSGFuZGxlcih7XG5cdFx0YWN0aXZlLFxuXHRcdGJvZGllczogdXVpZHMgPSBbXSxcblx0XHRvYnNlcnZhdGlvbnMsXG5cdFx0cG9zaXRpb25zLFxuXHRcdHF1YXRlcm5pb25zLFxuXHR9OiBXb3JrZXJGcmFtZU1lc3NhZ2VbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IFt7IHNob3VsZEludmFsaWRhdGUgfSwgeyBib2RpZXMsIHN1YnNjcmlwdGlvbnMsIHJlZnMsIHNjYWxlT3ZlcnJpZGVzIH0sIGludmFsaWRhdGVdID0gW1xuXHRcdFx0dW50cmFja2VkKHRoaXMub3B0aW9ucyksXG5cdFx0XHR0aGlzLFxuXHRcdFx0dGhpcy5pbnZhbGlkYXRlKCksXG5cdFx0XTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHV1aWRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRib2RpZXNbdXVpZHNbaV1dID0gaTtcblx0XHR9XG5cdFx0b2JzZXJ2YXRpb25zLmZvckVhY2goKFtpZCwgdmFsdWUsIHR5cGVdKSA9PiB7XG5cdFx0XHRjb25zdCBzdWJzY3JpcHRpb24gPSBzdWJzY3JpcHRpb25zW2lkXSB8fCB7fTtcblx0XHRcdGNvbnN0IGNiID0gc3Vic2NyaXB0aW9uW3R5cGVdO1xuXHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIFdlIGNsZWFybHkga25vdyB0aGUgdHlwZSBvZiB0aGUgY2FsbGJhY2ssIGJ1dCB0eXBlc2NyaXB0IGNhbid0IGRlYWwgd2l0aCBpdFxuXHRcdFx0Y2IgJiYgY2IodmFsdWUpO1xuXHRcdH0pO1xuXHRcdGlmICghYWN0aXZlKSByZXR1cm47XG5cdFx0Zm9yIChjb25zdCByZWYgb2YgT2JqZWN0LnZhbHVlcyhyZWZzKS5maWx0ZXIodW5pcXVlKCkpKSB7XG5cdFx0XHRpZiAoaXMudGhyZWU8VEhSRUUuSW5zdGFuY2VkTWVzaD4ocmVmLCAnaXNJbnN0YW5jZWRNZXNoJykpIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCByZWYuY291bnQ7IGkrKykge1xuXHRcdFx0XHRcdGNvbnN0IHV1aWQgPSBgJHtyZWYudXVpZH0vJHtpfWA7XG5cdFx0XHRcdFx0Y29uc3QgaW5kZXggPSBib2RpZXNbdXVpZF07XG5cdFx0XHRcdFx0aWYgKGluZGV4ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRcdHJlZi5zZXRNYXRyaXhBdChpLCBhcHBseShpbmRleCwgcG9zaXRpb25zLCBxdWF0ZXJuaW9ucywgc2NhbGVPdmVycmlkZXNbdXVpZF0pKTtcblx0XHRcdFx0XHRcdHJlZi5pbnN0YW5jZU1hdHJpeC5uZWVkc1VwZGF0ZSA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCBzY2FsZSA9IHNjYWxlT3ZlcnJpZGVzW3JlZi51dWlkXSB8fCByZWYuc2NhbGU7XG5cdFx0XHRcdGFwcGx5KGJvZGllc1tyZWYudXVpZF0sIHBvc2l0aW9ucywgcXVhdGVybmlvbnMsIHNjYWxlLCByZWYpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoc2hvdWxkSW52YWxpZGF0ZSkgaW52YWxpZGF0ZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSByYXloaXRIYW5kbGVyKHsgYm9keSwgcmF5OiB7IHV1aWQsIC4uLnJheVJlc3QgfSwgLi4ucmVzdCB9OiBXb3JrZXJSYXloaXRFdmVudFsnZGF0YSddKSB7XG5cdFx0Y29uc3QgeyBldmVudHMsIHJlZnMgfSA9IHRoaXM7XG5cdFx0Y29uc3QgY2IgPSBldmVudHNbdXVpZF0/LnJheWhpdDtcblx0XHRpZiAoY2IpIGNiKHsgYm9keTogYm9keSA/IHJlZnNbYm9keV0gOiBudWxsLCByYXk6IHsgdXVpZCwgLi4ucmF5UmVzdCB9LCAuLi5yZXN0IH0pO1xuXHR9XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9zcmMvYW5ndWxhci10aHJlZS1jYW5ub24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"angular-three-cannon.mjs","sources":["../tmp-esm2022/lib/physics.js","../tmp-esm2022/angular-three-cannon.js"],"sourcesContent":["import { Directive, Injector, afterNextRender, effect, inject, input, signal, untracked } from '@angular/core';\nimport { CannonWorkerAPI, } from '@pmndrs/cannon-worker-api';\nimport { beforeRender, injectStore, is, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\nimport * as i0 from \"@angular/core\";\nconst v = new THREE.Vector3();\nconst s = new THREE.Vector3(1, 1, 1);\nconst q = new THREE.Quaternion();\nconst m = new THREE.Matrix4();\nfunction apply(index, positions, quaternions, scale = s, object) {\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}\nfunction unique() {\n const values = [];\n return (value) => (values.includes(value) ? false : !!values.push(value));\n}\nconst defaultOptions = {\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};\nexport class NgtcPhysics {\n constructor() {\n this.store = injectStore();\n this.options = input(defaultOptions, ...(ngDevMode ? [{ debugName: \"options\", transform: mergeInputs(defaultOptions) }] : [{ transform: mergeInputs(defaultOptions) }]));\n this.axisIndex = pick(this.options, 'axisIndex');\n this.broadphase = pick(this.options, 'broadphase');\n this.gravity = pick(this.options, 'gravity');\n this.iterations = pick(this.options, 'iterations');\n this.tolerance = pick(this.options, 'tolerance');\n this.invalidate = this.store.invalidate;\n // @ts-expect-error - worker is not nullable, and we don't want to use ! operator.\n this.cannonWorker = signal(null, ...(ngDevMode ? [{ debugName: \"cannonWorker\" }] : []));\n this.bodies = {};\n this.events = {};\n this.refs = {};\n this.scaleOverrides = {};\n this.subscriptions = {};\n this.worker = this.cannonWorker.asReadonly();\n const injector = inject(Injector);\n // NOTE: set new cannonworker in afterNextRender\n // - so inputs are resolved\n // - so the worker is instantiated only once\n // - effects are started after worker is instantiated\n afterNextRender(() => {\n this.cannonWorker.set(new CannonWorkerAPI(this.options()));\n effect((onCleanup) => {\n const cleanup = this.connectWorkerEffect();\n onCleanup(() => cleanup?.());\n }, { injector });\n effect(() => {\n this.updateWorkerStateEffect('axisIndex', this.axisIndex);\n this.updateWorkerStateEffect('broadphase', this.broadphase);\n this.updateWorkerStateEffect('gravity', this.gravity);\n this.updateWorkerStateEffect('iterations', this.iterations);\n this.updateWorkerStateEffect('tolerance', this.tolerance);\n }, { injector });\n });\n let timeSinceLastCalled = 0;\n beforeRender(({ delta }) => {\n const [{ isPaused, maxSubSteps, stepSize }, worker] = [this.options(), this.cannonWorker()];\n if (isPaused || !worker || stepSize == null)\n return;\n timeSinceLastCalled += delta;\n worker.step({ maxSubSteps, stepSize, timeSinceLastCalled });\n timeSinceLastCalled = 0;\n });\n }\n connectWorkerEffect() {\n const worker = this.cannonWorker();\n if (!worker)\n return;\n worker.connect();\n worker.init();\n worker.on('collide', this.collideHandler.bind(this));\n worker.on('collideBegin', this.collideBeginHandler.bind(this));\n worker.on('collideEnd', this.collideEndHandler.bind(this));\n worker.on('frame', this.frameHandler.bind(this));\n worker.on('rayhit', this.rayhitHandler.bind(this));\n return () => {\n worker.terminate();\n worker.removeAllListeners();\n };\n }\n updateWorkerStateEffect(key, option) {\n const worker = this.cannonWorker();\n if (!worker)\n return;\n Object.assign(worker, { [key]: option() });\n }\n collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }) {\n const { events, refs } = this;\n const cb = events[target]?.collide;\n if (cb) {\n cb({\n body: refs[body],\n contact: { bi: refs[bi], bj: refs[bj], ...contactRest },\n target: refs[target],\n ...rest,\n });\n }\n }\n collideBeginHandler({ bodyA, bodyB }) {\n const { events, refs } = this;\n const cbA = events[bodyA]?.collideBegin;\n if (cbA)\n cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideBegin' });\n const cbB = events[bodyB]?.collideBegin;\n if (cbB)\n cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideBegin' });\n }\n collideEndHandler({ bodyA, bodyB }) {\n const { events, refs } = this;\n const cbA = events[bodyA]?.collideEnd;\n if (cbA)\n cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideEnd' });\n const cbB = events[bodyB]?.collideEnd;\n if (cbB)\n cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideEnd' });\n }\n frameHandler({ active, bodies: uuids = [], observations, positions, quaternions, }) {\n const [{ shouldInvalidate }, { bodies, subscriptions, refs, scaleOverrides }, invalidate] = [\n untracked(this.options),\n this,\n this.invalidate(),\n ];\n for (let i = 0; i < uuids.length; i++) {\n bodies[uuids[i]] = i;\n }\n observations.forEach(([id, value, type]) => {\n const subscription = subscriptions[id] || {};\n const cb = subscription[type];\n // @ts-expect-error - We clearly know the type of the callback, but typescript can't deal with it\n cb && cb(value);\n });\n if (!active)\n return;\n for (const ref of Object.values(refs).filter(unique())) {\n if (is.three(ref, 'isInstancedMesh')) {\n for (let i = 0; i < ref.count; i++) {\n const uuid = `${ref.uuid}/${i}`;\n const index = bodies[uuid];\n if (index !== undefined) {\n ref.setMatrixAt(i, apply(index, positions, quaternions, scaleOverrides[uuid]));\n ref.instanceMatrix.needsUpdate = true;\n }\n }\n }\n else {\n const scale = scaleOverrides[ref.uuid] || ref.scale;\n apply(bodies[ref.uuid], positions, quaternions, scale, ref);\n }\n }\n if (shouldInvalidate)\n invalidate();\n }\n rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }) {\n const { events, refs } = this;\n const cb = events[uuid]?.rayhit;\n if (cb)\n cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.7\", type: NgtcPhysics, isStandalone: true, selector: \"ngtc-physics\", inputs: { options: { classPropertyName: \"options\", publicName: \"options\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.1.7\", ngImport: i0, type: NgtcPhysics, decorators: [{\n type: Directive,\n args: [{ selector: 'ngtc-physics' }]\n }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRyxPQUFPLEVBQ04sZUFBZSxHQWFmLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBa0IvQixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUU5QixTQUFTLEtBQUssQ0FDYixLQUFhLEVBQ2IsU0FBNEIsRUFDNUIsV0FBOEIsRUFDOUIsS0FBSyxHQUFHLENBQUMsRUFDVCxNQUF1QjtJQUV2QixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN6QixDQUFDLENBQUMsT0FBTyxDQUNSLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsRUFDakMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFvQyxFQUFF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SUFBSSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDOzhHQW5LVyxXQUFXO2tHQUFYLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgYWZ0ZXJOZXh0UmVuZGVyLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIHNpZ25hbCwgdW50cmFja2VkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuXHRDYW5ub25Xb3JrZXJBUEksXG5cdENhbm5vbldvcmtlclByb3BzLFxuXHRDb2xsaWRlQmVnaW5FdmVudCxcblx0Q29sbGlkZUVuZEV2ZW50LFxuXHRDb2xsaWRlRXZlbnQsXG5cdFJheWhpdEV2ZW50LFxuXHRSZWZzLFxuXHRTdWJzY3JpcHRpb25zLFxuXHRXb3JrZXJDb2xsaWRlQmVnaW5FdmVudCxcblx0V29ya2VyQ29sbGlkZUVuZEV2ZW50LFxuXHRXb3JrZXJDb2xsaWRlRXZlbnQsXG5cdFdvcmtlckZyYW1lTWVzc2FnZSxcblx0V29ya2VyUmF5aGl0RXZlbnQsXG59IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgYmVmb3JlUmVuZGVyLCBpbmplY3RTdG9yZSwgaXMsIHBpY2sgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCAqIGFzIFRIUkVFIGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQ2Fubm9uV29ya2VyRXZlbnRzIHtcblx0Y29sbGlkZTogV29ya2VyQ29sbGlkZUV2ZW50O1xuXHRjb2xsaWRlQmVnaW46IFdvcmtlckNvbGxpZGVCZWdpbkV2ZW50O1xuXHRjb2xsaWRlRW5kOiBXb3JrZXJDb2xsaWRlRW5kRXZlbnQ7XG5cdGZyYW1lOiBXb3JrZXJGcmFtZU1lc3NhZ2U7XG5cdHJheWhpdDogV29ya2VyUmF5aGl0RXZlbnQ7XG59XG5cbmV4cG9ydCB0eXBlIE5ndGNDYW5ub25Xb3JrZXIgPSBDYW5ub25Xb3JrZXJBUEkgJiB7XG5cdG9uOiA8SyBleHRlbmRzIGtleW9mIE5ndGNDYW5ub25Xb3JrZXJFdmVudHM+KFxuXHRcdGV2ZW50OiBLLFxuXHRcdGNiOiAoZGF0YTogTmd0Y0Nhbm5vbldvcmtlckV2ZW50c1tLXVsnZGF0YSddKSA9PiB2b2lkLFxuXHQpID0+IHZvaWQ7XG5cdHJlbW92ZUFsbExpc3RlbmVyczogKCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IHYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgcyA9IG5ldyBUSFJFRS5WZWN0b3IzKDEsIDEsIDEpO1xuY29uc3QgcSA9IG5ldyBUSFJFRS5RdWF0ZXJuaW9uKCk7XG5jb25zdCBtID0gbmV3IFRIUkVFLk1hdHJpeDQoKTtcblxuZnVuY3Rpb24gYXBwbHkoXG5cdGluZGV4OiBudW1iZXIsXG5cdHBvc2l0aW9uczogQXJyYXlMaWtlPG51bWJlcj4sXG5cdHF1YXRlcm5pb25zOiBBcnJheUxpa2U8bnVtYmVyPixcblx0c2NhbGUgPSBzLFxuXHRvYmplY3Q/OiBUSFJFRS5PYmplY3QzRCxcbikge1xuXHRpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuXHRcdG0uY29tcG9zZShcblx0XHRcdHYuZnJvbUFycmF5KHBvc2l0aW9ucywgaW5kZXggKiAzKSxcblx0XHRcdHEuZnJvbUFycmF5KHF1YXRlcm5pb25zIGFzIFRIUkVFLlF1YXRlcm5pb25UdXBsZSwgaW5kZXggKiA0KSxcblx0XHRcdHNjYWxlLFxuXHRcdCk7XG5cdFx0aWYgKG9iamVjdCkge1xuXHRcdFx0b2JqZWN0Lm1hdHJpeEF1dG9VcGRhdGUgPSBmYWxzZTtcblx0XHRcdG9iamVjdC5tYXRyaXguY29weShtKTtcblx0XHR9XG5cdFx0cmV0dXJuIG07XG5cdH1cblx0cmV0dXJuIG0uaWRlbnRpdHkoKTtcbn1cblxuZnVuY3Rpb24gdW5pcXVlKCkge1xuXHRjb25zdCB2YWx1ZXM6IHVua25vd25bXSA9IFtdO1xuXHRyZXR1cm4gKHZhbHVlOiB1bmtub3duKSA9PiAodmFsdWVzLmluY2x1ZGVzKHZhbHVlKSA/IGZhbHNlIDogISF2YWx1ZXMucHVzaCh2YWx1ZSkpO1xufVxuXG50eXBlIE5ndGNDYW5ub25FdmVudCA9IENvbGxpZGVCZWdpbkV2ZW50IHwgQ29sbGlkZUVuZEV2ZW50IHwgQ29sbGlkZUV2ZW50IHwgUmF5aGl0RXZlbnQ7XG50eXBlIE5ndGNDYWxsYmFja0J5VHlwZTxUIGV4dGVuZHMgeyB0eXBlOiBzdHJpbmcgfT4gPSB7XG5cdFtLIGluIFRbJ3R5cGUnXV0/OiBUIGV4dGVuZHMgeyB0eXBlOiBLIH0gPyAoZTogVCkgPT4gdm9pZCA6IG5ldmVyO1xufTtcblxuZXhwb3J0IHR5cGUgTmd0Y0Nhbm5vbkV2ZW50cyA9IFJlY29yZDxzdHJpbmcsIFBhcnRpYWw8Tmd0Y0NhbGxiYWNrQnlUeXBlPE5ndGNDYW5ub25FdmVudD4+PjtcblxuZXhwb3J0IHR5cGUgU2NhbGVPdmVycmlkZXMgPSBSZWNvcmQ8c3RyaW5nLCBUSFJFRS5WZWN0b3IzPjtcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjUGh5c2ljc09wdGlvbnMgZXh0ZW5kcyBDYW5ub25Xb3JrZXJQcm9wcyB7XG5cdGlzUGF1c2VkPzogYm9vbGVhbjtcblx0bWF4U3ViU3RlcHM/OiBudW1iZXI7XG5cdHNob3VsZEludmFsaWRhdGU/OiBib29sZWFuO1xuXHRzdGVwU2l6ZT86IG51bWJlcjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdGlvbnM6IE5ndGNQaHlzaWNzT3B0aW9ucyA9IHtcblx0YWxsb3dTbGVlcDogZmFsc2UsXG5cdGF4aXNJbmRleDogMCxcblx0YnJvYWRwaGFzZTogJ05haXZlJyxcblx0ZGVmYXVsdENvbnRhY3RNYXRlcmlhbDogeyBjb250YWN0RXF1YXRpb25TdGlmZm5lc3M6IDFlNiB9LFxuXHRmcmljdGlvbkdyYXZpdHk6IG51bGwsXG5cdGdyYXZpdHk6IFswLCAtOS44MSwgMF0sXG5cdGlzUGF1c2VkOiBmYWxzZSxcblx0aXRlcmF0aW9uczogNSxcblx0bWF4U3ViU3RlcHM6IDEwLFxuXHRxdWF0Tm9ybWFsaXplRmFzdDogZmFsc2UsXG5cdHF1YXROb3JtYWxpemVTa2lwOiAwLFxuXHRzaG91bGRJbnZhbGlkYXRlOiB0cnVlLFxuXHRzaXplOiAxMDAwLFxuXHRzb2x2ZXI6ICdHUycsXG5cdHN0ZXBTaXplOiAxIC8gNjAsXG5cdHRvbGVyYW5jZTogMC4wMDEsXG59O1xuXG50eXBlIE5ndHNQaHlzaWNzVXBkYXRhYmxlT3B0aW9ucyA9IEV4dHJhY3Q8XG5cdGtleW9mIE5ndGNQaHlzaWNzT3B0aW9ucyxcblx0J2dyYXZpdHknIHwgJ2l0ZXJhdGlvbnMnIHwgJ3RvbGVyYW5jZScgfCAnYnJvYWRwaGFzZScgfCAnYXhpc0luZGV4J1xuPjtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0Yy1waHlzaWNzJyB9KVxuZXhwb3J0IGNsYXNzIE5ndGNQaHlzaWNzIHtcblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdFN0b3JlKCk7XG5cblx0b3B0aW9ucyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgYXhpc0luZGV4ID0gcGljayh0aGlzLm9wdGlvbnMsICdheGlzSW5kZXgnKTtcblx0cHJpdmF0ZSBicm9hZHBoYXNlID0gcGljayh0aGlzLm9wdGlvbnMsICdicm9hZHBoYXNlJyk7XG5cdHByaXZhdGUgZ3Jhdml0eSA9IHBpY2sodGhpcy5vcHRpb25zLCAnZ3Jhdml0eScpO1xuXHRwcml2YXRlIGl0ZXJhdGlvbnMgPSBwaWNrKHRoaXMub3B0aW9ucywgJ2l0ZXJhdGlvbnMnKTtcblx0cHJpdmF0ZSB0b2xlcmFuY2UgPSBwaWNrKHRoaXMub3B0aW9ucywgJ3RvbGVyYW5jZScpO1xuXG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuaW52YWxpZGF0ZTtcblx0Ly8gQHRzLWV4cGVjdC1lcnJvciAtIHdvcmtlciBpcyBub3QgbnVsbGFibGUsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHVzZSAhIG9wZXJhdG9yLlxuXHRwcml2YXRlIGNhbm5vbldvcmtlciA9IHNpZ25hbDxDYW5ub25Xb3JrZXJBUEk+KG51bGwpO1xuXG5cdGJvZGllczogeyBbdXVpZDogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblx0ZXZlbnRzOiBOZ3RjQ2Fubm9uRXZlbnRzID0ge307XG5cdHJlZnM6IFJlZnMgPSB7fTtcblx0c2NhbGVPdmVycmlkZXM6IFNjYWxlT3ZlcnJpZGVzID0ge307XG5cdHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbnMgPSB7fTtcblx0d29ya2VyID0gdGhpcy5jYW5ub25Xb3JrZXIuYXNSZWFkb25seSgpO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGNvbnN0IGluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuXHRcdC8vIE5PVEU6IHNldCBuZXcgY2Fubm9ud29ya2VyIGluIGFmdGVyTmV4dFJlbmRlclxuXHRcdC8vIC0gc28gaW5wdXRzIGFyZSByZXNvbHZlZFxuXHRcdC8vIC0gc28gdGhlIHdvcmtlciBpcyBpbnN0YW50aWF0ZWQgb25seSBvbmNlXG5cdFx0Ly8gLSBlZmZlY3RzIGFyZSBzdGFydGVkIGFmdGVyIHdvcmtlciBpcyBpbnN0YW50aWF0ZWRcblx0XHRhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5jYW5ub25Xb3JrZXIuc2V0KG5ldyBDYW5ub25Xb3JrZXJBUEkodGhpcy5vcHRpb25zKCkpKTtcblxuXHRcdFx0ZWZmZWN0KFxuXHRcdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2xlYW51cCA9IHRoaXMuY29ubmVjdFdvcmtlckVmZmVjdCgpO1xuXHRcdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjbGVhbnVwPy4oKSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgaW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cblx0XHRcdGVmZmVjdChcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlV29ya2VyU3RhdGVFZmZlY3QoJ2F4aXNJbmRleCcsIHRoaXMuYXhpc0luZGV4KTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0KCdicm9hZHBoYXNlJywgdGhpcy5icm9hZHBoYXNlKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0KCdncmF2aXR5JywgdGhpcy5ncmF2aXR5KTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0KCdpdGVyYXRpb25zJywgdGhpcy5pdGVyYXRpb25zKTtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0KCd0b2xlcmFuY2UnLCB0aGlzLnRvbGVyYW5jZSk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHsgaW5qZWN0b3IgfSxcblx0XHRcdCk7XG5cdFx0fSk7XG5cblx0XHRsZXQgdGltZVNpbmNlTGFzdENhbGxlZCA9IDA7XG5cdFx0YmVmb3JlUmVuZGVyKCh7IGRlbHRhIH0pID0+IHtcblx0XHRcdGNvbnN0IFt7IGlzUGF1c2VkLCBtYXhTdWJTdGVwcywgc3RlcFNpemUgfSwgd29ya2VyXSA9IFt0aGlzLm9wdGlvbnMoKSwgdGhpcy5jYW5ub25Xb3JrZXIoKV07XG5cdFx0XHRpZiAoaXNQYXVzZWQgfHwgIXdvcmtlciB8fCBzdGVwU2l6ZSA9PSBudWxsKSByZXR1cm47XG5cdFx0XHR0aW1lU2luY2VMYXN0Q2FsbGVkICs9IGRlbHRhO1xuXHRcdFx0d29ya2VyLnN0ZXAoeyBtYXhTdWJTdGVwcywgc3RlcFNpemUsIHRpbWVTaW5jZUxhc3RDYWxsZWQgfSk7XG5cdFx0XHR0aW1lU2luY2VMYXN0Q2FsbGVkID0gMDtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgY29ubmVjdFdvcmtlckVmZmVjdCgpIHtcblx0XHRjb25zdCB3b3JrZXIgPSB0aGlzLmNhbm5vbldvcmtlcigpIGFzIE5ndGNDYW5ub25Xb3JrZXI7XG5cdFx0aWYgKCF3b3JrZXIpIHJldHVybjtcblxuXHRcdHdvcmtlci5jb25uZWN0KCk7XG5cdFx0d29ya2VyLmluaXQoKTtcblxuXHRcdHdvcmtlci5vbignY29sbGlkZScsIHRoaXMuY29sbGlkZUhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0d29ya2VyLm9uKCdjb2xsaWRlQmVnaW4nLCB0aGlzLmNvbGxpZGVCZWdpbkhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0d29ya2VyLm9uKCdjb2xsaWRlRW5kJywgdGhpcy5jb2xsaWRlRW5kSGFuZGxlci5iaW5kKHRoaXMpKTtcblx0XHR3b3JrZXIub24oJ2ZyYW1lJywgdGhpcy5mcmFtZUhhbmRsZXIuYmluZCh0aGlzKSk7XG5cdFx0d29ya2VyLm9uKCdyYXloaXQnLCB0aGlzLnJheWhpdEhhbmRsZXIuYmluZCh0aGlzKSk7XG5cblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0d29ya2VyLnRlcm1pbmF0ZSgpO1xuXHRcdFx0d29ya2VyLnJlbW92ZUFsbExpc3RlbmVycygpO1xuXHRcdH07XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVdvcmtlclN0YXRlRWZmZWN0PFRVcGRhdGFibGVLZXkgZXh0ZW5kcyBOZ3RzUGh5c2ljc1VwZGF0YWJsZU9wdGlvbnM+KFxuXHRcdGtleTogVFVwZGF0YWJsZUtleSxcblx0XHRvcHRpb246ICgpID0+IE5ndGNQaHlzaWNzT3B0aW9uc1tUVXBkYXRhYmxlS2V5XSxcblx0KSB7XG5cdFx0Y29uc3Qgd29ya2VyID0gdGhpcy5jYW5ub25Xb3JrZXIoKTtcblx0XHRpZiAoIXdvcmtlcikgcmV0dXJuO1xuXHRcdE9iamVjdC5hc3NpZ24od29ya2VyLCB7IFtrZXldOiBvcHRpb24oKSB9KTtcblx0fVxuXG5cdHByaXZhdGUgY29sbGlkZUhhbmRsZXIoeyBib2R5LCBjb250YWN0OiB7IGJpLCBiaiwgLi4uY29udGFjdFJlc3QgfSwgdGFyZ2V0LCAuLi5yZXN0IH06IFdvcmtlckNvbGxpZGVFdmVudFsnZGF0YSddKSB7XG5cdFx0Y29uc3QgeyBldmVudHMsIHJlZnMgfSA9IHRoaXM7XG5cdFx0Y29uc3QgY2IgPSBldmVudHNbdGFyZ2V0XT8uY29sbGlkZTtcblx0XHRpZiAoY2IpIHtcblx0XHRcdGNiKHtcblx0XHRcdFx0Ym9keTogcmVmc1tib2R5XSxcblx0XHRcdFx0Y29udGFjdDogeyBiaTogcmVmc1tiaV0sIGJqOiByZWZzW2JqXSwgLi4uY29udGFjdFJlc3QgfSxcblx0XHRcdFx0dGFyZ2V0OiByZWZzW3RhcmdldF0sXG5cdFx0XHRcdC4uLnJlc3QsXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGNvbGxpZGVCZWdpbkhhbmRsZXIoeyBib2R5QSwgYm9keUIgfTogV29ya2VyQ29sbGlkZUJlZ2luRXZlbnRbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IHsgZXZlbnRzLCByZWZzIH0gPSB0aGlzO1xuXHRcdGNvbnN0IGNiQSA9IGV2ZW50c1tib2R5QV0/LmNvbGxpZGVCZWdpbjtcblx0XHRpZiAoY2JBKSBjYkEoeyBib2R5OiByZWZzW2JvZHlCXSwgb3A6ICdldmVudCcsIHRhcmdldDogcmVmc1tib2R5QV0sIHR5cGU6ICdjb2xsaWRlQmVnaW4nIH0pO1xuXHRcdGNvbnN0IGNiQiA9IGV2ZW50c1tib2R5Ql0/LmNvbGxpZGVCZWdpbjtcblx0XHRpZiAoY2JCKSBjYkIoeyBib2R5OiByZWZzW2JvZHlBXSwgb3A6ICdldmVudCcsIHRhcmdldDogcmVmc1tib2R5Ql0sIHR5cGU6ICdjb2xsaWRlQmVnaW4nIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb2xsaWRlRW5kSGFuZGxlcih7IGJvZHlBLCBib2R5QiB9OiBXb3JrZXJDb2xsaWRlRW5kRXZlbnRbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IHsgZXZlbnRzLCByZWZzIH0gPSB0aGlzO1xuXHRcdGNvbnN0IGNiQSA9IGV2ZW50c1tib2R5QV0/LmNvbGxpZGVFbmQ7XG5cdFx0aWYgKGNiQSkgY2JBKHsgYm9keTogcmVmc1tib2R5Ql0sIG9wOiAnZXZlbnQnLCB0YXJnZXQ6IHJlZnNbYm9keUFdLCB0eXBlOiAnY29sbGlkZUVuZCcgfSk7XG5cdFx0Y29uc3QgY2JCID0gZXZlbnRzW2JvZHlCXT8uY29sbGlkZUVuZDtcblx0XHRpZiAoY2JCKSBjYkIoeyBib2R5OiByZWZzW2JvZHlBXSwgb3A6ICdldmVudCcsIHRhcmdldDogcmVmc1tib2R5Ql0sIHR5cGU6ICdjb2xsaWRlRW5kJyB9KTtcblx0fVxuXG5cdHByaXZhdGUgZnJhbWVIYW5kbGVyKHtcblx0XHRhY3RpdmUsXG5cdFx0Ym9kaWVzOiB1dWlkcyA9IFtdLFxuXHRcdG9ic2VydmF0aW9ucyxcblx0XHRwb3NpdGlvbnMsXG5cdFx0cXVhdGVybmlvbnMsXG5cdH06IFdvcmtlckZyYW1lTWVzc2FnZVsnZGF0YSddKSB7XG5cdFx0Y29uc3QgW3sgc2hvdWxkSW52YWxpZGF0ZSB9LCB7IGJvZGllcywgc3Vic2NyaXB0aW9ucywgcmVmcywgc2NhbGVPdmVycmlkZXMgfSwgaW52YWxpZGF0ZV0gPSBbXG5cdFx0XHR1bnRyYWNrZWQodGhpcy5vcHRpb25zKSxcblx0XHRcdHRoaXMsXG5cdFx0XHR0aGlzLmludmFsaWRhdGUoKSxcblx0XHRdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdXVpZHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGJvZGllc1t1dWlkc1tpXV0gPSBpO1xuXHRcdH1cblx0XHRvYnNlcnZhdGlvbnMuZm9yRWFjaCgoW2lkLCB2YWx1ZSwgdHlwZV0pID0+IHtcblx0XHRcdGNvbnN0IHN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbnNbaWRdIHx8IHt9O1xuXHRcdFx0Y29uc3QgY2IgPSBzdWJzY3JpcHRpb25bdHlwZV07XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIC0gV2UgY2xlYXJseSBrbm93IHRoZSB0eXBlIG9mIHRoZSBjYWxsYmFjaywgYnV0IHR5cGVzY3JpcHQgY2FuJ3QgZGVhbCB3aXRoIGl0XG5cdFx0XHRjYiAmJiBjYih2YWx1ZSk7XG5cdFx0fSk7XG5cdFx0aWYgKCFhY3RpdmUpIHJldHVybjtcblx0XHRmb3IgKGNvbnN0IHJlZiBvZiBPYmplY3QudmFsdWVzKHJlZnMpLmZpbHRlcih1bmlxdWUoKSkpIHtcblx0XHRcdGlmIChpcy50aHJlZTxUSFJFRS5JbnN0YW5jZWRNZXNoPihyZWYsICdpc0luc3RhbmNlZE1lc2gnKSkge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJlZi5jb3VudDsgaSsrKSB7XG5cdFx0XHRcdFx0Y29uc3QgdXVpZCA9IGAke3JlZi51dWlkfS8ke2l9YDtcblx0XHRcdFx0XHRjb25zdCBpbmRleCA9IGJvZGllc1t1dWlkXTtcblx0XHRcdFx0XHRpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdFx0cmVmLnNldE1hdHJpeEF0KGksIGFwcGx5KGluZGV4LCBwb3NpdGlvbnMsIHF1YXRlcm5pb25zLCBzY2FsZU92ZXJyaWRlc1t1dWlkXSkpO1xuXHRcdFx0XHRcdFx0cmVmLmluc3RhbmNlTWF0cml4Lm5lZWRzVXBkYXRlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IHNjYWxlID0gc2NhbGVPdmVycmlkZXNbcmVmLnV1aWRdIHx8IHJlZi5zY2FsZTtcblx0XHRcdFx0YXBwbHkoYm9kaWVzW3JlZi51dWlkXSwgcG9zaXRpb25zLCBxdWF0ZXJuaW9ucywgc2NhbGUsIHJlZik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChzaG91bGRJbnZhbGlkYXRlKSBpbnZhbGlkYXRlKCk7XG5cdH1cblxuXHRwcml2YXRlIHJheWhpdEhhbmRsZXIoeyBib2R5LCByYXk6IHsgdXVpZCwgLi4ucmF5UmVzdCB9LCAuLi5yZXN0IH06IFdvcmtlclJheWhpdEV2ZW50WydkYXRhJ10pIHtcblx0XHRjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gdGhpcztcblx0XHRjb25zdCBjYiA9IGV2ZW50c1t1dWlkXT8ucmF5aGl0O1xuXHRcdGlmIChjYikgY2IoeyBib2R5OiBib2R5ID8gcmVmc1tib2R5XSA6IG51bGwsIHJheTogeyB1dWlkLCAuLi5yYXlSZXN0IH0sIC4uLnJlc3QgfSk7XG5cdH1cbn1cbiJdfQ==","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9zcmMvYW5ndWxhci10aHJlZS1jYW5ub24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0="],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "angular-three-cannon",
|
|
3
|
-
"version": "4.0.0-next.
|
|
3
|
+
"version": "4.0.0-next.112",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -23,12 +23,12 @@
|
|
|
23
23
|
],
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@angular/common": ">=
|
|
27
|
-
"@angular/core": ">=
|
|
26
|
+
"@angular/common": ">=20.0.0 <21.0.0",
|
|
27
|
+
"@angular/core": ">=20.0.0 <21.0.0",
|
|
28
28
|
"@pmndrs/cannon-worker-api": "^2.0.0",
|
|
29
29
|
"cannon-es": ">=0.20.0 <0.21.0",
|
|
30
30
|
"cannon-es-debugger": "^1.0.0",
|
|
31
|
-
"three": ">=0.157.0 <0.
|
|
31
|
+
"three": ">=0.157.0 <0.180.0"
|
|
32
32
|
},
|
|
33
33
|
"peerDependenciesMeta": {
|
|
34
34
|
"cannon-es-debugger": {
|