angular-three-cannon 2.0.0-beta.3 → 2.0.0-beta.31
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/debug/index.d.ts +1 -1
- package/debug/lib/debug.d.ts +43 -0
- package/esm2022/debug/index.mjs +2 -2
- package/esm2022/debug/lib/debug.mjs +98 -0
- package/esm2022/index.mjs +2 -2
- package/esm2022/lib/physics.mjs +294 -0
- package/esm2022/services/index.mjs +7 -7
- package/esm2022/services/lib/body.mjs +294 -0
- package/esm2022/services/lib/constraints.mjs +60 -0
- package/esm2022/services/lib/contact-material.mjs +21 -0
- package/esm2022/services/lib/ray.mjs +31 -0
- package/esm2022/services/lib/raycast-vehicle.mjs +69 -0
- package/esm2022/services/lib/spring.mjs +32 -0
- package/fesm2022/angular-three-cannon-debug.mjs +35 -35
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -1
- package/fesm2022/angular-three-cannon-services.mjs +114 -117
- package/fesm2022/angular-three-cannon-services.mjs.map +1 -1
- package/fesm2022/angular-three-cannon.mjs +211 -213
- package/fesm2022/angular-three-cannon.mjs.map +1 -1
- package/index.d.ts +1 -1
- package/lib/physics.d.ts +79 -0
- package/package.json +5 -8
- package/services/index.d.ts +6 -6
- package/services/{body.d.ts → lib/body.d.ts} +3 -3
- package/services/{constraint.d.ts → lib/constraints.d.ts} +12 -12
- package/services/{contact-material.d.ts → lib/contact-material.d.ts} +3 -3
- package/services/{ray.d.ts → lib/ray.d.ts} +5 -5
- package/services/{raycast-vehicle.d.ts → lib/raycast-vehicle.d.ts} +11 -11
- package/services/{spring.d.ts → lib/spring.d.ts} +8 -8
- package/debug/debug.d.ts +0 -26
- package/esm2022/debug/debug.mjs +0 -99
- package/esm2022/physics.mjs +0 -297
- package/esm2022/services/body.mjs +0 -289
- package/esm2022/services/constraint.mjs +0 -59
- package/esm2022/services/contact-material.mjs +0 -20
- package/esm2022/services/ray.mjs +0 -30
- package/esm2022/services/raycast-vehicle.mjs +0 -72
- package/esm2022/services/spring.mjs +0 -34
- package/physics.d.ts +0 -97
- package/plugin/README.md +0 -11
- package/plugin/generators.json +0 -19
- package/plugin/package.json +0 -9
- package/plugin/src/generators/init/compat.d.ts +0 -2
- package/plugin/src/generators/init/compat.js +0 -6
- package/plugin/src/generators/init/compat.js.map +0 -1
- package/plugin/src/generators/init/init.d.ts +0 -5
- package/plugin/src/generators/init/init.js +0 -24
- package/plugin/src/generators/init/init.js.map +0 -1
- package/plugin/src/generators/init/schema.json +0 -7
- package/plugin/src/index.d.ts +0 -1
- package/plugin/src/index.js +0 -6
- package/plugin/src/index.js.map +0 -1
package/debug/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './debug';
|
|
1
|
+
export * from './lib/debug';
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type OnInit } from '@angular/core';
|
|
2
|
+
import { type BodyProps, type BodyShapeType } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import CannonDebugger from 'cannon-es-debugger';
|
|
4
|
+
import * as THREE from 'three';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare const injectNgtcDebugApi: {
|
|
7
|
+
(): {
|
|
8
|
+
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
9
|
+
remove: (id: string) => void;
|
|
10
|
+
};
|
|
11
|
+
(injectOptions: import("@angular/core").InjectOptions & {
|
|
12
|
+
optional?: false | undefined;
|
|
13
|
+
}): {
|
|
14
|
+
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
15
|
+
remove: (id: string) => void;
|
|
16
|
+
};
|
|
17
|
+
(injectOptions: import("@angular/core").InjectOptions): {
|
|
18
|
+
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
19
|
+
remove: (id: string) => void;
|
|
20
|
+
} | null;
|
|
21
|
+
}, provideNgtcDebugApi: (value?: {
|
|
22
|
+
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
23
|
+
remove: (id: string) => void;
|
|
24
|
+
} | undefined) => import("@angular/core").Provider;
|
|
25
|
+
export declare class NgtcDebug implements OnInit {
|
|
26
|
+
color: string;
|
|
27
|
+
scale: number;
|
|
28
|
+
impl: typeof CannonDebugger;
|
|
29
|
+
disabled: boolean;
|
|
30
|
+
private bodies;
|
|
31
|
+
private bodyMap;
|
|
32
|
+
private physicsApi;
|
|
33
|
+
scene: THREE.Scene;
|
|
34
|
+
private cannonDebugger;
|
|
35
|
+
api: {
|
|
36
|
+
add: (uuid: string, props: BodyProps, type: BodyShapeType) => void;
|
|
37
|
+
remove: (id: string) => void;
|
|
38
|
+
};
|
|
39
|
+
constructor();
|
|
40
|
+
ngOnInit(): void;
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgtcDebug, never>;
|
|
42
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<NgtcDebug, "ngtc-debug", never, { "color": { "alias": "color"; "required": false; }; "scale": { "alias": "scale"; "required": false; }; "impl": { "alias": "impl"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, {}, never, ["*"], true, never>;
|
|
43
|
+
}
|
package/esm2022/debug/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './debug';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './lib/debug';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9kZWJ1Zyc7XG4iXX0=
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, forwardRef, Input } from '@angular/core';
|
|
2
|
+
import { propsToBody } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import { injectBeforeRender, NgtArgs } from 'angular-three';
|
|
4
|
+
import { injectNgtcPhysicsApi } from 'angular-three-cannon';
|
|
5
|
+
import CannonDebugger from 'cannon-es-debugger';
|
|
6
|
+
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
7
|
+
import * as THREE from 'three';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
const q = new THREE.Quaternion();
|
|
10
|
+
const s = new THREE.Vector3(1, 1, 1);
|
|
11
|
+
const v = new THREE.Vector3();
|
|
12
|
+
const m = new THREE.Matrix4();
|
|
13
|
+
function getMatrix(o) {
|
|
14
|
+
if (o instanceof THREE.InstancedMesh) {
|
|
15
|
+
o.getMatrixAt(parseInt(o.uuid.split('/')[1]), m);
|
|
16
|
+
return m;
|
|
17
|
+
}
|
|
18
|
+
return o.matrix;
|
|
19
|
+
}
|
|
20
|
+
export const [injectNgtcDebugApi, provideNgtcDebugApi] = createInjectionToken((debug) => debug.api, {
|
|
21
|
+
isRoot: false,
|
|
22
|
+
deps: [forwardRef(() => NgtcDebug)],
|
|
23
|
+
});
|
|
24
|
+
export class NgtcDebug {
|
|
25
|
+
constructor() {
|
|
26
|
+
this.color = 'black';
|
|
27
|
+
this.scale = 1;
|
|
28
|
+
this.impl = CannonDebugger;
|
|
29
|
+
this.disabled = false;
|
|
30
|
+
this.bodies = [];
|
|
31
|
+
this.bodyMap = {};
|
|
32
|
+
this.physicsApi = injectNgtcPhysicsApi();
|
|
33
|
+
this.scene = new THREE.Scene();
|
|
34
|
+
this.api = {
|
|
35
|
+
add: (uuid, props, type) => {
|
|
36
|
+
const body = propsToBody({ uuid, props, type });
|
|
37
|
+
this.bodies.push(body);
|
|
38
|
+
this.bodyMap[uuid] = body;
|
|
39
|
+
},
|
|
40
|
+
remove: (id) => {
|
|
41
|
+
const debugBodyIndex = this.bodies.indexOf(this.bodyMap[id]);
|
|
42
|
+
if (debugBodyIndex > -1)
|
|
43
|
+
this.bodies.splice(debugBodyIndex, 1);
|
|
44
|
+
delete this.bodyMap[id];
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
injectBeforeRender(() => {
|
|
48
|
+
if (!this.cannonDebugger)
|
|
49
|
+
return;
|
|
50
|
+
const refs = this.physicsApi.get('refs');
|
|
51
|
+
for (const uuid in this.bodyMap) {
|
|
52
|
+
getMatrix(refs[uuid]).decompose(v, q, s);
|
|
53
|
+
this.bodyMap[uuid].position.copy(v);
|
|
54
|
+
this.bodyMap[uuid].quaternion.copy(q);
|
|
55
|
+
}
|
|
56
|
+
for (const child of this.scene.children) {
|
|
57
|
+
child.visible = !this.disabled;
|
|
58
|
+
}
|
|
59
|
+
if (!this.disabled) {
|
|
60
|
+
this.cannonDebugger.update();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this.cannonDebugger = this.impl(this.scene, { bodies: this.bodies }, {
|
|
66
|
+
color: this.color,
|
|
67
|
+
scale: this.scale,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
71
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtcDebug, isStandalone: true, selector: "ngtc-debug", inputs: { color: "color", scale: "scale", impl: "impl", disabled: "disabled" }, providers: [provideNgtcDebugApi()], ngImport: i0, template: `
|
|
72
|
+
<ngt-primitive *args="[scene]" />
|
|
73
|
+
<ng-content />
|
|
74
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
75
|
+
}
|
|
76
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtcDebug, decorators: [{
|
|
77
|
+
type: Component,
|
|
78
|
+
args: [{
|
|
79
|
+
selector: 'ngtc-debug',
|
|
80
|
+
standalone: true,
|
|
81
|
+
template: `
|
|
82
|
+
<ngt-primitive *args="[scene]" />
|
|
83
|
+
<ng-content />
|
|
84
|
+
`,
|
|
85
|
+
providers: [provideNgtcDebugApi()],
|
|
86
|
+
imports: [NgtArgs],
|
|
87
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
88
|
+
}]
|
|
89
|
+
}], ctorParameters: function () { return []; }, propDecorators: { color: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], scale: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], impl: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], disabled: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}] } });
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvbGliL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFzQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFNUQsT0FBTyxjQUFjLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBRS9CLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTlCLFNBQVMsU0FBUyxDQUFDLENBQWlCO0lBQ25DLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxhQUFhLEVBQUU7UUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxPQUFPLENBQUMs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LEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFXLEVBQUU7WUFDN0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNqQixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXBEVyxTQUFTO2tHQUFULFNBQVMseUlBSlYsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLDBCQUp4Qjs7O0VBR1QsNERBRVMsT0FBTzs7MkZBR0wsU0FBUztrQkFYckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7O0VBR1Q7b0JBQ0QsU0FBUyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDbEMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7MEVBRVMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgSW5wdXQsIHR5cGUgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm9wc1RvQm9keSwgdHlwZSBCb2R5UHJvcHMsIHR5cGUgQm9keVNoYXBlVHlwZSB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgaW5qZWN0QmVmb3JlUmVuZGVyLCBOZ3RBcmdzIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBpbmplY3ROZ3RjUGh5c2ljc0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB0eXBlIHsgQm9keSwgUXVhdGVybmlvbiBhcyBDUXVhcnRlcm5pb24sIFZlYzMsIFdvcmxkIH0gZnJvbSAnY2Fubm9uLWVzJztcbmltcG9ydCBDYW5ub25EZWJ1Z2dlciBmcm9tICdjYW5ub24tZXMtZGVidWdnZXInO1xuaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5jb25zdCBxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IHMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAxLCAxKTtcbmNvbnN0IHYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgbSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cbmZ1bmN0aW9uIGdldE1hdHJpeChvOiBUSFJFRS5PYmplY3QzRCk6IFRIUkVFLk1hdHJpeDQge1xuXHRpZiAobyBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2gpIHtcblx0XHRvLmdldE1hdHJpeEF0KHBhcnNlSW50KG8udXVpZC5zcGxpdCgnLycpWzFdKSwgbSk7XG5cdFx0cmV0dXJuIG07XG5cdH1cblx0cmV0dXJuIG8ubWF0cml4O1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndGNEZWJ1Z0FwaSwgcHJvdmlkZU5ndGNEZWJ1Z0FwaV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoZGVidWc6IE5ndGNEZWJ1ZykgPT4gZGVidWcuYXBpLCB7XG5cdGlzUm9vdDogZmFsc2UsXG5cdGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndGNEZWJ1ZyldLFxufSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndGMtZGVidWcnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW3NjZW5lXVwiIC8+XG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0YCxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndGNEZWJ1Z0FwaSgpXSxcblx0aW1wb3J0czogW05ndEFyZ3NdLFxuXHRzY2hlbWFzOiBbQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndGNEZWJ1ZyBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIGNvbG9yID0gJ2JsYWNrJztcblx0QElucHV0KCkgc2NhbGUgPSAxO1xuXHRASW5wdXQoKSBpbXBsID0gQ2Fubm9uRGVidWdnZXI7XG5cdEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cblx0cHJpdmF0ZSBib2RpZXM6IEJvZHlbXSA9IFtdO1xuXHRwcml2YXRlIGJvZHlNYXA6IFJlY29yZDxzdHJpbmcsIEJvZHk+ID0ge307XG5cblx0cHJpdmF0ZSBwaHlzaWNzQXBpID0gaW5qZWN0Tmd0Y1BoeXNpY3NBcGkoKTtcblxuXHRzY2VuZSA9IG5ldyBUSFJFRS5TY2VuZSgpO1xuXHRwcml2YXRlIGNhbm5vbkRlYnVnZ2VyITogUmV0dXJuVHlwZTx0eXBlb2YgQ2Fubm9uRGVidWdnZXI+O1xuXG5cdGFwaSA9IHtcblx0XHRhZGQ6ICh1dWlkOiBzdHJpbmcsIHByb3BzOiBCb2R5UHJvcHMsIHR5cGU6IEJvZHlTaGFwZVR5cGUpID0+IHtcblx0XHRcdGNvbnN0IGJvZHkgPSBwcm9wc1RvQm9keSh7IHV1aWQsIHByb3BzLCB0eXBlIH0pO1xuXHRcdFx0dGhpcy5ib2RpZXMucHVzaChib2R5KTtcblx0XHRcdHRoaXMuYm9keU1hcFt1dWlkXSA9IGJvZHk7XG5cdFx0fSxcblx0XHRyZW1vdmU6IChpZDogc3RyaW5nKSA9PiB7XG5cdFx0XHRjb25zdCBkZWJ1Z0JvZHlJbmRleCA9IHRoaXMuYm9kaWVzLmluZGV4T2YodGhpcy5ib2R5TWFwW2lkXSk7XG5cdFx0XHRpZiAoZGVidWdCb2R5SW5kZXggPiAtMSkgdGhpcy5ib2RpZXMuc3BsaWNlKGRlYnVnQm9keUluZGV4LCAxKTtcblx0XHRcdGRlbGV0ZSB0aGlzLmJvZHlNYXBbaWRdO1xuXHRcdH0sXG5cdH07XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKCgpID0+IHtcblx0XHRcdGlmICghdGhpcy5jYW5ub25EZWJ1Z2dlcikgcmV0dXJuO1xuXHRcdFx0Y29uc3QgcmVmcyA9IHRoaXMucGh5c2ljc0FwaS5nZXQoJ3JlZnMnKTtcblx0XHRcdGZvciAoY29uc3QgdXVpZCBpbiB0aGlzLmJvZHlNYXApIHtcblx0XHRcdFx0Z2V0TWF0cml4KHJlZnNbdXVpZF0pLmRlY29tcG9zZSh2LCBxLCBzKTtcblx0XHRcdFx0dGhpcy5ib2R5TWFwW3V1aWRdLnBvc2l0aW9uLmNvcHkodiBhcyB1bmtub3duIGFzIFZlYzMpO1xuXHRcdFx0XHR0aGlzLmJvZHlNYXBbdXVpZF0ucXVhdGVybmlvbi5jb3B5KHEgYXMgdW5rbm93biBhcyBDUXVhcnRlcm5pb24pO1xuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuc2NlbmUuY2hpbGRyZW4pIHtcblx0XHRcdFx0Y2hpbGQudmlzaWJsZSA9ICF0aGlzLmRpc2FibGVkO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoIXRoaXMuZGlzYWJsZWQpIHtcblx0XHRcdFx0dGhpcy5jYW5ub25EZWJ1Z2dlci51cGRhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuY2Fubm9uRGVidWdnZXIgPSB0aGlzLmltcGwodGhpcy5zY2VuZSwgeyBib2RpZXM6IHRoaXMuYm9kaWVzIH0gYXMgV29ybGQsIHtcblx0XHRcdGNvbG9yOiB0aGlzLmNvbG9yLFxuXHRcdFx0c2NhbGU6IHRoaXMuc2NhbGUsXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
|
package/esm2022/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './physics';
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './lib/physics';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9waHlzaWNzJztcbiJdfQ==
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
import { Component, Injector, Input, NgZone, effect, forwardRef, inject, untracked } from '@angular/core';
|
|
2
|
+
import { CannonWorkerAPI, } from '@pmndrs/cannon-worker-api';
|
|
3
|
+
import { injectBeforeRender, injectNgtStore, signalStore } from 'angular-three';
|
|
4
|
+
import { createInjectionToken } from 'ngxtension/create-injection-token';
|
|
5
|
+
import * as THREE from 'three';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const v = new THREE.Vector3();
|
|
8
|
+
const s = new THREE.Vector3(1, 1, 1);
|
|
9
|
+
const q = new THREE.Quaternion();
|
|
10
|
+
const m = new THREE.Matrix4();
|
|
11
|
+
function apply(index, positions, quaternions, scale = s, object) {
|
|
12
|
+
if (index !== undefined) {
|
|
13
|
+
m.compose(v.fromArray(positions, index * 3), q.fromArray(quaternions, index * 4), scale);
|
|
14
|
+
if (object) {
|
|
15
|
+
object.matrixAutoUpdate = false;
|
|
16
|
+
object.matrix.copy(m);
|
|
17
|
+
}
|
|
18
|
+
return m;
|
|
19
|
+
}
|
|
20
|
+
return m.identity();
|
|
21
|
+
}
|
|
22
|
+
const unique = () => {
|
|
23
|
+
const values = [];
|
|
24
|
+
return (value) => (values.includes(value) ? false : !!values.push(value));
|
|
25
|
+
};
|
|
26
|
+
export const [injectNgtcPhysicsApi, provideNgtcPhysicsApi] = createInjectionToken((physics) => physics.api, { isRoot: false, deps: [forwardRef(() => NgtcPhysics)] });
|
|
27
|
+
export class NgtcPhysics {
|
|
28
|
+
constructor() {
|
|
29
|
+
this.inputs = signalStore({
|
|
30
|
+
allowSleep: false,
|
|
31
|
+
axisIndex: 0,
|
|
32
|
+
broadphase: 'Naive',
|
|
33
|
+
defaultContactMaterial: { contactEquationStiffness: 1e6 },
|
|
34
|
+
frictionGravity: null,
|
|
35
|
+
gravity: [0, -9.81, 0],
|
|
36
|
+
isPaused: false,
|
|
37
|
+
iterations: 5,
|
|
38
|
+
maxSubSteps: 10,
|
|
39
|
+
quatNormalizeFast: false,
|
|
40
|
+
quatNormalizeSkip: 0,
|
|
41
|
+
shouldInvalidate: true,
|
|
42
|
+
size: 1000,
|
|
43
|
+
solver: 'GS',
|
|
44
|
+
stepSize: 1 / 60,
|
|
45
|
+
tolerance: 0.001,
|
|
46
|
+
});
|
|
47
|
+
this.zone = inject(NgZone);
|
|
48
|
+
this.injector = inject(Injector);
|
|
49
|
+
this.store = injectNgtStore();
|
|
50
|
+
this.invalidate = this.store.select('invalidate');
|
|
51
|
+
this.api = signalStore({
|
|
52
|
+
bodies: {},
|
|
53
|
+
events: {},
|
|
54
|
+
refs: {},
|
|
55
|
+
scaleOverrides: {},
|
|
56
|
+
subscriptions: {},
|
|
57
|
+
worker: null,
|
|
58
|
+
});
|
|
59
|
+
this.worker = this.api.select('worker');
|
|
60
|
+
}
|
|
61
|
+
set _isPaused(isPaused) {
|
|
62
|
+
this.inputs.set({ isPaused });
|
|
63
|
+
}
|
|
64
|
+
set _maxSubSteps(maxSubSteps) {
|
|
65
|
+
this.inputs.set({ maxSubSteps });
|
|
66
|
+
}
|
|
67
|
+
set _shouldInvalidate(shouldInvalidate) {
|
|
68
|
+
this.inputs.set({ shouldInvalidate });
|
|
69
|
+
}
|
|
70
|
+
set _stepSize(stepSize) {
|
|
71
|
+
this.inputs.set({ stepSize });
|
|
72
|
+
}
|
|
73
|
+
set _size(size) {
|
|
74
|
+
this.inputs.set({ size });
|
|
75
|
+
}
|
|
76
|
+
set _allowSleep(allowSleep) {
|
|
77
|
+
this.inputs.set({ allowSleep });
|
|
78
|
+
}
|
|
79
|
+
set _axisIndex(axisIndex) {
|
|
80
|
+
this.inputs.set({ axisIndex });
|
|
81
|
+
}
|
|
82
|
+
set _broadphase(broadphase) {
|
|
83
|
+
this.inputs.set({ broadphase });
|
|
84
|
+
}
|
|
85
|
+
set _defaultContactMaterial(defaultContactMaterial) {
|
|
86
|
+
this.inputs.set({ defaultContactMaterial });
|
|
87
|
+
}
|
|
88
|
+
set _frictionGravity(frictionGravity) {
|
|
89
|
+
this.inputs.set({ frictionGravity });
|
|
90
|
+
}
|
|
91
|
+
set _gravity(gravity) {
|
|
92
|
+
this.inputs.set({ gravity });
|
|
93
|
+
}
|
|
94
|
+
set _iterations(iterations) {
|
|
95
|
+
this.inputs.set({ iterations });
|
|
96
|
+
}
|
|
97
|
+
set _quatNormalizeFast(quatNormalizeFast) {
|
|
98
|
+
this.inputs.set({ quatNormalizeFast });
|
|
99
|
+
}
|
|
100
|
+
set _quatNormalizeSkip(quatNormalizeSkip) {
|
|
101
|
+
this.inputs.set({ quatNormalizeSkip });
|
|
102
|
+
}
|
|
103
|
+
set _solver(solver) {
|
|
104
|
+
this.inputs.set({ solver });
|
|
105
|
+
}
|
|
106
|
+
set _tolerance(tolerance) {
|
|
107
|
+
this.inputs.set({ tolerance });
|
|
108
|
+
}
|
|
109
|
+
ngOnInit() {
|
|
110
|
+
this.zone.runOutsideAngular(() => {
|
|
111
|
+
this.api.set({ worker: new CannonWorkerAPI(this.inputs.state()) });
|
|
112
|
+
this.connectWorker();
|
|
113
|
+
this.updateWorkerState('axisIndex');
|
|
114
|
+
this.updateWorkerState('broadphase');
|
|
115
|
+
this.updateWorkerState('gravity');
|
|
116
|
+
this.updateWorkerState('iterations');
|
|
117
|
+
this.updateWorkerState('tolerance');
|
|
118
|
+
this.beforeRender();
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
connectWorker() {
|
|
122
|
+
effect((onCleanup) => {
|
|
123
|
+
const worker = this.worker();
|
|
124
|
+
if (!worker)
|
|
125
|
+
return;
|
|
126
|
+
worker.connect();
|
|
127
|
+
worker.init();
|
|
128
|
+
worker.on('collide', this.collideHandler.bind(this));
|
|
129
|
+
worker.on('collideBegin', this.collideBeginHandler.bind(this));
|
|
130
|
+
worker.on('collideEnd', this.collideEndHandler.bind(this));
|
|
131
|
+
worker.on('frame', this.frameHandler.bind(this));
|
|
132
|
+
worker.on('rayhit', this.rayhitHandler.bind(this));
|
|
133
|
+
onCleanup(() => {
|
|
134
|
+
worker.terminate();
|
|
135
|
+
worker.removeAllListeners();
|
|
136
|
+
});
|
|
137
|
+
}, { injector: this.injector });
|
|
138
|
+
}
|
|
139
|
+
updateWorkerState(key) {
|
|
140
|
+
const compute = this.inputs.select(key);
|
|
141
|
+
effect(() => {
|
|
142
|
+
const [worker, value] = [untracked(this.worker), compute()];
|
|
143
|
+
// @ts-expect-error
|
|
144
|
+
worker[key] = value;
|
|
145
|
+
}, { injector: this.injector });
|
|
146
|
+
}
|
|
147
|
+
collideHandler({ body, contact: { bi, bj, ...contactRest }, target, ...rest }) {
|
|
148
|
+
const { events, refs } = this.api.get();
|
|
149
|
+
const cb = events[target]?.collide;
|
|
150
|
+
if (cb) {
|
|
151
|
+
cb({
|
|
152
|
+
body: refs[body],
|
|
153
|
+
contact: { bi: refs[bi], bj: refs[bj], ...contactRest },
|
|
154
|
+
target: refs[target],
|
|
155
|
+
...rest,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
collideBeginHandler({ bodyA, bodyB }) {
|
|
160
|
+
const { events, refs } = this.api.get();
|
|
161
|
+
const cbA = events[bodyA]?.collideBegin;
|
|
162
|
+
if (cbA)
|
|
163
|
+
cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideBegin' });
|
|
164
|
+
const cbB = events[bodyB]?.collideBegin;
|
|
165
|
+
if (cbB)
|
|
166
|
+
cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideBegin' });
|
|
167
|
+
}
|
|
168
|
+
collideEndHandler({ bodyA, bodyB }) {
|
|
169
|
+
const { events, refs } = this.api.get();
|
|
170
|
+
const cbA = events[bodyA]?.collideEnd;
|
|
171
|
+
if (cbA)
|
|
172
|
+
cbA({ body: refs[bodyB], op: 'event', target: refs[bodyA], type: 'collideEnd' });
|
|
173
|
+
const cbB = events[bodyB]?.collideEnd;
|
|
174
|
+
if (cbB)
|
|
175
|
+
cbB({ body: refs[bodyA], op: 'event', target: refs[bodyB], type: 'collideEnd' });
|
|
176
|
+
}
|
|
177
|
+
frameHandler({ active, bodies: uuids = [], observations, positions, quaternions, }) {
|
|
178
|
+
const [{ shouldInvalidate }, { bodies, subscriptions, refs, scaleOverrides }, invalidate] = [
|
|
179
|
+
this.inputs.get(),
|
|
180
|
+
this.api.get(),
|
|
181
|
+
this.invalidate(),
|
|
182
|
+
];
|
|
183
|
+
for (let i = 0; i < uuids.length; i++) {
|
|
184
|
+
bodies[uuids[i]] = i;
|
|
185
|
+
}
|
|
186
|
+
observations.forEach(([id, value, type]) => {
|
|
187
|
+
const subscription = subscriptions[id] || {};
|
|
188
|
+
const cb = subscription[type];
|
|
189
|
+
// HELP: We clearly know the type of the callback, but typescript can't deal with it
|
|
190
|
+
cb && cb(value);
|
|
191
|
+
});
|
|
192
|
+
if (!active)
|
|
193
|
+
return;
|
|
194
|
+
for (const ref of Object.values(refs).filter(unique())) {
|
|
195
|
+
if (ref instanceof THREE.InstancedMesh) {
|
|
196
|
+
for (let i = 0; i < ref.count; i++) {
|
|
197
|
+
const uuid = `${ref.uuid}/${i}`;
|
|
198
|
+
const index = bodies[uuid];
|
|
199
|
+
if (index !== undefined) {
|
|
200
|
+
ref.setMatrixAt(i, apply(index, positions, quaternions, scaleOverrides[uuid]));
|
|
201
|
+
ref.instanceMatrix.needsUpdate = true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
const scale = scaleOverrides[ref.uuid] || ref.scale;
|
|
207
|
+
apply(bodies[ref.uuid], positions, quaternions, scale, ref);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
if (shouldInvalidate)
|
|
211
|
+
invalidate();
|
|
212
|
+
}
|
|
213
|
+
rayhitHandler({ body, ray: { uuid, ...rayRest }, ...rest }) {
|
|
214
|
+
const { events, refs } = this.api.get();
|
|
215
|
+
const cb = events[uuid]?.rayhit;
|
|
216
|
+
if (cb)
|
|
217
|
+
cb({ body: body ? refs[body] : null, ray: { uuid, ...rayRest }, ...rest });
|
|
218
|
+
}
|
|
219
|
+
beforeRender() {
|
|
220
|
+
let timeSinceLastCalled = 0;
|
|
221
|
+
injectBeforeRender(({ delta }) => {
|
|
222
|
+
const [{ isPaused, maxSubSteps, stepSize }, worker] = [this.inputs.get(), this.worker()];
|
|
223
|
+
if (isPaused || !worker)
|
|
224
|
+
return;
|
|
225
|
+
timeSinceLastCalled += delta;
|
|
226
|
+
worker.step({ maxSubSteps, stepSize: stepSize, timeSinceLastCalled });
|
|
227
|
+
timeSinceLastCalled = 0;
|
|
228
|
+
}, { injector: this.injector });
|
|
229
|
+
}
|
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtcPhysics, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
231
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.3", type: NgtcPhysics, isStandalone: true, selector: "ngtc-physics", inputs: { _isPaused: ["isPaused", "_isPaused"], _maxSubSteps: ["maxSubSteps", "_maxSubSteps"], _shouldInvalidate: ["shouldInvalidate", "_shouldInvalidate"], _stepSize: ["stepSize", "_stepSize"], _size: ["size", "_size"], _allowSleep: ["allowSleep", "_allowSleep"], _axisIndex: ["axisIndex", "_axisIndex"], _broadphase: ["broadphase", "_broadphase"], _defaultContactMaterial: ["defaultContactMaterial", "_defaultContactMaterial"], _frictionGravity: ["frictionGravity", "_frictionGravity"], _gravity: ["gravity", "_gravity"], _iterations: ["iterations", "_iterations"], _quatNormalizeFast: ["quatNormalizeFast", "_quatNormalizeFast"], _quatNormalizeSkip: ["quatNormalizeSkip", "_quatNormalizeSkip"], _solver: ["solver", "_solver"], _tolerance: ["tolerance", "_tolerance"] }, providers: [provideNgtcPhysicsApi()], ngImport: i0, template: `
|
|
232
|
+
<ng-content />
|
|
233
|
+
`, isInline: true }); }
|
|
234
|
+
}
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: NgtcPhysics, decorators: [{
|
|
236
|
+
type: Component,
|
|
237
|
+
args: [{
|
|
238
|
+
selector: 'ngtc-physics',
|
|
239
|
+
standalone: true,
|
|
240
|
+
template: `
|
|
241
|
+
<ng-content />
|
|
242
|
+
`,
|
|
243
|
+
providers: [provideNgtcPhysicsApi()],
|
|
244
|
+
}]
|
|
245
|
+
}], propDecorators: { _isPaused: [{
|
|
246
|
+
type: Input,
|
|
247
|
+
args: [{ alias: 'isPaused' }]
|
|
248
|
+
}], _maxSubSteps: [{
|
|
249
|
+
type: Input,
|
|
250
|
+
args: [{ alias: 'maxSubSteps' }]
|
|
251
|
+
}], _shouldInvalidate: [{
|
|
252
|
+
type: Input,
|
|
253
|
+
args: [{ alias: 'shouldInvalidate' }]
|
|
254
|
+
}], _stepSize: [{
|
|
255
|
+
type: Input,
|
|
256
|
+
args: [{ alias: 'stepSize' }]
|
|
257
|
+
}], _size: [{
|
|
258
|
+
type: Input,
|
|
259
|
+
args: [{ alias: 'size' }]
|
|
260
|
+
}], _allowSleep: [{
|
|
261
|
+
type: Input,
|
|
262
|
+
args: [{ alias: 'allowSleep' }]
|
|
263
|
+
}], _axisIndex: [{
|
|
264
|
+
type: Input,
|
|
265
|
+
args: [{ alias: 'axisIndex' }]
|
|
266
|
+
}], _broadphase: [{
|
|
267
|
+
type: Input,
|
|
268
|
+
args: [{ alias: 'broadphase' }]
|
|
269
|
+
}], _defaultContactMaterial: [{
|
|
270
|
+
type: Input,
|
|
271
|
+
args: [{ alias: 'defaultContactMaterial' }]
|
|
272
|
+
}], _frictionGravity: [{
|
|
273
|
+
type: Input,
|
|
274
|
+
args: [{ alias: 'frictionGravity' }]
|
|
275
|
+
}], _gravity: [{
|
|
276
|
+
type: Input,
|
|
277
|
+
args: [{ alias: 'gravity' }]
|
|
278
|
+
}], _iterations: [{
|
|
279
|
+
type: Input,
|
|
280
|
+
args: [{ alias: 'iterations' }]
|
|
281
|
+
}], _quatNormalizeFast: [{
|
|
282
|
+
type: Input,
|
|
283
|
+
args: [{ alias: 'quatNormalizeFast' }]
|
|
284
|
+
}], _quatNormalizeSkip: [{
|
|
285
|
+
type: Input,
|
|
286
|
+
args: [{ alias: 'quatNormalizeSkip' }]
|
|
287
|
+
}], _solver: [{
|
|
288
|
+
type: Input,
|
|
289
|
+
args: [{ alias: 'solver' }]
|
|
290
|
+
}], _tolerance: [{
|
|
291
|
+
type: Input,
|
|
292
|
+
args: [{ alias: 'tolerance' }]
|
|
293
|
+
}] } });
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGh5c2ljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL3NyYy9saWIvcGh5c2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUN2SCxPQUFPLEVBQ04sZUFBZSxHQWlCZixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3pFLE9BQU8sS0FBSyxLQUFLLE1BQU0sT0FBTyxDQUFDOztBQUUvQixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM5QixNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNqQyxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUU5QixTQUFTLEtBQUssQ0FBQyxLQUFhLEVBQUUsU0FBdUIsRUFBRSxXQUF5QixFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsTUFBdUI7SUFDbkgsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1FBQ3hCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFD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b21wb25lbnQsIEluamVjdG9yLCBJbnB1dCwgTmdab25lLCBlZmZlY3QsIGZvcndhcmRSZWYsIGluamVjdCwgdW50cmFja2VkLCB0eXBlIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q2Fubm9uV29ya2VyQVBJLFxuXHR0eXBlIEJyb2FkcGhhc2UsXG5cdHR5cGUgQ2Fubm9uV29ya2VyUHJvcHMsXG5cdHR5cGUgQ29sbGlkZUJlZ2luRXZlbnQsXG5cdHR5cGUgQ29sbGlkZUVuZEV2ZW50LFxuXHR0eXBlIENvbGxpZGVFdmVudCxcblx0dHlwZSBDb250YWN0TWF0ZXJpYWxPcHRpb25zLFxuXHR0eXBlIFJheWhpdEV2ZW50LFxuXHR0eXBlIFJlZnMsXG5cdHR5cGUgU29sdmVyLFxuXHR0eXBlIFN1YnNjcmlwdGlvbnMsXG5cdHR5cGUgVHJpcGxldCxcblx0dHlwZSBXb3JrZXJDb2xsaWRlQmVnaW5FdmVudCxcblx0dHlwZSBXb3JrZXJDb2xsaWRlRW5kRXZlbnQsXG5cdHR5cGUgV29ya2VyQ29sbGlkZUV2ZW50LFxuXHR0eXBlIFdvcmtlckZyYW1lTWVzc2FnZSxcblx0dHlwZSBXb3JrZXJSYXloaXRFdmVudCxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdE5ndFN0b3JlLCBzaWduYWxTdG9yZSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4gfSBmcm9tICduZ3h0ZW5zaW9uL2NyZWF0ZS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5jb25zdCB2ID0gbmV3IFRIUkVFLlZlY3RvcjMoKTtcbmNvbnN0IHMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAxLCAxKTtcbmNvbnN0IHEgPSBuZXcgVEhSRUUuUXVhdGVybmlvbigpO1xuY29uc3QgbSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cbmZ1bmN0aW9uIGFwcGx5KGluZGV4OiBudW1iZXIsIHBvc2l0aW9uczogRmxvYXQzMkFycmF5LCBxdWF0ZXJuaW9uczogRmxvYXQzMkFycmF5LCBzY2FsZSA9IHMsIG9iamVjdD86IFRIUkVFLk9iamVjdDNEKSB7XG5cdGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0bS5jb21wb3NlKHYuZnJvbUFycmF5KHBvc2l0aW9ucywgaW5kZXggKiAzKSwgcS5mcm9tQXJyYXkocXVhdGVybmlvbnMsIGluZGV4ICogNCksIHNjYWxlKTtcblx0XHRpZiAob2JqZWN0KSB7XG5cdFx0XHRvYmplY3QubWF0cml4QXV0b1VwZGF0ZSA9IGZhbHNlO1xuXHRcdFx0b2JqZWN0Lm1hdHJpeC5jb3B5KG0pO1xuXHRcdH1cblx0XHRyZXR1cm4gbTtcblx0fVxuXHRyZXR1cm4gbS5pZGVudGl0eSgpO1xufVxuXG5jb25zdCB1bmlxdWUgPSAoKSA9PiB7XG5cdGNvbnN0IHZhbHVlczogdW5rbm93bltdID0gW107XG5cdHJldHVybiAodmFsdWU6IHVua25vd24pID0+ICh2YWx1ZXMuaW5jbHVkZXModmFsdWUpID8gZmFsc2UgOiAhIXZhbHVlcy5wdXNoKHZhbHVlKSk7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjUGh5c2ljc1N0YXRlID0gQ2Fubm9uV29ya2VyUHJvcHMgJiB7XG5cdGlzUGF1c2VkPzogYm9vbGVhbjtcblx0bWF4U3ViU3RlcHM/OiBudW1iZXI7XG5cdHNob3VsZEludmFsaWRhdGU/OiBib29sZWFuO1xuXHRzdGVwU2l6ZT86IG51bWJlcjtcbn07XG5cbnR5cGUgTmd0Y0Nhbm5vbkV2ZW50ID0gQ29sbGlkZUJlZ2luRXZlbnQgfCBDb2xsaWRlRW5kRXZlbnQgfCBDb2xsaWRlRXZlbnQgfCBSYXloaXRFdmVudDtcbnR5cGUgTmd0Y0NhbGxiYWNrQnlUeXBlPFQgZXh0ZW5kcyB7IHR5cGU6IHN0cmluZyB9PiA9IHtcblx0W0sgaW4gVFsndHlwZSddXT86IFQgZXh0ZW5kcyB7IHR5cGU6IEsgfSA/IChlOiBUKSA9PiB2b2lkIDogbmV2ZXI7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjQ2Fubm9uRXZlbnRzID0geyBbdXVpZDogc3RyaW5nXTogUGFydGlhbDxOZ3RjQ2FsbGJhY2tCeVR5cGU8Tmd0Y0Nhbm5vbkV2ZW50Pj4gfTtcblxuZXhwb3J0IHR5cGUgU2NhbGVPdmVycmlkZXMgPSB7IFt1dWlkOiBzdHJpbmddOiBUSFJFRS5WZWN0b3IzIH07XG5cbmV4cG9ydCB0eXBlIE5ndGNQaHlzaWNzQXBpID0ge1xuXHRib2RpZXM6IHsgW3V1aWQ6IHN0cmluZ106IG51bWJlciB9O1xuXHRldmVudHM6IE5ndGNDYW5ub25FdmVudHM7XG5cdHJlZnM6IFJlZnM7XG5cdHNjYWxlT3ZlcnJpZGVzOiBTY2FsZU92ZXJyaWRlcztcblx0c3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9ucztcblx0d29ya2VyOiBDYW5ub25Xb3JrZXJBUEk7XG59O1xuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndGNQaHlzaWNzQXBpLCBwcm92aWRlTmd0Y1BoeXNpY3NBcGldID0gY3JlYXRlSW5qZWN0aW9uVG9rZW4oXG5cdChwaHlzaWNzOiBOZ3RjUGh5c2ljcykgPT4gcGh5c2ljcy5hcGksXG5cdHsgaXNSb290OiBmYWxzZSwgZGVwczogW2ZvcndhcmRSZWYoKCkgPT4gTmd0Y1BoeXNpY3MpXSB9LFxuKTtcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnbmd0Yy1waHlzaWNzJyxcblx0c3RhbmRhbG9uZTogdHJ1ZSxcblx0dGVtcGxhdGU6IGBcblx0XHQ8bmctY29udGVudCAvPlxuXHRgLFxuXHRwcm92aWRlcnM6IFtwcm92aWRlTmd0Y1BoeXNpY3NBcGkoKV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndGNQaHlzaWNzIGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBpbnB1dHMgPSBzaWduYWxTdG9yZTxOZ3RjUGh5c2ljc1N0YXRlPih7XG5cdFx0YWxsb3dTbGVlcDogZmFsc2UsXG5cdFx0YXhpc0luZGV4OiAwLFxuXHRcdGJyb2FkcGhhc2U6ICdOYWl2ZScsXG5cdFx0ZGVmYXVsdENvbnRhY3RNYXRlcmlhbDogeyBjb250YWN0RXF1YXRpb25TdGlmZm5lc3M6IDFlNiB9LFxuXHRcdGZyaWN0aW9uR3Jhdml0eTogbnVsbCxcblx0XHRncmF2aXR5OiBbMCwgLTkuODEsIDBdLFxuXHRcdGlzUGF1c2VkOiBmYWxzZSxcblx0XHRpdGVyYXRpb25zOiA1LFxuXHRcdG1heFN1YlN0ZXBzOiAxMCxcblx0XHRxdWF0Tm9ybWFsaXplRmFzdDogZmFsc2UsXG5cdFx0cXVhdE5vcm1hbGl6ZVNraXA6IDAsXG5cdFx0c2hvdWxkSW52YWxpZGF0ZTogdHJ1ZSxcblx0XHRzaXplOiAxMDAwLFxuXHRcdHNvbHZlcjogJ0dTJyxcblx0XHRzdGVwU2l6ZTogMSAvIDYwLFxuXHRcdHRvbGVyYW5jZTogMC4wMDEsXG5cdH0pO1xuXG5cdEBJbnB1dCh7IGFsaWFzOiAnaXNQYXVzZWQnIH0pIHNldCBfaXNQYXVzZWQoaXNQYXVzZWQ6IGJvb2xlYW4pIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBpc1BhdXNlZCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnbWF4U3ViU3RlcHMnIH0pIHNldCBfbWF4U3ViU3RlcHMobWF4U3ViU3RlcHM6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IG1heFN1YlN0ZXBzIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdzaG91bGRJbnZhbGlkYXRlJyB9KSBzZXQgX3Nob3VsZEludmFsaWRhdGUoc2hvdWxkSW52YWxpZGF0ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNob3VsZEludmFsaWRhdGUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3N0ZXBTaXplJyB9KSBzZXQgX3N0ZXBTaXplKHN0ZXBTaXplOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzdGVwU2l6ZSB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnc2l6ZScgfSkgc2V0IF9zaXplKHNpemU6IG51bWJlcikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHNpemUgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2FsbG93U2xlZXAnIH0pIHNldCBfYWxsb3dTbGVlcChhbGxvd1NsZWVwOiBib29sZWFuKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgYWxsb3dTbGVlcCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYXhpc0luZGV4JyB9KSBzZXQgX2F4aXNJbmRleChheGlzSW5kZXg6IDAgfCAxIHwgMikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGF4aXNJbmRleCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnYnJvYWRwaGFzZScgfSkgc2V0IF9icm9hZHBoYXNlKGJyb2FkcGhhc2U6IEJyb2FkcGhhc2UpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBicm9hZHBoYXNlIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdkZWZhdWx0Q29udGFjdE1hdGVyaWFsJyB9KSBzZXQgX2RlZmF1bHRDb250YWN0TWF0ZXJpYWwoXG5cdFx0ZGVmYXVsdENvbnRhY3RNYXRlcmlhbDogQ29udGFjdE1hdGVyaWFsT3B0aW9ucyxcblx0KSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZGVmYXVsdENvbnRhY3RNYXRlcmlhbCB9KTtcblx0fVxuXG5cdEBJbnB1dCh7IGFsaWFzOiAnZnJpY3Rpb25HcmF2aXR5JyB9KSBzZXQgX2ZyaWN0aW9uR3Jhdml0eShmcmljdGlvbkdyYXZpdHk6IFRyaXBsZXQgfCBudWxsKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgZnJpY3Rpb25HcmF2aXR5IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdncmF2aXR5JyB9KSBzZXQgX2dyYXZpdHkoZ3Jhdml0eTogVHJpcGxldCkge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IGdyYXZpdHkgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ2l0ZXJhdGlvbnMnIH0pIHNldCBfaXRlcmF0aW9ucyhpdGVyYXRpb25zOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBpdGVyYXRpb25zIH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdxdWF0Tm9ybWFsaXplRmFzdCcgfSkgc2V0IF9xdWF0Tm9ybWFsaXplRmFzdChxdWF0Tm9ybWFsaXplRmFzdDogYm9vbGVhbikge1xuXHRcdHRoaXMuaW5wdXRzLnNldCh7IHF1YXROb3JtYWxpemVGYXN0IH0pO1xuXHR9XG5cblx0QElucHV0KHsgYWxpYXM6ICdxdWF0Tm9ybWFsaXplU2tpcCcgfSkgc2V0IF9xdWF0Tm9ybWFsaXplU2tpcChxdWF0Tm9ybWFsaXplU2tpcDogbnVtYmVyKSB7XG5cdFx0dGhpcy5pbnB1dHMuc2V0KHsgcXVhdE5vcm1hbGl6ZVNraXAgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3NvbHZlcicgfSkgc2V0IF9zb2x2ZXIoc29sdmVyOiBTb2x2ZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyBzb2x2ZXIgfSk7XG5cdH1cblxuXHRASW5wdXQoeyBhbGlhczogJ3RvbGVyYW5jZScgfSkgc2V0IF90b2xlcmFuY2UodG9sZXJhbmNlOiBudW1iZXIpIHtcblx0XHR0aGlzLmlucHV0cy5zZXQoeyB0b2xlcmFuY2UgfSk7XG5cdH1cblxuXHRwcml2YXRlIHpvbmUgPSBpbmplY3QoTmdab25lKTtcblx0cHJpdmF0ZSBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cblx0cHJpdmF0ZSBzdG9yZSA9IGluamVjdE5ndFN0b3JlKCk7XG5cdHByaXZhdGUgaW52YWxpZGF0ZSA9IHRoaXMuc3RvcmUuc2VsZWN0KCdpbnZhbGlkYXRlJyk7XG5cblx0YXBpID0gc2lnbmFsU3RvcmU8Tmd0Y1BoeXNpY3NBcGk+KHtcblx0XHRib2RpZXM6IHt9LFxuXHRcdGV2ZW50czoge30sXG5cdFx0cmVmczoge30sXG5cdFx0c2NhbGVPdmVycmlkZXM6IHt9LFxuXHRcdHN1YnNjcmlwdGlvbnM6IHt9LFxuXHRcdHdvcmtlcjogbnVsbCEsXG5cdH0pO1xuXG5cdHByaXZhdGUgd29ya2VyID0gdGhpcy5hcGkuc2VsZWN0KCd3b3JrZXInKTtcblxuXHRuZ09uSW5pdCgpIHtcblx0XHR0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuXHRcdFx0dGhpcy5hcGkuc2V0KHsgd29ya2VyOiBuZXcgQ2Fubm9uV29ya2VyQVBJKHRoaXMuaW5wdXRzLnN0YXRlKCkpIH0pO1xuXHRcdFx0dGhpcy5jb25uZWN0V29ya2VyKCk7XG5cdFx0XHR0aGlzLnVwZGF0ZVdvcmtlclN0YXRlKCdheGlzSW5kZXgnKTtcblx0XHRcdHRoaXMudXBkYXRlV29ya2VyU3RhdGUoJ2Jyb2FkcGhhc2UnKTtcblx0XHRcdHRoaXMudXBkYXRlV29ya2VyU3RhdGUoJ2dyYXZpdHknKTtcblx0XHRcdHRoaXMudXBkYXRlV29ya2VyU3RhdGUoJ2l0ZXJhdGlvbnMnKTtcblx0XHRcdHRoaXMudXBkYXRlV29ya2VyU3RhdGUoJ3RvbGVyYW5jZScpO1xuXHRcdFx0dGhpcy5iZWZvcmVSZW5kZXIoKTtcblx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgY29ubmVjdFdvcmtlcigpIHtcblx0XHRlZmZlY3QoXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHdvcmtlciA9IHRoaXMud29ya2VyKCk7XG5cdFx0XHRcdGlmICghd29ya2VyKSByZXR1cm47XG5cblx0XHRcdFx0d29ya2VyLmNvbm5lY3QoKTtcblx0XHRcdFx0d29ya2VyLmluaXQoKTtcblxuXHRcdFx0XHQod29ya2VyIGFzIGFueSkub24oJ2NvbGxpZGUnLCB0aGlzLmNvbGxpZGVIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdFx0XHQod29ya2VyIGFzIGFueSkub24oJ2NvbGxpZGVCZWdpbicsIHRoaXMuY29sbGlkZUJlZ2luSGFuZGxlci5iaW5kKHRoaXMpKTtcblx0XHRcdFx0KHdvcmtlciBhcyBhbnkpLm9uKCdjb2xsaWRlRW5kJywgdGhpcy5jb2xsaWRlRW5kSGFuZGxlci5iaW5kKHRoaXMpKTtcblx0XHRcdFx0KHdvcmtlciBhcyBhbnkpLm9uKCdmcmFtZScsIHRoaXMuZnJhbWVIYW5kbGVyLmJpbmQodGhpcykpO1xuXHRcdFx0XHQod29ya2VyIGFzIGFueSkub24oJ3JheWhpdCcsIHRoaXMucmF5aGl0SGFuZGxlci5iaW5kKHRoaXMpKTtcblxuXHRcdFx0XHRvbkNsZWFudXAoKCkgPT4ge1xuXHRcdFx0XHRcdHdvcmtlci50ZXJtaW5hdGUoKTtcblx0XHRcdFx0XHQod29ya2VyIGFzIGFueSkucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVXb3JrZXJTdGF0ZShrZXk6IGtleW9mIE5ndGNQaHlzaWNzU3RhdGUpIHtcblx0XHRjb25zdCBjb21wdXRlID0gdGhpcy5pbnB1dHMuc2VsZWN0KGtleSk7XG5cdFx0ZWZmZWN0KFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBbd29ya2VyLCB2YWx1ZV0gPSBbdW50cmFja2VkKHRoaXMud29ya2VyKSwgY29tcHV0ZSgpXTtcblx0XHRcdFx0Ly8gQHRzLWV4cGVjdC1lcnJvclxuXHRcdFx0XHR3b3JrZXJba2V5XSA9IHZhbHVlO1xuXHRcdFx0fSxcblx0XHRcdHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSxcblx0XHQpO1xuXHR9XG5cblx0cHJpdmF0ZSBjb2xsaWRlSGFuZGxlcih7IGJvZHksIGNvbnRhY3Q6IHsgYmksIGJqLCAuLi5jb250YWN0UmVzdCB9LCB0YXJnZXQsIC4uLnJlc3QgfTogV29ya2VyQ29sbGlkZUV2ZW50WydkYXRhJ10pIHtcblx0XHRjb25zdCB7IGV2ZW50cywgcmVmcyB9ID0gdGhpcy5hcGkuZ2V0KCk7XG5cdFx0Y29uc3QgY2IgPSBldmVudHNbdGFyZ2V0XT8uY29sbGlkZTtcblxuXHRcdGlmIChjYikge1xuXHRcdFx0Y2Ioe1xuXHRcdFx0XHRib2R5OiByZWZzW2JvZHldLFxuXHRcdFx0XHRjb250YWN0OiB7IGJpOiByZWZzW2JpXSwgYmo6IHJlZnNbYmpdLCAuLi5jb250YWN0UmVzdCB9LFxuXHRcdFx0XHR0YXJnZXQ6IHJlZnNbdGFyZ2V0XSxcblx0XHRcdFx0Li4ucmVzdCxcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY29sbGlkZUJlZ2luSGFuZGxlcih7IGJvZHlBLCBib2R5QiB9OiBXb3JrZXJDb2xsaWRlQmVnaW5FdmVudFsnZGF0YSddKSB7XG5cdFx0Y29uc3QgeyBldmVudHMsIHJlZnMgfSA9IHRoaXMuYXBpLmdldCgpO1xuXHRcdGNvbnN0IGNiQSA9IGV2ZW50c1tib2R5QV0/LmNvbGxpZGVCZWdpbjtcblx0XHRpZiAoY2JBKSBjYkEoeyBib2R5OiByZWZzW2JvZHlCXSwgb3A6ICdldmVudCcsIHRhcmdldDogcmVmc1tib2R5QV0sIHR5cGU6ICdjb2xsaWRlQmVnaW4nIH0pO1xuXHRcdGNvbnN0IGNiQiA9IGV2ZW50c1tib2R5Ql0/LmNvbGxpZGVCZWdpbjtcblx0XHRpZiAoY2JCKSBjYkIoeyBib2R5OiByZWZzW2JvZHlBXSwgb3A6ICdldmVudCcsIHRhcmdldDogcmVmc1tib2R5Ql0sIHR5cGU6ICdjb2xsaWRlQmVnaW4nIH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBjb2xsaWRlRW5kSGFuZGxlcih7IGJvZHlBLCBib2R5QiB9OiBXb3JrZXJDb2xsaWRlRW5kRXZlbnRbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IHsgZXZlbnRzLCByZWZzIH0gPSB0aGlzLmFwaS5nZXQoKTtcblx0XHRjb25zdCBjYkEgPSBldmVudHNbYm9keUFdPy5jb2xsaWRlRW5kO1xuXHRcdGlmIChjYkEpIGNiQSh7IGJvZHk6IHJlZnNbYm9keUJdLCBvcDogJ2V2ZW50JywgdGFyZ2V0OiByZWZzW2JvZHlBXSwgdHlwZTogJ2NvbGxpZGVFbmQnIH0pO1xuXHRcdGNvbnN0IGNiQiA9IGV2ZW50c1tib2R5Ql0/LmNvbGxpZGVFbmQ7XG5cdFx0aWYgKGNiQikgY2JCKHsgYm9keTogcmVmc1tib2R5QV0sIG9wOiAnZXZlbnQnLCB0YXJnZXQ6IHJlZnNbYm9keUJdLCB0eXBlOiAnY29sbGlkZUVuZCcgfSk7XG5cdH1cblxuXHRwcml2YXRlIGZyYW1lSGFuZGxlcih7XG5cdFx0YWN0aXZlLFxuXHRcdGJvZGllczogdXVpZHMgPSBbXSxcblx0XHRvYnNlcnZhdGlvbnMsXG5cdFx0cG9zaXRpb25zLFxuXHRcdHF1YXRlcm5pb25zLFxuXHR9OiBXb3JrZXJGcmFtZU1lc3NhZ2VbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IFt7IHNob3VsZEludmFsaWRhdGUgfSwgeyBib2RpZXMsIHN1YnNjcmlwdGlvbnMsIHJlZnMsIHNjYWxlT3ZlcnJpZGVzIH0sIGludmFsaWRhdGVdID0gW1xuXHRcdFx0dGhpcy5pbnB1dHMuZ2V0KCksXG5cdFx0XHR0aGlzLmFwaS5nZXQoKSxcblx0XHRcdHRoaXMuaW52YWxpZGF0ZSgpLFxuXHRcdF07XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHV1aWRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRib2RpZXNbdXVpZHNbaV1dID0gaTtcblx0XHR9XG5cblx0XHRvYnNlcnZhdGlvbnMuZm9yRWFjaCgoW2lkLCB2YWx1ZSwgdHlwZV0pID0+IHtcblx0XHRcdGNvbnN0IHN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbnNbaWRdIHx8IHt9O1xuXHRcdFx0Y29uc3QgY2IgPSBzdWJzY3JpcHRpb25bdHlwZV07XG5cdFx0XHQvLyBIRUxQOiBXZSBjbGVhcmx5IGtub3cgdGhlIHR5cGUgb2YgdGhlIGNhbGxiYWNrLCBidXQgdHlwZXNjcmlwdCBjYW4ndCBkZWFsIHdpdGggaXRcblx0XHRcdGNiICYmIGNiKHZhbHVlIGFzIG5ldmVyKTtcblx0XHR9KTtcblxuXHRcdGlmICghYWN0aXZlKSByZXR1cm47XG5cblx0XHRmb3IgKGNvbnN0IHJlZiBvZiBPYmplY3QudmFsdWVzKHJlZnMpLmZpbHRlcih1bmlxdWUoKSkpIHtcblx0XHRcdGlmIChyZWYgaW5zdGFuY2VvZiBUSFJFRS5JbnN0YW5jZWRNZXNoKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcmVmLmNvdW50OyBpKyspIHtcblx0XHRcdFx0XHRjb25zdCB1dWlkID0gYCR7cmVmLnV1aWR9LyR7aX1gO1xuXHRcdFx0XHRcdGNvbnN0IGluZGV4ID0gYm9kaWVzW3V1aWRdO1xuXHRcdFx0XHRcdGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRyZWYuc2V0TWF0cml4QXQoaSwgYXBwbHkoaW5kZXgsIHBvc2l0aW9ucywgcXVhdGVybmlvbnMsIHNjYWxlT3ZlcnJpZGVzW3V1aWRdKSk7XG5cdFx0XHRcdFx0XHRyZWYuaW5zdGFuY2VNYXRyaXgubmVlZHNVcGRhdGUgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3Qgc2NhbGUgPSBzY2FsZU92ZXJyaWRlc1tyZWYudXVpZF0gfHwgcmVmLnNjYWxlO1xuXHRcdFx0XHRhcHBseShib2RpZXNbcmVmLnV1aWRdLCBwb3NpdGlvbnMsIHF1YXRlcm5pb25zLCBzY2FsZSwgcmVmKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKHNob3VsZEludmFsaWRhdGUpIGludmFsaWRhdGUoKTtcblx0fVxuXG5cdHByaXZhdGUgcmF5aGl0SGFuZGxlcih7IGJvZHksIHJheTogeyB1dWlkLCAuLi5yYXlSZXN0IH0sIC4uLnJlc3QgfTogV29ya2VyUmF5aGl0RXZlbnRbJ2RhdGEnXSkge1xuXHRcdGNvbnN0IHsgZXZlbnRzLCByZWZzIH0gPSB0aGlzLmFwaS5nZXQoKTtcblx0XHRjb25zdCBjYiA9IGV2ZW50c1t1dWlkXT8ucmF5aGl0O1xuXHRcdGlmIChjYikgY2IoeyBib2R5OiBib2R5ID8gcmVmc1tib2R5XSA6IG51bGwsIHJheTogeyB1dWlkLCAuLi5yYXlSZXN0IH0sIC4uLnJlc3QgfSk7XG5cdH1cblxuXHRwcml2YXRlIGJlZm9yZVJlbmRlcigpIHtcblx0XHRsZXQgdGltZVNpbmNlTGFzdENhbGxlZCA9IDA7XG5cdFx0aW5qZWN0QmVmb3JlUmVuZGVyKFxuXHRcdFx0KHsgZGVsdGEgfSkgPT4ge1xuXHRcdFx0XHRjb25zdCBbeyBpc1BhdXNlZCwgbWF4U3ViU3RlcHMsIHN0ZXBTaXplIH0sIHdvcmtlcl0gPSBbdGhpcy5pbnB1dHMuZ2V0KCksIHRoaXMud29ya2VyKCldO1xuXHRcdFx0XHRpZiAoaXNQYXVzZWQgfHwgIXdvcmtlcikgcmV0dXJuO1xuXHRcdFx0XHR0aW1lU2luY2VMYXN0Q2FsbGVkICs9IGRlbHRhO1xuXHRcdFx0XHR3b3JrZXIuc3RlcCh7IG1heFN1YlN0ZXBzLCBzdGVwU2l6ZTogc3RlcFNpemUhLCB0aW1lU2luY2VMYXN0Q2FsbGVkIH0pO1xuXHRcdFx0XHR0aW1lU2luY2VMYXN0Q2FsbGVkID0gMDtcblx0XHRcdH0sXG5cdFx0XHR7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0sXG5cdFx0KTtcblx0fVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './body';
|
|
2
|
-
export * from './
|
|
3
|
-
export * from './contact-material';
|
|
4
|
-
export * from './ray';
|
|
5
|
-
export * from './raycast-vehicle';
|
|
6
|
-
export * from './spring';
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
export * from './lib/body';
|
|
2
|
+
export * from './lib/constraints';
|
|
3
|
+
export * from './lib/contact-material';
|
|
4
|
+
export * from './lib/ray';
|
|
5
|
+
export * from './lib/raycast-vehicle';
|
|
6
|
+
export * from './lib/spring';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9zZXJ2aWNlcy9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9ib2R5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnN0cmFpbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbnRhY3QtbWF0ZXJpYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmF5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JheWNhc3QtdmVoaWNsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zcHJpbmcnO1xuIl19
|