angular-three-cannon 4.0.0-next.11 → 4.0.0-next.111

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.
@@ -3,11 +3,11 @@ import { makeId, resolveRef } from 'angular-three';
3
3
  import { NgtcPhysics } from 'angular-three-cannon';
4
4
  import { assertInjector } from 'ngxtension/assert-injector';
5
5
 
6
- function createInjectConstraint(type) {
7
- return (bodyA, bodyB, options) => injectConstraint(type, bodyA, bodyB, options);
6
+ function createConstraint(type) {
7
+ return (bodyA, bodyB, options) => constraint(type, bodyA, bodyB, options);
8
8
  }
9
- function injectConstraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart = false, } = {}) {
10
- return assertInjector(injectConstraint, injector, () => {
9
+ function constraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart = false, } = {}) {
10
+ return assertInjector(constraint, injector, () => {
11
11
  const physics = inject(NgtcPhysics, { optional: true });
12
12
  if (!physics) {
13
13
  throw new Error(`[NGT Cannon] injectConstraint was called outside of <ngtc-physics>`);
@@ -16,8 +16,8 @@ function injectConstraint(type, bodyA, bodyB, { injector, options = {}, disableO
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 injectConstraint(type, bodyA, bodyB, { injector, options = {}, disableO
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();
@@ -60,15 +60,40 @@ function injectConstraint(type, bodyA, bodyB, { injector, options = {}, disableO
60
60
  return constraintApi;
61
61
  });
62
62
  }
63
- const injectPointToPoint = createInjectConstraint('PointToPoint');
64
- const injectConeTwist = createInjectConstraint('ConeTwist');
65
- const injectDistance = createInjectConstraint('Distance');
66
- const injectLock = createInjectConstraint('Lock');
67
- const injectHinge = createInjectConstraint('Hinge');
63
+ const pointToPoint = createConstraint('PointToPoint');
64
+ const coneTwist = createConstraint('ConeTwist');
65
+ const distance = createConstraint('Distance');
66
+ const lock = createConstraint('Lock');
67
+ const hinge = createConstraint('Hinge');
68
+ /**
69
+ * @deprecated Use `pointToPoint` instead. Will be removed in v5.0.0
70
+ * @since v4.0.0
71
+ */
72
+ const injectPointToPoint = pointToPoint;
73
+ /**
74
+ * @deprecated Use `coneTwist` instead. Will be removed in v5.0.0
75
+ * @since v4.0.0
76
+ */
77
+ const injectConeTwist = coneTwist;
78
+ /**
79
+ * @deprecated Use `distance` instead. Will be removed in v5.0.0
80
+ * @since v4.0.0
81
+ */
82
+ const injectDistance = distance;
83
+ /**
84
+ * @deprecated Use `lock` instead. Will be removed in v5.0.0
85
+ * @since v4.0.0
86
+ */
87
+ const injectLock = lock;
88
+ /**
89
+ * @deprecated Use `hinge` instead. Will be removed in v5.0.0
90
+ * @since v4.0.0
91
+ */
92
+ const injectHinge = hinge;
68
93
 
69
94
  /**
70
95
  * Generated bundle index. Do not edit.
71
96
  */
72
97
 
73
- export { injectConeTwist, injectDistance, injectHinge, injectLock, injectPointToPoint };
98
+ export { coneTwist, distance, hinge, injectConeTwist, injectDistance, injectHinge, injectLock, injectPointToPoint, lock, pointToPoint };
74
99
  //# sourceMappingURL=angular-three-cannon-constraint.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-cannon-constraint.mjs","sources":["../../../../libs/cannon/constraint/src/lib/constraint.ts","../../../../libs/cannon/constraint/src/angular-three-cannon-constraint.ts"],"sourcesContent":["import { ElementRef, Injector, Signal, computed, effect, inject, isSignal, signal, untracked } from '@angular/core';\nimport {\n\tConeTwistConstraintOpts,\n\tConstraintTypes,\n\tDistanceConstraintOpts,\n\tHingeConstraintOpts,\n\tLockConstraintOpts,\n\tPointToPointConstraintOpts,\n} from '@pmndrs/cannon-worker-api';\nimport { makeId, resolveRef } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport * as THREE from 'three';\n\nexport interface NgtcConstraintApi {\n\tdisable: () => void;\n\tenable: () => void;\n\tremove: () => void;\n}\n\nexport interface NgtcHingeConstraintApi extends NgtcConstraintApi {\n\tdisableMotor: () => void;\n\tenableMotor: () => void;\n\tsetMotorMaxForce: (value: number) => void;\n\tsetMotorSpeed: (value: number) => void;\n}\n\nexport type NgtcConstraintORHingeApi<T extends 'Hinge' | ConstraintTypes> = T extends ConstraintTypes\n\t? NgtcConstraintApi\n\t: NgtcHingeConstraintApi;\n\nexport type NgtcConstraintOptionsMap = {\n\tConeTwist: ConeTwistConstraintOpts;\n\tPointToPoint: PointToPointConstraintOpts;\n\tDistance: DistanceConstraintOpts;\n\tLock: LockConstraintOpts;\n\tHinge: HingeConstraintOpts;\n};\n\nexport type NgtcConstraintOptions<TConstraintType extends 'Hinge' | ConstraintTypes> = {\n\tinjector?: Injector;\n\tdisableOnStart?: boolean;\n\toptions?: NgtcConstraintOptionsMap[TConstraintType];\n};\n\nfunction createInjectConstraint<TConstraint extends ConstraintTypes | 'Hinge'>(type: TConstraint) {\n\treturn <A extends THREE.Object3D = THREE.Object3D, B extends THREE.Object3D = THREE.Object3D>(\n\t\tbodyA: ElementRef<A> | A | Signal<ElementRef<A> | A | undefined>,\n\t\tbodyB: ElementRef<B> | B | Signal<ElementRef<B> | B | undefined>,\n\t\toptions?: NgtcConstraintOptions<TConstraint>,\n\t) => injectConstraint<TConstraint, A, B>(type, bodyA, bodyB, options);\n}\n\nfunction injectConstraint<\n\tTConstraint extends ConstraintTypes | 'Hinge',\n\tA extends THREE.Object3D = THREE.Object3D,\n\tB extends THREE.Object3D = THREE.Object3D,\n>(\n\ttype: TConstraint,\n\tbodyA: ElementRef<A> | A | Signal<ElementRef<A> | A | undefined>,\n\tbodyB: ElementRef<B> | B | Signal<ElementRef<B> | B | undefined>,\n\t{\n\t\tinjector,\n\t\toptions = {} as NgtcConstraintOptionsMap[TConstraint],\n\t\tdisableOnStart = false,\n\t}: NgtcConstraintOptions<TConstraint> = {},\n) {\n\treturn assertInjector(injectConstraint, injector, () => {\n\t\tconst physics = inject(NgtcPhysics, { optional: true });\n\n\t\tif (!physics) {\n\t\t\tthrow new Error(`[NGT Cannon] injectConstraint was called outside of <ngtc-physics>`);\n\t\t}\n\n\t\tconst worker = physics.worker;\n\n\t\tconst uuid = makeId();\n\t\tconst bodyARef = isSignal(bodyA) ? bodyA : signal(bodyA);\n\t\tconst bodyBRef = isSignal(bodyB) ? bodyB : signal(bodyB);\n\t\tconst bodyAValue = computed(() => resolveRef(bodyARef()));\n\t\tconst bodyBValue = computed(() => resolveRef(bodyBRef()));\n\n\t\tconst constraintApi = computed(() => {\n\t\t\tconst _worker = worker();\n\t\t\tif (!_worker) return null;\n\n\t\t\tconst enableDisable = {\n\t\t\t\tdisable: () => _worker.disableConstraint({ uuid }),\n\t\t\t\tenable: () => _worker.enableConstraint({ uuid }),\n\t\t\t\tremove: () => _worker.removeConstraint({ uuid }),\n\t\t\t};\n\t\t\tif (type === 'Hinge') {\n\t\t\t\treturn {\n\t\t\t\t\t...enableDisable,\n\t\t\t\t\tdisableMotor: () => _worker.disableConstraintMotor({ uuid }),\n\t\t\t\t\tenableMotor: () => _worker.enableConstraintMotor({ uuid }),\n\t\t\t\t\tsetMotorMaxForce: (value: number) => _worker.setConstraintMotorMaxForce({ props: value, uuid }),\n\t\t\t\t\tsetMotorSpeed: (value: number) => _worker.setConstraintMotorSpeed({ props: value, uuid }),\n\t\t\t\t} as NgtcHingeConstraintApi;\n\t\t\t}\n\t\t\treturn enableDisable as NgtcConstraintApi;\n\t\t});\n\n\t\tlet alreadyDisabled = false;\n\t\teffect((onCleanup) => {\n\t\t\tconst currentWorker = worker();\n\t\t\tif (!currentWorker) return;\n\n\t\t\tconst [a, b, api] = [bodyAValue(), bodyBValue(), untracked(constraintApi)];\n\t\t\tif (!a || !b) return;\n\n\t\t\tcurrentWorker.addConstraint({\n\t\t\t\tprops: [a.uuid, b.uuid, options],\n\t\t\t\ttype,\n\t\t\t\tuuid,\n\t\t\t});\n\n\t\t\tif (disableOnStart && !alreadyDisabled) {\n\t\t\t\talreadyDisabled = true;\n\t\t\t\tapi?.disable();\n\t\t\t}\n\n\t\t\tonCleanup(() => currentWorker.removeConstraint({ uuid }));\n\t\t});\n\n\t\treturn constraintApi;\n\t});\n}\n\nexport const injectPointToPoint = createInjectConstraint('PointToPoint');\nexport const injectConeTwist = createInjectConstraint('ConeTwist');\nexport const injectDistance = createInjectConstraint('Distance');\nexport const injectLock = createInjectConstraint('Lock');\nexport const injectHinge = createInjectConstraint('Hinge');\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"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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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, inject, afterNextRender, Directive } from '@angular/core';
3
3
  import { propsToBody } from '@pmndrs/cannon-worker-api';
4
- import { is, injectStore, injectBeforeRender } from 'angular-three';
4
+ import { is, injectStore, beforeRender } from 'angular-three';
5
5
  import { NgtcPhysics } from 'angular-three-cannon';
6
6
  import CannonDebugger from 'cannon-es-debugger';
7
7
  import { mergeInputs } from 'ngxtension/inject-inputs';
@@ -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;
@@ -41,7 +41,7 @@ class NgtcDebug {
41
41
  scale: this.debug().scale,
42
42
  });
43
43
  });
44
- injectBeforeRender(() => {
44
+ beforeRender(() => {
45
45
  if (!this.cannonDebugger)
46
46
  return;
47
47
  const enabled = this.debug().enabled;
@@ -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: "19.1.4", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtcDebug, isStandalone: true, selector: "ngtc-physics[debug]", inputs: { debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
75
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
76
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.4", 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: "19.1.4", ngImport: i0, type: NgtcDebug, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", 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":["../../../../libs/cannon/debug/src/lib/debug.ts","../../../../libs/cannon/debug/src/angular-three-cannon-debug.ts"],"sourcesContent":["import { Directive, afterNextRender, inject, input } from '@angular/core';\nimport { BodyProps, BodyShapeType, propsToBody } from '@pmndrs/cannon-worker-api';\nimport { injectBeforeRender, injectStore, is } from 'angular-three';\nimport { NgtcPhysics } from 'angular-three-cannon';\nimport { Body, Quaternion as CQuarternion, Vec3, World } from 'cannon-es';\nimport CannonDebugger from 'cannon-es-debugger';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nconst q = new THREE.Quaternion();\nconst s = new THREE.Vector3(1, 1, 1);\nconst v = new THREE.Vector3();\nconst m = new THREE.Matrix4();\n\nfunction getMatrix(o: THREE.Object3D) {\n\tif (is.three<THREE.InstancedMesh>(o, 'isInstancedMesh')) {\n\t\to.getMatrixAt(parseInt(o.uuid.split('/')[1]), m);\n\t\treturn m;\n\t}\n\treturn o.matrix;\n}\n\nexport interface NgtcDebugInputs {\n\tenabled: boolean;\n\tcolor: string;\n\timpl: typeof CannonDebugger;\n\tscale: number;\n}\n\nconst defaultOptions: NgtcDebugInputs = {\n\tenabled: true,\n\tscale: 1,\n\tcolor: 'black',\n\timpl: CannonDebugger,\n};\n\n@Directive({ selector: 'ngtc-physics[debug]' })\nexport class NgtcDebug {\n\tdebug = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate physics = inject(NgtcPhysics);\n\n\tprivate store = injectStore();\n\tprivate defaultScene = this.store.scene;\n\n\tprivate debuggerScene = new THREE.Scene();\n\tprivate bodies: Body[] = [];\n\tprivate bodyMap: Record<string, Body> = {};\n\n\tprivate cannonDebugger!: ReturnType<typeof CannonDebugger>;\n\n\tconstructor() {\n\t\t// NOTE: afterNextRender so we only instantiate once after inputs have been resolved\n\t\tafterNextRender(() => {\n\t\t\tthis.defaultScene().add(this.debuggerScene);\n\t\t\tthis.cannonDebugger = this.debug().impl(this.debuggerScene, { bodies: this.bodies } as World, {\n\t\t\t\tcolor: this.debug().color,\n\t\t\t\tscale: this.debug().scale,\n\t\t\t});\n\t\t});\n\n\t\tinjectBeforeRender(() => {\n\t\t\tif (!this.cannonDebugger) return;\n\n\t\t\tconst enabled = this.debug().enabled;\n\t\t\tconst refs = this.physics.refs;\n\t\t\tfor (const uuid in this.bodyMap) {\n\t\t\t\tconst ref = refs[uuid];\n\t\t\t\tconst body = this.bodyMap[uuid];\n\t\t\t\tif (ref) {\n\t\t\t\t\tgetMatrix(ref).decompose(v, q, s);\n\t\t\t\t\tbody.position.copy(v as unknown as Vec3);\n\t\t\t\t\tbody.quaternion.copy(q as unknown as CQuarternion);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const child of this.debuggerScene.children) child.visible = enabled;\n\t\t\tif (enabled) this.cannonDebugger.update();\n\t\t});\n\t}\n\n\tadd(uuid: string, props: BodyProps, type: BodyShapeType) {\n\t\tconst body = propsToBody({ uuid, props, type });\n\t\tthis.bodies.push(body);\n\t\tthis.bodyMap[uuid] = body;\n\t}\n\n\tremove(uuid: string) {\n\t\tconst debugBodyIndex = this.bodies.indexOf(this.bodyMap[uuid]);\n\t\tif (debugBodyIndex > -1) this.bodies.splice(debugBodyIndex, 1);\n\t\tdelete this.bodyMap[uuid];\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;AASA,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;AAE7B,SAAS,SAAS,CAAC,CAAiB,EAAA;IACnC,IAAI,EAAE,CAAC,KAAK,CAAsB,CAAC,EAAE,iBAAiB,CAAC,EAAE;QACxD,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAChD,QAAA,OAAO,CAAC;;IAET,OAAO,CAAC,CAAC,MAAM;AAChB;AASA,MAAM,cAAc,GAAoB;AACvC,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,cAAc;CACpB;MAGY,SAAS,CAAA;AAcrB,IAAA,WAAA,GAAA;AAbA,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;AAEjE,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;QAE7B,IAAK,CAAA,KAAA,GAAG,WAAW,EAAE;AACrB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;AAE/B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE;QACjC,IAAM,CAAA,MAAA,GAAW,EAAE;QACnB,IAAO,CAAA,OAAA,GAAyB,EAAE;;QAMzC,eAAe,CAAC,MAAK;YACpB,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;YAC3C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAW,EAAE;AAC7F,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;AACzB,gBAAA,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK;AACzB,aAAA,CAAC;AACH,SAAC,CAAC;QAEF,kBAAkB,CAAC,MAAK;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE;YAE1B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,OAAO;AACpC,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI;AAC9B,YAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;AAChC,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC/B,IAAI,GAAG,EAAE;AACR,oBAAA,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACjC,oBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAoB,CAAC;AACxC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAA4B,CAAC;;;AAIpD,YAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ;AAAE,gBAAA,KAAK,CAAC,OAAO,GAAG,OAAO;AACxE,YAAA,IAAI,OAAO;AAAE,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AAC1C,SAAC,CAAC;;AAGH,IAAA,GAAG,CAAC,IAAY,EAAE,KAAgB,EAAE,IAAmB,EAAA;AACtD,QAAA,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;;AAG1B,IAAA,MAAM,CAAC,IAAY,EAAA;AAClB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,cAAc,GAAG,CAAC,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;;8GArDd,SAAS,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAT,SAAS,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,SAAS;mBAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE;;;ACpC9C;;AAEG;;;;"}
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.4\", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.4\", 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.4\", 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":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { input, signal, inject, Injector, afterNextRender, effect, untracked, Directive } from '@angular/core';
3
3
  import { CannonWorkerAPI } from '@pmndrs/cannon-worker-api';
4
- import { injectStore, pick, injectBeforeRender, is } from 'angular-three';
4
+ import { injectStore, pick, beforeRender, is } from 'angular-three';
5
5
  import { mergeInputs } from 'ngxtension/inject-inputs';
6
6
  import * as THREE from 'three';
7
7
 
@@ -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 = {};
@@ -80,7 +80,7 @@ class NgtcPhysics {
80
80
  }, { injector });
81
81
  });
82
82
  let timeSinceLastCalled = 0;
83
- injectBeforeRender(({ delta }) => {
83
+ beforeRender(({ delta }) => {
84
84
  const [{ isPaused, maxSubSteps, stepSize }, worker] = [this.options(), this.cannonWorker()];
85
85
  if (isPaused || !worker || stepSize == null)
86
86
  return;
@@ -115,7 +115,12 @@ class NgtcPhysics {
115
115
  const { events, refs } = this;
116
116
  const cb = events[target]?.collide;
117
117
  if (cb) {
118
- cb({ body: refs[body], contact: { bi: refs[bi], bj: refs[bj], ...contactRest }, target: refs[target], ...rest });
118
+ cb({
119
+ body: refs[body],
120
+ contact: { bi: refs[bi], bj: refs[bj], ...contactRest },
121
+ target: refs[target],
122
+ ...rest,
123
+ });
119
124
  }
120
125
  }
121
126
  collideBeginHandler({ bodyA, bodyB }) {
@@ -178,10 +183,10 @@ class NgtcPhysics {
178
183
  if (cb)
179
184
  cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });
180
185
  }
181
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
182
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.1.4", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
186
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
187
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.4", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
183
188
  }
184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: NgtcPhysics, decorators: [{
189
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.4", ngImport: i0, type: NgtcPhysics, decorators: [{
185
190
  type: Directive,
186
191
  args: [{ selector: 'ngtc-physics' }]
187
192
  }], ctorParameters: () => [] });
@@ -1 +1 @@
1
- {"version":3,"file":"angular-three-cannon.mjs","sources":["../../../../libs/cannon/src/lib/physics.ts","../../../../libs/cannon/src/angular-three-cannon.ts"],"sourcesContent":["import { Directive, Injector, afterNextRender, effect, inject, input, signal, untracked } from '@angular/core';\nimport {\n\tCannonWorkerAPI,\n\tCannonWorkerProps,\n\tCollideBeginEvent,\n\tCollideEndEvent,\n\tCollideEvent,\n\tRayhitEvent,\n\tRefs,\n\tSubscriptions,\n\tWorkerCollideBeginEvent,\n\tWorkerCollideEndEvent,\n\tWorkerCollideEvent,\n\tWorkerFrameMessage,\n\tWorkerRayhitEvent,\n} from '@pmndrs/cannon-worker-api';\nimport { injectBeforeRender, injectStore, is, pick } from 'angular-three';\nimport { mergeInputs } from 'ngxtension/inject-inputs';\nimport * as THREE from 'three';\n\nexport interface NgtcCannonWorkerEvents {\n\tcollide: WorkerCollideEvent;\n\tcollideBegin: WorkerCollideBeginEvent;\n\tcollideEnd: WorkerCollideEndEvent;\n\tframe: WorkerFrameMessage;\n\trayhit: WorkerRayhitEvent;\n}\n\nexport type NgtcCannonWorker = CannonWorkerAPI & {\n\ton: <K extends keyof NgtcCannonWorkerEvents>(event: K, cb: (data: NgtcCannonWorkerEvents[K]['data']) => void) => void;\n\tremoveAllListeners: () => void;\n};\n\nconst v = new THREE.Vector3();\nconst s = new THREE.Vector3(1, 1, 1);\nconst q = new THREE.Quaternion();\nconst m = new THREE.Matrix4();\n\nfunction apply(\n\tindex: number,\n\tpositions: ArrayLike<number>,\n\tquaternions: ArrayLike<number>,\n\tscale = s,\n\tobject?: THREE.Object3D,\n) {\n\tif (index !== undefined) {\n\t\tm.compose(v.fromArray(positions, index * 3), q.fromArray(quaternions as THREE.QuaternionTuple, index * 4), scale);\n\t\tif (object) {\n\t\t\tobject.matrixAutoUpdate = false;\n\t\t\tobject.matrix.copy(m);\n\t\t}\n\t\treturn m;\n\t}\n\treturn m.identity();\n}\n\nfunction unique() {\n\tconst values: unknown[] = [];\n\treturn (value: unknown) => (values.includes(value) ? false : !!values.push(value));\n}\n\ntype NgtcCannonEvent = CollideBeginEvent | CollideEndEvent | CollideEvent | RayhitEvent;\ntype NgtcCallbackByType<T extends { type: string }> = {\n\t[K in T['type']]?: T extends { type: K } ? (e: T) => void : never;\n};\n\nexport type NgtcCannonEvents = Record<string, Partial<NgtcCallbackByType<NgtcCannonEvent>>>;\n\nexport type ScaleOverrides = Record<string, THREE.Vector3>;\n\nexport interface NgtcPhysicsOptions extends CannonWorkerProps {\n\tisPaused?: boolean;\n\tmaxSubSteps?: number;\n\tshouldInvalidate?: boolean;\n\tstepSize?: number;\n}\n\nconst defaultOptions: NgtcPhysicsOptions = {\n\tallowSleep: false,\n\taxisIndex: 0,\n\tbroadphase: 'Naive',\n\tdefaultContactMaterial: { contactEquationStiffness: 1e6 },\n\tfrictionGravity: null,\n\tgravity: [0, -9.81, 0],\n\tisPaused: false,\n\titerations: 5,\n\tmaxSubSteps: 10,\n\tquatNormalizeFast: false,\n\tquatNormalizeSkip: 0,\n\tshouldInvalidate: true,\n\tsize: 1000,\n\tsolver: 'GS',\n\tstepSize: 1 / 60,\n\ttolerance: 0.001,\n};\n\ntype NgtsPhysicsUpdatableOptions = Extract<\n\tkeyof NgtcPhysicsOptions,\n\t'gravity' | 'iterations' | 'tolerance' | 'broadphase' | 'axisIndex'\n>;\n\n@Directive({ selector: 'ngtc-physics' })\nexport class NgtcPhysics {\n\tprivate store = injectStore();\n\n\toptions = input(defaultOptions, { transform: mergeInputs(defaultOptions) });\n\n\tprivate axisIndex = pick(this.options, 'axisIndex');\n\tprivate broadphase = pick(this.options, 'broadphase');\n\tprivate gravity = pick(this.options, 'gravity');\n\tprivate iterations = pick(this.options, 'iterations');\n\tprivate tolerance = pick(this.options, 'tolerance');\n\n\tprivate invalidate = this.store.invalidate;\n\t// @ts-expect-error - worker is not nullable, and we don't want to use ! operator.\n\tprivate cannonWorker = signal<CannonWorkerAPI>(null);\n\n\tbodies: { [uuid: string]: number } = {};\n\tevents: NgtcCannonEvents = {};\n\trefs: Refs = {};\n\tscaleOverrides: ScaleOverrides = {};\n\tsubscriptions: Subscriptions = {};\n\tworker = this.cannonWorker.asReadonly();\n\n\tconstructor() {\n\t\tconst injector = inject(Injector);\n\n\t\t// NOTE: set new cannonworker in afterNextRender\n\t\t// - so inputs are resolved\n\t\t// - so the worker is instantiated only once\n\t\t// - effects are started after worker is instantiated\n\t\tafterNextRender(() => {\n\t\t\tthis.cannonWorker.set(new CannonWorkerAPI(this.options()));\n\n\t\t\teffect(\n\t\t\t\t(onCleanup) => {\n\t\t\t\t\tconst cleanup = this.connectWorkerEffect();\n\t\t\t\t\tonCleanup(() => cleanup?.());\n\t\t\t\t},\n\t\t\t\t{ injector },\n\t\t\t);\n\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tthis.updateWorkerStateEffect('axisIndex', this.axisIndex);\n\t\t\t\t\tthis.updateWorkerStateEffect('broadphase', this.broadphase);\n\t\t\t\t\tthis.updateWorkerStateEffect('gravity', this.gravity);\n\t\t\t\t\tthis.updateWorkerStateEffect('iterations', this.iterations);\n\t\t\t\t\tthis.updateWorkerStateEffect('tolerance', this.tolerance);\n\t\t\t\t},\n\t\t\t\t{ injector },\n\t\t\t);\n\t\t});\n\n\t\tlet timeSinceLastCalled = 0;\n\t\tinjectBeforeRender(({ delta }) => {\n\t\t\tconst [{ isPaused, maxSubSteps, stepSize }, worker] = [this.options(), this.cannonWorker()];\n\t\t\tif (isPaused || !worker || stepSize == null) return;\n\t\t\ttimeSinceLastCalled += delta;\n\t\t\tworker.step({ maxSubSteps, stepSize, timeSinceLastCalled });\n\t\t\ttimeSinceLastCalled = 0;\n\t\t});\n\t}\n\n\tprivate connectWorkerEffect() {\n\t\tconst worker = this.cannonWorker() as NgtcCannonWorker;\n\t\tif (!worker) return;\n\n\t\tworker.connect();\n\t\tworker.init();\n\n\t\tworker.on('collide', this.collideHandler.bind(this));\n\t\tworker.on('collideBegin', this.collideBeginHandler.bind(this));\n\t\tworker.on('collideEnd', this.collideEndHandler.bind(this));\n\t\tworker.on('frame', this.frameHandler.bind(this));\n\t\tworker.on('rayhit', this.rayhitHandler.bind(this));\n\n\t\treturn () => {\n\t\t\tworker.terminate();\n\t\t\tworker.removeAllListeners();\n\t\t};\n\t}\n\n\tprivate updateWorkerStateEffect<TUpdatableKey extends NgtsPhysicsUpdatableOptions>(\n\t\tkey: TUpdatableKey,\n\t\toption: () => NgtcPhysicsOptions[TUpdatableKey],\n\t) {\n\t\tconst worker = this.cannonWorker();\n\t\tif (!worker) return;\n\t\tObject.assign(worker, { [key]: option() });\n\t}\n\n\tprivate collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }: WorkerCollideEvent['data']) {\n\t\tconst { events, refs } = this;\n\t\tconst cb = events[target]?.collide;\n\t\tif (cb) {\n\t\t\tcb({ body: refs[body], contact: { bi: refs[bi], bj: refs[bj], ...contactRest }, target: refs[target], ...rest });\n\t\t}\n\t}\n\n\tprivate collideBeginHandler({ bodyA, bodyB }: WorkerCollideBeginEvent['data']) {\n\t\tconst { events, refs } = this;\n\t\tconst cbA = events[bodyA]?.collideBegin;\n\t\tif (cbA) cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideBegin' });\n\t\tconst cbB = events[bodyB]?.collideBegin;\n\t\tif (cbB) cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideBegin' });\n\t}\n\n\tprivate collideEndHandler({ bodyA, bodyB }: WorkerCollideEndEvent['data']) {\n\t\tconst { events, refs } = this;\n\t\tconst cbA = events[bodyA]?.collideEnd;\n\t\tif (cbA) cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideEnd' });\n\t\tconst cbB = events[bodyB]?.collideEnd;\n\t\tif (cbB) cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideEnd' });\n\t}\n\n\tprivate frameHandler({\n\t\tactive,\n\t\tbodies: uuids = [],\n\t\tobservations,\n\t\tpositions,\n\t\tquaternions,\n\t}: WorkerFrameMessage['data']) {\n\t\tconst [{ shouldInvalidate }, { bodies, subscriptions, refs, scaleOverrides }, invalidate] = [\n\t\t\tuntracked(this.options),\n\t\t\tthis,\n\t\t\tthis.invalidate(),\n\t\t];\n\t\tfor (let i = 0; i < uuids.length; i++) {\n\t\t\tbodies[uuids[i]] = i;\n\t\t}\n\t\tobservations.forEach(([id, value, type]) => {\n\t\t\tconst subscription = subscriptions[id] || {};\n\t\t\tconst cb = subscription[type];\n\t\t\t// @ts-expect-error - We clearly know the type of the callback, but typescript can't deal with it\n\t\t\tcb && cb(value);\n\t\t});\n\t\tif (!active) return;\n\t\tfor (const ref of Object.values(refs).filter(unique())) {\n\t\t\tif (is.three<THREE.InstancedMesh>(ref, 'isInstancedMesh')) {\n\t\t\t\tfor (let i = 0; i < ref.count; i++) {\n\t\t\t\t\tconst uuid = `${ref.uuid}/${i}`;\n\t\t\t\t\tconst index = bodies[uuid];\n\t\t\t\t\tif (index !== undefined) {\n\t\t\t\t\t\tref.setMatrixAt(i, apply(index, positions, quaternions, scaleOverrides[uuid]));\n\t\t\t\t\t\tref.instanceMatrix.needsUpdate = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst scale = scaleOverrides[ref.uuid] || ref.scale;\n\t\t\t\tapply(bodies[ref.uuid], positions, quaternions, scale, ref);\n\t\t\t}\n\t\t}\n\t\tif (shouldInvalidate) invalidate();\n\t}\n\n\tprivate rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }: WorkerRayhitEvent['data']) {\n\t\tconst { events, refs } = this;\n\t\tconst cb = events[uuid]?.rayhit;\n\t\tif (cb) cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"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.4\", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }\n static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"17.1.0\", version: \"20.1.4\", 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.4\", 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/index.d.ts CHANGED
@@ -1 +1,63 @@
1
- export * from './lib/physics';
1
+ import * as _angular_core from '@angular/core';
2
+ import { WorkerCollideEvent, WorkerCollideBeginEvent, WorkerCollideEndEvent, WorkerFrameMessage, WorkerRayhitEvent, CannonWorkerAPI, CollideBeginEvent, CollideEndEvent, CollideEvent, RayhitEvent, CannonWorkerProps, Refs, Subscriptions } from '@pmndrs/cannon-worker-api';
3
+ import * as THREE from 'three';
4
+
5
+ interface NgtcCannonWorkerEvents {
6
+ collide: WorkerCollideEvent;
7
+ collideBegin: WorkerCollideBeginEvent;
8
+ collideEnd: WorkerCollideEndEvent;
9
+ frame: WorkerFrameMessage;
10
+ rayhit: WorkerRayhitEvent;
11
+ }
12
+ type NgtcCannonWorker = CannonWorkerAPI & {
13
+ on: <K extends keyof NgtcCannonWorkerEvents>(event: K, cb: (data: NgtcCannonWorkerEvents[K]['data']) => void) => void;
14
+ removeAllListeners: () => void;
15
+ };
16
+ type NgtcCannonEvent = CollideBeginEvent | CollideEndEvent | CollideEvent | RayhitEvent;
17
+ type NgtcCallbackByType<T extends {
18
+ type: string;
19
+ }> = {
20
+ [K in T['type']]?: T extends {
21
+ type: K;
22
+ } ? (e: T) => void : never;
23
+ };
24
+ type NgtcCannonEvents = Record<string, Partial<NgtcCallbackByType<NgtcCannonEvent>>>;
25
+ type ScaleOverrides = Record<string, THREE.Vector3>;
26
+ interface NgtcPhysicsOptions extends CannonWorkerProps {
27
+ isPaused?: boolean;
28
+ maxSubSteps?: number;
29
+ shouldInvalidate?: boolean;
30
+ stepSize?: number;
31
+ }
32
+ declare class NgtcPhysics {
33
+ private store;
34
+ options: _angular_core.InputSignalWithTransform<NgtcPhysicsOptions, "" | Partial<NgtcPhysicsOptions>>;
35
+ private axisIndex;
36
+ private broadphase;
37
+ private gravity;
38
+ private iterations;
39
+ private tolerance;
40
+ private invalidate;
41
+ private cannonWorker;
42
+ bodies: {
43
+ [uuid: string]: number;
44
+ };
45
+ events: NgtcCannonEvents;
46
+ refs: Refs;
47
+ scaleOverrides: ScaleOverrides;
48
+ subscriptions: Subscriptions;
49
+ worker: _angular_core.Signal<CannonWorkerAPI>;
50
+ constructor();
51
+ private connectWorkerEffect;
52
+ private updateWorkerStateEffect;
53
+ private collideHandler;
54
+ private collideBeginHandler;
55
+ private collideEndHandler;
56
+ private frameHandler;
57
+ private rayhitHandler;
58
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgtcPhysics, never>;
59
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgtcPhysics, "ngtc-physics", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
60
+ }
61
+
62
+ export { NgtcPhysics };
63
+ export type { NgtcCannonEvents, NgtcCannonWorker, NgtcCannonWorkerEvents, NgtcPhysicsOptions, ScaleOverrides };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-three-cannon",
3
- "version": "4.0.0-next.11",
3
+ "version": "4.0.0-next.111",
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": ">=19.0.0 <20.0.0",
27
- "@angular/core": ">=19.0.0 <20.0.0",
26
+ "@angular/common": ">=19.0.0 <21.0.0",
27
+ "@angular/core": ">=19.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.148.0 <0.174.0"
31
+ "three": ">=0.157.0 <0.179.0"
32
32
  },
33
33
  "peerDependenciesMeta": {
34
34
  "cannon-es-debugger": {
@@ -49,14 +49,14 @@
49
49
  "types": "./index.d.ts",
50
50
  "default": "./fesm2022/angular-three-cannon.mjs"
51
51
  },
52
- "./body": {
53
- "types": "./body/index.d.ts",
54
- "default": "./fesm2022/angular-three-cannon-body.mjs"
55
- },
56
52
  "./constraint": {
57
53
  "types": "./constraint/index.d.ts",
58
54
  "default": "./fesm2022/angular-three-cannon-constraint.mjs"
59
55
  },
56
+ "./body": {
57
+ "types": "./body/index.d.ts",
58
+ "default": "./fesm2022/angular-three-cannon-body.mjs"
59
+ },
60
60
  "./debug": {
61
61
  "types": "./debug/index.d.ts",
62
62
  "default": "./fesm2022/angular-three-cannon-debug.mjs"
@@ -1,17 +0,0 @@
1
- import { ElementRef, Injector, Signal } from '@angular/core';
2
- import { BodyShapeType } from '@pmndrs/cannon-worker-api';
3
- import * as THREE from 'three';
4
- import { NgtcArgFn, NgtcBodyPropsMap, NgtcBodyPublicApi, NgtcGetByIndex } from './types';
5
- export interface NgtcBodyOptions<TShape extends BodyShapeType> {
6
- transformArgs?: NgtcArgFn<NgtcBodyPropsMap[TShape]>;
7
- injector?: Injector;
8
- }
9
- export declare const injectBox: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").BoxProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Box"> | undefined) => Signal<NgtcBodyPublicApi | null>;
10
- export declare const injectConvexPolyhedron: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ConvexPolyhedronProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"ConvexPolyhedron"> | undefined) => Signal<NgtcBodyPublicApi | null>;
11
- export declare const injectCylinder: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CylinderProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Cylinder"> | undefined) => Signal<NgtcBodyPublicApi | null>;
12
- export declare const injectHeightfield: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").HeightfieldProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Heightfield"> | undefined) => Signal<NgtcBodyPublicApi | null>;
13
- export declare const injectParticle: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").ParticleProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Particle"> | undefined) => Signal<NgtcBodyPublicApi | null>;
14
- export declare const injectPlane: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").PlaneProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Plane"> | undefined) => Signal<NgtcBodyPublicApi | null>;
15
- export declare const injectSphere: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").SphereProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Sphere"> | undefined) => Signal<NgtcBodyPublicApi | null>;
16
- export declare const injectTrimesh: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").TrimeshProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Trimesh"> | undefined) => Signal<NgtcBodyPublicApi | null>;
17
- export declare const injectCompound: <TObject extends THREE.Object3D>(getPropFn: NgtcGetByIndex<import("@pmndrs/cannon-worker-api").CompoundBodyProps>, ref: TObject | ElementRef<TObject> | Signal<TObject | ElementRef<TObject> | undefined>, options?: NgtcBodyOptions<"Compound"> | undefined) => Signal<NgtcBodyPublicApi | null>;