@hatiolab/things-scene 10.0.5 → 10.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.
Files changed (76) hide show
  1. package/dist-types/diagnostics/inspector.d.ts +47 -0
  2. package/dist-types/diagnostics/inspector.d.ts.map +1 -1
  3. package/dist-types/figure/figure-blueprint.d.ts +118 -0
  4. package/dist-types/figure/figure-blueprint.d.ts.map +1 -0
  5. package/dist-types/figure/figure-instance.d.ts +283 -0
  6. package/dist-types/figure/figure-instance.d.ts.map +1 -0
  7. package/dist-types/figure/figure-palette.d.ts +37 -0
  8. package/dist-types/figure/figure-palette.d.ts.map +1 -0
  9. package/dist-types/figure/figure-real-object.d.ts +73 -0
  10. package/dist-types/figure/figure-real-object.d.ts.map +1 -0
  11. package/dist-types/figure/figure-registry.d.ts +71 -0
  12. package/dist-types/figure/figure-registry.d.ts.map +1 -0
  13. package/dist-types/figure/index.d.ts +12 -0
  14. package/dist-types/figure/index.d.ts.map +1 -0
  15. package/dist-types/interfaces/real-object.d.ts +34 -0
  16. package/dist-types/interfaces/real-object.d.ts.map +1 -1
  17. package/dist-types/layer/model-layer.d.ts +9 -2
  18. package/dist-types/layer/model-layer.d.ts.map +1 -1
  19. package/dist-types/model/arrange.d.ts +61 -0
  20. package/dist-types/model/arrange.d.ts.map +1 -0
  21. package/dist-types/model/index.d.ts +1 -0
  22. package/dist-types/model/index.d.ts.map +1 -1
  23. package/dist-types/things-scene/index.d.ts +1 -0
  24. package/dist-types/things-scene/index.d.ts.map +1 -1
  25. package/dist-types/threed/common.d.ts +8 -0
  26. package/dist-types/threed/common.d.ts.map +1 -1
  27. package/dist-types/threed/factories/backdrop.d.ts.map +1 -1
  28. package/dist-types/threed/factories/camera.d.ts +1 -1
  29. package/dist-types/threed/factories/cube.d.ts +8 -0
  30. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  31. package/dist-types/threed/factories/cylinder.d.ts +17 -0
  32. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  33. package/dist-types/threed/factories/sphere.d.ts +11 -0
  34. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  35. package/dist-types/threed/factories/wall.d.ts +8 -0
  36. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  37. package/dist-types/threed/geometry-bank.d.ts +64 -0
  38. package/dist-types/threed/geometry-bank.d.ts.map +1 -0
  39. package/dist-types/threed/index.d.ts +4 -0
  40. package/dist-types/threed/index.d.ts.map +1 -1
  41. package/dist-types/threed/instanced-set.d.ts +211 -0
  42. package/dist-types/threed/instanced-set.d.ts.map +1 -0
  43. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  44. package/dist-types/threed/managers/renderer-manager.d.ts +3 -3
  45. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  46. package/dist-types/threed/managers/scene-manager.d.ts +33 -9
  47. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  48. package/dist-types/threed/material-3d.d.ts +9 -0
  49. package/dist-types/threed/material-3d.d.ts.map +1 -1
  50. package/dist-types/threed/real-object-camera-meshed.d.ts +1 -1
  51. package/dist-types/threed/real-object-dom-texture.d.ts +2 -2
  52. package/dist-types/threed/real-object-extrude.d.ts +14 -0
  53. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  54. package/dist-types/threed/real-object-mesh.d.ts +79 -2
  55. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  56. package/dist-types/threed/real-object-plane-2d.d.ts +2 -2
  57. package/dist-types/threed/real-object-scene.d.ts +2 -2
  58. package/dist-types/threed/real-object-service.d.ts +2 -2
  59. package/dist-types/threed/real-object.d.ts +46 -2
  60. package/dist-types/threed/real-object.d.ts.map +1 -1
  61. package/dist-types/threed/segments.d.ts +49 -0
  62. package/dist-types/threed/segments.d.ts.map +1 -0
  63. package/dist-types/threed/three-capability.d.ts +7 -0
  64. package/dist-types/threed/three-capability.d.ts.map +1 -1
  65. package/dist-types/threed/three-container.d.ts +8 -3
  66. package/dist-types/threed/three-container.d.ts.map +1 -1
  67. package/dist-types/threed/top-outline.d.ts +37 -0
  68. package/dist-types/threed/top-outline.d.ts.map +1 -0
  69. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  70. package/dist-types/transition/transition-effect.d.ts.map +1 -1
  71. package/package.json +3 -3
  72. package/things-scene-min.js +11 -11
  73. package/things-scene-min.js.map +1 -1
  74. package/things-scene-transfer.mjs +3 -3
  75. package/things-scene.mjs +3 -3
  76. package/things-scene.mjs.map +1 -1
@@ -0,0 +1,71 @@
1
+ import type { FigureBlueprint, FigureBlueprintGroup, FigureBlueprintMember, FigureBlueprintPoint } from './figure-blueprint.js';
2
+ /**
3
+ * 저작한 Figure 를 컴포넌트 타입에 매어 두는 곳.
4
+ *
5
+ * `Component.register(type, clazz)` 는 「이 타입은 이 클래스가 그린다」를 말한다. 여기는
6
+ * 그 옆에서 「이 타입은 이 청사진을 그린다」를 말한다. 둘이 짝이므로 `registerFigure()`
7
+ * 하나가 양쪽을 같이 한다 — 보드 모델은 `{ type: 'EQ_MIXER', left, top, width, height }`
8
+ * 만 적으면 되고, 청사진도 정본도 보드에 들어가지 않는다.
9
+ *
10
+ * 청사진은 보드와 **수명이 다르다.** 보드는 사람이 고치니 자주 바뀌고, Figure 는
11
+ * 타입 이름으로 불변하게 주소가 잡히니 오래 캐시된다. 한 문서에 섞으면 둘 다 짧은
12
+ * 쪽을 따라간다.
13
+ */
14
+ /** 그리기 전에 한 번 풀어 둔 부품. 인스턴스마다 다시 풀지 않는다. */
15
+ export interface PreparedPart {
16
+ member: FigureBlueprintMember;
17
+ group: FigureBlueprintGroup;
18
+ /** 팔레트에서 해석한 색. */
19
+ color: string;
20
+ /** 이 부품에 걸린 애니메이션 포인트. 없으면 undefined. */
21
+ point?: FigureBlueprintPoint;
22
+ }
23
+ export interface PreparedGroup {
24
+ group: FigureBlueprintGroup;
25
+ color: string;
26
+ /** 이 묶음의 부품에 걸린 애니메이션 포인트. 묶음이 animated 면 하나 있다. */
27
+ point?: FigureBlueprintPoint;
28
+ }
29
+ export interface PreparedFigure {
30
+ blueprint: FigureBlueprint;
31
+ /**
32
+ * 2D 로 그리는 순서 — **z 오름차순이며 묶음 순서가 아니다.**
33
+ *
34
+ * 묶음은 3D 의 것이다. 3D 는 깊이 버퍼가 앞뒤를 가려 주므로 재질별로 합쳐도 되지만,
35
+ * 2D 캔버스는 나중에 칠한 것이 위로 온다. 묶음 순서로 칠하면 아래에 있어야 할
36
+ * 부품이 위를 덮는다. 그래서 2D 는 z 순서를 따로 갖는다.
37
+ *
38
+ * 이 순서는 타입마다 한 번만 만든다 — 인스턴스가 몇이든 다시 정렬하지 않는다.
39
+ */
40
+ paintOrder: PreparedPart[];
41
+ /** 3D 로 세울 묶음 — 재질별. */
42
+ groups: PreparedGroup[];
43
+ /** 이 값이 팔레트와 어긋나면 색을 다시 푼다. */
44
+ paletteVersion: number;
45
+ }
46
+ /** `figure-instance.ts` 가 부른다. 응용이 다른 클래스를 쓰고 싶으면 갈아 끼울 수 있다. */
47
+ export declare function useFigureComponent(clazz: unknown): void;
48
+ /**
49
+ * Figure 를 등록한다 — 청사진을 매어 두고 컴포넌트 타입도 함께 등록한다.
50
+ *
51
+ * 읽을 수 없는 청사진이면 **던진다.** 프레임마다 조용히 실패하는 대신 등록에서 한 번
52
+ * 크게 실패하는 편이, 무엇이 잘못됐는지 알기에 낫다.
53
+ */
54
+ export declare function registerFigure(blueprint: FigureBlueprint): PreparedFigure;
55
+ /**
56
+ * 등록된 Figure 를 찾는다. 없으면 `null` — 빈 청사진으로 갈음하지 않는다.
57
+ *
58
+ * 팔레트가 바뀌었으면 색을 다시 푼 것을 돌려준다.
59
+ */
60
+ export declare function getFigure(type: string): PreparedFigure | null;
61
+ /** 등록된 Figure 타입 이름들. */
62
+ export declare function figureTypes(): string[];
63
+ export declare function hasFigure(type: string): boolean;
64
+ /**
65
+ * 등록을 지운다. 컴포넌트 타입 등록은 건드리지 않는다 — 지우면 보드에 이미 놓인
66
+ * 인스턴스가 세워지지 못한다. 청사진이 없으면 인스턴스가 자리 표시를 그린다.
67
+ */
68
+ export declare function unregisterFigure(type: string): boolean;
69
+ /** 시험을 위해 전부 지운다. */
70
+ export declare function resetFigures(): void;
71
+ //# sourceMappingURL=figure-registry.d.ts.map
@@ -0,0 +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,EACrB,oBAAoB,EACrB,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;IACb,yCAAyC;IACzC,KAAK,CAAC,EAAE,oBAAoB,CAAA;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,oBAAoB,CAAA;CAC7B;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;AAkCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,eAAe,GAAG,cAAc,CAiBzE;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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 저작한 Figure 를 things-scene 에서 다루는 부분.
3
+ *
4
+ * 이 묶음을 읽으면 `registerFigure()` 가 쓸 수 있게 이어진다 — `figure-instance.ts` 가
5
+ * 적재되며 컴포넌트 클래스를 registry 에 넣기 때문이다. 그래서 instance 를 먼저 읽는다.
6
+ */
7
+ export * from './figure-instance.js';
8
+ export * from './figure-blueprint.js';
9
+ export * from './figure-palette.js';
10
+ export * from './figure-registry.js';
11
+ export * from './figure-real-object.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/figure/index.ts"],"names":[],"mappings":"AAIA;;;;;GAKG;AACH,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA"}
@@ -8,6 +8,32 @@ import type { Properties } from './types.js';
8
8
  * object3d 를 갖기 때문에 인터페이스에도 노출. 타입은 any — 명시 타입이 필요한
9
9
  * 곳은 IThreeRealObject(src/threed/interfaces.ts) 또는 구체 구현 클래스로 좁혀 사용.
10
10
  */
11
+ /**
12
+ * 톱뷰 윤곽 — 3D 형상을 위에서 내려다본 폐다각형.
13
+ *
14
+ * 3D 로만 저작한 형상의 2D 표현을 **계산**하기 위한 것이다. 2D 를 따로 그리지 않으니,
15
+ * 2D 와 3D 가 다른 물건으로 보이는 일이 생기지 않는다.
16
+ *
17
+ * 좌표 규약 — 원점은 컴포넌트 중심, x 는 오른쪽, y 는 아래. 2D 캔버스와 같은 방향이라
18
+ * 변환 없이 쓸 수 있다. 컴포넌트 자신의 회전은 **적용되지 않은** 상태다(회전은 2D 쪽이
19
+ * 얹는다).
20
+ */
21
+ export interface TopOutline {
22
+ /**
23
+ * 폐다각형의 점들. 첫 점과 끝 점을 이어 닫힌 것으로 읽는다 — 마지막에 첫 점을
24
+ * 되풀어 넣지 않는다.
25
+ */
26
+ points: {
27
+ x: number;
28
+ y: number;
29
+ }[];
30
+ /**
31
+ * 곡선을 그 수로 근사했다는 뜻. 없으면 **직선 형상이거나 알 수 없다** — 둘을
32
+ * 구별하지 않는다. 압출 계열은 경로가 이미 점으로 바뀐 뒤에 오므로 원래 분할 수를
33
+ * 알 수 없어 비워 둔다.
34
+ */
35
+ segments?: number;
36
+ }
11
37
  export interface IRealObject {
12
38
  /**
13
39
  * THREE.Object3D 인스턴스. THREE 의존성 회피를 위해 any 로 노출.
@@ -36,6 +62,14 @@ export interface IRealObject {
36
62
  updateText(): void;
37
63
  /** Component 속성 변경 시 호출 */
38
64
  onchange(after: Properties, before: Properties): void;
65
+ /**
66
+ * 톱뷰 윤곽을 계산해 돌려준다. **계산할 수 없으면 `null`** — 빈 배열이나 경계상자로
67
+ * 갈음하지 않는다. 부르는 쪽이 「윤곽이 없다」와 「윤곽이 비었다」를 구별해야 한다.
68
+ *
69
+ * 계산할 수 없는 예 — 외부 모델(glTF)처럼 형상이 파일에서 오는 것, 텍스트·DOM
70
+ * 오버레이처럼 두께가 없는 것.
71
+ */
72
+ topOutline(): TopOutline | null;
39
73
  /** 포커스 여부 (getter/setter) */
40
74
  focused: boolean;
41
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/interfaces/real-object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAA;IAGd,wDAAwD;IACxD,MAAM,IAAI,IAAI,CAAA;IACd,aAAa;IACb,OAAO,IAAI,IAAI,CAAA;IAGf,0CAA0C;IAC1C,eAAe,IAAI,IAAI,CAAA;IACvB,oDAAoD;IACpD,eAAe,IAAI,IAAI,CAAA;IACvB,eAAe;IACf,cAAc,IAAI,IAAI,CAAA;IAGtB,gBAAgB;IAChB,WAAW,IAAI,IAAI,CAAA;IACnB,eAAe;IACf,YAAY,IAAI,IAAI,CAAA;IACpB,iBAAiB;IACjB,eAAe,IAAI,IAAI,CAAA;IACvB,eAAe;IACf,iBAAiB,IAAI,IAAI,CAAA;IACzB,gBAAgB;IAChB,UAAU,IAAI,IAAI,CAAA;IAGlB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IAGrD,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB"}
1
+ {"version":3,"file":"real-object.d.ts","sourceRoot":"","sources":["../../src/interfaces/real-object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAE5C;;;;;;;;GAQG;AACH;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAA;IAGd,wDAAwD;IACxD,MAAM,IAAI,IAAI,CAAA;IACd,aAAa;IACb,OAAO,IAAI,IAAI,CAAA;IAGf,0CAA0C;IAC1C,eAAe,IAAI,IAAI,CAAA;IACvB,oDAAoD;IACpD,eAAe,IAAI,IAAI,CAAA;IACvB,eAAe;IACf,cAAc,IAAI,IAAI,CAAA;IAGtB,gBAAgB;IAChB,WAAW,IAAI,IAAI,CAAA;IACnB,eAAe;IACf,YAAY,IAAI,IAAI,CAAA;IACpB,iBAAiB;IACjB,eAAe,IAAI,IAAI,CAAA;IACvB,eAAe;IACf,iBAAiB,IAAI,IAAI,CAAA;IACzB,gBAAgB;IAChB,UAAU,IAAI,IAAI,CAAA;IAGlB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAAA;IAGrD;;;;;;OAMG;IACH,UAAU,IAAI,UAAU,GAAG,IAAI,CAAA;IAG/B,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB"}
@@ -56,6 +56,13 @@ export default class ModelLayer extends DualCanvasLayer implements ThreeDimensio
56
56
  */
57
57
  private get _threedEnabled();
58
58
  is3dContainer(): boolean;
59
+ /**
60
+ * 반사할 환경(IBL)이 걸려 있나. 진단이 묻는 공개 질문이다.
61
+ *
62
+ * `metalness` 가 높은 재질은 이것이 없으면 고른 색과 무관하게 어둡게 나온다 —
63
+ * PBR 에서 완전한 금속은 확산 성분이 없어 보이는 것이 전부 반사이기 때문이다.
64
+ */
65
+ get hasEnvironment(): boolean;
59
66
  get gizmoMode(): 'translate' | 'rotate' | 'scale' | undefined;
60
67
  setGizmoMode(mode: 'translate' | 'rotate' | 'scale'): void;
61
68
  /** 도움말 패널 열기/닫기 — 단축키 `H` 와 같은 동작. */
@@ -73,10 +80,10 @@ export default class ModelLayer extends DualCanvasLayer implements ThreeDimensio
73
80
  * 단축키가 하는 일과 공개 API 가 하는 일은 같아야 한다.
74
81
  */
75
82
  setCameraView(view: CameraViewName): void;
76
- get scene3d(): THREE.Scene | undefined;
83
+ get scene3d(): THREE.Scene<THREE.Object3DEventMap> | undefined;
77
84
  get renderer3d(): THREE.WebGLRenderer | undefined;
78
85
  get activeCamera3d(): THREE.Camera | undefined;
79
- get mixer(): THREE.AnimationMixer | undefined;
86
+ get mixer(): THREE.AnimationMixer<THREE.AnimationMixerEventMap> | undefined;
80
87
  addArrow3D(id: string, from: Component, to: Component, style?: ArrowStyle3D): void;
81
88
  removeArrow3D(id: string): void;
82
89
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model-layer.d.ts","sourceRoot":"","sources":["../../src/layer/model-layer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-layer.d.ts","sourceRoot":"","sources":["../../src/layer/model-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type Component from '../components/component.js';
2
+ /** 정렬·분포의 대상 축. */
3
+ export type ArrangeAxis = 'x' | 'y' | 'z';
4
+ /** 축 위에서 어디에 맞출 것인가. */
5
+ export type AlignMode = 'min' | 'center' | 'max';
6
+ /** 축 위의 한 구간 — 시작 좌표와 크기. */
7
+ export interface Extent {
8
+ start: number;
9
+ size: number;
10
+ }
11
+ /** `CommandChange({ changes })` 에 넘길 변경 한 건. */
12
+ export interface ArrangeChange {
13
+ component: Component;
14
+ before: Record<string, number>;
15
+ after: Record<string, number>;
16
+ }
17
+ /**
18
+ * 어댑터의 반환값.
19
+ *
20
+ * `skipped` 는 그 축의 구간을 읽을 수 없어 제외된 컴포넌트다. 조용히 빼지 않고
21
+ * 돌려주므로 호출자가 사용자에게 알릴 수 있다 — 예: z 축 정렬인데 `depth` 가
22
+ * 명시되지 않은 컴포넌트.
23
+ */
24
+ export interface ArrangeResult {
25
+ changes: ArrangeChange[];
26
+ skipped: Component[];
27
+ }
28
+ /**
29
+ * 구간들을 축 위에서 정렬한 새 시작 좌표.
30
+ *
31
+ * 기준은 현재 구간들이 차지한 전체 범위다 — `min` 은 가장 앞선 시작에, `max` 는
32
+ * 가장 뒤인 끝에, `center` 는 전체 범위의 가운데에 맞춘다. 캔버스나 부모가 아니라
33
+ * **선택 집합 자신**이 기준이므로 선택만으로 결과가 정해진다.
34
+ *
35
+ * 구간이 없으면 빈 배열을 반환한다.
36
+ */
37
+ export declare function alignStarts(extents: Extent[], mode: AlignMode): number[];
38
+ /**
39
+ * 구간들의 사이 간격을 고르게 한 새 시작 좌표.
40
+ *
41
+ * 축 위에서 가장 앞선 것과 가장 뒤인 것은 제자리에 두고, 사이의 것들을 간격이
42
+ * 같도록 옮긴다. 겹쳐 있어 남는 자리가 음수면 간격도 음수가 되어 균일하게 겹친다 —
43
+ * 그것이 "고르게" 의 뜻이므로 보정하지 않는다.
44
+ *
45
+ * 입력 순서와 무관하게 **축 위의 위치 순서**로 배분하고, 결과는 입력 순서에 맞춰
46
+ * 돌려준다. 구간이 셋 미만이면 옮길 것이 없으므로 현재 시작 좌표를 그대로 반환한다.
47
+ */
48
+ export declare function distributeStarts(extents: Extent[]): number[];
49
+ /**
50
+ * 컴포넌트에서 축 구간을 읽는다.
51
+ *
52
+ * 그 축의 크기가 상태에 명시되지 않으면 `null` 을 반환한다. 0 으로 갈음하지
53
+ * 않는다 — 두께를 모르는 것과 두께가 0 인 것은 다르고, 0 으로 두면 정렬 결과가
54
+ * 조용히 어긋난다.
55
+ */
56
+ export declare function extentOf(component: Component, axis: ArrangeAxis): Extent | null;
57
+ /** 선택 집합을 축 위에서 정렬한다. 움직일 필요가 없는 컴포넌트는 변경에서 빠진다. */
58
+ export declare function alignChanges(components: Component[], axis: ArrangeAxis, mode: AlignMode): ArrangeResult;
59
+ /** 선택 집합의 사이 간격을 축 위에서 고르게 한다. */
60
+ export declare function distributeChanges(components: Component[], axis: ArrangeAxis): ArrangeResult;
61
+ //# sourceMappingURL=arrange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrange.d.ts","sourceRoot":"","sources":["../../src/model/arrange.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,mBAAmB;AACnB,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAEzC,wBAAwB;AACxB,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,CAAA;AAEhD,6BAA6B;AAC7B,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,SAAS,CAAA;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAA;IACxB,OAAO,EAAE,SAAS,EAAE,CAAA;CACrB;AAQD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,MAAM,EAAE,CAgBxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAoB5D;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAkB/E;AAiCD,oDAAoD;AACpD,wBAAgB,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,GAAG,aAAa,CAEvG;AAED,kCAAkC;AAClC,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAE3F"}
@@ -1,4 +1,5 @@
1
1
  export { default as compile } from './compile.js';
2
2
  export { default as duplicate } from './duplicate.js';
3
3
  export { select, match } from './selector.js';
4
+ export { alignStarts, distributeStarts, extentOf, alignChanges, distributeChanges, type ArrangeAxis, type AlignMode, type Extent, type ArrangeChange, type ArrangeResult } from './arrange.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,aAAa,EACnB,MAAM,cAAc,CAAA"}
@@ -66,6 +66,7 @@ export { default as TransitionEffect } from '../transition/transition-effect.js'
66
66
  export * from '../placement/index.js';
67
67
  export * from '../search/index.js';
68
68
  export * from '../threed/index.js';
69
+ export * from '../figure/index.js';
69
70
  export * from '../types/polygon-path.js';
70
71
  export * from '../types/polygon-path-arc.js';
71
72
  export { type BulkCreateResult } from './api/add-start.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/things-scene/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/things-scene/index.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,14 @@ export declare const SCALE_MIN = 0.001;
4
4
  * 'none'/'transparent' 는 0. **content alpha(state.alpha)는 여기서 곱하지 않는다** — 코어의 opacity
5
5
  * 오버레이(RealObject.applyMaterialOpacity)가 faint 와 함께 일괄로 곱한다(이중적용 방지).
6
6
  */
7
+ /**
8
+ * fillStyle 이 뜻하는 불투명도.
9
+ *
10
+ * 색 문자열의 alpha 채널을 읽는다. `none`·`transparent`·없음은 0 이다.
11
+ * `applyAlpha` 가 재질에 굽던 값이며, **재질을 나눠 쓸 때는 굽지 않고 창고 키(spec)에
12
+ * 넣는다** — 같은 값끼리 한 재질을 쓰고 다른 값은 갈린다.
13
+ */
14
+ export declare function fillStyleOpacity(fillStyle: any): number;
7
15
  export declare function applyAlpha(material: any, _alpha: number, fillStyle: any): void;
8
16
  /**
9
17
  * rgba/hsla 등 alpha 포함 색상 문자열에서 alpha 없는 hex 색상을 반환한다.
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/threed/common.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAAQ,CAAA;AAE9B;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAUvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,eAAO,MAAM,cAAc;;;;CAAoC,CAAA;AAC/D,eAAO,MAAM,UAAU;;;;CAAuB,CAAA;AAC9C,eAAO,MAAM,cAAc;;;;CAAuB,CAAA;AAClD,eAAO,MAAM,WAAW;;;;CAAuB,CAAA"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/threed/common.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,QAAQ,CAAA;AAE9B;;;;GAIG;AACH;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,GAAG,GAAG,MAAM,CAGvD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,QAIvE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,eAAO,MAAM,cAAc;;;;CAAoC,CAAA;AAC/D,eAAO,MAAM,UAAU;;;;CAAuB,CAAA;AAC9C,eAAO,MAAM,cAAc;;;;CAAuB,CAAA;AAClD,eAAO,MAAM,WAAW;;;;CAAuB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"backdrop.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/backdrop.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAK7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AA8GzD,qBAAa,UAAW,SAAQ,eAAe;IAC7C,yDAAyD;IACzD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;;;;;;OAYG;IACH,IAAa,QAAQ;;;;MAMpB;IAQD,KAAK;IAwFL,OAAO,CAAC,YAAY;IAqBpB,eAAe;IAEf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASxE,WAAW;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBD,qBACa,QAAS,SAAQ,aAA2B;IACvD;2EACuE;IACvE,OAAO,CAAC,aAAa,CAAC,CAAsC;IAE5D,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,KAAK,CAAC,MAAM,EAAE,GAAG;IAgBX,KAAK;IAOX,OAAO,CAAC,MAAM,EAAE,GAAG;IAKnB,OAAO;IAKP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYxE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"backdrop.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/backdrop.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAK7C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AA8GzD,qBAAa,UAAW,SAAQ,eAAe;IAC7C,yDAAyD;IACzD,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;;;;;;OAYG;IACH,IAAa,QAAQ;;;;MAMpB;IAQD,KAAK;IA0FL,OAAO,CAAC,YAAY;IAqBpB,eAAe;IAEf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASxE,WAAW;CACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBD,qBACa,QAAS,SAAQ,aAA2B;IACvD;2EACuE;IACvE,OAAO,CAAC,aAAa,CAAC,CAAsC;IAE5D,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,KAAK,CAAC,MAAM,EAAE,GAAG;IAgBX,KAAK;IAOX,OAAO,CAAC,MAAM,EAAE,GAAG;IAKnB,OAAO;IAKP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAYxE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -6,7 +6,7 @@ import { RealObject } from '../real-object.js';
6
6
  export declare class Camera3D extends RealObject<THREE.Mesh> {
7
7
  camera?: THREE.PerspectiveCamera;
8
8
  helper?: THREE.CameraHelper;
9
- protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
9
+ protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material<THREE.MaterialEventMap> | THREE.Material<THREE.MaterialEventMap>[], THREE.Object3DEventMap>;
10
10
  updateCamera(): void;
11
11
  build(): void;
12
12
  updateMaterial3d(): void;
@@ -2,8 +2,16 @@ import type { ComponentNature } from '../../interfaces/types.js';
2
2
  import type { IRealObject } from '../../interfaces/real-object.js';
3
3
  import Shape from '../../components/shape.js';
4
4
  import { RealObjectMesh } from '../real-object-mesh.js';
5
+ import type { TopOutline } from '../../interfaces/real-object.js';
5
6
  export declare class Cube3D extends RealObjectMesh {
7
+ /**
8
+ * 단위 상자를 창고에서 꺼내 **공유한다.** 치수를 굽지 않으므로 크기가 다른
9
+ * 인스턴스끼리도 같은 정점 버퍼를 쓴다 — 치수는 `RealObjectMesh.updateDimension()`
10
+ * 이 배율로 준다.
11
+ */
6
12
  buildGeometry(): void;
13
+ /** 상자의 톱뷰는 width×height 사각형이다. depth 는 높이라 윤곽에 들지 않는다. */
14
+ topOutline(): TopOutline | null;
7
15
  }
8
16
  declare const Cube_base: {
9
17
  new (...args: any[]): {
@@ -1 +1 @@
1
- {"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/cube.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAUvD,qBAAa,MAAO,SAAQ,cAAc;IACxC,aAAa;CAQd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBACa,IAAK,SAAQ,SAAe;IACvC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,oBAET;CACF"}
1
+ {"version":3,"file":"cube.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/cube.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAUjE,qBAAa,MAAO,SAAQ,cAAc;IACxC;;;;OAIG;IACH,aAAa;IAIb,0DAA0D;IACjD,UAAU,IAAI,UAAU,GAAG,IAAI;CAKzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBACa,IAAK,SAAQ,SAAe;IACvC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,oBAET;CACF"}
@@ -2,9 +2,26 @@ import type { ComponentNature } from '../../interfaces/types.js';
2
2
  import type { IRealObject } from '../../interfaces/real-object.js';
3
3
  import Ellipse from '../../components/ellipse.js';
4
4
  import { RealObjectMesh } from '../real-object-mesh.js';
5
+ import type { TopOutline } from '../../interfaces/real-object.js';
5
6
  export declare class Cylinder3D extends RealObjectMesh {
7
+ /**
8
+ * 단위 원기둥(지름 1 · 높이 1)을 창고에서 꺼내 **공유한다.** 분할 수가 같으면
9
+ * 인스턴스가 몇이든 정점 버퍼는 하나다.
10
+ */
6
11
  buildGeometry(): void;
12
+ /**
13
+ * 치수를 배율로 준다 — geometry 를 다시 만들지 않는다.
14
+ *
15
+ * 창고의 단위 원기둥은 **지름이 1** 이므로 반지름 rx 를 얻으려면 2rx 를 곱한다.
16
+ * Cylinder 는 bounds 가 아니라 rx·ry·depth 가 치수라서 기본 구현(경계상자 정규화)
17
+ * 대신 여기서 직접 준다.
18
+ */
7
19
  updateDimension(): void;
20
+ /**
21
+ * 원기둥의 톱뷰는 rx·ry 타원이고, **3D 와 같은 분할 수로 근사한다.** 8분할 원기둥의
22
+ * 톱뷰는 팔각형이다 — 여기서 매끄러운 원을 돌려주면 2D 와 3D 가 다른 물건이 된다.
23
+ */
24
+ topOutline(): TopOutline | null;
8
25
  }
9
26
  export declare class Cylinder extends Ellipse {
10
27
  get hasTextProperty(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cylinder.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/cylinder.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAUvD,qBAAa,UAAW,SAAQ,cAAc;IAC5C,aAAa;IAWb,eAAe,IAAI,IAAI;CAIxB;AAED,qBACa,QAAS,SAAQ,OAAO;IACnC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;CACF"}
1
+ {"version":3,"file":"cylinder.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/cylinder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAiBjE,qBAAa,UAAW,SAAQ,cAAc;IAC5C;;;OAGG;IACH,aAAa;IAKb;;;;;;OAMG;IACH,eAAe,IAAI,IAAI;IAKvB;;;OAGG;IACM,UAAU,IAAI,UAAU,GAAG,IAAI;CAMzC;AAED,qBACa,QAAS,SAAQ,OAAO;IACnC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;CACF"}
@@ -2,14 +2,25 @@ import type { ComponentNature } from '../../interfaces/types.js';
2
2
  import type { IRealObject } from '../../interfaces/real-object.js';
3
3
  import Ellipse from '../../components/ellipse.js';
4
4
  import { RealObjectMesh } from '../real-object-mesh.js';
5
+ import type { TopOutline } from '../../interfaces/real-object.js';
5
6
  export declare class Sphere3D extends RealObjectMesh {
7
+ /** 단위 구(지름 1)를 창고에서 꺼내 **공유한다.** */
6
8
  buildGeometry(): void;
9
+ /**
10
+ * 치수를 배율로 준다. 단위 구는 **지름이 1** 이므로 반지름마다 2를 곱한다.
11
+ * rz 가 없으면 rx 를 써서 정구가 된다.
12
+ */
7
13
  updateDimension(): void;
8
14
  /**
9
15
  * Sphere는 state.depth가 아닌 rz(또는 rx)로 Y 크기가 결정된다.
10
16
  * 기본 state.depth 폴백을 쓰면 origin 보정이 어긋나 볼륨이 zPos 양쪽으로 반씩 걸친다.
11
17
  */
12
18
  get effectiveDepth(): number;
19
+ /**
20
+ * 구의 톱뷰는 적도의 rx·ry 타원이다. 구는 위에서 볼 때 가장 넓은 자리가 적도이므로
21
+ * 실루엣이 그것과 같다. 분할 수는 3D 의 둘레 분할을 그대로 쓴다.
22
+ */
23
+ topOutline(): TopOutline | null;
13
24
  }
14
25
  export declare class Sphere extends Ellipse {
15
26
  get hasTextProperty(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"sphere.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/sphere.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAUvD,qBAAa,QAAS,SAAQ,cAAc;IAC1C,aAAa;IAWb,eAAe,IAAI,IAAI;IAKvB;;;OAGG;IACH,IAAa,cAAc,IAAI,MAAM,CAIpC;CACF;AAED,qBACa,MAAO,SAAQ,OAAO;IACjC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;CACF"}
1
+ {"version":3,"file":"sphere.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/sphere.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,OAAO,MAAM,6BAA6B,CAAA;AAEjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAIvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAuBjE,qBAAa,QAAS,SAAQ,cAAc;IAC1C,oCAAoC;IACpC,aAAa;IAQb;;;OAGG;IACH,eAAe,IAAI,IAAI;IAMvB;;;OAGG;IACH,IAAa,cAAc,IAAI,MAAM,CAIpC;IAED;;;OAGG;IACM,UAAU,IAAI,UAAU,GAAG,IAAI;CAMzC;AAED,qBACa,MAAO,SAAQ,OAAO;IACjC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,IAAI,eAAe,CAE5B;CACF"}
@@ -2,8 +2,16 @@ import type { ComponentNature } from '../../interfaces/types.js';
2
2
  import type { IRealObject } from '../../interfaces/real-object.js';
3
3
  import Shape from '../../components/shape.js';
4
4
  import { RealObjectMesh } from '../real-object-mesh.js';
5
+ import type { TopOutline } from '../../interfaces/real-object.js';
5
6
  export declare class Wall3D extends RealObjectMesh {
7
+ /**
8
+ * 단위 상자를 창고에서 꺼내 **공유한다.** 치수를 굽지 않으므로 크기가 다른
9
+ * 인스턴스끼리도 같은 정점 버퍼를 쓴다 — 치수는 `RealObjectMesh.updateDimension()`
10
+ * 이 배율로 준다.
11
+ */
6
12
  buildGeometry(): void;
13
+ /** 상자의 톱뷰는 width×height 사각형이다. depth 는 높이라 윤곽에 들지 않는다. */
14
+ topOutline(): TopOutline | null;
7
15
  }
8
16
  declare const Wall_base: {
9
17
  new (...args: any[]): {
@@ -1 +1 @@
1
- {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/wall.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAiBvD,qBAAa,MAAO,SAAQ,cAAc;IACxC,aAAa;CAQd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBACa,IAAK,SAAQ,SAAe;IACvC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,oBAET;CACF"}
1
+ {"version":3,"file":"wall.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/wall.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,KAAK,MAAM,2BAA2B,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AAiBjE,qBAAa,MAAO,SAAQ,cAAc;IACxC;;;;OAIG;IACH,aAAa;IAIb,0DAA0D;IACjD,UAAU,IAAI,UAAU,GAAG,IAAI;CAKzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBACa,IAAK,SAAQ,SAAe;IACvC,IAAI,eAAe,YAAmB;IACtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,oBAET;CACF"}
@@ -0,0 +1,64 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * 코어 공통 **Geometry Bank** — geometry 를 키로 등록·공유한다. `MaterialBank` 의 짝이다.
4
+ *
5
+ * 저작한 Figure 하나가 부품 수십 개를 갖고, 보드에 그 Figure 가 수백 개 놓인다. 부품마다
6
+ * geometry 를 만들면 수만 개가 되지만, 실제로 다른 형상은 부품 **종류** 수만큼이다. 이
7
+ * 창고가 그 차이를 흡수한다.
8
+ *
9
+ * ## 공유 방식이 둘이다 — 섞으면 조용한 결함이 된다
10
+ *
11
+ * **`primitive(spec)` — 단위 크기를 공유하고 치수는 mesh scale 로 준다.**
12
+ * box·cylinder·sphere 처럼 스펙 몇 개로 형상이 정해지는 것. 반환값은 **항상 단위
13
+ * 크기**이므로 크기가 다른 부품끼리도 같은 geometry 를 쓴다. 치수는 호출자가
14
+ * `mesh.scale` 에 실는다.
15
+ *
16
+ * **`shaped(key, create)` — 치수가 구워진 것을 키로 공유한다.**
17
+ * 경로(path)에서 오는 형상 — 둥근 사각형, 다각형, 압출. 이런 형상은 단위로
18
+ * 정규화하면 모서리 반경 비율이 망가지므로 치수를 구워야 한다. 대신 **키에 치수가
19
+ * 들어간다** — 같은 치수·같은 경로인 부품끼리 공유된다. figure-model 의
20
+ * `geometryKeyOf()` 가 그 키를 만든다.
21
+ *
22
+ * 두 방식을 섞으면 안 된다. `primitive` 로 치수가 구워진 것을 넣으면 크기가 다른
23
+ * 부품이 한 geometry 를 쓰게 되어 **오류 없이 잘못 그려진다.** `primitive` 는
24
+ * 그래서 스펙만 받고 geometry 를 직접 받지 않는다.
25
+ *
26
+ * ## 수명
27
+ *
28
+ * lazy 생성, 앱 수명 공유. 개별 오브젝트 teardown 에서 dispose 하지 않는다 —
29
+ * `userData.__bankOwned` 표식을 `disposeObject3D` 가 보고 건너뛴다. 해제는
30
+ * `GeometryBank.dispose()` 로만.
31
+ */
32
+ /** 스펙으로 형상이 정해지는 프리미티브. 반환은 항상 단위 크기다. */
33
+ export type GeometryKind = 'box' | 'cylinder' | 'sphere' | 'plane';
34
+ export interface GeometrySpec {
35
+ kind: GeometryKind;
36
+ /** cylinder 의 둘레 분할, sphere 의 둘레 분할. box·plane 은 쓰지 않는다. */
37
+ segments?: number;
38
+ /** sphere 의 높이 분할. 없으면 `segments` 의 절반. */
39
+ heightSegments?: number;
40
+ }
41
+ export declare const GeometryBank: {
42
+ /**
43
+ * 단위 크기 프리미티브를 얻는다. 같은 스펙이면 같은 geometry 를 돌려준다.
44
+ * 치수는 호출자가 `mesh.scale` 에 실는다 — 반환값에 치수를 구우면 안 된다.
45
+ */
46
+ primitive(spec: GeometrySpec): THREE.BufferGeometry;
47
+ /**
48
+ * 경로에서 온 형상을 키로 공유한다. 처음 보는 키일 때만 `create` 를 부른다.
49
+ *
50
+ * **키에 치수가 들어 있어야 한다.** 치수를 뺀 키를 쓰면 크기가 다른 부품이 한
51
+ * geometry 를 쓰게 되어 오류 없이 잘못 그려진다. figure-model 의
52
+ * `geometryKeyOf()` 는 `primitive|WxHxD|분할|반경|경로길이` 로 그것을 지킨다.
53
+ */
54
+ shaped(key: string, create: () => THREE.BufferGeometry): THREE.BufferGeometry;
55
+ /** 이 geometry 가 창고 소유인가 — dispose 판단과 진단에 쓴다. */
56
+ owns(geometry: THREE.BufferGeometry): boolean;
57
+ /** 등록된 geometry 개수(테스트·진단용). */
58
+ readonly size: number;
59
+ /** 키로 등록 여부. `primitive`/`shaped` 접두어 없이 순수 키를 넘긴다. */
60
+ has(key: string): boolean;
61
+ /** 전체 해제 — 앱/씬 종료 시. */
62
+ dispose(): void;
63
+ };
64
+ //# sourceMappingURL=geometry-bank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geometry-bank.d.ts","sourceRoot":"","sources":["../../src/threed/geometry-bank.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,0CAA0C;AAC1C,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAA;AAElE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAgDD,eAAO,MAAM,YAAY;IACvB;;;OAGG;oBACa,YAAY,GAAG,KAAK,CAAC,cAAc;IAOnD;;;;;;OAMG;gBACS,MAAM,UAAU,MAAM,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;IAO7E,iDAAiD;mBAClC,KAAK,CAAC,cAAc,GAAG,OAAO;IAI7C,gCAAgC;mBACpB,MAAM;IAIlB,uDAAuD;aAC9C,MAAM,GAAG,OAAO;IAIzB,wBAAwB;eACb,IAAI;CAIhB,CAAA"}
@@ -26,6 +26,10 @@ export * from './common.js';
26
26
  export * from './interfaces.js';
27
27
  export * from './material-3d.js';
28
28
  export * from './material-bank.js';
29
+ export * from './geometry-bank.js';
30
+ export * from './instanced-set.js';
31
+ export * from './segments.js';
32
+ export * from './top-outline.js';
29
33
  export { resolveVariant } from './material-variant.js';
30
34
  export type { MaterialVariantSpec } from './material-variant.js';
31
35
  export * from './three-dimensional-container.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threed/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/threed/index.ts"],"names":[],"mappings":"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"}