@hatiolab/things-scene 10.0.6 → 10.1.1

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 (90) 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 +123 -0
  4. package/dist-types/figure/figure-blueprint.d.ts.map +1 -0
  5. package/dist-types/figure/figure-instance.d.ts +299 -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-part-component.d.ts +324 -0
  10. package/dist-types/figure/figure-part-component.d.ts.map +1 -0
  11. package/dist-types/figure/figure-real-object.d.ts +92 -0
  12. package/dist-types/figure/figure-real-object.d.ts.map +1 -0
  13. package/dist-types/figure/figure-registry.d.ts +71 -0
  14. package/dist-types/figure/figure-registry.d.ts.map +1 -0
  15. package/dist-types/figure/index.d.ts +13 -0
  16. package/dist-types/figure/index.d.ts.map +1 -0
  17. package/dist-types/interfaces/real-object.d.ts +34 -0
  18. package/dist-types/interfaces/real-object.d.ts.map +1 -1
  19. package/dist-types/layer/model-layer.d.ts +9 -2
  20. package/dist-types/layer/model-layer.d.ts.map +1 -1
  21. package/dist-types/model/arrange.d.ts +61 -0
  22. package/dist-types/model/arrange.d.ts.map +1 -0
  23. package/dist-types/model/index.d.ts +1 -0
  24. package/dist-types/model/index.d.ts.map +1 -1
  25. package/dist-types/things-scene/index.d.ts +1 -0
  26. package/dist-types/things-scene/index.d.ts.map +1 -1
  27. package/dist-types/threed/common.d.ts +8 -0
  28. package/dist-types/threed/common.d.ts.map +1 -1
  29. package/dist-types/threed/coordinate-ground.d.ts +51 -0
  30. package/dist-types/threed/coordinate-ground.d.ts.map +1 -0
  31. package/dist-types/threed/factories/camera.d.ts +1 -1
  32. package/dist-types/threed/factories/cube.d.ts +8 -0
  33. package/dist-types/threed/factories/cube.d.ts.map +1 -1
  34. package/dist-types/threed/factories/cylinder.d.ts +17 -0
  35. package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
  36. package/dist-types/threed/factories/sphere.d.ts +11 -0
  37. package/dist-types/threed/factories/sphere.d.ts.map +1 -1
  38. package/dist-types/threed/factories/wall.d.ts +8 -0
  39. package/dist-types/threed/factories/wall.d.ts.map +1 -1
  40. package/dist-types/threed/floor/floor.d.ts +22 -0
  41. package/dist-types/threed/floor/floor.d.ts.map +1 -1
  42. package/dist-types/threed/geometry-bank.d.ts +64 -0
  43. package/dist-types/threed/geometry-bank.d.ts.map +1 -0
  44. package/dist-types/threed/index.d.ts +8 -0
  45. package/dist-types/threed/index.d.ts.map +1 -1
  46. package/dist-types/threed/instanced-set.d.ts +211 -0
  47. package/dist-types/threed/instanced-set.d.ts.map +1 -0
  48. package/dist-types/threed/managers/event-manager3d.d.ts +7 -0
  49. package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
  50. package/dist-types/threed/managers/gizmo-operation-manager.d.ts +8 -0
  51. package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
  52. package/dist-types/threed/managers/renderer-manager.d.ts +3 -3
  53. package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
  54. package/dist-types/threed/managers/scene-manager.d.ts +33 -9
  55. package/dist-types/threed/managers/scene-manager.d.ts.map +1 -1
  56. package/dist-types/threed/managers/types.d.ts +10 -0
  57. package/dist-types/threed/managers/types.d.ts.map +1 -1
  58. package/dist-types/threed/material-3d.d.ts +9 -0
  59. package/dist-types/threed/material-3d.d.ts.map +1 -1
  60. package/dist-types/threed/parted-real-object.d.ts +79 -0
  61. package/dist-types/threed/parted-real-object.d.ts.map +1 -0
  62. package/dist-types/threed/real-object-camera-meshed.d.ts +1 -1
  63. package/dist-types/threed/real-object-dom-texture.d.ts +2 -2
  64. package/dist-types/threed/real-object-extrude.d.ts +14 -0
  65. package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
  66. package/dist-types/threed/real-object-gltf.d.ts +11 -0
  67. package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
  68. package/dist-types/threed/real-object-mesh.d.ts +79 -2
  69. package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
  70. package/dist-types/threed/real-object-plane-2d.d.ts +2 -2
  71. package/dist-types/threed/real-object-scene.d.ts +2 -2
  72. package/dist-types/threed/real-object-service.d.ts +2 -2
  73. package/dist-types/threed/real-object.d.ts +46 -2
  74. package/dist-types/threed/real-object.d.ts.map +1 -1
  75. package/dist-types/threed/segments.d.ts +49 -0
  76. package/dist-types/threed/segments.d.ts.map +1 -0
  77. package/dist-types/threed/three-capability.d.ts +18 -0
  78. package/dist-types/threed/three-capability.d.ts.map +1 -1
  79. package/dist-types/threed/three-container.d.ts +8 -3
  80. package/dist-types/threed/three-container.d.ts.map +1 -1
  81. package/dist-types/threed/top-outline.d.ts +37 -0
  82. package/dist-types/threed/top-outline.d.ts.map +1 -0
  83. package/dist-types/threed/utils/dispose.d.ts.map +1 -1
  84. package/dist-types/transition/transition-effect.d.ts.map +1 -1
  85. package/package.json +3 -3
  86. package/things-scene-min.js +11 -11
  87. package/things-scene-min.js.map +1 -1
  88. package/things-scene-transfer.mjs +3 -3
  89. package/things-scene.mjs +3 -3
  90. package/things-scene.mjs.map +1 -1
@@ -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"}
@@ -0,0 +1,51 @@
1
+ import * as THREE from 'three';
2
+ /**
3
+ * 좌표 바탕 — 바닥 모눈과 축.
4
+ *
5
+ * 3D 저작면에서 이것이 없으면 **어디가 원점이고 어느 쪽이 위인지 알 수 없다.** 형상만
6
+ * 떠 있으면 크기도 방향도 짐작이 안 된다.
7
+ *
8
+ * ## 왜 씬이 갖나
9
+ *
10
+ * 한동안 저작 화면이 만들어 `scene3d` 에 얹었다. 그랬더니 2D 로 갔다 오면 사라졌다 —
11
+ * 그때 씬이 통째로 다시 서면서 새 `THREE.Scene` 을 만드는데, 얹어 둔 것은 옛 씬에
12
+ * 남기 때문이다. 씬이 소유하면 다시 설 때 같이 산다.
13
+ *
14
+ * 3D 저작면이면 다 필요한 것이라, 자리도 여기가 맞다.
15
+ *
16
+ * ## 두 단계로 그린다
17
+ *
18
+ * 잔 눈금만 있으면 「지금 몇 칸인가」를 셀 수 없다. 다섯 칸마다 굵은 눈금을 둔다 —
19
+ * 자와 모눈종이가 하는 것과 같다.
20
+ *
21
+ * ## 멀어질수록 사라지게
22
+ *
23
+ * 끝까지 같은 세기로 그으면 원경에서 선이 뒤엉켜 **어두운 띠**가 된다. 정점 색을
24
+ * 배경색 쪽으로 섞어 반지름에 따라 지운다 — 투명도가 아니라 색으로 지우므로 깊이
25
+ * 정렬과 싸우지 않는다.
26
+ */
27
+ export interface CoordinateGroundOptions {
28
+ /** 잔 눈금 한 칸. */
29
+ step: number;
30
+ /** 원점에서 몇 칸까지 뻗나. */
31
+ cells?: number;
32
+ /** 배경색. 선이 이 색으로 스러진다. */
33
+ background?: string;
34
+ /** 축 이름표를 보이나. */
35
+ labels?: boolean;
36
+ }
37
+ export declare const COORDINATE_GROUND_NAME = "coordinate-ground";
38
+ /**
39
+ * 가로 길이에 어울리는 **둥근** 눈금 한 칸. 대여섯 칸이 되게 잡는다.
40
+ *
41
+ * 그냥 나누면 27 · 33 같은 값이 나온다. 그 눈금에 맞추면 좌표가 54 · 81 이 되어 사람이
42
+ * 읽을 수 없다. 1 · 2 · 5 사다리로 올려 붙인다 — 자와 차트 눈금이 쓰는 방식이다.
43
+ *
44
+ * 칸이 성기어야 형상이 주인공이 된다. 열 칸으로 잡았더니 모눈이 촘촘해 바탕이 먼저
45
+ * 보였다.
46
+ */
47
+ export declare function niceGridStep(span: number): number;
48
+ export declare function buildCoordinateGround(options: CoordinateGroundOptions): THREE.Group;
49
+ /** 좌표 바탕이 쥐고 있는 것을 놓는다. 창고에 든 것이 아니라 우리가 만든 것들이다. */
50
+ export declare function disposeCoordinateGround(ground: THREE.Object3D): void;
51
+ //# sourceMappingURL=coordinate-ground.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinate-ground.d.ts","sourceRoot":"","sources":["../../src/threed/coordinate-ground.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,uBAAuB;IACtC,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,qBAAqB;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAYD,eAAO,MAAM,sBAAsB,sBAAsB,CAAA;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOjD;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,KAAK,CAAC,KAAK,CAsCnF;AA+GD,qDAAqD;AACrD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAYpE"}
@@ -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"}
@@ -1,4 +1,26 @@
1
1
  import * as THREE from 'three';
2
2
  import type Component from '../../components/component.js';
3
+ /**
4
+ * 판의 바닥판을 만든다. 필요 없으면 만들지 않는다.
5
+ *
6
+ * ## `floor: false` 를 따로 두는 까닭
7
+ *
8
+ * **판의 면은 한 개념이다** — 2D 에서는 종이이고 3D 에서는 바닥판이다. 그래서 `fillStyle`
9
+ * 하나가 둘을 정하는 것은 원래 일관적이다.
10
+ *
11
+ * 그런데 **그 둘을 따로 원하는 화면이 있다.** 3D 저작면이 그렇다:
12
+ *
13
+ * - 2D 종이는 **밝아야 한다.** 편집 손잡이와 안내선이 어두운 색이라 어두운 바탕에서는
14
+ * 안 보인다.
15
+ * - 3D 바닥판은 **없어야 한다.** 좌표 모눈과 겹쳐 싸우고, 원점 아래쪽을 가린다.
16
+ *
17
+ * 이 조합을 말할 방법이 없었다. 유일한 길이 `fillStyle: 'none'` 인데 그러면 2D 종이까지
18
+ * 비어 버려 편집 도구가 안 보인다.
19
+ *
20
+ * 바닥이 별개로 없어질 수 있다는 것은 코드가 이미 인정하고 있었다 — `placement === 'space'`
21
+ * 는 `fillStyle` 과 무관하게 바닥을 안 만든다. 그 자리를 명시적으로 연 것뿐이다.
22
+ *
23
+ * **안 주면 종전 그대로다.** 이미 세워져 있는 보드는 아무것도 달라지지 않는다.
24
+ */
3
25
  export declare function createFloor(component: Component): THREE.Mesh | undefined;
4
26
  //# sourceMappingURL=floor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"floor.d.ts","sourceRoot":"","sources":["../../../src/threed/floor/floor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAqB1D,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS,CAuExE"}
1
+ {"version":3,"file":"floor.d.ts","sourceRoot":"","sources":["../../../src/threed/floor/floor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAqB1D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,CAAC,IAAI,GAAG,SAAS,CA2ExE"}
@@ -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';
@@ -90,4 +94,8 @@ export { createCanvasTexture, renderCanvasTexture } from './texture/canvas-textu
90
94
  export { textTexture, textBounds, drawTextTexture, fontStyle } from './texture/text-texture.js';
91
95
  export { createCanvas, PIXEL_RATIO } from './html/elements.js';
92
96
  export { createFloor } from './floor/floor.js';
97
+ export { isParted, partAtByIndex } from './parted-real-object.js';
98
+ export type { PartedRealObject } from './parted-real-object.js';
99
+ export { buildCoordinateGround, disposeCoordinateGround, niceGridStep } from './coordinate-ground.js';
100
+ export type { CoordinateGroundOptions } from './coordinate-ground.js';
93
101
  //# sourceMappingURL=index.d.ts.map
@@ -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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"}