@hatiolab/figure-model 0.1.21 → 0.1.23
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/dist/blueprint-shape.d.ts.map +1 -1
- package/dist/blueprint-shape.js +49 -1
- package/dist/blueprint-shape.js.map +1 -1
- package/dist/blueprint.d.ts +7 -0
- package/dist/blueprint.d.ts.map +1 -1
- package/dist/blueprint.js +73 -43
- package/dist/blueprint.js.map +1 -1
- package/dist/grouping.d.ts +43 -2
- package/dist/grouping.d.ts.map +1 -1
- package/dist/grouping.js +60 -4
- package/dist/grouping.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/origin.d.ts +33 -0
- package/dist/origin.d.ts.map +1 -0
- package/dist/origin.js +46 -0
- package/dist/origin.js.map +1 -0
- package/dist/sizing.d.ts +15 -0
- package/dist/sizing.d.ts.map +1 -1
- package/dist/sizing.js +29 -2
- package/dist/sizing.js.map +1 -1
- package/dist/types.d.ts +220 -35
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +70 -14
- package/dist/types.js.map +1 -1
- package/dist/validate.d.ts +0 -6
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +253 -20
- package/dist/validate.js.map +1 -1
- package/dist/visual-evidence.d.ts +1 -1
- package/dist/visual-evidence.d.ts.map +1 -1
- package/dist/visual-evidence.js +3 -1
- package/dist/visual-evidence.js.map +1 -1
- package/docs/format.md +221 -25
- package/docs/validation.md +92 -15
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-shape.d.ts","sourceRoot":"","sources":["../src/blueprint-shape.ts"],"names":[],"mappings":"AAgCA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"blueprint-shape.d.ts","sourceRoot":"","sources":["../src/blueprint-shape.ts"],"names":[],"mappings":"AAgCA;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CA+J1D"}
|
package/dist/blueprint-shape.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*
|
|
17
17
|
* 문제를 찾으면 사람이 읽을 수 있는 사유 목록을 돌려준다. 비어 있으면 읽을 수 있다.
|
|
18
18
|
*/
|
|
19
|
-
import { BLUEPRINT_VERSION, PART_ROLES } from "./types.js";
|
|
19
|
+
import { BLUEPRINT_VERSION, JOINT_TYPES, PART_ROLES } from "./types.js";
|
|
20
20
|
function isFiniteNumber(v) {
|
|
21
21
|
return typeof v === 'number' && Number.isFinite(v);
|
|
22
22
|
}
|
|
@@ -138,9 +138,57 @@ export function blueprintProblems(value) {
|
|
|
138
138
|
if (!parameter?.clip || !Array.isArray(parameter.clip.channels)) {
|
|
139
139
|
problems.push(`${where}.clip.channels 가 배열이 아니다 — 값이 무엇을 움직이는지 없다`);
|
|
140
140
|
}
|
|
141
|
+
else if (parameter.clip.duration !== undefined &&
|
|
142
|
+
!(isFiniteNumber(parameter.clip.duration) && parameter.clip.duration >= 0)) {
|
|
143
|
+
problems.push(`${where}.clip.duration 이 0 이상의 수가 아니다`);
|
|
144
|
+
}
|
|
141
145
|
});
|
|
142
146
|
}
|
|
143
147
|
}
|
|
148
|
+
/*
|
|
149
|
+
Joints (ADR-0066). Optional, like anchors. The runtime builds a node per joint and hangs groups from
|
|
150
|
+
the node a group names, so a group or anchor naming a joint that is not there, a zero axis, or a
|
|
151
|
+
parent that comes later would leave parts in no frame or turn them by nothing. Refused at
|
|
152
|
+
registration instead.
|
|
153
|
+
*/
|
|
154
|
+
if (bp.joints !== undefined) {
|
|
155
|
+
if (!Array.isArray(bp.joints)) {
|
|
156
|
+
problems.push('joints 가 배열이 아니다');
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
const placed = new Set();
|
|
160
|
+
bp.joints.forEach((joint, ji) => {
|
|
161
|
+
const where = `joints[${ji}]`;
|
|
162
|
+
if (typeof joint?.name !== 'string' || joint.name.length === 0) {
|
|
163
|
+
problems.push(`${where}.name 이 없다 — channel 이 이 이름으로 관절을 몬다`);
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
if (!JOINT_TYPES.includes(joint.type)) {
|
|
167
|
+
problems.push(`${where}.type 이 ${JOINT_TYPES.join(' · ')} 가 아니다`);
|
|
168
|
+
}
|
|
169
|
+
if (!isFiniteVec3(joint.origin))
|
|
170
|
+
problems.push(`${where}.origin 이 온전하지 않다`);
|
|
171
|
+
if (!isFiniteVec3(joint.axis) || Math.hypot(joint.axis.x, joint.axis.y, joint.axis.z) === 0) {
|
|
172
|
+
problems.push(`${where}.axis 가 0 이 아닌 벡터가 아니다`);
|
|
173
|
+
}
|
|
174
|
+
if (joint.parent !== undefined && !placed.has(joint.parent)) {
|
|
175
|
+
problems.push(`${where}.parent '${joint.parent}' 가 앞에 없다 — 관절은 부모가 먼저 온다`);
|
|
176
|
+
}
|
|
177
|
+
placed.add(joint.name);
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
const frames = new Set(Array.isArray(bp.joints) ? bp.joints.map(joint => joint?.name) : []);
|
|
182
|
+
bp.groups.forEach((group, gi) => {
|
|
183
|
+
if (group?.joint !== undefined && !frames.has(group.joint)) {
|
|
184
|
+
problems.push(`groups[${gi}].joint '${group.joint}' 가 joints 에 없다`);
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
(Array.isArray(bp.anchors) ? bp.anchors : []).forEach((at, ai) => {
|
|
188
|
+
if (at?.joint !== undefined && !frames.has(at.joint)) {
|
|
189
|
+
problems.push(`anchors[${ai}].joint '${at.joint}' 가 joints 에 없다`);
|
|
190
|
+
}
|
|
191
|
+
});
|
|
144
192
|
return problems;
|
|
145
193
|
}
|
|
146
194
|
//# sourceMappingURL=blueprint-shape.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint-shape.js","sourceRoot":"","sources":["../src/blueprint-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"blueprint-shape.js","sourceRoot":"","sources":["../src/blueprint-shape.ts"],"names":[],"mappings":"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"}
|
package/dist/blueprint.d.ts
CHANGED
|
@@ -62,5 +62,12 @@ export declare function rotatedExtentOf(part: {
|
|
|
62
62
|
export declare function stretchAxisOf(part: {
|
|
63
63
|
transform: PartTransform;
|
|
64
64
|
}): Axis;
|
|
65
|
+
/**
|
|
66
|
+
* 원본 데이터를 청사진으로 컴파일한다.
|
|
67
|
+
*
|
|
68
|
+
* `errors` 가 있으면 던진다 — 세울 수 없는 것을 반쯤 세운 청사진으로 돌려주면
|
|
69
|
+
* 어디서 잘못됐는지 알 수 없다. `violations` 는 청사진에 담아 돌려준다. 정책 위반은
|
|
70
|
+
* 컴파일을 막지 않고 숫자로 보인다.
|
|
71
|
+
*/
|
|
65
72
|
export declare function compile(source: unknown): FigureBlueprint;
|
|
66
73
|
//# sourceMappingURL=blueprint.d.ts.map
|
package/dist/blueprint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../src/blueprint.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"blueprint.d.ts","sourceRoot":"","sources":["../src/blueprint.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAM7D,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACrF,OAAO,EAeL,KAAK,eAAe,EACpB,KAAK,UAAU,EAGf,KAAK,IAAI,EACT,KAAK,aAAa,EAClB,KAAK,IAAI,EACV,MAAM,YAAY,CAAA;AAEnB,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAA;gBAE7B,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC;CAS7C;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA0BpD;AAuBD,kDAAkD;AAElD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAuBxE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,SAAS,EAAE,aAAa,CAAA;CAAE,GAAG,IAAI,CAKtE;AAyFD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAwHxD"}
|
package/dist/blueprint.js
CHANGED
|
@@ -21,8 +21,9 @@
|
|
|
21
21
|
* `repeat` 는 개수를 바꾼다. 인스턴스마다 다르게 반응해야 하므로 각자 서야 한다.
|
|
22
22
|
*/
|
|
23
23
|
import { validate } from "./validate.js";
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
24
|
+
import { centredSource } from "./origin.js";
|
|
25
|
+
import { geometryKeyOf, materialKeyOf, usesSegments } from "./keys.js";
|
|
26
|
+
import { jointFrames, mergeKeyOf, movingNames, standsAlone } from "./grouping.js";
|
|
26
27
|
// 키는 keys.ts 가 기준이 되는 원본이다. 소비처가 쓰던 이름 그대로 다시 내보낸다.
|
|
27
28
|
export { geometryKeyOf, emissiveKeyOf, materialKeyOf, usesSegments } from "./keys.js";
|
|
28
29
|
import { BLUEPRINT_VERSION, DEFAULT_SIZING, FIGURE_SOURCE_VERSION, SEGMENT_PRESETS } from "./types.js";
|
|
@@ -172,6 +173,7 @@ export function stretchAxisOf(part) {
|
|
|
172
173
|
*/
|
|
173
174
|
function capabilityAnchorOf(part) {
|
|
174
175
|
const spec = part.capability;
|
|
176
|
+
/* The part is already centred, so the anchor carries the brand it came with. */
|
|
175
177
|
const at = {
|
|
176
178
|
name: part.name,
|
|
177
179
|
roles: [...spec.roles],
|
|
@@ -191,6 +193,7 @@ function capabilityAnchorOf(part) {
|
|
|
191
193
|
return at;
|
|
192
194
|
}
|
|
193
195
|
function memberOf(part) {
|
|
196
|
+
/* The part is already centred, so the member carries the brand it came with. */
|
|
194
197
|
const member = {
|
|
195
198
|
name: part.name,
|
|
196
199
|
primitive: part.primitive,
|
|
@@ -211,6 +214,50 @@ function memberOf(part) {
|
|
|
211
214
|
member.shape = part.shape;
|
|
212
215
|
return member;
|
|
213
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Joints as nodes, parents before children (ADR-0066).
|
|
219
|
+
*
|
|
220
|
+
* A joint's parent node is the frame its child's parent part moves in, and `attach` names that part so
|
|
221
|
+
* the runtime can move the origin with it under sizing. The axis is made unit length here, once, so every
|
|
222
|
+
* consumer turns by the same angle per degree.
|
|
223
|
+
*/
|
|
224
|
+
function jointsOf(src, frames) {
|
|
225
|
+
const parentOf = new Map(src.parts.filter(part => part.parent !== undefined).map(part => [part.name, part.parent]));
|
|
226
|
+
const nodes = (src.joints ?? []).map(joint => {
|
|
227
|
+
const length = Math.hypot(joint.axis.x, joint.axis.y, joint.axis.z);
|
|
228
|
+
const node = {
|
|
229
|
+
name: joint.name,
|
|
230
|
+
type: joint.type,
|
|
231
|
+
child: joint.child,
|
|
232
|
+
origin: { ...joint.origin },
|
|
233
|
+
axis: { x: joint.axis.x / length, y: joint.axis.y / length, z: joint.axis.z / length }
|
|
234
|
+
};
|
|
235
|
+
if (joint.limits !== undefined)
|
|
236
|
+
node.limits = { min: joint.limits.min, max: joint.limits.max };
|
|
237
|
+
const attach = parentOf.get(joint.child);
|
|
238
|
+
if (attach !== undefined) {
|
|
239
|
+
node.attach = attach;
|
|
240
|
+
const parent = frames.get(attach);
|
|
241
|
+
if (parent !== undefined)
|
|
242
|
+
node.parent = parent;
|
|
243
|
+
}
|
|
244
|
+
return node;
|
|
245
|
+
});
|
|
246
|
+
// Parents first: a node can be built only once the node it sits in exists.
|
|
247
|
+
const ordered = [];
|
|
248
|
+
const placed = new Set();
|
|
249
|
+
let pending = nodes;
|
|
250
|
+
while (pending.length > 0) {
|
|
251
|
+
const ready = pending.filter(node => node.parent === undefined || placed.has(node.parent));
|
|
252
|
+
// validate refuses cycles, so every pass places at least one node
|
|
253
|
+
for (const node of ready) {
|
|
254
|
+
ordered.push(node);
|
|
255
|
+
placed.add(node.name);
|
|
256
|
+
}
|
|
257
|
+
pending = pending.filter(node => !placed.has(node.name));
|
|
258
|
+
}
|
|
259
|
+
return ordered;
|
|
260
|
+
}
|
|
214
261
|
/**
|
|
215
262
|
* 원본 데이터를 청사진으로 컴파일한다.
|
|
216
263
|
*
|
|
@@ -218,52 +265,24 @@ function memberOf(part) {
|
|
|
218
265
|
* 어디서 잘못됐는지 알 수 없다. `violations` 는 청사진에 담아 돌려준다. 정책 위반은
|
|
219
266
|
* 컴파일을 막지 않고 숫자로 보인다.
|
|
220
267
|
*/
|
|
221
|
-
/**
|
|
222
|
-
* 시각이 흐르는 것과 값이 모는 것을 가른다 — **옛 원본도 함께 옮긴다.**
|
|
223
|
-
*
|
|
224
|
-
* `parameters` 가 제 칸을 갖기 전에는 값이 모는 자세가 `animations` 안에 `drive: 'hold'`
|
|
225
|
-
* 로 있었다(ADR-0051). 개발 카탈로그의 다섯이 그 모양으로 저장되어 있다 — 리프터
|
|
226
|
-
* `lift-height` · 포크리프트 `lift`·`reach` · 롤 프레스 `nip` · 크래들 `fed`.
|
|
227
|
-
*
|
|
228
|
-
* **옮기는 일을 여기서 한다.** 기계적인 변환이라 저작자가 할 일이 아니고, 읽는 쪽마다
|
|
229
|
-
* 하면 여러 벌이 된다. 옮긴 것은 `animations` 에서 빠지므로 **씬이 옛 clip 을 볼 일이
|
|
230
|
-
* 없다** — drive 없는 hold clip 을 `loop` 로 읽어 부품이 영영 도는 일이 생기지 않는다.
|
|
231
|
-
*
|
|
232
|
-
* 옮긴 것의 범위는 `0~100 %` 로 둔다. 옛 값이 0~1 이었고 저작 화면도 그것을 백분율로
|
|
233
|
-
* 보여 주고 있었다. **저작자가 진짜 단위를 적어 주기 전까지의 자리표시다** — 호이스트라면
|
|
234
|
-
* `mm` 여야 하고, 그것은 사람이 알지 형식이 알 수 없다.
|
|
235
|
-
*/
|
|
236
|
-
function partedMotion(src) {
|
|
237
|
-
const animations = [];
|
|
238
|
-
const parameters = [...(src.parameters ?? [])];
|
|
239
|
-
for (const clip of src.animations ?? []) {
|
|
240
|
-
const legacy = clip.drive;
|
|
241
|
-
if (legacy !== 'hold') {
|
|
242
|
-
animations.push(clip);
|
|
243
|
-
continue;
|
|
244
|
-
}
|
|
245
|
-
parameters.push({
|
|
246
|
-
name: clip.name,
|
|
247
|
-
range: { unit: '%', min: 0, max: 100 },
|
|
248
|
-
clip: { channels: clip.channels }
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
return { animations, parameters };
|
|
252
|
-
}
|
|
253
268
|
export function compile(source) {
|
|
254
269
|
const { errors, violations } = validate(source);
|
|
255
270
|
if (errors.length > 0)
|
|
256
271
|
throw new FigureCompileError(errors);
|
|
257
|
-
|
|
272
|
+
/* Everything below reads box-centred coordinates, as the blueprint and the runtime do (origin.ts). */
|
|
273
|
+
const src = centredSource(source);
|
|
258
274
|
const groups = [];
|
|
259
|
-
const
|
|
275
|
+
const animations = src.animations ?? [];
|
|
276
|
+
const parameters = src.parameters ?? [];
|
|
260
277
|
/*
|
|
261
278
|
어느 부품이 **따로 변환되나.** 묶음을 가르는 판단이 이걸 먼저 알아야 한다.
|
|
262
279
|
|
|
263
280
|
파라미터가 모는 부품도 같이 센다 — 값이 몰든 시각이 몰든 **따로 변환되는 부품은 따로
|
|
264
281
|
그린다.** 묶음 수는 구동 방식과 무관하다.
|
|
265
282
|
*/
|
|
266
|
-
const moving =
|
|
283
|
+
const moving = movingNames({ animations, parameters });
|
|
284
|
+
/* Which joint frame each part moves in. Parts merge only within one frame (ADR-0066 decision 4). */
|
|
285
|
+
const frames = jointFrames(src);
|
|
267
286
|
const labels = [];
|
|
268
287
|
const anchors = [];
|
|
269
288
|
const byKey = new Map();
|
|
@@ -275,8 +294,12 @@ export function compile(source) {
|
|
|
275
294
|
능력의 닻은 **그리는 목록에 넣지 않는다.** 그리지 않고 세지도 않는다 — `costOf` 가 보는 것이
|
|
276
295
|
`groups` 이므로, 여기서 가르면 자리가 삼각형·묶음·부품 수에 끼어들 길이 없다.
|
|
277
296
|
*/
|
|
297
|
+
const frame = frames.get(part.name);
|
|
278
298
|
if (part.capability !== undefined) {
|
|
279
|
-
|
|
299
|
+
const anchor = capabilityAnchorOf(part);
|
|
300
|
+
if (frame !== undefined)
|
|
301
|
+
anchor.joint = frame;
|
|
302
|
+
anchors.push(anchor);
|
|
280
303
|
continue;
|
|
281
304
|
}
|
|
282
305
|
if (moving.has(part.name)) {
|
|
@@ -289,6 +312,8 @@ export function compile(source) {
|
|
|
289
312
|
};
|
|
290
313
|
if (part.materialSlot !== undefined)
|
|
291
314
|
group.materialSlot = part.materialSlot;
|
|
315
|
+
if (frame !== undefined)
|
|
316
|
+
group.joint = frame;
|
|
292
317
|
groups.push(group);
|
|
293
318
|
continue;
|
|
294
319
|
}
|
|
@@ -302,10 +327,12 @@ export function compile(source) {
|
|
|
302
327
|
};
|
|
303
328
|
if (part.materialSlot !== undefined)
|
|
304
329
|
group.materialSlot = part.materialSlot;
|
|
330
|
+
if (frame !== undefined)
|
|
331
|
+
group.joint = frame;
|
|
305
332
|
groups.push(group);
|
|
306
333
|
continue;
|
|
307
334
|
}
|
|
308
|
-
const key =
|
|
335
|
+
const key = mergeKeyOf(part, frames);
|
|
309
336
|
const existing = byKey.get(key);
|
|
310
337
|
if (existing) {
|
|
311
338
|
existing.members.push(memberOf(part));
|
|
@@ -319,6 +346,8 @@ export function compile(source) {
|
|
|
319
346
|
};
|
|
320
347
|
if (part.materialSlot !== undefined)
|
|
321
348
|
group.materialSlot = part.materialSlot;
|
|
349
|
+
if (frame !== undefined)
|
|
350
|
+
group.joint = frame;
|
|
322
351
|
byKey.set(key, group);
|
|
323
352
|
groups.push(group);
|
|
324
353
|
}
|
|
@@ -330,11 +359,9 @@ export function compile(source) {
|
|
|
330
359
|
the service for a compiled blueprint — so without this it cannot tell which edition of the
|
|
331
360
|
format it is holding, which is the whole reason `FigureSource.version` exists.
|
|
332
361
|
|
|
333
|
-
|
|
334
|
-
edition 1, which is what `FIGURE_SOURCE_VERSION` says, so resolve it here instead of making
|
|
335
|
-
every consumer remember the rule.
|
|
362
|
+
validate has already refused any other edition, including a missing one.
|
|
336
363
|
*/
|
|
337
|
-
sourceVersion:
|
|
364
|
+
sourceVersion: FIGURE_SOURCE_VERSION,
|
|
338
365
|
type: src.type,
|
|
339
366
|
base: src.base,
|
|
340
367
|
budget: { triangles, groups: groups.length },
|
|
@@ -353,6 +380,9 @@ export function compile(source) {
|
|
|
353
380
|
blueprint.detailLevel = src.detailLevel;
|
|
354
381
|
if (src.placement !== undefined)
|
|
355
382
|
blueprint.placement = src.placement;
|
|
383
|
+
// Carried only when the source declares joints, so blueprints without them keep their exact shape.
|
|
384
|
+
if (src.joints !== undefined && src.joints.length > 0)
|
|
385
|
+
blueprint.joints = jointsOf(src, frames);
|
|
356
386
|
return blueprint;
|
|
357
387
|
}
|
|
358
388
|
//# sourceMappingURL=blueprint.js.map
|
package/dist/blueprint.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../src/blueprint.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../src/blueprint.ts"],"names":[],"mappings":"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"}
|
package/dist/grouping.d.ts
CHANGED
|
@@ -12,6 +12,42 @@ import type { AnimationChannel, FigurePart, Vec3 } from './types.ts';
|
|
|
12
12
|
export declare function animatedNames(clips: readonly {
|
|
13
13
|
channels?: AnimationChannel[];
|
|
14
14
|
}[] | undefined): ReadonlySet<string>;
|
|
15
|
+
/**
|
|
16
|
+
* The parts a source moves, by a clip or by a parameter.
|
|
17
|
+
*
|
|
18
|
+
* compile and the release gate both need this set, and they must read it the same way: the gate
|
|
19
|
+
* once read `animations` only, so a figure driven by parameters showed fewer moving parts and
|
|
20
|
+
* fewer draw calls to the gate than compile produced (FORKLIFT: 13 moving parts and 18 draw calls
|
|
21
|
+
* in the blueprint, 0 and 10 at the gate).
|
|
22
|
+
*/
|
|
23
|
+
export declare function movingNames(source: {
|
|
24
|
+
animations?: readonly {
|
|
25
|
+
channels?: AnimationChannel[];
|
|
26
|
+
}[];
|
|
27
|
+
parameters?: readonly {
|
|
28
|
+
clip?: {
|
|
29
|
+
channels?: AnimationChannel[];
|
|
30
|
+
};
|
|
31
|
+
}[];
|
|
32
|
+
}): ReadonlySet<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Which joint's frame each part moves in: the nearest joint on its parent chain, the part itself included.
|
|
35
|
+
*
|
|
36
|
+
* A part missing from the map hangs from the figure frame. Parts in different frames cannot merge, since
|
|
37
|
+
* one merged geometry takes one transform (ADR-0066 decision 4).
|
|
38
|
+
*
|
|
39
|
+
* The walk stops at a name it has already seen, so a cycle (which validate reports) does not loop.
|
|
40
|
+
*/
|
|
41
|
+
export declare function jointFrames(source: {
|
|
42
|
+
parts: readonly {
|
|
43
|
+
name: string;
|
|
44
|
+
parent?: string;
|
|
45
|
+
}[];
|
|
46
|
+
joints?: readonly {
|
|
47
|
+
name: string;
|
|
48
|
+
child: string;
|
|
49
|
+
}[];
|
|
50
|
+
}): ReadonlyMap<string, string>;
|
|
15
51
|
/**
|
|
16
52
|
* A part draws on its own when it cannot be merged with its neighbours.
|
|
17
53
|
*
|
|
@@ -25,6 +61,11 @@ export declare function animatedNames(clips: readonly {
|
|
|
25
61
|
* is the fault this whole file was written to close.
|
|
26
62
|
*/
|
|
27
63
|
export declare function standsAlone(part: FigurePart, animated?: ReadonlySet<string>): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* What a part merges by: its material and slot, within one joint frame. compile and the gate share it so
|
|
66
|
+
* the groups compile builds and the draw calls the gate counts stay the same number.
|
|
67
|
+
*/
|
|
68
|
+
export declare function mergeKeyOf(part: FigurePart, frames?: ReadonlyMap<string, string>): string;
|
|
28
69
|
/**
|
|
29
70
|
* Does this part get drawn?
|
|
30
71
|
*
|
|
@@ -43,7 +84,7 @@ export declare function isDrawn(part: FigurePart): boolean;
|
|
|
43
84
|
* Each entry is the parts that end up in one merged geometry. Parts that stand
|
|
44
85
|
* alone get an entry of their own. Parts that are not drawn make no entry.
|
|
45
86
|
*/
|
|
46
|
-
export declare function groupsOf(parts: readonly FigurePart[], animated?: ReadonlySet<string>): FigurePart[][];
|
|
87
|
+
export declare function groupsOf(parts: readonly FigurePart[], animated?: ReadonlySet<string>, frames?: ReadonlyMap<string, string>): FigurePart[][];
|
|
47
88
|
/**
|
|
48
89
|
* Does this part hold its section circular under a lopsided instance?
|
|
49
90
|
*
|
|
@@ -68,7 +109,7 @@ export declare function repeatCountOf(part: FigurePart, base: Vec3): number;
|
|
|
68
109
|
*
|
|
69
110
|
* A merged group is one call. A repeat part is one call per copy.
|
|
70
111
|
*/
|
|
71
|
-
export declare function drawCallsOf(parts: readonly FigurePart[], base: Vec3, animated?: ReadonlySet<string>): number;
|
|
112
|
+
export declare function drawCallsOf(parts: readonly FigurePart[], base: Vec3, animated?: ReadonlySet<string>, frames?: ReadonlyMap<string, string>): number;
|
|
72
113
|
/**
|
|
73
114
|
* Draw calls for one merged group.
|
|
74
115
|
*
|
package/dist/grouping.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAE,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAQlH;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAS,GAAG,OAAO,CAI5F;
|
|
1
|
+
{"version":3,"file":"grouping.d.ts","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAEpE;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS;IAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;CAAE,EAAE,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAQlH;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,UAAU,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;KAAE,EAAE,CAAA;IACzD,UAAU,CAAC,EAAE,SAAS;QAAE,IAAI,CAAC,EAAE;YAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;SAAE,CAAA;KAAE,EAAE,CAAA;CACrE,GAAG,WAAW,CAAC,MAAM,CAAC,CAKtB;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE;IAClC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACnD,MAAM,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACpD,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAqB9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAS,GAAG,OAAO,CAI5F;AAKD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAAG,MAAM,CAGpG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEjD;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAS,EACrC,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC9C,UAAU,EAAE,EAAE,CA0BhB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAGpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CASlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,UAAU,EAAE,EAC5B,IAAI,EAAE,IAAI,EACV,QAAQ,GAAE,WAAW,CAAC,MAAM,CAAS,EACrC,MAAM,GAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAa,GAC9C,MAAM,CAER;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAI9E"}
|
package/dist/grouping.js
CHANGED
|
@@ -53,6 +53,53 @@ export function animatedNames(clips) {
|
|
|
53
53
|
}
|
|
54
54
|
return names;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* The parts a source moves, by a clip or by a parameter.
|
|
58
|
+
*
|
|
59
|
+
* compile and the release gate both need this set, and they must read it the same way: the gate
|
|
60
|
+
* once read `animations` only, so a figure driven by parameters showed fewer moving parts and
|
|
61
|
+
* fewer draw calls to the gate than compile produced (FORKLIFT: 13 moving parts and 18 draw calls
|
|
62
|
+
* in the blueprint, 0 and 10 at the gate).
|
|
63
|
+
*/
|
|
64
|
+
export function movingNames(source) {
|
|
65
|
+
return new Set([
|
|
66
|
+
...animatedNames(source.animations),
|
|
67
|
+
...animatedNames((source.parameters ?? []).map(parameter => parameter.clip ?? {}))
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Which joint's frame each part moves in: the nearest joint on its parent chain, the part itself included.
|
|
72
|
+
*
|
|
73
|
+
* A part missing from the map hangs from the figure frame. Parts in different frames cannot merge, since
|
|
74
|
+
* one merged geometry takes one transform (ADR-0066 decision 4).
|
|
75
|
+
*
|
|
76
|
+
* The walk stops at a name it has already seen, so a cycle (which validate reports) does not loop.
|
|
77
|
+
*/
|
|
78
|
+
export function jointFrames(source) {
|
|
79
|
+
const parentOf = new Map();
|
|
80
|
+
for (const part of source.parts)
|
|
81
|
+
if (typeof part.parent === 'string')
|
|
82
|
+
parentOf.set(part.name, part.parent);
|
|
83
|
+
const jointOfChild = new Map();
|
|
84
|
+
for (const joint of source.joints ?? [])
|
|
85
|
+
if (!jointOfChild.has(joint.child))
|
|
86
|
+
jointOfChild.set(joint.child, joint.name);
|
|
87
|
+
const frames = new Map();
|
|
88
|
+
for (const part of source.parts) {
|
|
89
|
+
const seen = new Set();
|
|
90
|
+
let at = part.name;
|
|
91
|
+
while (at !== undefined && !seen.has(at)) {
|
|
92
|
+
seen.add(at);
|
|
93
|
+
const joint = jointOfChild.get(at);
|
|
94
|
+
if (joint !== undefined) {
|
|
95
|
+
frames.set(part.name, joint);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
at = parentOf.get(at);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return frames;
|
|
102
|
+
}
|
|
56
103
|
/**
|
|
57
104
|
* A part draws on its own when it cannot be merged with its neighbours.
|
|
58
105
|
*
|
|
@@ -73,6 +120,15 @@ export function standsAlone(part, animated = EMPTY) {
|
|
|
73
120
|
return keepsRound(part);
|
|
74
121
|
}
|
|
75
122
|
const EMPTY = new Set();
|
|
123
|
+
const NO_FRAMES = new Map();
|
|
124
|
+
/**
|
|
125
|
+
* What a part merges by: its material and slot, within one joint frame. compile and the gate share it so
|
|
126
|
+
* the groups compile builds and the draw calls the gate counts stay the same number.
|
|
127
|
+
*/
|
|
128
|
+
export function mergeKeyOf(part, frames = NO_FRAMES) {
|
|
129
|
+
const frame = frames.get(part.name);
|
|
130
|
+
return frame === undefined ? groupKeyOf(part) : `${groupKeyOf(part)}@${frame}`;
|
|
131
|
+
}
|
|
76
132
|
/**
|
|
77
133
|
* Does this part get drawn?
|
|
78
134
|
*
|
|
@@ -93,7 +149,7 @@ export function isDrawn(part) {
|
|
|
93
149
|
* Each entry is the parts that end up in one merged geometry. Parts that stand
|
|
94
150
|
* alone get an entry of their own. Parts that are not drawn make no entry.
|
|
95
151
|
*/
|
|
96
|
-
export function groupsOf(parts, animated = EMPTY) {
|
|
152
|
+
export function groupsOf(parts, animated = EMPTY, frames = NO_FRAMES) {
|
|
97
153
|
const groups = [];
|
|
98
154
|
const byKey = new Map();
|
|
99
155
|
for (const part of parts) {
|
|
@@ -103,7 +159,7 @@ export function groupsOf(parts, animated = EMPTY) {
|
|
|
103
159
|
groups.push([part]);
|
|
104
160
|
continue;
|
|
105
161
|
}
|
|
106
|
-
const key =
|
|
162
|
+
const key = mergeKeyOf(part, frames);
|
|
107
163
|
const merged = byKey.get(key);
|
|
108
164
|
if (merged) {
|
|
109
165
|
merged.push(part);
|
|
@@ -151,8 +207,8 @@ export function repeatCountOf(part, base) {
|
|
|
151
207
|
*
|
|
152
208
|
* A merged group is one call. A repeat part is one call per copy.
|
|
153
209
|
*/
|
|
154
|
-
export function drawCallsOf(parts, base, animated = EMPTY) {
|
|
155
|
-
return groupsOf(parts, animated).reduce((total, group) => total + callsForGroup(group, base), 0);
|
|
210
|
+
export function drawCallsOf(parts, base, animated = EMPTY, frames = NO_FRAMES) {
|
|
211
|
+
return groupsOf(parts, animated, frames).reduce((total, group) => total + callsForGroup(group, base), 0);
|
|
156
212
|
}
|
|
157
213
|
/**
|
|
158
214
|
* Draw calls for one merged group.
|
package/dist/grouping.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAG5E;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,KAA+D;IAC3F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,OAAO,OAAO,EAAE,MAAM,KAAK,QAAQ;gBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;QACpE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB,EAAE,WAAgC,KAAK;IACjF,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAC5D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,KAAK,GAAwB,IAAI,GAAG,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"grouping.js","sourceRoot":"","sources":["../src/grouping.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,9 +2,10 @@ export * from './types.ts';
|
|
|
2
2
|
export { validate, type ValidateResult } from './validate.ts';
|
|
3
3
|
export { compile, FigureCompileError, geometryKeyOf, materialKeyOf, rotatedExtentOf, stretchAxisOf, trianglesOf, usesSegments } from './blueprint.ts';
|
|
4
4
|
export { costOf, describeCost, scoreOf, type FigureBudgetUse, type FigureCost, type FigureCostAt, type FigureGrade, type FigureScore } from './cost.ts';
|
|
5
|
+
export { jointFrames, mergeKeyOf } from './grouping.ts';
|
|
5
6
|
export { costCurve, costCurveSvg, type CostCurveOptions, type CostCurvePoint } from './cost-chart.ts';
|
|
6
7
|
export { topViewEvidence, type TopViewEvidence } from './visual-evidence.ts';
|
|
7
8
|
export { blueprintProblems } from './blueprint-shape.ts';
|
|
8
|
-
export { anchorOf, anchorOfPart, repeatPlanOfPart, needsOwnMesh, repeatOffset, repeatPlan, REPEAT_LIMIT, rotatedExtent, sizingPosition, sizingScale, stretchAxis, type Axis as SizingAxis, type InstanceScale } from './sizing.ts';
|
|
9
|
+
export { anchorOf, anchorOfPart, jointOriginPosition, repeatPlanOfPart, needsOwnMesh, repeatOffset, repeatPlan, REPEAT_LIMIT, rotatedExtent, sizingPosition, sizingScale, stretchAxis, type Axis as SizingAxis, type InstanceScale } from './sizing.ts';
|
|
9
10
|
export { sizingReport, sizingReportOf, sizingFixCandidatesOf, SIZING_WAYS, type SizingFinding, type SizingReport, type SizingFixCandidate } from './gate.ts';
|
|
10
11
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAYA,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EACP,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAMxD,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,KAAK,IAAI,IAAI,UAAU,EACvB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,KAAK,kBAAkB,EAAE,MAAM,WAAW,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,8 @@ export * from "./types.js";
|
|
|
13
13
|
export { validate } from "./validate.js";
|
|
14
14
|
export { compile, FigureCompileError, geometryKeyOf, materialKeyOf, rotatedExtentOf, stretchAxisOf, trianglesOf, usesSegments } from "./blueprint.js";
|
|
15
15
|
export { costOf, describeCost, scoreOf } from "./cost.js";
|
|
16
|
+
/* Which joint frame each part moves in, and the key parts merge by within a frame (ADR-0066). */
|
|
17
|
+
export { jointFrames, mergeKeyOf } from "./grouping.js";
|
|
16
18
|
export { costCurve, costCurveSvg } from "./cost-chart.js";
|
|
17
19
|
export { topViewEvidence } from "./visual-evidence.js";
|
|
18
20
|
/* 이미 컴파일된 청사진의 형태를 확인한다 — 서버·파일에서 온 것을 읽기 전에. */
|
|
@@ -21,7 +23,7 @@ export { blueprintProblems } from "./blueprint-shape.js";
|
|
|
21
23
|
* 크기 반응 규칙 — **앵커의 뜻을 아는 자리.** things-scene 에서 옮겨 왔다(2026-09-09). 그리는 쪽과
|
|
22
24
|
* 발행 게이트가 같은 계산을 봐야 화면과 판정이 어긋나지 않는다.
|
|
23
25
|
*/
|
|
24
|
-
export { anchorOf, anchorOfPart, repeatPlanOfPart, needsOwnMesh, repeatOffset, repeatPlan, REPEAT_LIMIT, rotatedExtent, sizingPosition, sizingScale, stretchAxis } from "./sizing.js";
|
|
26
|
+
export { anchorOf, anchorOfPart, jointOriginPosition, repeatPlanOfPart, needsOwnMesh, repeatOffset, repeatPlan, REPEAT_LIMIT, rotatedExtent, sizingPosition, sizingScale, stretchAxis } from "./sizing.js";
|
|
25
27
|
/* 발행해도 되나 — 크기를 바꿔 봐야 아는 것들. */
|
|
26
28
|
export { sizingReport, sizingReportOf, sizingFixCandidatesOf, SIZING_WAYS } from "./gate.js";
|
|
27
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EAMR,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,SAAS,EAAE,YAAY,EAA8C,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAA;AAC5E,iDAAiD;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;GAGG;AACH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EAGZ,MAAM,aAAa,CAAA;AAEpB,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAkE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAuB,MAAM,eAAe,CAAA;AAC7D,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,eAAe,EACf,aAAa,EACb,WAAW,EACX,YAAY,EACb,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,MAAM,EACN,YAAY,EACZ,OAAO,EAMR,MAAM,WAAW,CAAA;AAClB,iGAAiG;AACjG,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,YAAY,EAA8C,MAAM,iBAAiB,CAAA;AACrG,OAAO,EAAE,eAAe,EAAwB,MAAM,sBAAsB,CAAA;AAC5E,iDAAiD;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;GAGG;AACH,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EAGZ,MAAM,aAAa,CAAA;AAEpB,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,WAAW,EAAkE,MAAM,WAAW,CAAA"}
|