angular-three-cannon 2.0.0-beta.9 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -4
- package/body/README.md +49 -0
- package/body/index.d.ts +2 -0
- package/body/lib/body.d.ts +17 -0
- package/body/lib/types.d.ts +49 -0
- package/body/lib/utils.d.ts +50 -0
- package/constraint/README.md +47 -0
- package/constraint/index.d.ts +1 -0
- package/constraint/lib/constraint.d.ts +32 -0
- package/debug/README.md +48 -2
- package/debug/lib/debug.d.ts +15 -33
- package/esm2022/body/angular-three-cannon-body.mjs +5 -0
- package/esm2022/body/index.mjs +2 -0
- package/esm2022/body/lib/body.mjs +108 -0
- package/esm2022/body/lib/types.mjs +2 -0
- package/esm2022/body/lib/utils.mjs +193 -0
- package/esm2022/constraint/angular-three-cannon-constraint.mjs +5 -0
- package/esm2022/constraint/index.mjs +2 -0
- package/esm2022/constraint/lib/constraint.mjs +67 -0
- package/esm2022/debug/lib/debug.mjs +56 -71
- package/esm2022/lib/physics.mjs +79 -176
- package/fesm2022/angular-three-cannon-body.mjs +306 -0
- package/fesm2022/angular-three-cannon-body.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-constraint.mjs +74 -0
- package/fesm2022/angular-three-cannon-constraint.mjs.map +1 -0
- package/fesm2022/angular-three-cannon-debug.mjs +56 -71
- package/fesm2022/angular-three-cannon-debug.mjs.map +1 -1
- package/fesm2022/angular-three-cannon.mjs +79 -176
- package/fesm2022/angular-three-cannon.mjs.map +1 -1
- package/lib/physics.d.ts +31 -49
- package/package.json +25 -15
- package/esm2022/services/angular-three-cannon-services.mjs +0 -5
- package/esm2022/services/index.mjs +0 -7
- package/esm2022/services/lib/body.mjs +0 -293
- package/esm2022/services/lib/constraints.mjs +0 -58
- package/esm2022/services/lib/contact-material.mjs +0 -20
- package/esm2022/services/lib/ray.mjs +0 -30
- package/esm2022/services/lib/raycast-vehicle.mjs +0 -68
- package/esm2022/services/lib/spring.mjs +0 -31
- package/fesm2022/angular-three-cannon-services.mjs +0 -490
- package/fesm2022/angular-three-cannon-services.mjs.map +0 -1
- package/services/README.md +0 -3
- package/services/index.d.ts +0 -6
- package/services/lib/body.d.ts +0 -60
- package/services/lib/constraints.d.ts +0 -31
- package/services/lib/contact-material.d.ts +0 -9
- package/services/lib/ray.d.ts +0 -12
- package/services/lib/raycast-vehicle.d.ts +0 -30
- package/services/lib/spring.d.ts +0 -19
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { Euler, Quaternion, Vector3 } from 'three';
|
|
2
|
+
function capitalize(str) {
|
|
3
|
+
return (str.charAt(0).toUpperCase() + str.slice(1));
|
|
4
|
+
}
|
|
5
|
+
function getUUID(body, index) {
|
|
6
|
+
const suffix = index === undefined ? '' : `/${index}`;
|
|
7
|
+
if (typeof body === 'function')
|
|
8
|
+
return null;
|
|
9
|
+
return body && body && `${body.uuid}${suffix}`;
|
|
10
|
+
}
|
|
11
|
+
const e = new Euler();
|
|
12
|
+
const q = new Quaternion();
|
|
13
|
+
function quaternionToRotation(callback) {
|
|
14
|
+
return (v) => callback(e.setFromQuaternion(q.fromArray(v)).toArray());
|
|
15
|
+
}
|
|
16
|
+
let incrementingId = 0;
|
|
17
|
+
export function createSubscribe(body, worker, subscriptions, type, index, target = 'bodies') {
|
|
18
|
+
return (callback) => {
|
|
19
|
+
const id = incrementingId++;
|
|
20
|
+
subscriptions[id] = { [type]: callback };
|
|
21
|
+
const uuid = getUUID(body, index);
|
|
22
|
+
uuid && worker.subscribe({ props: { id, target, type }, uuid });
|
|
23
|
+
return () => {
|
|
24
|
+
delete subscriptions[id];
|
|
25
|
+
worker.unsubscribe({ props: id });
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
function makeTriplet(v) {
|
|
30
|
+
return v instanceof Vector3 ? [v.x, v.y, v.z] : v;
|
|
31
|
+
}
|
|
32
|
+
export function prepare(object, { position = [0, 0, 0], rotation = [0, 0, 0], userData = {} }) {
|
|
33
|
+
object.userData = userData;
|
|
34
|
+
object.position.set(...position);
|
|
35
|
+
object.rotation.set(...rotation);
|
|
36
|
+
object.updateMatrix();
|
|
37
|
+
}
|
|
38
|
+
export function setupCollision(events, { onCollide, onCollideBegin, onCollideEnd }, uuid) {
|
|
39
|
+
events[uuid] = { collide: onCollide, collideBegin: onCollideBegin, collideEnd: onCollideEnd };
|
|
40
|
+
}
|
|
41
|
+
export function makeBodyApi(body, worker, { subscriptions, scaleOverrides }) {
|
|
42
|
+
const makeAtomic = (type, index) => {
|
|
43
|
+
const op = `set${capitalize(type)}`;
|
|
44
|
+
return {
|
|
45
|
+
set: (value) => {
|
|
46
|
+
const uuid = getUUID(body, index);
|
|
47
|
+
uuid && worker[op]({ props: value, uuid });
|
|
48
|
+
},
|
|
49
|
+
subscribe: createSubscribe(body, worker, subscriptions, type, index),
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
const makeQuaternion = (index) => {
|
|
53
|
+
const type = 'quaternion';
|
|
54
|
+
return {
|
|
55
|
+
copy: ({ w, x, y, z }) => {
|
|
56
|
+
const uuid = getUUID(body, index);
|
|
57
|
+
uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });
|
|
58
|
+
},
|
|
59
|
+
set: (x, y, z, w) => {
|
|
60
|
+
const uuid = getUUID(body, index);
|
|
61
|
+
uuid && worker.setQuaternion({ props: [x, y, z, w], uuid });
|
|
62
|
+
},
|
|
63
|
+
subscribe: createSubscribe(body, worker, subscriptions, type, index),
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const makeRotation = (index) => {
|
|
67
|
+
return {
|
|
68
|
+
copy: ({ x, y, z }) => {
|
|
69
|
+
const uuid = getUUID(body, index);
|
|
70
|
+
uuid && worker.setRotation({ props: [x, y, z], uuid });
|
|
71
|
+
},
|
|
72
|
+
set: (x, y, z) => {
|
|
73
|
+
const uuid = getUUID(body, index);
|
|
74
|
+
uuid && worker.setRotation({ props: [x, y, z], uuid });
|
|
75
|
+
},
|
|
76
|
+
subscribe: (callback) => {
|
|
77
|
+
const id = incrementingId++;
|
|
78
|
+
const target = 'bodies';
|
|
79
|
+
const type = 'quaternion';
|
|
80
|
+
const uuid = getUUID(body, index);
|
|
81
|
+
subscriptions[id] = { [type]: quaternionToRotation(callback) };
|
|
82
|
+
uuid && worker.subscribe({ props: { id, target, type }, uuid });
|
|
83
|
+
return () => {
|
|
84
|
+
delete subscriptions[id];
|
|
85
|
+
worker.unsubscribe({ props: id });
|
|
86
|
+
};
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
const makeVec = (type, index) => {
|
|
91
|
+
const op = `set${capitalize(type)}`;
|
|
92
|
+
return {
|
|
93
|
+
copy: ({ x, y, z }) => {
|
|
94
|
+
const uuid = getUUID(body, index);
|
|
95
|
+
uuid && worker[op]({ props: [x, y, z], uuid });
|
|
96
|
+
},
|
|
97
|
+
set: (x, y, z) => {
|
|
98
|
+
const uuid = getUUID(body, index);
|
|
99
|
+
uuid && worker[op]({ props: [x, y, z], uuid });
|
|
100
|
+
},
|
|
101
|
+
subscribe: createSubscribe(body, worker, subscriptions, type, index),
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
const makeRemove = (index) => {
|
|
105
|
+
const uuid = getUUID(body, index);
|
|
106
|
+
return () => {
|
|
107
|
+
if (uuid)
|
|
108
|
+
worker.removeBodies({ uuid: [uuid] });
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
function makeApi(index) {
|
|
112
|
+
return {
|
|
113
|
+
allowSleep: makeAtomic('allowSleep', index),
|
|
114
|
+
angularDamping: makeAtomic('angularDamping', index),
|
|
115
|
+
angularFactor: makeVec('angularFactor', index),
|
|
116
|
+
angularVelocity: makeVec('angularVelocity', index),
|
|
117
|
+
applyForce(force, worldPoint) {
|
|
118
|
+
const uuid = getUUID(body, index);
|
|
119
|
+
uuid && worker.applyForce({ props: [force, worldPoint], uuid });
|
|
120
|
+
},
|
|
121
|
+
applyImpulse(impulse, worldPoint) {
|
|
122
|
+
const uuid = getUUID(body, index);
|
|
123
|
+
uuid && worker.applyImpulse({ props: [impulse, worldPoint], uuid });
|
|
124
|
+
},
|
|
125
|
+
applyLocalForce(force, localPoint) {
|
|
126
|
+
const uuid = getUUID(body, index);
|
|
127
|
+
uuid && worker.applyLocalForce({ props: [force, localPoint], uuid });
|
|
128
|
+
},
|
|
129
|
+
applyLocalImpulse(impulse, localPoint) {
|
|
130
|
+
const uuid = getUUID(body, index);
|
|
131
|
+
uuid && worker.applyLocalImpulse({ props: [impulse, localPoint], uuid });
|
|
132
|
+
},
|
|
133
|
+
applyTorque(torque) {
|
|
134
|
+
const uuid = getUUID(body, index);
|
|
135
|
+
uuid && worker.applyTorque({ props: [torque], uuid });
|
|
136
|
+
},
|
|
137
|
+
collisionFilterGroup: makeAtomic('collisionFilterGroup', index),
|
|
138
|
+
collisionFilterMask: makeAtomic('collisionFilterMask', index),
|
|
139
|
+
collisionResponse: makeAtomic('collisionResponse', index),
|
|
140
|
+
fixedRotation: makeAtomic('fixedRotation', index),
|
|
141
|
+
isTrigger: makeAtomic('isTrigger', index),
|
|
142
|
+
linearDamping: makeAtomic('linearDamping', index),
|
|
143
|
+
linearFactor: makeVec('linearFactor', index),
|
|
144
|
+
mass: makeAtomic('mass', index),
|
|
145
|
+
material: makeAtomic('material', index),
|
|
146
|
+
position: makeVec('position', index),
|
|
147
|
+
quaternion: makeQuaternion(index),
|
|
148
|
+
rotation: makeRotation(index),
|
|
149
|
+
scaleOverride(scale) {
|
|
150
|
+
const uuid = getUUID(body, index);
|
|
151
|
+
if (uuid)
|
|
152
|
+
scaleOverrides[uuid] = new Vector3(...scale);
|
|
153
|
+
},
|
|
154
|
+
sleep() {
|
|
155
|
+
const uuid = getUUID(body, index);
|
|
156
|
+
uuid && worker.sleep({ uuid });
|
|
157
|
+
},
|
|
158
|
+
sleepSpeedLimit: makeAtomic('sleepSpeedLimit', index),
|
|
159
|
+
sleepTimeLimit: makeAtomic('sleepTimeLimit', index),
|
|
160
|
+
userData: makeAtomic('userData', index),
|
|
161
|
+
velocity: makeVec('velocity', index),
|
|
162
|
+
remove: makeRemove(index),
|
|
163
|
+
wakeUp() {
|
|
164
|
+
const uuid = getUUID(body, index);
|
|
165
|
+
uuid && worker.wakeUp({ uuid });
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const cache = {};
|
|
170
|
+
return { ...makeApi(), at: (index) => cache[index] || (cache[index] = makeApi(index)) };
|
|
171
|
+
}
|
|
172
|
+
export const defaultTransformArgs = {
|
|
173
|
+
Plane: (_) => [],
|
|
174
|
+
Box: (args = [1, 1, 1]) => args,
|
|
175
|
+
Trimesh: (args) => args,
|
|
176
|
+
Cylinder: (_ = []) => [],
|
|
177
|
+
Heightfield: (args) => args,
|
|
178
|
+
ConvexPolyhedron: ([vertices, faces, normals, axes, boundingSphereRadius] = []) => [
|
|
179
|
+
vertices && vertices.map(makeTriplet),
|
|
180
|
+
faces,
|
|
181
|
+
normals && normals.map(makeTriplet),
|
|
182
|
+
axes && axes.map(makeTriplet),
|
|
183
|
+
boundingSphereRadius,
|
|
184
|
+
],
|
|
185
|
+
Particle: (_) => [],
|
|
186
|
+
Sphere: (args = [1]) => {
|
|
187
|
+
if (!Array.isArray(args))
|
|
188
|
+
throw new Error('Sphere body args must be an array');
|
|
189
|
+
return [args[0]];
|
|
190
|
+
},
|
|
191
|
+
Compound: (args) => args,
|
|
192
|
+
};
|
|
193
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9ib2R5L3NyYy9saWIvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE9BQU8sRUFBRSxLQUFLLEVBQVksVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUc3RCxTQUFTLFVBQVUsQ0FBbUIsR0FBTTtJQUMzQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFrQixDQUFDO0FBQ3RFLENBQUM7QUFFRCxTQUFTLE9BQU8sQ0FBQyxJQUFjLEVBQUUsS0FBYztJQUM5QyxNQUFNLE1BQU0sR0FBRyxLQUFLLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUM7SUFDdEQsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDNUMsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxDQUFDLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUN0QixNQUFNLENBQUMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO0FBRTNCLFNBQVMsb0JBQW9CLENBQUMsUUFBOEI7SUFDM0QsT0FBTyxDQUFDLENBQU8sRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFhLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBRUQsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FBQ3ZCLE1BQU0sVUFBVSxlQUFl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RSxFQUFFLENBQUMsRUFBRTtJQUNwQyxHQUFHLEVBQUUsQ0FBQyxPQUF5QixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUk7SUFDakQsT0FBTyxFQUFFLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSTtJQUNwQyxRQUFRLEVBQUUsQ0FBQyxJQUFrQixFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDdEMsV0FBVyxFQUFFLENBQUMsSUFBcUIsRUFBRSxFQUFFLENBQUMsSUFBSTtJQUM1QyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixJQUEwQixFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3hHLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUNyQyxLQUFLO1FBQ0wsT0FBTyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1FBQ25DLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztRQUM3QixvQkFBb0I7S0FDcEI7SUFDRCxRQUFRLEVBQUUsQ0FBQyxDQUF3QixFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQzFDLE1BQU0sRUFBRSxDQUFDLE9BQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNsQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFDL0UsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFDRCxRQUFRLEVBQUUsQ0FBQyxJQUErQixFQUFFLEVBQUUsQ0FBQyxJQUFJO0NBQ25ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRBdG9taWNOYW1lLFxuXHRCb2R5UHJvcHMsXG5cdEJveFByb3BzLFxuXHRDYW5ub25Xb3JrZXJBUEksXG5cdENvbXBvdW5kQm9keVByb3BzLFxuXHRDb252ZXhQb2x5aGVkcm9uQXJncyxcblx0Q3lsaW5kZXJBcmdzLFxuXHRIZWlnaHRmaWVsZEFyZ3MsXG5cdFBhcnRpY2xlUHJvcHMsXG5cdFBsYW5lUHJvcHMsXG5cdFByb3BWYWx1ZSxcblx0UXVhZCxcblx0U2V0T3BOYW1lLFxuXHRTcGhlcmVBcmdzLFxuXHRTdWJzY3JpcHRpb25OYW1lLFxuXHRTdWJzY3JpcHRpb25UYXJnZXQsXG5cdFN1YnNjcmlwdGlvbnMsXG5cdFRyaW1lc2hBcmdzLFxuXHRUcmlwbGV0LFxuXHRWZWN0b3JOYW1lLFxufSBmcm9tICdAcG1uZHJzL2Nhbm5vbi13b3JrZXItYXBpJztcbmltcG9ydCB7IE5ndGNDYW5ub25FdmVudHMsIE5ndGNQaHlzaWNzQXBpIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgRXVsZXIsIE9iamVjdDNELCBRdWF0ZXJuaW9uLCBWZWN0b3IzIH0gZnJvbSAndGhyZWUnO1xuaW1wb3J0IHsgTmd0Y1dvcmtlckFwaSB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBjYXBpdGFsaXplPFQgZXh0ZW5kcyBzdHJpbmc+KHN0cjogVCk6IENhcGl0YWxpemU8VD4ge1xuXHRyZXR1cm4gKHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSkgYXMgQ2FwaXRhbGl6ZTxUPjtcbn1cblxuZnVuY3Rpb24gZ2V0VVVJRChib2R5OiBPYmplY3QzRCwgaW5kZXg/OiBudW1iZXIpIHtcblx0Y29uc3Qgc3VmZml4ID0gaW5kZXggPT09IHVuZGVmaW5lZCA/ICcnIDogYC8ke2luZGV4fWA7XG5cdGlmICh0eXBlb2YgYm9keSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG51bGw7XG5cdHJldHVybiBib2R5ICYmIGJvZHkgJiYgYCR7Ym9keS51dWlkfSR7c3VmZml4fWA7XG59XG5cbmNvbnN0IGUgPSBuZXcgRXVsZXIoKTtcbmNvbnN0IHEgPSBuZXcgUXVhdGVybmlvbigpO1xuXG5mdW5jdGlvbiBxdWF0ZXJuaW9uVG9Sb3RhdGlvbihjYWxsYmFjazogKHY6IFRyaXBsZXQpID0+IHZvaWQpIHtcblx0cmV0dXJuICh2OiBRdWFkKSA9PiBjYWxsYmFjayhlLnNldEZyb21RdWF0ZXJuaW9uKHEuZnJvbUFycmF5KHYpKS50b0FycmF5KCkgYXMgVHJpcGxldCk7XG59XG5cbmxldCBpbmNyZW1lbnRpbmdJZCA9IDA7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Vic2NyaWJlPFQgZXh0ZW5kcyBTdWJzY3JpcHRpb25OYW1lPihcblx0Ym9keTogT2JqZWN0M0QsXG5cdHdvcmtlcjogQ2Fubm9uV29ya2VyQVBJLFxuXHRzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25zLFxuXHR0eXBlOiBULFxuXHRpbmRleD86IG51bWJlcixcblx0dGFyZ2V0OiBTdWJzY3JpcHRpb25UYXJnZXQgPSAnYm9kaWVzJyxcbikge1xuXHRyZXR1cm4gKGNhbGxiYWNrOiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4gdm9pZCkgPT4ge1xuXHRcdGNvbnN0IGlkID0gaW5jcmVtZW50aW5nSWQrKztcblx0XHRzdWJzY3JpcHRpb25zW2lkXSA9IHsgW3R5cGVdOiBjYWxsYmFjayB9O1xuXHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHR1dWlkICYmIHdvcmtlci5zdWJzY3JpYmUoeyBwcm9wczogeyBpZCwgdGFyZ2V0LCB0eXBlIH0sIHV1aWQgfSk7XG5cdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdGRlbGV0ZSBzdWJzY3JpcHRpb25zW2lkXTtcblx0XHRcdHdvcmtlci51bnN1YnNjcmliZSh7IHByb3BzOiBpZCB9KTtcblx0XHR9O1xuXHR9O1xufVxuXG5mdW5jdGlvbiBtYWtlVHJpcGxldCh2OiBWZWN0b3IzIHwgVHJpcGxldCk6IFRyaXBsZXQge1xuXHRyZXR1cm4gdiBpbnN0YW5jZW9mIFZlY3RvcjMgPyBbdi54LCB2LnksIHYuel0gOiB2O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZShvYmplY3Q6IE9iamVjdDNELCB7IHBvc2l0aW9uID0gWzAsIDAsIDBdLCByb3RhdGlvbiA9IFswLCAwLCAwXSwgdXNlckRhdGEgPSB7fSB9OiBCb2R5UHJvcHMpIHtcblx0b2JqZWN0LnVzZXJEYXRhID0gdXNlckRhdGE7XG5cdG9iamVjdC5wb3NpdGlvbi5zZXQoLi4ucG9zaXRpb24pO1xuXHRvYmplY3Qucm90YXRpb24uc2V0KC4uLnJvdGF0aW9uKTtcblx0b2JqZWN0LnVwZGF0ZU1hdHJpeCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBDb2xsaXNpb24oXG5cdGV2ZW50czogTmd0Y0Nhbm5vbkV2ZW50cyxcblx0eyBvbkNvbGxpZGUsIG9uQ29sbGlkZUJlZ2luLCBvbkNvbGxpZGVFbmQgfTogUGFydGlhbDxCb2R5UHJvcHM+LFxuXHR1dWlkOiBzdHJpbmcsXG4pIHtcblx0ZXZlbnRzW3V1aWRdID0geyBjb2xsaWRlOiBvbkNvbGxpZGUsIGNvbGxpZGVCZWdpbjogb25Db2xsaWRlQmVnaW4sIGNvbGxpZGVFbmQ6IG9uQ29sbGlkZUVuZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUJvZHlBcGkoXG5cdGJvZHk6IE9iamVjdDNELFxuXHR3b3JrZXI6IENhbm5vbldvcmtlckFQSSxcblx0eyBzdWJzY3JpcHRpb25zLCBzY2FsZU92ZXJyaWRlcyB9OiBQaWNrPE5ndGNQaHlzaWNzQXBpLCAnc3Vic2NyaXB0aW9ucycgfCAnc2NhbGVPdmVycmlkZXMnPixcbikge1xuXHRjb25zdCBtYWtlQXRvbWljID0gPFQgZXh0ZW5kcyBBdG9taWNOYW1lPih0eXBlOiBULCBpbmRleD86IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IG9wOiBTZXRPcE5hbWU8VD4gPSBgc2V0JHtjYXBpdGFsaXplKHR5cGUpfWA7XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0c2V0OiAodmFsdWU6IFByb3BWYWx1ZTxUPikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyW29wXSh7IHByb3BzOiB2YWx1ZSwgdXVpZCB9IGFzIG5ldmVyKTtcblx0XHRcdH0sXG5cdFx0XHRzdWJzY3JpYmU6IGNyZWF0ZVN1YnNjcmliZShib2R5LCB3b3JrZXIsIHN1YnNjcmlwdGlvbnMsIHR5cGUsIGluZGV4KSxcblx0XHR9O1xuXHR9O1xuXG5cdGNvbnN0IG1ha2VRdWF0ZXJuaW9uID0gKGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3QgdHlwZSA9ICdxdWF0ZXJuaW9uJztcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29weTogKHsgdywgeCwgeSwgeiB9OiBRdWF0ZXJuaW9uKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2V0UXVhdGVybmlvbih7IHByb3BzOiBbeCwgeSwgeiwgd10sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlciwgdzogbnVtYmVyKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuc2V0UXVhdGVybmlvbih7IHByb3BzOiBbeCwgeSwgeiwgd10sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c3Vic2NyaWJlOiBjcmVhdGVTdWJzY3JpYmUoYm9keSwgd29ya2VyLCBzdWJzY3JpcHRpb25zLCB0eXBlLCBpbmRleCksXG5cdFx0fTtcblx0fTtcblxuXHRjb25zdCBtYWtlUm90YXRpb24gPSAoaW5kZXg/OiBudW1iZXIpID0+IHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29weTogKHsgeCwgeSwgeiB9OiBWZWN0b3IzIHwgRXVsZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5zZXRSb3RhdGlvbih7IHByb3BzOiBbeCwgeSwgel0sIHV1aWQgfSk7XG5cdFx0XHR9LFxuXHRcdFx0c2V0OiAoeDogbnVtYmVyLCB5OiBudW1iZXIsIHo6IG51bWJlcikgPT4ge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLnNldFJvdGF0aW9uKHsgcHJvcHM6IFt4LCB5LCB6XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzdWJzY3JpYmU6IChjYWxsYmFjazogKHZhbHVlOiBUcmlwbGV0KSA9PiB2b2lkKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGlkID0gaW5jcmVtZW50aW5nSWQrKztcblx0XHRcdFx0Y29uc3QgdGFyZ2V0ID0gJ2JvZGllcyc7XG5cdFx0XHRcdGNvbnN0IHR5cGUgPSAncXVhdGVybmlvbic7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0c3Vic2NyaXB0aW9uc1tpZF0gPSB7IFt0eXBlXTogcXVhdGVybmlvblRvUm90YXRpb24oY2FsbGJhY2spIH07XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLnN1YnNjcmliZSh7IHByb3BzOiB7IGlkLCB0YXJnZXQsIHR5cGUgfSwgdXVpZCB9KTtcblx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRkZWxldGUgc3Vic2NyaXB0aW9uc1tpZF07XG5cdFx0XHRcdFx0d29ya2VyLnVuc3Vic2NyaWJlKHsgcHJvcHM6IGlkIH0pO1xuXHRcdFx0XHR9O1xuXHRcdFx0fSxcblx0XHR9O1xuXHR9O1xuXHRjb25zdCBtYWtlVmVjID0gKHR5cGU6IFZlY3Rvck5hbWUsIGluZGV4PzogbnVtYmVyKSA9PiB7XG5cdFx0Y29uc3Qgb3A6IFNldE9wTmFtZTxWZWN0b3JOYW1lPiA9IGBzZXQke2NhcGl0YWxpemUodHlwZSl9YDtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29weTogKHsgeCwgeSwgeiB9OiBWZWN0b3IzIHwgRXVsZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHNldDogKHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpID0+IHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlcltvcF0oeyBwcm9wczogW3gsIHksIHpdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdHN1YnNjcmliZTogY3JlYXRlU3Vic2NyaWJlKGJvZHksIHdvcmtlciwgc3Vic2NyaXB0aW9ucywgdHlwZSwgaW5kZXgpLFxuXHRcdH07XG5cdH07XG5cblx0Y29uc3QgbWFrZVJlbW92ZSA9IChpbmRleD86IG51bWJlcikgPT4ge1xuXHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0aWYgKHV1aWQpIHdvcmtlci5yZW1vdmVCb2RpZXMoeyB1dWlkOiBbdXVpZF0gfSk7XG5cdFx0fTtcblx0fTtcblxuXHRmdW5jdGlvbiBtYWtlQXBpKGluZGV4PzogbnVtYmVyKTogTmd0Y1dvcmtlckFwaSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGFsbG93U2xlZXA6IG1ha2VBdG9taWMoJ2FsbG93U2xlZXAnLCBpbmRleCksXG5cdFx0XHRhbmd1bGFyRGFtcGluZzogbWFrZUF0b21pYygnYW5ndWxhckRhbXBpbmcnLCBpbmRleCksXG5cdFx0XHRhbmd1bGFyRmFjdG9yOiBtYWtlVmVjKCdhbmd1bGFyRmFjdG9yJywgaW5kZXgpLFxuXHRcdFx0YW5ndWxhclZlbG9jaXR5OiBtYWtlVmVjKCdhbmd1bGFyVmVsb2NpdHknLCBpbmRleCksXG5cdFx0XHRhcHBseUZvcmNlKGZvcmNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuYXBwbHlGb3JjZSh7IHByb3BzOiBbZm9yY2UsIHdvcmxkUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5SW1wdWxzZShpbXB1bHNlOiBUcmlwbGV0LCB3b3JsZFBvaW50OiBUcmlwbGV0KSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuYXBwbHlJbXB1bHNlKHsgcHJvcHM6IFtpbXB1bHNlLCB3b3JsZFBvaW50XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRhcHBseUxvY2FsRm9yY2UoZm9yY2U6IFRyaXBsZXQsIGxvY2FsUG9pbnQ6IFRyaXBsZXQpIHtcblx0XHRcdFx0Y29uc3QgdXVpZCA9IGdldFVVSUQoYm9keSwgaW5kZXgpO1xuXHRcdFx0XHR1dWlkICYmIHdvcmtlci5hcHBseUxvY2FsRm9yY2UoeyBwcm9wczogW2ZvcmNlLCBsb2NhbFBvaW50XSwgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRhcHBseUxvY2FsSW1wdWxzZShpbXB1bHNlOiBUcmlwbGV0LCBsb2NhbFBvaW50OiBUcmlwbGV0KSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIuYXBwbHlMb2NhbEltcHVsc2UoeyBwcm9wczogW2ltcHVsc2UsIGxvY2FsUG9pbnRdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGFwcGx5VG9ycXVlKHRvcnF1ZTogVHJpcGxldCkge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLmFwcGx5VG9ycXVlKHsgcHJvcHM6IFt0b3JxdWVdLCB1dWlkIH0pO1xuXHRcdFx0fSxcblx0XHRcdGNvbGxpc2lvbkZpbHRlckdyb3VwOiBtYWtlQXRvbWljKCdjb2xsaXNpb25GaWx0ZXJHcm91cCcsIGluZGV4KSxcblx0XHRcdGNvbGxpc2lvbkZpbHRlck1hc2s6IG1ha2VBdG9taWMoJ2NvbGxpc2lvbkZpbHRlck1hc2snLCBpbmRleCksXG5cdFx0XHRjb2xsaXNpb25SZXNwb25zZTogbWFrZUF0b21pYygnY29sbGlzaW9uUmVzcG9uc2UnLCBpbmRleCksXG5cdFx0XHRmaXhlZFJvdGF0aW9uOiBtYWtlQXRvbWljKCdmaXhlZFJvdGF0aW9uJywgaW5kZXgpLFxuXHRcdFx0aXNUcmlnZ2VyOiBtYWtlQXRvbWljKCdpc1RyaWdnZXInLCBpbmRleCksXG5cdFx0XHRsaW5lYXJEYW1waW5nOiBtYWtlQXRvbWljKCdsaW5lYXJEYW1waW5nJywgaW5kZXgpLFxuXHRcdFx0bGluZWFyRmFjdG9yOiBtYWtlVmVjKCdsaW5lYXJGYWN0b3InLCBpbmRleCksXG5cdFx0XHRtYXNzOiBtYWtlQXRvbWljKCdtYXNzJywgaW5kZXgpLFxuXHRcdFx0bWF0ZXJpYWw6IG1ha2VBdG9taWMoJ21hdGVyaWFsJywgaW5kZXgpLFxuXHRcdFx0cG9zaXRpb246IG1ha2VWZWMoJ3Bvc2l0aW9uJywgaW5kZXgpLFxuXHRcdFx0cXVhdGVybmlvbjogbWFrZVF1YXRlcm5pb24oaW5kZXgpLFxuXHRcdFx0cm90YXRpb246IG1ha2VSb3RhdGlvbihpbmRleCksXG5cdFx0XHRzY2FsZU92ZXJyaWRlKHNjYWxlKSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0aWYgKHV1aWQpIHNjYWxlT3ZlcnJpZGVzW3V1aWRdID0gbmV3IFZlY3RvcjMoLi4uc2NhbGUpO1xuXHRcdFx0fSxcblx0XHRcdHNsZWVwKCkge1xuXHRcdFx0XHRjb25zdCB1dWlkID0gZ2V0VVVJRChib2R5LCBpbmRleCk7XG5cdFx0XHRcdHV1aWQgJiYgd29ya2VyLnNsZWVwKHsgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0XHRzbGVlcFNwZWVkTGltaXQ6IG1ha2VBdG9taWMoJ3NsZWVwU3BlZWRMaW1pdCcsIGluZGV4KSxcblx0XHRcdHNsZWVwVGltZUxpbWl0OiBtYWtlQXRvbWljKCdzbGVlcFRpbWVMaW1pdCcsIGluZGV4KSxcblx0XHRcdHVzZXJEYXRhOiBtYWtlQXRvbWljKCd1c2VyRGF0YScsIGluZGV4KSxcblx0XHRcdHZlbG9jaXR5OiBtYWtlVmVjKCd2ZWxvY2l0eScsIGluZGV4KSxcblx0XHRcdHJlbW92ZTogbWFrZVJlbW92ZShpbmRleCksXG5cdFx0XHR3YWtlVXAoKSB7XG5cdFx0XHRcdGNvbnN0IHV1aWQgPSBnZXRVVUlEKGJvZHksIGluZGV4KTtcblx0XHRcdFx0dXVpZCAmJiB3b3JrZXIud2FrZVVwKHsgdXVpZCB9KTtcblx0XHRcdH0sXG5cdFx0fTtcblx0fVxuXHRjb25zdCBjYWNoZTogUmVjb3JkPG51bWJlciwgTmd0Y1dvcmtlckFwaT4gPSB7fTtcblx0cmV0dXJuIHsgLi4ubWFrZUFwaSgpLCBhdDogKGluZGV4OiBudW1iZXIpID0+IGNhY2hlW2luZGV4XSB8fCAoY2FjaGVbaW5kZXhdID0gbWFrZUFwaShpbmRleCkpIH07XG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0VHJhbnNmb3JtQXJncyA9IHtcblx0UGxhbmU6IChfOiBQbGFuZVByb3BzWydhcmdzJ10pID0+IFtdLFxuXHRCb3g6IChhcmdzOiBCb3hQcm9wc1snYXJncyddID0gWzEsIDEsIDFdKSA9PiBhcmdzLFxuXHRUcmltZXNoOiAoYXJnczogVHJpbWVzaEFyZ3MpID0+IGFyZ3MsXG5cdEN5bGluZGVyOiAoXzogQ3lsaW5kZXJBcmdzID0gW10pID0+IFtdLFxuXHRIZWlnaHRmaWVsZDogKGFyZ3M6IEhlaWdodGZpZWxkQXJncykgPT4gYXJncyxcblx0Q29udmV4UG9seWhlZHJvbjogKFt2ZXJ0aWNlcywgZmFjZXMsIG5vcm1hbHMsIGF4ZXMsIGJvdW5kaW5nU3BoZXJlUmFkaXVzXTogQ29udmV4UG9seWhlZHJvbkFyZ3MgPSBbXSkgPT4gW1xuXHRcdHZlcnRpY2VzICYmIHZlcnRpY2VzLm1hcChtYWtlVHJpcGxldCksXG5cdFx0ZmFjZXMsXG5cdFx0bm9ybWFscyAmJiBub3JtYWxzLm1hcChtYWtlVHJpcGxldCksXG5cdFx0YXhlcyAmJiBheGVzLm1hcChtYWtlVHJpcGxldCksXG5cdFx0Ym91bmRpbmdTcGhlcmVSYWRpdXMsXG5cdF0sXG5cdFBhcnRpY2xlOiAoXzogUGFydGljbGVQcm9wc1snYXJncyddKSA9PiBbXSxcblx0U3BoZXJlOiAoYXJnczogU3BoZXJlQXJncyA9IFsxXSkgPT4ge1xuXHRcdGlmICghQXJyYXkuaXNBcnJheShhcmdzKSkgdGhyb3cgbmV3IEVycm9yKCdTcGhlcmUgYm9keSBhcmdzIG11c3QgYmUgYW4gYXJyYXknKTtcblx0XHRyZXR1cm4gW2FyZ3NbMF1dO1xuXHR9LFxuXHRDb21wb3VuZDogKGFyZ3M6IENvbXBvdW5kQm9keVByb3BzWydhcmdzJ10pID0+IGFyZ3MsXG59O1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci10aHJlZS1jYW5ub24tY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2FuZ3VsYXItdGhyZWUtY2Fubm9uLWNvbnN0cmFpbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './lib/constraint';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9jb25zdHJhaW50L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvY29uc3RyYWludCc7XG4iXX0=
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { computed, effect, inject, isSignal, signal, untracked } from '@angular/core';
|
|
2
|
+
import { makeId, resolveRef } from 'angular-three';
|
|
3
|
+
import { NgtcPhysics } from 'angular-three-cannon';
|
|
4
|
+
import { assertInjector } from 'ngxtension/assert-injector';
|
|
5
|
+
function createInjectConstraint(type) {
|
|
6
|
+
return (bodyA, bodyB, options) => injectConstraint(type, bodyA, bodyB, options);
|
|
7
|
+
}
|
|
8
|
+
function injectConstraint(type, bodyA, bodyB, { injector, options = {}, disableOnStart = false, } = {}) {
|
|
9
|
+
return assertInjector(injectConstraint, injector, () => {
|
|
10
|
+
const physics = inject(NgtcPhysics, { optional: true });
|
|
11
|
+
if (!physics) {
|
|
12
|
+
throw new Error(`[NGT Cannon] injectConstraint was called outside of <ngtc-physics>`);
|
|
13
|
+
}
|
|
14
|
+
const worker = physics.api.worker;
|
|
15
|
+
const uuid = makeId();
|
|
16
|
+
const bodyARef = isSignal(bodyA) ? bodyA : signal(bodyA);
|
|
17
|
+
const bodyBRef = isSignal(bodyB) ? bodyB : signal(bodyB);
|
|
18
|
+
const bodyAValue = computed(() => resolveRef(bodyARef()));
|
|
19
|
+
const bodyBValue = computed(() => resolveRef(bodyBRef()));
|
|
20
|
+
const api = computed(() => {
|
|
21
|
+
const _worker = worker();
|
|
22
|
+
if (!_worker)
|
|
23
|
+
return null;
|
|
24
|
+
const enableDisable = {
|
|
25
|
+
disable: () => _worker.disableConstraint({ uuid }),
|
|
26
|
+
enable: () => _worker.enableConstraint({ uuid }),
|
|
27
|
+
remove: () => _worker.removeConstraint({ uuid }),
|
|
28
|
+
};
|
|
29
|
+
if (type === 'Hinge') {
|
|
30
|
+
return {
|
|
31
|
+
...enableDisable,
|
|
32
|
+
disableMotor: () => _worker.disableConstraintMotor({ uuid }),
|
|
33
|
+
enableMotor: () => _worker.enableConstraintMotor({ uuid }),
|
|
34
|
+
setMotorMaxForce: (value) => _worker.setConstraintMotorMaxForce({ props: value, uuid }),
|
|
35
|
+
setMotorSpeed: (value) => _worker.setConstraintMotorSpeed({ props: value, uuid }),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return enableDisable;
|
|
39
|
+
});
|
|
40
|
+
let alreadyDisabled = false;
|
|
41
|
+
effect((onCleanup) => {
|
|
42
|
+
const currentWorker = worker();
|
|
43
|
+
if (!currentWorker)
|
|
44
|
+
return;
|
|
45
|
+
const [a, b] = [bodyAValue(), bodyBValue()];
|
|
46
|
+
if (!a || !b)
|
|
47
|
+
return;
|
|
48
|
+
currentWorker.addConstraint({
|
|
49
|
+
props: [a.uuid, b.uuid, options],
|
|
50
|
+
type,
|
|
51
|
+
uuid,
|
|
52
|
+
});
|
|
53
|
+
if (disableOnStart && !alreadyDisabled) {
|
|
54
|
+
alreadyDisabled = true;
|
|
55
|
+
untracked(api)?.disable();
|
|
56
|
+
}
|
|
57
|
+
onCleanup(() => currentWorker.removeConstraint({ uuid }));
|
|
58
|
+
});
|
|
59
|
+
return api;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
export const injectPointToPoint = createInjectConstraint('PointToPoint');
|
|
63
|
+
export const injectConeTwist = createInjectConstraint('ConeTwist');
|
|
64
|
+
export const injectDistance = createInjectConstraint('Distance');
|
|
65
|
+
export const injectLock = createInjectConstraint('Lock');
|
|
66
|
+
export const injectHinge = createInjectConstraint('Hinge');
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RyYWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2Fubm9uL2NvbnN0cmFpbnQvc3JjL2xpYi9jb25zdHJhaW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTcEgsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQWtDNUQsU0FBUyxzQkFBc0IsQ0FBZ0QsSUFBaUI7SUFDL0YsT0FBTyxDQUNOLEtBQWdFLEVBQ2hFLEtBQWdFLEVBQ2hFLE9BQTRDLEVBQzNDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBb0IsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkUsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBS3hCLElBQWlCLEVBQ2pCLEtBQWdFLEVBQ2hFLEtBQWdFLEVBQ2hFLEVBQ0MsUUFBUSxFQUNSLE9BQU8sR0FBRyxFQUEyQyxFQUNyRCxjQUFjLEdBQUcsS0FBSyxNQUNpQixFQUFFO0lBRTFDLE9BQU8sY0FBYyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN2RixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsT0FB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QzNCLENBQUM7WUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUM7SUFDWixDQUFDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN6RSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsc0JBQXNCLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQ2pFLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLCBJbmplY3RvciwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBzaWduYWwsIHVudHJhY2tlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcblx0Q29uZVR3aXN0Q29uc3RyYWludE9wdHMsXG5cdENvbnN0cmFpbnRUeXBlcyxcblx0RGlzdGFuY2VDb25zdHJhaW50T3B0cyxcblx0SGluZ2VDb25zdHJhaW50T3B0cyxcblx0TG9ja0NvbnN0cmFpbnRPcHRzLFxuXHRQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cyxcbn0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBtYWtlSWQsIHJlc29sdmVSZWYgfSBmcm9tICdhbmd1bGFyLXRocmVlJztcbmltcG9ydCB7IE5ndGNQaHlzaWNzIH0gZnJvbSAnYW5ndWxhci10aHJlZS1jYW5ub24nO1xuaW1wb3J0IHsgYXNzZXJ0SW5qZWN0b3IgfSBmcm9tICduZ3h0ZW5zaW9uL2Fzc2VydC1pbmplY3Rvcic7XG5pbXBvcnQgeyBPYmplY3QzRCB9IGZyb20gJ3RocmVlJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3RjQ29uc3RyYWludEFwaSB7XG5cdGRpc2FibGU6ICgpID0+IHZvaWQ7XG5cdGVuYWJsZTogKCkgPT4gdm9pZDtcblx0cmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ndGNIaW5nZUNvbnN0cmFpbnRBcGkgZXh0ZW5kcyBOZ3RjQ29uc3RyYWludEFwaSB7XG5cdGRpc2FibGVNb3RvcjogKCkgPT4gdm9pZDtcblx0ZW5hYmxlTW90b3I6ICgpID0+IHZvaWQ7XG5cdHNldE1vdG9yTWF4Rm9yY2U6ICh2YWx1ZTogbnVtYmVyKSA9PiB2b2lkO1xuXHRzZXRNb3RvclNwZWVkOiAodmFsdWU6IG51bWJlcikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgTmd0Y0NvbnN0cmFpbnRPUkhpbmdlQXBpPFQgZXh0ZW5kcyAnSGluZ2UnIHwgQ29uc3RyYWludFR5cGVzPiA9IFQgZXh0ZW5kcyBDb25zdHJhaW50VHlwZXNcblx0PyBOZ3RjQ29uc3RyYWludEFwaVxuXHQ6IE5ndGNIaW5nZUNvbnN0cmFpbnRBcGk7XG5cbmV4cG9ydCB0eXBlIE5ndGNDb25zdHJhaW50T3B0aW9uc01hcCA9IHtcblx0Q29uZVR3aXN0OiBDb25lVHdpc3RDb25zdHJhaW50T3B0cztcblx0UG9pbnRUb1BvaW50OiBQb2ludFRvUG9pbnRDb25zdHJhaW50T3B0cztcblx0RGlzdGFuY2U6IERpc3RhbmNlQ29uc3RyYWludE9wdHM7XG5cdExvY2s6IExvY2tDb25zdHJhaW50T3B0cztcblx0SGluZ2U6IEhpbmdlQ29uc3RyYWludE9wdHM7XG59O1xuXG5leHBvcnQgdHlwZSBOZ3RjQ29uc3RyYWludE9wdGlvbnM8VENvbnN0cmFpbnRUeXBlIGV4dGVuZHMgJ0hpbmdlJyB8IENvbnN0cmFpbnRUeXBlcz4gPSB7XG5cdGluamVjdG9yPzogSW5qZWN0b3I7XG5cdGRpc2FibGVPblN0YXJ0PzogYm9vbGVhbjtcblx0b3B0aW9ucz86IE5ndGNDb25zdHJhaW50T3B0aW9uc01hcFtUQ29uc3RyYWludFR5cGVdO1xufTtcblxuZnVuY3Rpb24gY3JlYXRlSW5qZWN0Q29uc3RyYWludDxUQ29uc3RyYWludCBleHRlbmRzIENvbnN0cmFpbnRUeXBlcyB8ICdIaW5nZSc+KHR5cGU6IFRDb25zdHJhaW50KSB7XG5cdHJldHVybiA8QSBleHRlbmRzIE9iamVjdDNEID0gT2JqZWN0M0QsIEIgZXh0ZW5kcyBPYmplY3QzRCA9IE9iamVjdDNEPihcblx0XHRib2R5QTogRWxlbWVudFJlZjxBPiB8IEEgfCBTaWduYWw8RWxlbWVudFJlZjxBPiB8IEEgfCB1bmRlZmluZWQ+LFxuXHRcdGJvZHlCOiBFbGVtZW50UmVmPEI+IHwgQiB8IFNpZ25hbDxFbGVtZW50UmVmPEI+IHwgQiB8IHVuZGVmaW5lZD4sXG5cdFx0b3B0aW9ucz86IE5ndGNDb25zdHJhaW50T3B0aW9uczxUQ29uc3RyYWludD4sXG5cdCkgPT4gaW5qZWN0Q29uc3RyYWludDxUQ29uc3RyYWludCwgQSwgQj4odHlwZSwgYm9keUEsIGJvZHlCLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0Q29uc3RyYWludDxcblx0VENvbnN0cmFpbnQgZXh0ZW5kcyBDb25zdHJhaW50VHlwZXMgfCAnSGluZ2UnLFxuXHRBIGV4dGVuZHMgT2JqZWN0M0QgPSBPYmplY3QzRCxcblx0QiBleHRlbmRzIE9iamVjdDNEID0gT2JqZWN0M0QsXG4+KFxuXHR0eXBlOiBUQ29uc3RyYWludCxcblx0Ym9keUE6IEVsZW1lbnRSZWY8QT4gfCBBIHwgU2lnbmFsPEVsZW1lbnRSZWY8QT4gfCBBIHwgdW5kZWZpbmVkPixcblx0Ym9keUI6IEVsZW1lbnRSZWY8Qj4gfCBCIHwgU2lnbmFsPEVsZW1lbnRSZWY8Qj4gfCBCIHwgdW5kZWZpbmVkPixcblx0e1xuXHRcdGluamVjdG9yLFxuXHRcdG9wdGlvbnMgPSB7fSBhcyBOZ3RjQ29uc3RyYWludE9wdGlvbnNNYXBbVENvbnN0cmFpbnRdLFxuXHRcdGRpc2FibGVPblN0YXJ0ID0gZmFsc2UsXG5cdH06IE5ndGNDb25zdHJhaW50T3B0aW9uczxUQ29uc3RyYWludD4gPSB7fSxcbikge1xuXHRyZXR1cm4gYXNzZXJ0SW5qZWN0b3IoaW5qZWN0Q29uc3RyYWludCwgaW5qZWN0b3IsICgpID0+IHtcblx0XHRjb25zdCBwaHlzaWNzID0gaW5qZWN0KE5ndGNQaHlzaWNzLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG5cdFx0aWYgKCFwaHlzaWNzKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYFtOR1QgQ2Fubm9uXSBpbmplY3RDb25zdHJhaW50IHdhcyBjYWxsZWQgb3V0c2lkZSBvZiA8bmd0Yy1waHlzaWNzPmApO1xuXHRcdH1cblxuXHRcdGNvbnN0IHdvcmtlciA9IHBoeXNpY3MuYXBpLndvcmtlcjtcblxuXHRcdGNvbnN0IHV1aWQgPSBtYWtlSWQoKTtcblx0XHRjb25zdCBib2R5QVJlZiA9IGlzU2lnbmFsKGJvZHlBKSA/IGJvZHlBIDogc2lnbmFsKGJvZHlBKTtcblx0XHRjb25zdCBib2R5QlJlZiA9IGlzU2lnbmFsKGJvZHlCKSA/IGJvZHlCIDogc2lnbmFsKGJvZHlCKTtcblx0XHRjb25zdCBib2R5QVZhbHVlID0gY29tcHV0ZWQoKCkgPT4gcmVzb2x2ZVJlZihib2R5QVJlZigpKSk7XG5cdFx0Y29uc3QgYm9keUJWYWx1ZSA9IGNvbXB1dGVkKCgpID0+IHJlc29sdmVSZWYoYm9keUJSZWYoKSkpO1xuXG5cdFx0Y29uc3QgYXBpID0gY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgX3dvcmtlciA9IHdvcmtlcigpO1xuXHRcdFx0aWYgKCFfd29ya2VyKSByZXR1cm4gbnVsbDtcblxuXHRcdFx0Y29uc3QgZW5hYmxlRGlzYWJsZSA9IHtcblx0XHRcdFx0ZGlzYWJsZTogKCkgPT4gX3dvcmtlci5kaXNhYmxlQ29uc3RyYWludCh7IHV1aWQgfSksXG5cdFx0XHRcdGVuYWJsZTogKCkgPT4gX3dvcmtlci5lbmFibGVDb25zdHJhaW50KHsgdXVpZCB9KSxcblx0XHRcdFx0cmVtb3ZlOiAoKSA9PiBfd29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pLFxuXHRcdFx0fTtcblx0XHRcdGlmICh0eXBlID09PSAnSGluZ2UnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Li4uZW5hYmxlRGlzYWJsZSxcblx0XHRcdFx0XHRkaXNhYmxlTW90b3I6ICgpID0+IF93b3JrZXIuZGlzYWJsZUNvbnN0cmFpbnRNb3Rvcih7IHV1aWQgfSksXG5cdFx0XHRcdFx0ZW5hYmxlTW90b3I6ICgpID0+IF93b3JrZXIuZW5hYmxlQ29uc3RyYWludE1vdG9yKHsgdXVpZCB9KSxcblx0XHRcdFx0XHRzZXRNb3Rvck1heEZvcmNlOiAodmFsdWU6IG51bWJlcikgPT4gX3dvcmtlci5zZXRDb25zdHJhaW50TW90b3JNYXhGb3JjZSh7IHByb3BzOiB2YWx1ZSwgdXVpZCB9KSxcblx0XHRcdFx0XHRzZXRNb3RvclNwZWVkOiAodmFsdWU6IG51bWJlcikgPT4gX3dvcmtlci5zZXRDb25zdHJhaW50TW90b3JTcGVlZCh7IHByb3BzOiB2YWx1ZSwgdXVpZCB9KSxcblx0XHRcdFx0fSBhcyBOZ3RjSGluZ2VDb25zdHJhaW50QXBpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGVuYWJsZURpc2FibGUgYXMgTmd0Y0NvbnN0cmFpbnRBcGk7XG5cdFx0fSk7XG5cblx0XHRsZXQgYWxyZWFkeURpc2FibGVkID0gZmFsc2U7XG5cdFx0ZWZmZWN0KChvbkNsZWFudXApID0+IHtcblx0XHRcdGNvbnN0IGN1cnJlbnRXb3JrZXIgPSB3b3JrZXIoKTtcblx0XHRcdGlmICghY3VycmVudFdvcmtlcikgcmV0dXJuO1xuXG5cdFx0XHRjb25zdCBbYSwgYl0gPSBbYm9keUFWYWx1ZSgpLCBib2R5QlZhbHVlKCldO1xuXHRcdFx0aWYgKCFhIHx8ICFiKSByZXR1cm47XG5cblx0XHRcdGN1cnJlbnRXb3JrZXIuYWRkQ29uc3RyYWludCh7XG5cdFx0XHRcdHByb3BzOiBbYS51dWlkLCBiLnV1aWQsIG9wdGlvbnNdLFxuXHRcdFx0XHR0eXBlLFxuXHRcdFx0XHR1dWlkLFxuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChkaXNhYmxlT25TdGFydCAmJiAhYWxyZWFkeURpc2FibGVkKSB7XG5cdFx0XHRcdGFscmVhZHlEaXNhYmxlZCA9IHRydWU7XG5cdFx0XHRcdHVudHJhY2tlZChhcGkpPy5kaXNhYmxlKCk7XG5cdFx0XHR9XG5cblx0XHRcdG9uQ2xlYW51cCgoKSA9PiBjdXJyZW50V29ya2VyLnJlbW92ZUNvbnN0cmFpbnQoeyB1dWlkIH0pKTtcblx0XHR9KTtcblxuXHRcdHJldHVybiBhcGk7XG5cdH0pO1xufVxuXG5leHBvcnQgY29uc3QgaW5qZWN0UG9pbnRUb1BvaW50ID0gY3JlYXRlSW5qZWN0Q29uc3RyYWludCgnUG9pbnRUb1BvaW50Jyk7XG5leHBvcnQgY29uc3QgaW5qZWN0Q29uZVR3aXN0ID0gY3JlYXRlSW5qZWN0Q29uc3RyYWludCgnQ29uZVR3aXN0Jyk7XG5leHBvcnQgY29uc3QgaW5qZWN0RGlzdGFuY2UgPSBjcmVhdGVJbmplY3RDb25zdHJhaW50KCdEaXN0YW5jZScpO1xuZXhwb3J0IGNvbnN0IGluamVjdExvY2sgPSBjcmVhdGVJbmplY3RDb25zdHJhaW50KCdMb2NrJyk7XG5leHBvcnQgY29uc3QgaW5qZWN0SGluZ2UgPSBjcmVhdGVJbmplY3RDb25zdHJhaW50KCdIaW5nZScpO1xuIl19
|
|
@@ -1,97 +1,82 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Directive, afterNextRender, inject, input } from '@angular/core';
|
|
2
2
|
import { propsToBody } from '@pmndrs/cannon-worker-api';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { injectBeforeRender, injectStore } from 'angular-three';
|
|
4
|
+
import { NgtcPhysics } from 'angular-three-cannon';
|
|
5
5
|
import CannonDebugger from 'cannon-es-debugger';
|
|
6
|
-
import
|
|
6
|
+
import { mergeInputs } from 'ngxtension/inject-inputs';
|
|
7
|
+
import { InstancedMesh, Matrix4, Quaternion, Scene, Vector3 } from 'three';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
|
-
const q = new
|
|
9
|
-
const s = new
|
|
10
|
-
const v = new
|
|
11
|
-
const m = new
|
|
9
|
+
const q = new Quaternion();
|
|
10
|
+
const s = new Vector3(1, 1, 1);
|
|
11
|
+
const v = new Vector3();
|
|
12
|
+
const m = new Matrix4();
|
|
12
13
|
function getMatrix(o) {
|
|
13
|
-
if (o instanceof
|
|
14
|
+
if (o instanceof InstancedMesh) {
|
|
14
15
|
o.getMatrixAt(parseInt(o.uuid.split('/')[1]), m);
|
|
15
16
|
return m;
|
|
16
17
|
}
|
|
17
18
|
return o.matrix;
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const defaultOptions = {
|
|
21
|
+
enabled: true,
|
|
22
|
+
scale: 1,
|
|
23
|
+
color: 'black',
|
|
24
|
+
impl: CannonDebugger,
|
|
25
|
+
};
|
|
23
26
|
export class NgtcDebug {
|
|
24
27
|
constructor() {
|
|
25
|
-
this.
|
|
26
|
-
this.
|
|
27
|
-
this.
|
|
28
|
-
this.
|
|
28
|
+
this.store = injectStore();
|
|
29
|
+
this.physics = inject(NgtcPhysics);
|
|
30
|
+
this.debug = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
|
|
31
|
+
this.defaultScene = this.store.select('scene');
|
|
32
|
+
this.scene = new Scene();
|
|
29
33
|
this.bodies = [];
|
|
30
34
|
this.bodyMap = {};
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
this.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
remove: (id) => {
|
|
40
|
-
const debugBodyIndex = this.bodies.indexOf(this.bodyMap[id]);
|
|
41
|
-
if (debugBodyIndex > -1)
|
|
42
|
-
this.bodies.splice(debugBodyIndex, 1);
|
|
43
|
-
delete this.bodyMap[id];
|
|
44
|
-
},
|
|
45
|
-
};
|
|
35
|
+
this.api = {};
|
|
36
|
+
afterNextRender(() => {
|
|
37
|
+
this.defaultScene().add(this.scene);
|
|
38
|
+
this.cannonDebugger = this.debug().impl(this.scene, { bodies: this.bodies }, {
|
|
39
|
+
color: this.debug().color,
|
|
40
|
+
scale: this.debug().scale,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
46
43
|
injectBeforeRender(() => {
|
|
47
44
|
if (!this.cannonDebugger)
|
|
48
45
|
return;
|
|
49
|
-
const refs = this.
|
|
46
|
+
const refs = this.physics.api.refs;
|
|
50
47
|
for (const uuid in this.bodyMap) {
|
|
51
|
-
|
|
52
|
-
this.bodyMap[uuid]
|
|
53
|
-
|
|
48
|
+
const ref = refs[uuid];
|
|
49
|
+
const body = this.bodyMap[uuid];
|
|
50
|
+
if (ref) {
|
|
51
|
+
getMatrix(ref).decompose(v, q, s);
|
|
52
|
+
body.position.copy(v);
|
|
53
|
+
body.quaternion.copy(q);
|
|
54
|
+
}
|
|
54
55
|
}
|
|
55
56
|
for (const child of this.scene.children) {
|
|
56
|
-
child.visible =
|
|
57
|
+
child.visible = this.debug().enabled;
|
|
57
58
|
}
|
|
58
|
-
if (
|
|
59
|
+
if (this.debug().enabled) {
|
|
59
60
|
this.cannonDebugger.update();
|
|
60
61
|
}
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
add(uuid, props, type) {
|
|
65
|
+
const body = propsToBody({ uuid, props, type });
|
|
66
|
+
this.bodies.push(body);
|
|
67
|
+
this.bodyMap[uuid] = body;
|
|
68
|
+
}
|
|
69
|
+
remove(uuid) {
|
|
70
|
+
const debugBodyIndex = this.bodies.indexOf(this.bodyMap[uuid]);
|
|
71
|
+
if (debugBodyIndex > -1)
|
|
72
|
+
this.bodies.splice(debugBodyIndex, 1);
|
|
73
|
+
delete this.bodyMap[uuid];
|
|
68
74
|
}
|
|
69
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
70
|
-
static { this.ɵ
|
|
71
|
-
<ngt-primitive *args="[scene]" />
|
|
72
|
-
<ng-content />
|
|
73
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgtArgs, selector: "ng-template[args]", inputs: ["args"] }] }); }
|
|
75
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtcDebug, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
76
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.0", type: NgtcDebug, isStandalone: true, selector: "ngtc-physics[debug]", inputs: { debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
74
77
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
76
|
-
type:
|
|
77
|
-
args: [{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
template: `
|
|
81
|
-
<ngt-primitive *args="[scene]" />
|
|
82
|
-
<ng-content />
|
|
83
|
-
`,
|
|
84
|
-
providers: [provideNgtcPhysicsApi()],
|
|
85
|
-
imports: [NgtArgs],
|
|
86
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
87
|
-
}]
|
|
88
|
-
}], ctorParameters: function () { return []; }, propDecorators: { color: [{
|
|
89
|
-
type: Input
|
|
90
|
-
}], scale: [{
|
|
91
|
-
type: Input
|
|
92
|
-
}], impl: [{
|
|
93
|
-
type: Input
|
|
94
|
-
}], disabled: [{
|
|
95
|
-
type: Input
|
|
96
|
-
}] } });
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvbGliL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBZSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsV0FBVyxFQUFzQyxNQUFNLDJCQUEyQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFbkYsT0FBTyxjQUFjLE1BQU0sb0JBQW9CLENBQUM7QUFDaEQsT0FBTyxLQUFLLEtBQUssTUFBTSxPQUFPLENBQUM7O0FBRS9CLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ2pDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQzlCLE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRTlCLFNBQVMsU0FBUyxDQUFDLENBQWlCO0lBQ25DLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxhQUFhLEVBQUU7UUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNqRCxPQUFPLENBQUMsQ0FBQztLQUNUO0lBQ0QsT0FBTyxD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RUFBRSxJQUFJLENBQUMsTUFBTSxFQUFXLEVBQUU7WUFDN0UsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNqQixDQUFDLENBQUM7SUFDSixDQUFDOzhHQXBEVyxTQUFTO2tHQUFULFNBQVMseUlBSlYsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLDBCQUoxQjs7O0VBR1QsNERBRVMsT0FBTzs7MkZBR0wsU0FBUztrQkFYckIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUUsWUFBWTtvQkFDdEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRTs7O0VBR1Q7b0JBQ0QsU0FBUyxFQUFFLENBQUMscUJBQXFCLEVBQUUsQ0FBQztvQkFDcEMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO29CQUNsQixPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDakM7MEVBRVMsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ1VTVE9NX0VMRU1FTlRTX1NDSEVNQSwgZm9yd2FyZFJlZiwgSW5wdXQsIHR5cGUgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBwcm9wc1RvQm9keSwgdHlwZSBCb2R5UHJvcHMsIHR5cGUgQm9keVNoYXBlVHlwZSB9IGZyb20gJ0BwbW5kcnMvY2Fubm9uLXdvcmtlci1hcGknO1xuaW1wb3J0IHsgY3JlYXRlSW5qZWN0aW9uVG9rZW4sIGluamVjdEJlZm9yZVJlbmRlciwgTmd0QXJncyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUnO1xuaW1wb3J0IHsgaW5qZWN0Tmd0Y1BoeXNpY3NBcGksIHByb3ZpZGVOZ3RjUGh5c2ljc0FwaSB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB0eXBlIHsgQm9keSwgUXVhdGVybmlvbiBhcyBDUXVhcnRlcm5pb24sIFZlYzMsIFdvcmxkIH0gZnJvbSAnY2Fubm9uLWVzJztcbmltcG9ydCBDYW5ub25EZWJ1Z2dlciBmcm9tICdjYW5ub24tZXMtZGVidWdnZXInO1xuaW1wb3J0ICogYXMgVEhSRUUgZnJvbSAndGhyZWUnO1xuXG5jb25zdCBxID0gbmV3IFRIUkVFLlF1YXRlcm5pb24oKTtcbmNvbnN0IHMgPSBuZXcgVEhSRUUuVmVjdG9yMygxLCAxLCAxKTtcbmNvbnN0IHYgPSBuZXcgVEhSRUUuVmVjdG9yMygpO1xuY29uc3QgbSA9IG5ldyBUSFJFRS5NYXRyaXg0KCk7XG5cbmZ1bmN0aW9uIGdldE1hdHJpeChvOiBUSFJFRS5PYmplY3QzRCk6IFRIUkVFLk1hdHJpeDQge1xuXHRpZiAobyBpbnN0YW5jZW9mIFRIUkVFLkluc3RhbmNlZE1lc2gpIHtcblx0XHRvLmdldE1hdHJpeEF0KHBhcnNlSW50KG8udXVpZC5zcGxpdCgnLycpWzFdKSwgbSk7XG5cdFx0cmV0dXJuIG07XG5cdH1cblx0cmV0dXJuIG8ubWF0cml4O1xufVxuXG5leHBvcnQgY29uc3QgW2luamVjdE5ndGNEZWJ1Z0FwaSwgcHJvdmlkZU5ndGNEZWJ1Z0FwaV0gPSBjcmVhdGVJbmplY3Rpb25Ub2tlbigoZGVidWc6IE5ndGNEZWJ1ZykgPT4gZGVidWcuYXBpLCB7XG5cdGlzUm9vdDogZmFsc2UsXG5cdGRlcHM6IFtmb3J3YXJkUmVmKCgpID0+IE5ndGNEZWJ1ZyldLFxufSk7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ25ndGMtZGVidWcnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZTogYFxuXHRcdDxuZ3QtcHJpbWl0aXZlICphcmdzPVwiW3NjZW5lXVwiIC8+XG5cdFx0PG5nLWNvbnRlbnQgLz5cblx0YCxcblx0cHJvdmlkZXJzOiBbcHJvdmlkZU5ndGNQaHlzaWNzQXBpKCldLFxuXHRpbXBvcnRzOiBbTmd0QXJnc10sXG5cdHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd0Y0RlYnVnIGltcGxlbWVudHMgT25Jbml0IHtcblx0QElucHV0KCkgY29sb3IgPSAnYmxhY2snO1xuXHRASW5wdXQoKSBzY2FsZSA9IDE7XG5cdEBJbnB1dCgpIGltcGwgPSBDYW5ub25EZWJ1Z2dlcjtcblx0QElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuXHRwcml2YXRlIGJvZGllczogQm9keVtdID0gW107XG5cdHByaXZhdGUgYm9keU1hcDogUmVjb3JkPHN0cmluZywgQm9keT4gPSB7fTtcblxuXHRwcml2YXRlIHBoeXNpY3NBcGkgPSBpbmplY3ROZ3RjUGh5c2ljc0FwaSgpO1xuXG5cdHNjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7XG5cdHByaXZhdGUgY2Fubm9uRGVidWdnZXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBDYW5ub25EZWJ1Z2dlcj47XG5cblx0YXBpID0ge1xuXHRcdGFkZDogKHV1aWQ6IHN0cmluZywgcHJvcHM6IEJvZHlQcm9wcywgdHlwZTogQm9keVNoYXBlVHlwZSkgPT4ge1xuXHRcdFx0Y29uc3QgYm9keSA9IHByb3BzVG9Cb2R5KHsgdXVpZCwgcHJvcHMsIHR5cGUgfSk7XG5cdFx0XHR0aGlzLmJvZGllcy5wdXNoKGJvZHkpO1xuXHRcdFx0dGhpcy5ib2R5TWFwW3V1aWRdID0gYm9keTtcblx0XHR9LFxuXHRcdHJlbW92ZTogKGlkOiBzdHJpbmcpID0+IHtcblx0XHRcdGNvbnN0IGRlYnVnQm9keUluZGV4ID0gdGhpcy5ib2RpZXMuaW5kZXhPZih0aGlzLmJvZHlNYXBbaWRdKTtcblx0XHRcdGlmIChkZWJ1Z0JvZHlJbmRleCA+IC0xKSB0aGlzLmJvZGllcy5zcGxpY2UoZGVidWdCb2R5SW5kZXgsIDEpO1xuXHRcdFx0ZGVsZXRlIHRoaXMuYm9keU1hcFtpZF07XG5cdFx0fSxcblx0fTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLmNhbm5vbkRlYnVnZ2VyKSByZXR1cm47XG5cdFx0XHRjb25zdCByZWZzID0gdGhpcy5waHlzaWNzQXBpLmdldCgncmVmcycpO1xuXHRcdFx0Zm9yIChjb25zdCB1dWlkIGluIHRoaXMuYm9keU1hcCkge1xuXHRcdFx0XHRnZXRNYXRyaXgocmVmc1t1dWlkXSkuZGVjb21wb3NlKHYsIHEsIHMpO1xuXHRcdFx0XHR0aGlzLmJvZHlNYXBbdXVpZF0ucG9zaXRpb24uY29weSh2IGFzIHVua25vd24gYXMgVmVjMyk7XG5cdFx0XHRcdHRoaXMuYm9keU1hcFt1dWlkXS5xdWF0ZXJuaW9uLmNvcHkocSBhcyB1bmtub3duIGFzIENRdWFydGVybmlvbik7XG5cdFx0XHR9XG5cblx0XHRcdGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5zY2VuZS5jaGlsZHJlbikge1xuXHRcdFx0XHRjaGlsZC52aXNpYmxlID0gIXRoaXMuZGlzYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGhpcy5kaXNhYmxlZCkge1xuXHRcdFx0XHR0aGlzLmNhbm5vbkRlYnVnZ2VyLnVwZGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0dGhpcy5jYW5ub25EZWJ1Z2dlciA9IHRoaXMuaW1wbCh0aGlzLnNjZW5lLCB7IGJvZGllczogdGhpcy5ib2RpZXMgfSBhcyBXb3JsZCwge1xuXHRcdFx0Y29sb3I6IHRoaXMuY29sb3IsXG5cdFx0XHRzY2FsZTogdGhpcy5zY2FsZSxcblx0XHR9KTtcblx0fVxufVxuIl19
|
|
78
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: NgtcDebug, decorators: [{
|
|
79
|
+
type: Directive,
|
|
80
|
+
args: [{ selector: 'ngtc-physics[debug]', standalone: true }]
|
|
81
|
+
}], ctorParameters: () => [] });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nhbm5vbi9kZWJ1Zy9zcmMvbGliL2RlYnVnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUE0QixXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCxPQUFPLGNBQWMsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQVksVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUM7O0FBRXJGLE1BQU0sQ0FBQyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7QUFDM0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixNQUFNLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ3hCLE1BQU0sQ0FBQyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7QUFDeEIsU0FBUyxTQUFTLENBQUMsQ0FBVztJQUM3QixJQUFJLENBQUMsWUFBWSxhQUFhLEVBQUUsQ0FBQztRQUNoQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE9BQU8sQ0FBQyxDQUFDO0lB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LElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBWTtRQUNsQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDL0QsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO1lBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzQixDQUFDOzhHQXpEVyxTQUFTO2tHQUFULFNBQVM7OzJGQUFULFNBQVM7a0JBRHJCLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgYWZ0ZXJOZXh0UmVuZGVyLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCb2R5UHJvcHMsIEJvZHlTaGFwZVR5cGUsIHByb3BzVG9Cb2R5IH0gZnJvbSAnQHBtbmRycy9jYW5ub24td29ya2VyLWFwaSc7XG5pbXBvcnQgeyBpbmplY3RCZWZvcmVSZW5kZXIsIGluamVjdFN0b3JlIH0gZnJvbSAnYW5ndWxhci10aHJlZSc7XG5pbXBvcnQgeyBOZ3RjUGh5c2ljcyB9IGZyb20gJ2FuZ3VsYXItdGhyZWUtY2Fubm9uJztcbmltcG9ydCB7IEJvZHksIFF1YXRlcm5pb24gYXMgQ1F1YXJ0ZXJuaW9uLCBWZWMzLCBXb3JsZCB9IGZyb20gJ2Nhbm5vbi1lcyc7XG5pbXBvcnQgQ2Fubm9uRGVidWdnZXIgZnJvbSAnY2Fubm9uLWVzLWRlYnVnZ2VyJztcbmltcG9ydCB7IG1lcmdlSW5wdXRzIH0gZnJvbSAnbmd4dGVuc2lvbi9pbmplY3QtaW5wdXRzJztcbmltcG9ydCB7IEluc3RhbmNlZE1lc2gsIE1hdHJpeDQsIE9iamVjdDNELCBRdWF0ZXJuaW9uLCBTY2VuZSwgVmVjdG9yMyB9IGZyb20gJ3RocmVlJztcblxuY29uc3QgcSA9IG5ldyBRdWF0ZXJuaW9uKCk7XG5jb25zdCBzID0gbmV3IFZlY3RvcjMoMSwgMSwgMSk7XG5jb25zdCB2ID0gbmV3IFZlY3RvcjMoKTtcbmNvbnN0IG0gPSBuZXcgTWF0cml4NCgpO1xuZnVuY3Rpb24gZ2V0TWF0cml4KG86IE9iamVjdDNEKSB7XG5cdGlmIChvIGluc3RhbmNlb2YgSW5zdGFuY2VkTWVzaCkge1xuXHRcdG8uZ2V0TWF0cml4QXQocGFyc2VJbnQoby51dWlkLnNwbGl0KCcvJylbMV0pLCBtKTtcblx0XHRyZXR1cm4gbTtcblx0fVxuXHRyZXR1cm4gby5tYXRyaXg7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmd0Y0RlYnVnSW5wdXRzIHtcblx0ZW5hYmxlZDogYm9vbGVhbjtcblx0Y29sb3I6IHN0cmluZztcblx0aW1wbDogdHlwZW9mIENhbm5vbkRlYnVnZ2VyO1xuXHRzY2FsZTogbnVtYmVyO1xufVxuXG5jb25zdCBkZWZhdWx0T3B0aW9uczogTmd0Y0RlYnVnSW5wdXRzID0ge1xuXHRlbmFibGVkOiB0cnVlLFxuXHRzY2FsZTogMSxcblx0Y29sb3I6ICdibGFjaycsXG5cdGltcGw6IENhbm5vbkRlYnVnZ2VyLFxufTtcblxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnbmd0Yy1waHlzaWNzW2RlYnVnXScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBOZ3RjRGVidWcge1xuXHRwcml2YXRlIHN0b3JlID0gaW5qZWN0U3RvcmUoKTtcblx0cHJpdmF0ZSBwaHlzaWNzID0gaW5qZWN0KE5ndGNQaHlzaWNzKTtcblxuXHRkZWJ1ZyA9IGlucHV0KGRlZmF1bHRPcHRpb25zLCB7IHRyYW5zZm9ybTogbWVyZ2VJbnB1dHMoZGVmYXVsdE9wdGlvbnMpIH0pO1xuXG5cdHByaXZhdGUgZGVmYXVsdFNjZW5lID0gdGhpcy5zdG9yZS5zZWxlY3QoJ3NjZW5lJyk7XG5cblx0cHJpdmF0ZSBzY2VuZSA9IG5ldyBTY2VuZSgpO1xuXHRwcml2YXRlIGJvZGllczogQm9keVtdID0gW107XG5cdHByaXZhdGUgYm9keU1hcDogUmVjb3JkPHN0cmluZywgQm9keT4gPSB7fTtcblxuXHRwcml2YXRlIGNhbm5vbkRlYnVnZ2VyITogUmV0dXJuVHlwZTx0eXBlb2YgQ2Fubm9uRGVidWdnZXI+O1xuXG5cdGFwaSA9IHt9O1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG5cdFx0XHR0aGlzLmRlZmF1bHRTY2VuZSgpLmFkZCh0aGlzLnNjZW5lKTtcblx0XHRcdHRoaXMuY2Fubm9uRGVidWdnZXIgPSB0aGlzLmRlYnVnKCkuaW1wbCh0aGlzLnNjZW5lLCB7IGJvZGllczogdGhpcy5ib2RpZXMgfSBhcyBXb3JsZCwge1xuXHRcdFx0XHRjb2xvcjogdGhpcy5kZWJ1ZygpLmNvbG9yLFxuXHRcdFx0XHRzY2FsZTogdGhpcy5kZWJ1ZygpLnNjYWxlLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpbmplY3RCZWZvcmVSZW5kZXIoKCkgPT4ge1xuXHRcdFx0aWYgKCF0aGlzLmNhbm5vbkRlYnVnZ2VyKSByZXR1cm47XG5cdFx0XHRjb25zdCByZWZzID0gdGhpcy5waHlzaWNzLmFwaS5yZWZzO1xuXHRcdFx0Zm9yIChjb25zdCB1dWlkIGluIHRoaXMuYm9keU1hcCkge1xuXHRcdFx0XHRjb25zdCByZWYgPSByZWZzW3V1aWRdO1xuXHRcdFx0XHRjb25zdCBib2R5ID0gdGhpcy5ib2R5TWFwW3V1aWRdO1xuXHRcdFx0XHRpZiAocmVmKSB7XG5cdFx0XHRcdFx0Z2V0TWF0cml4KHJlZikuZGVjb21wb3NlKHYsIHEsIHMpO1xuXHRcdFx0XHRcdGJvZHkucG9zaXRpb24uY29weSh2IGFzIHVua25vd24gYXMgVmVjMyk7XG5cdFx0XHRcdFx0Ym9keS5xdWF0ZXJuaW9uLmNvcHkocSBhcyB1bmtub3duIGFzIENRdWFydGVybmlvbik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5zY2VuZS5jaGlsZHJlbikge1xuXHRcdFx0XHRjaGlsZC52aXNpYmxlID0gdGhpcy5kZWJ1ZygpLmVuYWJsZWQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLmRlYnVnKCkuZW5hYmxlZCkge1xuXHRcdFx0XHR0aGlzLmNhbm5vbkRlYnVnZ2VyLnVwZGF0ZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0YWRkKHV1aWQ6IHN0cmluZywgcHJvcHM6IEJvZHlQcm9wcywgdHlwZTogQm9keVNoYXBlVHlwZSkge1xuXHRcdGNvbnN0IGJvZHkgPSBwcm9wc1RvQm9keSh7IHV1aWQsIHByb3BzLCB0eXBlIH0pO1xuXHRcdHRoaXMuYm9kaWVzLnB1c2goYm9keSk7XG5cdFx0dGhpcy5ib2R5TWFwW3V1aWRdID0gYm9keTtcblx0fVxuXG5cdHJlbW92ZSh1dWlkOiBzdHJpbmcpIHtcblx0XHRjb25zdCBkZWJ1Z0JvZHlJbmRleCA9IHRoaXMuYm9kaWVzLmluZGV4T2YodGhpcy5ib2R5TWFwW3V1aWRdKTtcblx0XHRpZiAoZGVidWdCb2R5SW5kZXggPiAtMSkgdGhpcy5ib2RpZXMuc3BsaWNlKGRlYnVnQm9keUluZGV4LCAxKTtcblx0XHRkZWxldGUgdGhpcy5ib2R5TWFwW3V1aWRdO1xuXHR9XG59XG4iXX0=
|