@hatiolab/things-scene 10.0.0-beta.65 → 10.0.0-beta.66
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/threed/factories/floor-plate.d.ts.map +1 -1
- package/dist-types/threed/factories/sphere.d.ts +5 -0
- package/dist-types/threed/factories/sphere.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +33 -2
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
- package/dist-types/threed/real-object-dom-element.d.ts +1 -0
- package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
- package/dist-types/threed/real-object-dom-texture.d.ts +1 -0
- package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
- package/dist-types/threed/real-object-line.d.ts +2 -0
- package/dist-types/threed/real-object-line.d.ts.map +1 -1
- package/dist-types/threed/real-object-plane-2d.d.ts +2 -0
- package/dist-types/threed/real-object-plane-2d.d.ts.map +1 -1
- package/dist-types/threed/real-object-sprite.d.ts +7 -1
- package/dist-types/threed/real-object-sprite.d.ts.map +1 -1
- package/dist-types/threed/real-object-text.d.ts +1 -0
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +24 -3
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/package.json +1 -1
- package/things-scene-min.js +2 -2
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +3 -3
- package/things-scene.mjs.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floor-plate.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/floor-plate.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,iBAAiB,MAAM,wCAAwC,CAAA;
|
|
1
|
+
{"version":3,"file":"floor-plate.d.ts","sourceRoot":"","sources":["../../../src/threed/factories/floor-plate.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,iBAAiB,MAAM,wCAAwC,CAAA;AAwJtE,qBACa,UAAW,SAAQ,iBAAiB;IAC/C,IAAI,eAAe,YAAmB;IAEtC,OAAO;IAIP,eAAe,IAAI,WAAW,GAAG,SAAS;IAI1C,IAAI,MAAM,oBAET;CACF"}
|
|
@@ -5,6 +5,11 @@ import { RealObjectMesh } from '../real-object-mesh.js';
|
|
|
5
5
|
export declare class Sphere3D extends RealObjectMesh {
|
|
6
6
|
buildGeometry(): void;
|
|
7
7
|
updateDimension(): void;
|
|
8
|
+
/**
|
|
9
|
+
* Sphere는 state.depth가 아닌 rz(또는 rx)로 Y 크기가 결정된다.
|
|
10
|
+
* 기본 state.depth 폴백을 쓰면 origin 보정이 어긋나 볼륨이 zPos 양쪽으로 반씩 걸친다.
|
|
11
|
+
*/
|
|
12
|
+
get effectiveDepth(): number;
|
|
8
13
|
}
|
|
9
14
|
export declare class Sphere extends Ellipse {
|
|
10
15
|
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;
|
|
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"}
|
|
@@ -19,6 +19,8 @@ export declare class GizmoOperationManager {
|
|
|
19
19
|
private _preDragDimension?;
|
|
20
20
|
private _preDragScale?;
|
|
21
21
|
private _preDragEffectiveDepth?;
|
|
22
|
+
private _scaleAnchorSign?;
|
|
23
|
+
private _preDragAttachedPosition?;
|
|
22
24
|
private _altDragDuplicates?;
|
|
23
25
|
private _mouseDownAltKey;
|
|
24
26
|
private _multiSelectOffsets?;
|
|
@@ -28,7 +30,6 @@ export declare class GizmoOperationManager {
|
|
|
28
30
|
private _infoOverlay?;
|
|
29
31
|
private _infoHostElement?;
|
|
30
32
|
private _dragStartPosition?;
|
|
31
|
-
private _dragStartScale?;
|
|
32
33
|
/**
|
|
33
34
|
* mousedown 시 altKey를 캡처한다.
|
|
34
35
|
* forwardEvent보다 먼저 호출되어야 한다.
|
|
@@ -49,6 +50,20 @@ export declare class GizmoOperationManager {
|
|
|
49
50
|
private _performAltDragDuplicate;
|
|
50
51
|
private _captureMultiSelectState;
|
|
51
52
|
private _captureScalePreDrag;
|
|
53
|
+
/**
|
|
54
|
+
* 드래그한 기즈모 핸들의 축별 부호를 계산한다.
|
|
55
|
+
* - controls.axis: 드래그 축 이름 ('X'/'Y'/'Z'/'XY'/'XZ'/'YZ'/'XYZ'/'XYZE' 등)
|
|
56
|
+
* - controls.pointStart: 드래그 시작 시 pointer의 월드 위치(object 원점 기준 상대)
|
|
57
|
+
*
|
|
58
|
+
* 반환 부호: 해당 축 pointStart의 로컬 좌표 성분 부호
|
|
59
|
+
* +1 → 드래그한 +방향 핸들 → pre.edge(left/top/zPos)를 고정하고 +방향 확장
|
|
60
|
+
* -1 → 드래그한 -방향 핸들 → 반대편 edge 고정, -방향 확장
|
|
61
|
+
* 0 → 방향성 없음 (uniform handle) 또는 축 미해당 → 기존 center 동작 유지
|
|
62
|
+
*
|
|
63
|
+
* 주의: TransformControls 내부 API(pointStart)에 의존. three.js 업그레이드 시
|
|
64
|
+
* node_modules/three/examples/jsm/controls/TransformControls.js 확인 필요.
|
|
65
|
+
*/
|
|
66
|
+
private _computeAnchorSign;
|
|
52
67
|
private _onDragEnd;
|
|
53
68
|
/**
|
|
54
69
|
* 기즈모 드래그 결과를 컴포넌트 속성에 역변환하여 반영한다.
|
|
@@ -62,9 +77,25 @@ export declare class GizmoOperationManager {
|
|
|
62
77
|
/**
|
|
63
78
|
* scale 기즈모 드래그를 dimension 변경으로 역산한다.
|
|
64
79
|
* 축 매핑: scale.x → width, scale.y → depth, scale.z → height
|
|
65
|
-
*
|
|
80
|
+
* anchor sign에 따라 한쪽 edge 고정(드래그 방향으로만 확장) 또는 center 확장.
|
|
81
|
+
*
|
|
82
|
+
* @returns 멀티셀렉트에서 동일 로직 적용하기 위해 ratioLock 반영된 ratio/sign 반환
|
|
66
83
|
*/
|
|
67
84
|
private _syncDimensionFromGizmo;
|
|
85
|
+
/**
|
|
86
|
+
* anchor sign 기반 dimension props 계산.
|
|
87
|
+
* sign > 0: pre.left/top/zPos 고정, 드래그 방향으로만 확장
|
|
88
|
+
* sign < 0: 반대편 edge 고정, 반대 방향으로 확장
|
|
89
|
+
* sign = 0: center 기준 양방향 확장 (기존 동작)
|
|
90
|
+
*/
|
|
91
|
+
private _computeAnchorProps;
|
|
92
|
+
/**
|
|
93
|
+
* TransformControls는 scale 드래그 시 object.scale만 변경(center-scale).
|
|
94
|
+
* anchor edge가 실제로 고정되어 보이려면 object.position을 매 프레임 역보정한다.
|
|
95
|
+
* shift_local = sign * (S' - preScale) * (pre_size / 2)
|
|
96
|
+
* 오브젝트 회전이 있으면 로컬 shift를 월드 축으로 변환.
|
|
97
|
+
*/
|
|
98
|
+
private _applyAnchorPositionCorrection;
|
|
68
99
|
private _showInfoOverlay;
|
|
69
100
|
private _updateInfoOverlay;
|
|
70
101
|
private _hideInfoOverlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gizmo-operation-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/gizmo-operation-manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;IAClB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,UAAU,IAAI,IAAI,CAAA;CACnB;AAcD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAqC;IAE3D,OAAO,CAAC,sBAAsB,CAAC,CAAQ;IAGvC,OAAO,CAAC,kBAAkB,CAAC,CAAoD;IAC/E,OAAO,CAAC,gBAAgB,CAAQ;IAGhC,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAA8B;IACnE,OAAO,CAAC,6BAA6B,CAAC,CAAqC;
|
|
1
|
+
{"version":3,"file":"gizmo-operation-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/gizmo-operation-manager.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAA;IAClB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;IACjB,+CAA+C;IAC/C,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,UAAU,IAAI,IAAI,CAAA;CACnB;AAcD;;;;;GAKG;AACH,qBAAa,qBAAqB;IAEhC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;IAC5C,OAAO,CAAC,aAAa,CAAC,CAAqC;IAE3D,OAAO,CAAC,sBAAsB,CAAC,CAAQ;IAGvC,OAAO,CAAC,gBAAgB,CAAC,CAAqC;IAE9D,OAAO,CAAC,wBAAwB,CAAC,CAAe;IAGhD,OAAO,CAAC,kBAAkB,CAAC,CAAoD;IAC/E,OAAO,CAAC,gBAAgB,CAAQ;IAGhC,OAAO,CAAC,mBAAmB,CAAC,CAAgC;IAC5D,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAC3C,OAAO,CAAC,4BAA4B,CAAC,CAA8B;IACnE,OAAO,CAAC,6BAA6B,CAAC,CAAqC;IAE3E,OAAO,CAAC,YAAY,CAAC,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAC,CAAa;IACtC,OAAO,CAAC,kBAAkB,CAAC,CAAe;IAE1C;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAIpC;;;;OAIG;IACH,cAAc,CACZ,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE;QAAE,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,EACvD,OAAO,EAAE,MAAM,kBAAkB,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE;QACV,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;QAC/C,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;KAClD,GACA,IAAI;IAsCP,OAAO,CAAC,YAAY;IA4BpB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,oBAAoB;IAiB5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,UAAU;IA4ElB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwDtB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAmC/B;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;;;;OAKG;IACH,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,kBAAkB;IA8B1B,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -3,6 +3,7 @@ import { RealObject } from './real-object.js';
|
|
|
3
3
|
export declare class RealObjectDomElement extends RealObject<CSS3DObject> {
|
|
4
4
|
/** 평면 오브젝트: 바닥 위로 올려 z-fighting 방지 */
|
|
5
5
|
protected get syncZPosOffset(): number;
|
|
6
|
+
get geometricOffsetY(): number;
|
|
6
7
|
protected getObject3dInstance(): CSS3DObject;
|
|
7
8
|
/**
|
|
8
9
|
* CSS3DObject는 geometry가 없으므로 Euler rotation으로 바닥에 눕힘.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-dom-element.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,WAAW,CAAC;IAC/D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,SAAS,CAAC,mBAAmB;IAI7B;;;OAGG;IACH,IAAI,QAAQ;;;;MAQX;IAED;;OAEG;IACH,gBAAgB;
|
|
1
|
+
{"version":3,"file":"real-object-dom-element.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-dom-element.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,WAAW,CAAC;IAC/D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,IAAa,gBAAgB,WAE5B;IAED,SAAS,CAAC,mBAAmB;IAI7B;;;OAGG;IACH,IAAI,QAAQ;;;;MAQX;IAED;;OAEG;IACH,gBAAgB;IAqChB,KAAK;IAeL,eAAe;IAWf,WAAW;CAUZ"}
|
|
@@ -3,6 +3,7 @@ import { RealObject } from './real-object.js';
|
|
|
3
3
|
export declare class RealObjectDomTexture extends RealObject<THREE.Mesh> {
|
|
4
4
|
/** 평면 오브젝트: 바닥 위로 올려 z-fighting 방지 */
|
|
5
5
|
protected get syncZPosOffset(): number;
|
|
6
|
+
get geometricOffsetY(): number;
|
|
6
7
|
private _debounceTimer?;
|
|
7
8
|
private _origInvalidate?;
|
|
8
9
|
constructor(component: any);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-dom-texture.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-dom-texture.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAe7C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,OAAO,CAAC,cAAc,CAAC,CAA+B;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;gBAExB,SAAS,EAAE,GAAG;IAY1B,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IA4BL,eAAe;IAMf,WAAW;IAKX,YAAY;IAIZ,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAQvB,eAAe;IAIf,iBAAiB;IAIjB,UAAU;IAIV,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYhE,gBAAgB;IAahB,KAAK;IASL,OAAO;CAWR"}
|
|
1
|
+
{"version":3,"file":"real-object-dom-texture.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-dom-texture.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAe7C,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,IAAa,gBAAgB,WAE5B;IAED,OAAO,CAAC,cAAc,CAAC,CAA+B;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;gBAExB,SAAS,EAAE,GAAG;IAY1B,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IA4BL,eAAe;IAMf,WAAW;IAKX,YAAY;IAIZ,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAQvB,eAAe;IAIf,iBAAiB;IAIjB,UAAU;IAIV,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYhE,gBAAgB;IAahB,KAAK;IASL,OAAO;CAWR"}
|
|
@@ -17,6 +17,8 @@ export declare abstract class RealObjectLine extends RealObject<THREE.Group> {
|
|
|
17
17
|
get gizmoTransformable(): boolean;
|
|
18
18
|
/** 선형 컴포넌트는 볼륨이 없으므로 바닥면에 위치 */
|
|
19
19
|
protected get syncZPosOffset(): number;
|
|
20
|
+
/** Line의 object3d origin은 볼륨 바닥(실제로 볼륨 없음) */
|
|
21
|
+
get geometricOffsetY(): number;
|
|
20
22
|
/**
|
|
21
23
|
* 기즈모 드래그 중에는 컴포넌트 상태를 변경하지 않는다.
|
|
22
24
|
* object3d가 움직이면서 Line2가 함께 이동하므로 시각적으로는 정상.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-line.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-line.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAKzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAyDxD;;;;;GAKG;AACH,8BAAsB,cAAe,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAClE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;IAExB,+CAA+C;IAC/C,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IAEzC,SAAS,CAAC,mBAAmB;IAI7B,4CAA4C;IAC5C,IAAa,kBAAkB,IAAI,OAAO,CAEzC;IAED,gCAAgC;IAChC,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED;;;;OAIG;IACM,gBAAgB,IAAI,IAAI;IAIjC;;OAEG;IACM,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAItE,KAAK;IAKL;;OAEG;IACH,SAAS,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAqD5C;IAED,SAAS,CAAC,UAAU;IA0FpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,cAAc;IAStB;;;;;;;OAOG;IACM,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAuC5C;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACjD,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAChC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACvB,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC9C,iBAAiB;IAKjB,WAAW;IAIX,eAAe;IAKf,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAgB9C,KAAK;CAYN"}
|
|
1
|
+
{"version":3,"file":"real-object-line.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-line.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAA;AAKzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAyDxD;;;;;GAKG;AACH,8BAAsB,cAAe,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAClE,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAA;IAExB,+CAA+C;IAC/C,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAA;IAEzC,SAAS,CAAC,mBAAmB;IAI7B,4CAA4C;IAC5C,IAAa,kBAAkB,IAAI,OAAO,CAEzC;IAED,gCAAgC;IAChC,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED,8CAA8C;IAC9C,IAAa,gBAAgB,IAAI,MAAM,CAEtC;IAED;;;;OAIG;IACM,gBAAgB,IAAI,IAAI;IAIjC;;OAEG;IACM,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;IAItE,KAAK;IAKL;;OAEG;IACH,SAAS,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAqD5C;IAED,SAAS,CAAC,UAAU;IA0FpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,cAAc;IAStB;;;;;;;OAOG;IACM,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAuC5C;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CACrB,IAAI,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EACjD,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,EAChC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC7C,QAAQ,EAAE,KAAK,CAAC,QAAQ,GACvB,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAiC9C,iBAAiB;IAKjB,WAAW;IAIX,eAAe;IAKf,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAgB9C,KAAK;CAYN"}
|
|
@@ -3,6 +3,8 @@ import { RealObject } from './real-object.js';
|
|
|
3
3
|
export declare class RealObjectPlane2D extends RealObject<THREE.Mesh> {
|
|
4
4
|
/** 평면 오브젝트: 바닥 위로 올려 z-fighting 방지 */
|
|
5
5
|
protected get syncZPosOffset(): number;
|
|
6
|
+
/** object3d origin이 볼륨 상단 위치(실제로는 얇은 plane) */
|
|
7
|
+
get geometricOffsetY(): number;
|
|
6
8
|
private _debounceTimer?;
|
|
7
9
|
private _origInvalidate?;
|
|
8
10
|
constructor(component: any);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-plane-2d.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-plane-2d.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc7C,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,OAAO,CAAC,cAAc,CAAC,CAA+B;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;gBAExB,SAAS,EAAE,GAAG;IAU1B,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IA4BL,WAAW;IAKX,YAAY;IAIZ,IAAI,SAAS;;;;MAGZ;IAED,IAAI,KAAK;;;;MAIR;IAED,eAAe;IAIf,OAAO,CAAC,iBAAiB;IAUzB,MAAM;IAQN,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAWhE,eAAe;IAIf,iBAAiB;IAIjB,UAAU;IAIV,gBAAgB;IAahB,KAAK;IASL,OAAO;CAWR"}
|
|
1
|
+
{"version":3,"file":"real-object-plane-2d.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-plane-2d.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAc7C,qBAAa,iBAAkB,SAAQ,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3D,sCAAsC;IACtC,SAAS,KAAK,cAAc,WAE3B;IAED,+CAA+C;IAC/C,IAAa,gBAAgB,WAE5B;IAED,OAAO,CAAC,cAAc,CAAC,CAA+B;IACtD,OAAO,CAAC,eAAe,CAAC,CAAY;gBAExB,SAAS,EAAE,GAAG;IAU1B,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IA4BL,WAAW;IAKX,YAAY;IAIZ,IAAI,SAAS;;;;MAGZ;IAED,IAAI,KAAK;;;;MAIR;IAED,eAAe;IAIf,OAAO,CAAC,iBAAiB;IAUzB,MAAM;IAQN,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAWhE,eAAe;IAIf,iBAAiB;IAIjB,UAAU;IAIV,gBAAgB;IAahB,KAAK;IASL,OAAO;CAWR"}
|
|
@@ -4,7 +4,13 @@ export declare abstract class RealObjectSprite extends RealObject<THREE.Sprite>
|
|
|
4
4
|
protected getObject3dInstance(): THREE.Sprite<THREE.Object3DEventMap>;
|
|
5
5
|
build(): void;
|
|
6
6
|
abstract buildMaterial(): void;
|
|
7
|
-
get cz():
|
|
7
|
+
get cz(): number;
|
|
8
|
+
/**
|
|
9
|
+
* Sprite는 2D bounds.height를 3D Y 크기로 사용 (billboard).
|
|
10
|
+
* object3d는 zPos + height/2(볼륨 중심)에 위치 → geometricOffsetY = height/2.
|
|
11
|
+
* 이 값이 자식 컴포넌트의 parent offset 보정에 사용된다.
|
|
12
|
+
*/
|
|
13
|
+
get geometricOffsetY(): number;
|
|
8
14
|
updateAlpha(): void;
|
|
9
15
|
updateHidden(): void;
|
|
10
16
|
updateFillStyle(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-sprite.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-sprite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,8BAAsB,gBAAiB,SAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IACrE,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IAML,QAAQ,CAAC,aAAa,IAAI,IAAI;IAI9B,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"real-object-sprite.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-sprite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,8BAAsB,gBAAiB,SAAQ,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;IACrE,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IAML,QAAQ,CAAC,aAAa,IAAI,IAAI;IAI9B,IAAI,EAAE,WAWL;IAED;;;;OAIG;IACH,IAAa,gBAAgB,IAAI,MAAM,CAGtC;IAED,WAAW;IAMX,YAAY;IAIZ,eAAe;CAqBhB"}
|
|
@@ -5,6 +5,7 @@ import { RealObjectMesh } from './real-object-mesh.js';
|
|
|
5
5
|
export declare class RealObjectText extends RealObjectMesh {
|
|
6
6
|
/** 평면 오브젝트: 바닥(Y=0.5) 위로 올려 z-fighting 방지 */
|
|
7
7
|
protected get syncZPosOffset(): number;
|
|
8
|
+
get geometricOffsetY(): number;
|
|
8
9
|
buildGeometry(): void;
|
|
9
10
|
updateStrokeStyle(): void;
|
|
10
11
|
updateFillStyle(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-text.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,6CAA6C;IAC7C,SAAS,KAAK,cAAc,WAE3B;IAED,aAAa;IAKb,iBAAiB;IAEjB,eAAe;IAKf,eAAe;IAiBf,UAAU;IAyDV,WAAW;CASZ"}
|
|
1
|
+
{"version":3,"file":"real-object-text.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-text.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD;;GAEG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,6CAA6C;IAC7C,SAAS,KAAK,cAAc,WAE3B;IAED,IAAa,gBAAgB,WAE5B;IAED,aAAa;IAKb,iBAAiB;IAEjB,eAAe;IAKf,eAAe;IAiBf,UAAU;IAyDV,WAAW;CASZ"}
|
|
@@ -35,7 +35,7 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
35
35
|
updateTransform(): void;
|
|
36
36
|
get position(): {
|
|
37
37
|
x: number;
|
|
38
|
-
y:
|
|
38
|
+
y: number;
|
|
39
39
|
z: number;
|
|
40
40
|
};
|
|
41
41
|
get rotation(): {
|
|
@@ -50,11 +50,32 @@ export declare abstract class RealObject<T extends THREE.Object3D = THREE.Object
|
|
|
50
50
|
};
|
|
51
51
|
get cx(): number;
|
|
52
52
|
get cy(): number;
|
|
53
|
-
get cz():
|
|
53
|
+
get cz(): number;
|
|
54
|
+
/**
|
|
55
|
+
* object3d.position과 볼륨 바닥면 사이의 Y 거리. (= syncZPosOffset 중 "기하" 부분)
|
|
56
|
+
* 기본값은 effectiveDepth/2 (center origin — object3d가 볼륨 중심).
|
|
57
|
+
* 중첩된 3D 자식이 parent의 geometric shift를 상쇄하는 데 사용된다.
|
|
58
|
+
* syncZPosOffset이 placement(매달림/얹힘 등)와 geometric을 모두 포함하는 경우,
|
|
59
|
+
* subclass는 이 getter를 override해 geometric 부분만 반환해야 한다.
|
|
60
|
+
*/
|
|
61
|
+
get geometricOffsetY(): number;
|
|
62
|
+
private _ownGroup?;
|
|
63
|
+
/**
|
|
64
|
+
* 팩토리가 bottom-up 좌표계(y=0이 바닥, +Y 방향으로 쌓음)로 자체 mesh를 추가할 group.
|
|
65
|
+
* object3d에 `-geometricOffsetY`만큼 미리 shift된 상태로 관리되므로, 팩토리는
|
|
66
|
+
* center-origin과 bottom-up을 잇는 -d/2 shift를 신경쓸 필요 없음.
|
|
67
|
+
*
|
|
68
|
+
* 사용: `this.ownGroup.add(mesh)` (팩토리는 자신의 mesh 로컬 y를 바닥 기준으로 설정)
|
|
69
|
+
* 주의: things-scene 기본 컴포넌트 중 `geometry.center()`로 center-local 기하를
|
|
70
|
+
* 쓰는 것들은 기존처럼 `this.object3d.add(...)`를 계속 사용.
|
|
71
|
+
*
|
|
72
|
+
* clear()가 호출되면 자동 재생성됨 (object3d 자식 전체가 clear되므로).
|
|
73
|
+
*/
|
|
74
|
+
get ownGroup(): THREE.Group;
|
|
54
75
|
get center(): {
|
|
55
76
|
x: number;
|
|
56
77
|
y: number;
|
|
57
|
-
z:
|
|
78
|
+
z: number;
|
|
58
79
|
};
|
|
59
80
|
freezeDimension(): void;
|
|
60
81
|
unfreezeDimension(): void;
|
|
@@ -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;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,wBAAwB,CAAA;AAK/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAQ5E,8BAAsB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAE,YAAW,WAAW;IAChG,SAAS,CAAC,UAAU,EAAE,SAAS,CAAA;IAC/B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAQ;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,iBAAiB,UAAQ;IACnC,OAAO,CAAC,SAAS,CAAC,CAAQ;IAEnB,QAAQ,EAAE,CAAC,CAAA;IAKlB,OAAO,CAAC,gBAAgB,CAGvB;IAED,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS;gBAIrC,SAAS,EAAE,SAAS;IAOhC,MAAM;IAYN,SAAS,CAAC,mBAAmB,IAAI,CAAC;IAIlC,KAAK;IAOL,gBAAgB;IAMhB,OAAO,CAAC,YAAY;IAWpB,4DAA4D;IAC5D,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,oCAAoC;IACpC,IAAI,iBAAiB,IAAI,MAAM,EAAE,GAAG,IAAI,CAEvC;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,IAAI,cAAc,IAAI,yBAAyB,GAAG,SAAS,CAS1D;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAK3B;IAED,OAAO;IAMP,KAAK;
|
|
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;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,wBAAwB,CAAA;AAK/D,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAQ5E,8BAAsB,UAAU,CAAC,CAAC,SAAS,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAE,YAAW,WAAW;IAChG,SAAS,CAAC,UAAU,EAAE,SAAS,CAAA;IAC/B,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAQ;IACnC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,iBAAiB,UAAQ;IACnC,OAAO,CAAC,SAAS,CAAC,CAAQ;IAEnB,QAAQ,EAAE,CAAC,CAAA;IAKlB,OAAO,CAAC,gBAAgB,CAGvB;IAED,MAAM,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS;gBAIrC,SAAS,EAAE,SAAS;IAOhC,MAAM;IAYN,SAAS,CAAC,mBAAmB,IAAI,CAAC;IAIlC,KAAK;IAOL,gBAAgB;IAMhB,OAAO,CAAC,YAAY;IAWpB,4DAA4D;IAC5D,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED,oCAAoC;IACpC,IAAI,iBAAiB,IAAI,MAAM,EAAE,GAAG,IAAI,CAEvC;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,IAAI,cAAc,IAAI,yBAAyB,GAAG,SAAS,CAS1D;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,OAAO,EAAE,OAAO,EAK3B;IAED,OAAO;IAMP,KAAK;IAUL,iBAAiB,UAAQ;IAEzB;;OAEG;IACH,eAAe;IAqBf,IAAI,QAAQ;;;;MAOX;IAED,IAAI,QAAQ;;;;MAQX;IAED,IAAI,KAAK;;;;MAUR;IAED,IAAI,EAAE,WAML;IAED,IAAI,EAAE,WAML;IAED,IAAI,EAAE,WAYL;IAED;;;;;;OAMG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,OAAO,CAAC,SAAS,CAAC,CAAa;IAE/B;;;;;;;;;;OAUG;IACH,IAAI,QAAQ,IAAI,KAAK,CAAC,KAAK,CAO1B;IAED,IAAI,MAAM;;;;MAWT;IAED,eAAe;IAIf,iBAAiB;IAIjB,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAEnE,IAAI,SAAS;eAFe,MAAM;gBAAU,MAAM;eAAS,MAAM;MAWhE;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,MAAM,CAE3B;IAGD,cAAc;IAKd,YAAY;IAKZ,WAAW;IAKX;;;;OAIG;IACH,kBAAkB;IA6ClB,eAAe;IAKf,WAAW;IAoBX,YAAY;IAIZ,iBAAiB;IACjB,eAAe;IACf,UAAU;IAEV;;;OAGG;IACH;;;OAGG;IACH,SAAS,KAAK,cAAc,IAAI,MAAM,CAErC;IAED;;;OAGG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED;;;OAGG;IACH,gBAAgB;IAiChB;;;OAGG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAInC;;;;OAIG;IACH,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMrD,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;CAoE/C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hatiolab/things-scene",
|
|
3
|
-
"version": "10.0.0-beta.
|
|
3
|
+
"version": "10.0.0-beta.66",
|
|
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",
|