@hatiolab/things-scene 10.1.12 → 10.1.14
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-types/figure/figure-blueprint.d.ts +2 -2
- package/dist-types/figure/figure-blueprint.d.ts.map +1 -1
- package/dist-types/figure/figure-capability.d.ts +1 -1
- package/dist-types/figure/figure-capability.d.ts.map +1 -1
- package/dist-types/figure/figure-clip.d.ts +35 -10
- package/dist-types/figure/figure-clip.d.ts.map +1 -1
- package/dist-types/figure/figure-instance.d.ts +13 -2
- package/dist-types/figure/figure-instance.d.ts.map +1 -1
- package/dist-types/figure/figure-part-component.d.ts +2 -2
- package/dist-types/figure/figure-real-object.d.ts +118 -7
- package/dist-types/figure/figure-real-object.d.ts.map +1 -1
- package/dist-types/figure/figure-registry.d.ts +4 -4
- package/dist-types/figure/figure-registry.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +24 -0
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/package.json +2 -2
- package/things-scene-min.js +10 -10
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +2 -2
- package/things-scene.mjs.map +1 -1
- package/CHANGELOG.md +0 -2331
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
* `depth` 가 높이다. 환산은 `figure-real-object.ts` 의 `updateDimension` 한 곳에서만
|
|
29
29
|
* 한다 — 그 밖에서는 청사진의 축을 그대로 three 에 넘긴다(three 도 y 가 위다).
|
|
30
30
|
*/
|
|
31
|
-
import type { AnchorRule, AnimationChannel, AnimationClip, ChannelPath,
|
|
31
|
+
import type { AnchorRule, AnimationChannel, AnimationClip, ChannelPath, BlueprintGroup, BlueprintLabel, BlueprintAnchor, BlueprintMember, BlueprintClip, BlueprintParameter, EmissiveSpec, FigureBlueprint as Blueprint, MaterialSlot, PartAnchor, PartMaterial, PartShape, PartTransform, PrimitiveKind, SizingRule, Vec3 } from '@hatiolab/figure-model';
|
|
32
32
|
export type FigurePrimitiveKind = PrimitiveKind;
|
|
33
33
|
export type FigureMaterialSlot = MaterialSlot;
|
|
34
34
|
export type FigureSizingRule = SizingRule;
|
|
@@ -37,7 +37,6 @@ export type FigurePartAnchor = PartAnchor;
|
|
|
37
37
|
export type FigureAnimationChannel = AnimationChannel;
|
|
38
38
|
export type FigureAnimationClip = AnimationClip;
|
|
39
39
|
export type FigureChannelPath = ChannelPath;
|
|
40
|
-
export type FigureClipDrive = ClipDrive;
|
|
41
40
|
export type FigureVec3 = Vec3;
|
|
42
41
|
export type FigurePartTransform = PartTransform;
|
|
43
42
|
export type FigureEmissiveSpec = EmissiveSpec;
|
|
@@ -47,6 +46,7 @@ export type FigureBlueprintMember = BlueprintMember;
|
|
|
47
46
|
export type FigureBlueprintAnchor = BlueprintAnchor;
|
|
48
47
|
export type FigureBlueprintGroup = BlueprintGroup;
|
|
49
48
|
export type FigureBlueprintClip = BlueprintClip;
|
|
49
|
+
export type FigureBlueprintParameter = BlueprintParameter;
|
|
50
50
|
export type FigureBlueprintLabel = BlueprintLabel;
|
|
51
51
|
export type FigureBlueprint = Blueprint;
|
|
52
52
|
export { blueprintProblems } from '@hatiolab/figure-model';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-blueprint.d.ts","sourceRoot":"","sources":["../../src/figure/figure-blueprint.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"figure-blueprint.d.ts","sourceRoot":"","sources":["../../src/figure/figure-blueprint.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,IAAI,SAAS,EAC5B,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,UAAU,EACV,IAAI,EACL,MAAM,wBAAwB,CAAA;AAM/B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAA;AACzC,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC3C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAA;AAC7B,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAA;AAC7C,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AACvC,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,qBAAqB,GAAG,eAAe,CAAA;AACnD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,mBAAmB,GAAG,aAAa,CAAA;AAC/C,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAA;AACzD,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAA;AACjD,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAOvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA"}
|
|
@@ -41,7 +41,7 @@ export declare function portsFromAnchors(anchors: readonly FigureBlueprintAnchor
|
|
|
41
41
|
* 모르는 이름이면 **던진다.** 오타 하나가 「능력이 있는 줄 알았는데 없는」 도형을 만들고,
|
|
42
42
|
* 그것은 물건을 넘기려는 순간에야 드러난다.
|
|
43
43
|
*/
|
|
44
|
-
export declare function figureClassFor(base: unknown, capabilities?: readonly string[]): unknown;
|
|
44
|
+
export declare function figureClassFor(base: unknown, capabilities?: readonly string[], placement?: string): unknown;
|
|
45
45
|
/** 시험을 위해 조립한 클래스를 버린다. */
|
|
46
46
|
export declare function resetFigureClasses(): void;
|
|
47
47
|
//# sourceMappingURL=figure-capability.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,+DAAgE,CAAA;AAEhG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvE,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKjF,CAAA;AA4BF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,EAAE,CAaX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,EAAE,CAIhH;AAuCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"figure-capability.d.ts","sourceRoot":"","sources":["../../src/figure/figure-capability.ts"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAClE,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAInE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,+DAAgE,CAAA;AAEhG,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEvE,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAKjF,CAAA;AA4BF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,qBAAqB,EAAE,EACzC,KAAK,EAAE,aAAa,EACpB,IAAI,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,EAAE,CAaX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,IAAI,EAAE,CAIhH;AAuCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CA+B/G;AAiCD,2BAA2B;AAC3B,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { FigureAnimationChannel, FigureVec3 } from './figure-blueprint.js';
|
|
2
|
+
/**
|
|
3
|
+
* 표집할 수 있는 것 — **채널 묶음이면 된다.**
|
|
4
|
+
*
|
|
5
|
+
* clip 과 파라미터의 자세는 이름과 구동 방식이 다르지만 곡선은 같은 모양이다(ADR-0051 의
|
|
6
|
+
* 「포즈 데이터는 glTF 꼴 한 벌」). 청사진의 clip 타입을 요구하면 파라미터가 이름 없는
|
|
7
|
+
* clip 을 지어내야 한다.
|
|
8
|
+
*/
|
|
9
|
+
export interface Sampleable {
|
|
10
|
+
channels?: readonly FigureAnimationChannel[];
|
|
11
|
+
}
|
|
2
12
|
/** 한 부품이 한 시각에 받는 것. 적히지 않은 경로는 없다. */
|
|
3
13
|
export interface PartPose {
|
|
4
14
|
translation?: FigureVec3;
|
|
@@ -11,7 +21,7 @@ export interface PartPose {
|
|
|
11
21
|
* 형식이 길이를 따로 안 적는 이유가 이것이다 — 적으면 키와 어긋날 수 있고, 어긋나면
|
|
12
22
|
* 어느 쪽이 맞는지 알 방법이 없다.
|
|
13
23
|
*/
|
|
14
|
-
export declare function durationOf(clip:
|
|
24
|
+
export declare function durationOf(clip: Sampleable): number;
|
|
15
25
|
/**
|
|
16
26
|
* 한 채널을 한 시각에서 읽는다.
|
|
17
27
|
*
|
|
@@ -21,22 +31,37 @@ export declare function durationOf(clip: FigureBlueprintClip): number;
|
|
|
21
31
|
* `step` 은 다음 키 **직전까지** 앞 값을 유지한다. 계단이 그런 것이고, 그렇지 않으면
|
|
22
32
|
* 마지막 구간만 보간한 것처럼 보인다.
|
|
23
33
|
*/
|
|
24
|
-
export declare function sampleChannel(channel:
|
|
34
|
+
export declare function sampleChannel(channel: FigureAnimationChannel, at: number): FigureVec3;
|
|
25
35
|
/**
|
|
26
36
|
* clip 전체를 한 시각에서 읽는다. 부품 이름 → 그 부품이 받는 것.
|
|
27
37
|
*
|
|
28
38
|
* 한 부품에 같은 경로의 채널이 둘이면 **뒤에 적은 것이 이긴다.** 형식이 막지 않는 조합
|
|
29
39
|
* 이고, 여기서 섞으면 저작자가 적은 것과 다른 값이 나온다.
|
|
30
40
|
*/
|
|
31
|
-
export declare function poseAt(clip:
|
|
41
|
+
export declare function poseAt(clip: Sampleable, at: number): Map<string, PartPose>;
|
|
42
|
+
/**
|
|
43
|
+
* 도는 clip 을 지금 어느 시각에서 읽나. **시각이 흐른다.**
|
|
44
|
+
*
|
|
45
|
+
* 인스턴스가 준 배속은 `elapsed` 를 미는 쪽에 이미 들어가 있다. 여기서 하는 일은 길이로
|
|
46
|
+
* 나머지를 취해 되감는 것뿐이다.
|
|
47
|
+
*
|
|
48
|
+
* 값이 모는 자세는 여기 없다 — 그것은 `parameterTime` 이다(ADR-0051 ①).
|
|
49
|
+
*/
|
|
50
|
+
export declare function loopTime(duration: number, elapsed: number): number;
|
|
51
|
+
/**
|
|
52
|
+
* 파라미터의 0~1 을 곡선의 어느 자리로 읽나.
|
|
53
|
+
*
|
|
54
|
+
* 곡선의 키 시각 축이 그대로 값의 구간이다 — 0 이 `[0, 마지막 키]` 의 처음이고 1 이 끝이다.
|
|
55
|
+
* 그래서 **키 사이의 간격만 뜻이 있고** 적힌 수 자체는 뜻이 없다.
|
|
56
|
+
*/
|
|
57
|
+
export declare function parameterTime(clip: Sampleable, at: number): number;
|
|
32
58
|
/**
|
|
33
|
-
*
|
|
59
|
+
* 한 프레임만큼 파라미터를 목표로 민다. **직선이다 — ease 는 없다.**
|
|
34
60
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
61
|
+
* 전 구간(0→1)이 `sweep` 초다. 값이 v₁ 에서 v₂ 로 바뀌면 `|v₂−v₁| × sweep` 동안 간다 —
|
|
62
|
+
* 그것이 곧 기계의 속도이고, 기계는 연출하지 않는다(ADR-0051 ②).
|
|
37
63
|
*
|
|
38
|
-
* `
|
|
39
|
-
* 않기 때문이다. 길이가 바뀌어도 그 말이 그대로 성립한다.
|
|
64
|
+
* `sweep` 이 0 이면 즉시다.
|
|
40
65
|
*/
|
|
41
|
-
export declare function
|
|
66
|
+
export declare function advanceParameter(at: number, target: number, sweep: number, dt: number): number;
|
|
42
67
|
//# sourceMappingURL=figure-clip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-clip.d.ts","sourceRoot":"","sources":["../../src/figure/figure-clip.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"figure-clip.d.ts","sourceRoot":"","sources":["../../src/figure/figure-clip.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,sBAAsB,EAAqB,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElG;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAC7C;AAED,uCAAuC;AACvC,MAAM,WAAW,QAAQ;IACvB,WAAW,CAAC,EAAE,UAAU,CAAA;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAID;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAQnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,sBAAsB,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CA0BrF;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAgB1E;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIlE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAK9F"}
|
|
@@ -254,10 +254,21 @@ export declare class FigureInstance extends FigureInstance_base {
|
|
|
254
254
|
/**
|
|
255
255
|
* 이 타입을 그리는 것이 FigureInstance 임을 등록한다. `registerFigure()` 가 부른다.
|
|
256
256
|
*
|
|
257
|
-
* 청사진 등록과 컴포넌트 타입 등록이 늘 함께 일어나야,
|
|
257
|
+
* 청사진 등록과 컴포넌트 타입 등록이 늘 함께 일어나야, 도면이 `type` 만 적고도
|
|
258
258
|
* 세워진다.
|
|
259
259
|
*/
|
|
260
|
-
static registerType(type: string, capabilities?: readonly string[]): void;
|
|
260
|
+
static registerType(type: string, capabilities?: readonly string[], placement?: string): void;
|
|
261
|
+
/**
|
|
262
|
+
* 이 타입이 어느 면에 붙나 — **클래스의 사실이지 인스턴스의 사실이 아니다.**
|
|
263
|
+
*
|
|
264
|
+
* `operato-scene` 의 `Placeable` 이 `ctor.placement` 를 duck-typing 으로 읽고, Monitor 가
|
|
265
|
+
* `classFields` 로 보인다(`types/capability.ts`). 같은 낱말·같은 자리에 두어 그쪽이 읽을 수
|
|
266
|
+
* 있게 한다(ADR-0045).
|
|
267
|
+
*
|
|
268
|
+
* 그리는 쪽이 쓰는 것은 이것이 아니라 `FigureRealObject.effectiveZPos` 다 — 그쪽은 청사진을
|
|
269
|
+
* 직접 읽는다. 여기는 **바깥이 물어볼 수 있게** 내놓는 자리다.
|
|
270
|
+
*/
|
|
271
|
+
static placement?: string;
|
|
261
272
|
/**
|
|
262
273
|
* 이 인스턴스가 청사진을 얼마로 늘려 놓고 있나.
|
|
263
274
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-instance.d.ts","sourceRoot":"","sources":["../../src/figure/figure-instance.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,OAAO,EAAyD,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4E9G,qBAAa,cAAe,SAAQ,mBAAe;IACjD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"figure-instance.d.ts","sourceRoot":"","sources":["../../src/figure/figure-instance.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,KAAK,MAAM,wBAAwB,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAO7D,OAAO,EAAyD,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4E9G,qBAAa,cAAe,SAAQ,mBAAe;IACjD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,SAAS,MAAM,EAAO,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAajG;;;;;;;;;OASG;IACH,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAEzB;;;;;OAKG;IACH,IAAI,aAAa,IAAI,aAAa,CAUjC;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,OAAO,IAAI,OAAO;IAIlB,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,0CAA0C;IAC1C,IAAI,MAAM,yDAET;IAED,MAAM,CAAC,GAAG,EAAE,kBAAkB;IAoC9B;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAQlB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS;IAuDjB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;IA2ChB,0DAA0D;IAC1D,OAAO,CAAC,UAAU;IAgFlB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;OAKG;IACM,UAAU,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAGvD;AAMD,eAAe,cAAc,CAAA"}
|
|
@@ -74,10 +74,10 @@ export declare class FigurePartRealObject extends RealObject {
|
|
|
74
74
|
* `repeat` 를 **저작 화면에서도 펼친다.**
|
|
75
75
|
*
|
|
76
76
|
* 저작자는 단위 하나를 그리고 런타임이 기준 상자를 채운다. 그런데 저작 화면이 하나만
|
|
77
|
-
* 보여 주면, 그린 것과
|
|
77
|
+
* 보여 주면, 그린 것과 도면에 놓인 것이 다른 물건이 된다. 롤러 하나를 그렸는데 도면에서
|
|
78
78
|
* 여섯이 나오면 무엇을 그린 것인지 알 수 없다.
|
|
79
79
|
*
|
|
80
|
-
* 셈은 런타임과 **같은 함수**를 쓴다(`repeatPlan`). 여기서 따로 세면 저작 화면과
|
|
80
|
+
* 셈은 런타임과 **같은 함수**를 쓴다(`repeatPlan`). 여기서 따로 세면 저작 화면과 도면이
|
|
81
81
|
* 갈린다.
|
|
82
82
|
*
|
|
83
83
|
* 판이 곧 기준 상자다. 인스턴스 배율은 1 이다 — 저작 화면에는 인스턴스가 없다.
|
|
@@ -3,7 +3,7 @@ import { RealObject } from '../threed/real-object.js';
|
|
|
3
3
|
import type { TopOutline } from '../interfaces/real-object.js';
|
|
4
4
|
import type { Properties } from '../interfaces/types.js';
|
|
5
5
|
import type { PreparedFigure } from './figure-registry.js';
|
|
6
|
-
import type { FigureBlueprintMember,
|
|
6
|
+
import type { FigureBlueprintMember, FigureBlueprintParameter } from './figure-blueprint.js';
|
|
7
7
|
/**
|
|
8
8
|
* 저작한 Figure 의 3D 표현.
|
|
9
9
|
*
|
|
@@ -64,17 +64,43 @@ export declare function memberGeometryAtOrigin(member: FigureBlueprintMember): T
|
|
|
64
64
|
*/
|
|
65
65
|
export declare function mergedGeometryOf(figure: PreparedFigure, index: number): THREE.BufferGeometry | null;
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* 물리량을 0~1 로 맵한다.
|
|
68
68
|
*
|
|
69
|
-
* 수가
|
|
70
|
-
*
|
|
69
|
+
* 수가 아니거나 범위가 뒤집혀 있으면 **안 말한 것으로 친다** — 지어낸 자세보다 기본
|
|
70
|
+
* 자세가 낫다. 범위 밖은 끝에서 문다(`sampleChannel` 과 같은 규율이다).
|
|
71
|
+
*/
|
|
72
|
+
export declare function normalizeParameter(range: {
|
|
73
|
+
min: number;
|
|
74
|
+
max: number;
|
|
75
|
+
}, value: number | undefined): number | undefined;
|
|
76
|
+
/**
|
|
77
|
+
* 이 clip 이 지금 몇 배속인가. 인스턴스가 말한 것이 이기고, 없으면 보통 속도다.
|
|
78
|
+
*
|
|
79
|
+
* 수가 아닌 것과 음수는 **안 말한 것으로 친다.** 음수는 거꾸로 도는 것이 아니라 키프레임을
|
|
80
|
+
* 거꾸로 읽는 것이라 뜻이 흐리다.
|
|
71
81
|
*/
|
|
72
82
|
export declare function valueNow(running: {
|
|
73
|
-
drive: FigureClipDrive;
|
|
74
83
|
clip: {
|
|
75
84
|
name: string;
|
|
76
85
|
};
|
|
77
86
|
}, said?: Record<string, number>): number;
|
|
87
|
+
/**
|
|
88
|
+
* 이 파라미터가 지금 가려는 자세. **0~1 이다.**
|
|
89
|
+
*
|
|
90
|
+
* 인스턴스는 `range` 의 단위로 준다 — 호이스트라면 mm 다. 안 줬거나 못 읽을 값이면
|
|
91
|
+
* 형식의 `default` 를, 그것도 없으면 `range.min` 을 쓴다.
|
|
92
|
+
*/
|
|
93
|
+
export declare function valueOf(parameter: FigureBlueprintParameter, said?: Record<string, number>): number;
|
|
94
|
+
/**
|
|
95
|
+
* 0 에서 1 까지 전 구간을 움직이는 데 걸리는 초.
|
|
96
|
+
*
|
|
97
|
+
* 기본은 **도형이 갖는다** — clip 의 길이가 곧 그 기계의 속도다. 같은 호이스트라도
|
|
98
|
+
* 설비마다 속도가 다른 것은 실제로 있는 일이라 인스턴스가 덮을 수 있다
|
|
99
|
+
* (`state.parameterDurations`). ADR-0051 ②.
|
|
100
|
+
*
|
|
101
|
+
* 음수와 수 아닌 것은 안 말한 것으로 친다. `0` 은 「즉시」라서 말한 것으로 친다.
|
|
102
|
+
*/
|
|
103
|
+
export declare function sweepOf(parameter: FigureBlueprintParameter, said?: Record<string, number>): number;
|
|
78
104
|
export declare class FigureRealObject extends RealObject {
|
|
79
105
|
/** 부품 이름 → mesh. 애니메이션·바인딩이 부품을 찾는 자리다. */
|
|
80
106
|
private _meshByName;
|
|
@@ -84,6 +110,8 @@ export declare class FigureRealObject extends RealObject {
|
|
|
84
110
|
private _memberByName;
|
|
85
111
|
/** 돌고 있는 clip 들. 비어 있으면 frameClock 을 구독하지 않는다. */
|
|
86
112
|
private _clips;
|
|
113
|
+
/** 값이 모는 파라미터들. clip 과 같은 프레임 구독을 쓴다. */
|
|
114
|
+
private _parameters;
|
|
87
115
|
/**
|
|
88
116
|
* clip 이 움직이는 부품들. **clip 별이 아니라 부품별이다.**
|
|
89
117
|
*
|
|
@@ -96,7 +124,7 @@ export declare class FigureRealObject extends RealObject {
|
|
|
96
124
|
/**
|
|
97
125
|
* 어느 램프가 켜져 있나. 부품 이름 → 켜짐.
|
|
98
126
|
*
|
|
99
|
-
* **인스턴스가 갖는다.** 자산 하나가
|
|
127
|
+
* **인스턴스가 갖는다.** 자산 하나가 도면에 열 개 놓이면 각각 다른 등이 켜지므로,
|
|
100
128
|
* 「지금 켜져 있다」는 형식이 아니라 여기 있어야 한다. 안 말한 부품은 형식에 적힌
|
|
101
129
|
* 기본 상태를 따른다.
|
|
102
130
|
*/
|
|
@@ -126,6 +154,33 @@ export declare class FigureRealObject extends RealObject {
|
|
|
126
154
|
* 흐른 시각은 그대로 두고 값만 바꾼다. 다시 세우면 도는 것이 매번 0 으로 튄다.
|
|
127
155
|
*/
|
|
128
156
|
updateClips(): void;
|
|
157
|
+
/**
|
|
158
|
+
* 이 인스턴스의 파라미터 값. 파라미터 이름 → **`range` 의 단위로 잰 수.**
|
|
159
|
+
*
|
|
160
|
+
* `clips` 와 **다른 칸인 것이 요점이다.** 저기 든 수는 배속(시각이 흐르는 속도)이고
|
|
161
|
+
* 여기 든 수는 지금 그만큼이라는 물리량이다 — 호이스트가 1200mm 내려와 있다. 한 칸에
|
|
162
|
+
* 섞으면 같은 이름이 어느 뜻인지 읽는 쪽이 청사진을 봐야 알 수 있다.
|
|
163
|
+
*
|
|
164
|
+
* **인스턴스가 갖는다.** 램프·clip 과 같은 이유다.
|
|
165
|
+
*/
|
|
166
|
+
get parameters(): Record<string, number> | undefined;
|
|
167
|
+
/**
|
|
168
|
+
* 이 인스턴스의 전이 속도를 덮는다. 파라미터 이름 → 0→1 전 구간의 초.
|
|
169
|
+
*
|
|
170
|
+
* 기본은 도형이 갖는다(clip 의 길이). 같은 호이스트라도 설비마다 속도가 다른 것은
|
|
171
|
+
* 실제로 있는 일이라 덮을 수 있게 둔다 — 「속도가 다르면 다른 도형 타입」은 택하지
|
|
172
|
+
* 않았다(ADR-0051 ②).
|
|
173
|
+
*/
|
|
174
|
+
get parameterDurations(): Record<string, number> | undefined;
|
|
175
|
+
/**
|
|
176
|
+
* 파라미터 값을 다시 읽는다. **지금 자세는 그대로 두고 목표만 바꾼다.**
|
|
177
|
+
*
|
|
178
|
+
* 여기가 전이가 일어나는 자리다. `at` 을 함께 옮기면 값을 줄 때마다 순간이동하고,
|
|
179
|
+
* 그러면 「내려가는 중」이 화면에 없다.
|
|
180
|
+
*/
|
|
181
|
+
updateParameters(): void;
|
|
182
|
+
/** 전이 속도만 다시 읽는다. 가던 것은 새 속도로 계속 간다. */
|
|
183
|
+
updateParameterDurations(): void;
|
|
129
184
|
onchange(after: Properties, before: Properties): void;
|
|
130
185
|
build(): void;
|
|
131
186
|
/**
|
|
@@ -135,6 +190,25 @@ export declare class FigureRealObject extends RealObject {
|
|
|
135
190
|
* mesh 에 걸리는지 풀 수 있다.
|
|
136
191
|
*/
|
|
137
192
|
private takeClips;
|
|
193
|
+
/**
|
|
194
|
+
* 이 자산의 파라미터들을 세운다. **`takeClips` 와 같은 자리에서 한 번.**
|
|
195
|
+
*
|
|
196
|
+
* 묶는 일은 clip 과 똑같다 — 채널이 부품을 이름으로 가리키고 그 부품이 어느 mesh 인지
|
|
197
|
+
* 푼다. 다른 것은 **시작 자세**다. clip 은 0 에서 시작해 흐르지만 파라미터는 인스턴스가
|
|
198
|
+
* 이미 준 값에서 시작한다. 건물이 세워질 때 호이스트가 이미 내려와 있으면 내려온 채로
|
|
199
|
+
* 서야지, 0 에서 내려오는 것을 보여 주면 안 된다.
|
|
200
|
+
*
|
|
201
|
+
* 길이가 0 인 것도 **버리지 않는다.** clip 에서 길이 0 은 아무 일도 안 일어나는 것이지만
|
|
202
|
+
* 파라미터에서는 「즉시 그 자세로 간다」이고, 그것은 쓸모 있는 자산이다.
|
|
203
|
+
*/
|
|
204
|
+
private takeParameters;
|
|
205
|
+
/**
|
|
206
|
+
* 채널들이 가리키는 부품을 mesh 에 묶는다. 묶인 채널 수를 낸다.
|
|
207
|
+
*
|
|
208
|
+
* **clip 과 파라미터가 같은 함수를 쓴다.** 묶는 규칙은 구동 방식과 무관하고, 두 벌이
|
|
209
|
+
* 되면 한쪽만 고쳐지는 것은 시간 문제다.
|
|
210
|
+
*/
|
|
211
|
+
private takeChannels;
|
|
138
212
|
/**
|
|
139
213
|
* clip 이 있으면 프레임을 받는다.
|
|
140
214
|
*
|
|
@@ -169,6 +243,21 @@ export declare class FigureRealObject extends RealObject {
|
|
|
169
243
|
* `dt` 는 sim 시간이라 멈춤·배속이 그대로 먹는다.
|
|
170
244
|
*/
|
|
171
245
|
private advanceClips;
|
|
246
|
+
/**
|
|
247
|
+
* 자세 하나를 그 부품의 자리에 **합친다.**
|
|
248
|
+
*
|
|
249
|
+
* clip 과 파라미터가 같은 함수를 쓴다 — 포크리프트의 포크는 드는 파라미터와 앞으로
|
|
250
|
+
* 내미는 파라미터 둘 다에 들고, 둘은 같은 경로(translation)를 쓴다. 구동 방식이
|
|
251
|
+
* 달라도 합치는 규칙은 같다.
|
|
252
|
+
*/
|
|
253
|
+
private mixPose;
|
|
254
|
+
/**
|
|
255
|
+
* 세워지자마자 파라미터 자세를 앉힌다. **첫 프레임을 기다리지 않는다.**
|
|
256
|
+
*
|
|
257
|
+
* 프레임을 기다리면 호이스트가 이미 내려와 있는 인스턴스도 한 프레임 동안은 올라간
|
|
258
|
+
* 채로 그려진다. 3D 는 요청이 있어야 다시 그리므로 그 한 프레임이 언제 올지도 모른다.
|
|
259
|
+
*/
|
|
260
|
+
private seatParameters;
|
|
172
261
|
/**
|
|
173
262
|
* 모은 자세를 mesh 에 앉힌다.
|
|
174
263
|
*
|
|
@@ -199,7 +288,7 @@ export declare class FigureRealObject extends RealObject {
|
|
|
199
288
|
/**
|
|
200
289
|
* 인스턴스의 높이.
|
|
201
290
|
*
|
|
202
|
-
*
|
|
291
|
+
* 도면은 `left`·`top`·`width`·`height` 만 적는 것이 보통이고 `depth` 는 잘 적지
|
|
203
292
|
* 않는다. 그때 기본 높이(≈1)를 쓰면 `base.y` 로 나뉘어 형상이 납작하게 눌린다.
|
|
204
293
|
*
|
|
205
294
|
* **저작한 비례를 지킨다** — 평면 두 축이 커진 만큼 높이도 커진다. 배치 크기가
|
|
@@ -207,6 +296,28 @@ export declare class FigureRealObject extends RealObject {
|
|
|
207
296
|
* 덜 왜곡된다. `state.depth` 를 적었으면 그것이 이긴다.
|
|
208
297
|
*/
|
|
209
298
|
get effectiveDepth(): number;
|
|
299
|
+
/**
|
|
300
|
+
* 안 적었을 때 이 도형이 서는 높이 — **배치 기준이 그것을 말한다.**
|
|
301
|
+
*
|
|
302
|
+
* 청사진의 `placement` 는 좌표를 뒤집으라는 말이 아니라 **어느 면에 붙느냐**다. 컨베이어는
|
|
303
|
+
* 바닥에 서고 OHT 는 천장에 매달린다. 높이 값 자체는 도형이 모르고 현장이 안다
|
|
304
|
+
* (`sceneHeights`). ADR-0045(`operato-twin/design/04-decisions.md`).
|
|
305
|
+
*
|
|
306
|
+
* 한동안 이 길이 없었다. `compile()` 이 `blueprint.placement` 를 적는데 이 폴더 전체에서
|
|
307
|
+
* 그 낱말을 읽는 곳이 0 건이었고, 천정 기준으로 저작한 OHT 를 도면에 놓으면 바닥에 섰다.
|
|
308
|
+
*
|
|
309
|
+
* **적은 값이 이긴다.** 저작자가 `zPos` 를 적었으면 그 자리다 — 기본값은 「안 정했을 때
|
|
310
|
+
* 어디인가」이지 「늘 어디여야 하는가」가 아니다.
|
|
311
|
+
*
|
|
312
|
+
* `zPos` 가 부피의 어느 면을 가리키는지는 씬의 좌표 모드가 정하므로(`geometricOffsetY`),
|
|
313
|
+
* 같은 천장 높이를 말하는 수가 모드마다 다르다. 바닥 기준이면 밑면, 중심 기준이면 중심,
|
|
314
|
+
* 천장 기준이면 윗면이다.
|
|
315
|
+
*
|
|
316
|
+
* `center` 에는 기본 높이가 없다. things-scene 이 아는 단은 바닥과 천장 둘뿐이고(ADR-0045),
|
|
317
|
+
* 「떠 있다」에는 표준 높이라는 것이 없다 — 드론이 몇 미터에 뜨는지는 그 도형의 일이 아니다.
|
|
318
|
+
* 저작자가 `zPos` 를 적을 자리다.
|
|
319
|
+
*/
|
|
320
|
+
get effectiveZPos(): number;
|
|
210
321
|
/**
|
|
211
322
|
* 인스턴스 치수를 **배율로만** 준다 — geometry 는 건드리지 않으므로 인스턴스가
|
|
212
323
|
* 늘어도 정점 버퍼가 늘지 않는다.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAMrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxD,OAAO,KAAK,EAAE,cAAc,EAAiB,MAAM,sBAAsB,CAAA;AACzE,OAAO,KAAK,EAEV,qBAAqB,
|
|
1
|
+
{"version":3,"file":"figure-real-object.d.ts","sourceRoot":"","sources":["../../src/figure/figure-real-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,10 +4,10 @@ import type { FigureBlueprint, FigureBlueprintGroup, FigureBlueprintMember } fro
|
|
|
4
4
|
*
|
|
5
5
|
* `Component.register(type, clazz)` 는 「이 타입은 이 클래스가 그린다」를 말한다. 여기는
|
|
6
6
|
* 그 옆에서 「이 타입은 이 청사진을 그린다」를 말한다. 둘이 짝이므로 `registerFigure()`
|
|
7
|
-
* 하나가 양쪽을 같이 한다 —
|
|
8
|
-
* 만 적으면 되고, 청사진도 정본도
|
|
7
|
+
* 하나가 양쪽을 같이 한다 — 도면 모델은 `{ type: 'EQ_MIXER', left, top, width, height }`
|
|
8
|
+
* 만 적으면 되고, 청사진도 정본도 도면에 들어가지 않는다.
|
|
9
9
|
*
|
|
10
|
-
* 청사진은
|
|
10
|
+
* 청사진은 도면과 **수명이 다르다.** 도면은 사람이 고치니 자주 바뀌고, Figure 는
|
|
11
11
|
* 타입 이름으로 불변하게 주소가 잡히니 오래 캐시된다. 한 문서에 섞으면 둘 다 짧은
|
|
12
12
|
* 쪽을 따라간다.
|
|
13
13
|
*/
|
|
@@ -58,7 +58,7 @@ export declare function getFigure(type: string): PreparedFigure | null;
|
|
|
58
58
|
export declare function figureTypes(): string[];
|
|
59
59
|
export declare function hasFigure(type: string): boolean;
|
|
60
60
|
/**
|
|
61
|
-
* 등록을 지운다. 컴포넌트 타입 등록은 건드리지 않는다 — 지우면
|
|
61
|
+
* 등록을 지운다. 컴포넌트 타입 등록은 건드리지 않는다 — 지우면 도면에 이미 놓인
|
|
62
62
|
* 인스턴스가 세워지지 못한다. 청사진이 없으면 인스턴스가 자리 표시를 그린다.
|
|
63
63
|
*/
|
|
64
64
|
export declare function unregisterFigure(type: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figure-registry.d.ts","sourceRoot":"","sources":["../../src/figure/figure-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,uBAAuB,CAAA;AAI9B;;;;;;;;;;;GAWG;AAEH,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,qBAAqB,CAAA;IAC7B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,eAAe,CAAA;IAC1B;;;;;;;;OAQG;IACH,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,wBAAwB;IACxB,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAA;CACvB;AAUD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvD;AA4BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"figure-registry.d.ts","sourceRoot":"","sources":["../../src/figure/figure-registry.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,uBAAuB,CAAA;AAI9B;;;;;;;;;;;GAWG;AAEH,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,qBAAqB,CAAA;IAC7B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,eAAe,CAAA;IAC1B;;;;;;;;OAQG;IACH,UAAU,EAAE,YAAY,EAAE,CAAA;IAC1B,wBAAwB;IACxB,MAAM,EAAE,aAAa,EAAE,CAAA;IACvB,+BAA+B;IAC/B,cAAc,EAAE,MAAM,CAAA;CACvB;AAUD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAEvD;AA4BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,cAAc,CAyBzE;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAW7D;AAED,yBAAyB;AACzB,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,qBAAqB;AACrB,wBAAgB,YAAY,IAAI,IAAI,CAEnC"}
|
|
@@ -3,6 +3,12 @@ import type Component from '../components/component.js';
|
|
|
3
3
|
import type { IRealObject, TopOutline } from '../interfaces/real-object.js';
|
|
4
4
|
import type { Properties } from '../interfaces/types.js';
|
|
5
5
|
import { ThreeDimensionalContainer } from './three-dimensional-container.js';
|
|
6
|
+
/**
|
|
7
|
+
* 천장 높이 기본값 (mm). `operato-scene` 의 `StandardHeights.ceiling` 과 같은 수다.
|
|
8
|
+
*
|
|
9
|
+
* 공급자가 없을 때 쓰는 값이지 정본이 아니다 — 정본은 현장이 갖는다.
|
|
10
|
+
*/
|
|
11
|
+
export declare const DEFAULT_CEILING = 3000;
|
|
6
12
|
import type { Placement } from '../placement/index.js';
|
|
7
13
|
export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object3D> implements IRealObject {
|
|
8
14
|
protected _component: Component;
|
|
@@ -215,6 +221,24 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
215
221
|
* `component.root`(= RootContainer, 최상위)가 아닌 `component.rootModel`(= 3D 모델의 루트)을 읽어야 한다.
|
|
216
222
|
*/
|
|
217
223
|
protected get scenePlacement(): 'floor' | 'space' | 'inverted';
|
|
224
|
+
/**
|
|
225
|
+
* 부착면의 **높이** — 씬(현장)의 사실이다.
|
|
226
|
+
*
|
|
227
|
+
* 도형은 「나는 천장에 매달린다」까지만 안다. 그 천장이 3m 인지 6m 인지는 도형이 알 수
|
|
228
|
+
* 없고 현장이 안다. ADR-0045(`operato-twin/design/04-decisions.md`) — archetype 은 청사진의
|
|
229
|
+
* 사실이고 높이 값은 씬의 사실이라, 둘을 갈라서 나른다.
|
|
230
|
+
*
|
|
231
|
+
* **여기는 자리(slot)이고 값은 공급자가 댄다.** things-scene 은 figure 가 쓰는 둘만 안다 —
|
|
232
|
+
* 바닥과 천장. 물류의 아홉 단(operation · eye · signage · hoist …)은 도메인 어휘라
|
|
233
|
+
* `operato-scene` 의 `StandardHeights` 것으로 남고, 그쪽이 이 자리에 값을 쓴다.
|
|
234
|
+
*
|
|
235
|
+
* 안 주면 바닥 0 · 천장 3000 이다. 3000 은 `StandardHeights` 의 기본값과 같은 수로 잡았다 —
|
|
236
|
+
* 두 기본값이 다르면 공급자를 붙이는 날 모든 천장 도형이 소리 없이 움직인다.
|
|
237
|
+
*/
|
|
238
|
+
protected get sceneHeights(): {
|
|
239
|
+
floor: number;
|
|
240
|
+
ceiling: number;
|
|
241
|
+
};
|
|
218
242
|
/**
|
|
219
243
|
* `scenePlacement` 의 public 읽기 전용 노출 — PlacementSurface contract
|
|
220
244
|
* (FlowNode.placementFor) 가 carrier 의 sync offset (zPos →
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,wBAAwB,CAAA;AAK/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/threed/real-object.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.14",
|
|
4
4
|
"description": "A high-performance 2D/3D scene graph library for building interactive visual editors, combining HTML5 Canvas and Three.js to enable facility visualization, data-driven animations, and real-time monitoring dashboards",
|
|
5
5
|
"main": "things-scene-min.js",
|
|
6
6
|
"module": "things-scene.mjs",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
},
|
|
91
91
|
"homepage": "https://github.com/hatiolab/things-scene#readme",
|
|
92
92
|
"dependencies": {
|
|
93
|
-
"@hatiolab/figure-model": "^0.1.
|
|
93
|
+
"@hatiolab/figure-model": "^0.1.19",
|
|
94
94
|
"@wizpanda/super-gif": "^0.0.6",
|
|
95
95
|
"dompurify": "^3.3.1",
|
|
96
96
|
"jsonata": "^1.8.6",
|