@hatiolab/things-scene 10.0.0-beta.5 → 10.0.0-beta.50
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/CHANGELOG.md +2240 -0
- package/dist-types/animation/animations/heartbeat.d.ts +0 -7
- package/dist-types/animation/animations/heartbeat.d.ts.map +1 -1
- package/dist-types/animation/interfaces.d.ts +1 -1
- package/dist-types/animation/interfaces.d.ts.map +1 -1
- package/dist-types/command/command-migrate.d.ts.map +1 -1
- package/dist-types/command/snapshot-commander.d.ts.map +1 -1
- package/dist-types/components/audio.d.ts.map +1 -1
- package/dist-types/components/component-data.d.ts +2 -0
- package/dist-types/components/component-data.d.ts.map +1 -1
- package/dist-types/components/container-abstract.d.ts +14 -1
- package/dist-types/components/container-abstract.d.ts.map +1 -1
- package/dist-types/components/data/data.d.ts.map +1 -1
- package/dist-types/components/geometry/snap-guide.d.ts +45 -0
- package/dist-types/components/geometry/snap-guide.d.ts.map +1 -0
- package/dist-types/components/geometry/transcoord.d.ts.map +1 -1
- package/dist-types/components/global-ref.d.ts.map +1 -1
- package/dist-types/components/group.d.ts +1 -0
- package/dist-types/components/group.d.ts.map +1 -1
- package/dist-types/components/image-view.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +1 -0
- package/dist-types/components/index.d.ts.map +1 -1
- package/dist-types/components/line.d.ts +1 -1
- package/dist-types/components/mutater/path.d.ts.map +1 -1
- package/dist-types/components/root-container.d.ts +11 -4
- package/dist-types/components/root-container.d.ts.map +1 -1
- package/dist-types/components/service-component.d.ts +264 -0
- package/dist-types/components/service-component.d.ts.map +1 -0
- package/dist-types/decorator/decorator-registry.d.ts +4 -0
- package/dist-types/decorator/decorator-registry.d.ts.map +1 -1
- package/dist-types/decorator/decorators/data-spread-decorator.d.ts +16 -0
- package/dist-types/decorator/decorators/data-spread-decorator.d.ts.map +1 -1
- package/dist-types/diagnostics/data-lag-tracker.d.ts +44 -0
- package/dist-types/diagnostics/data-lag-tracker.d.ts.map +1 -0
- package/dist-types/diagnostics/inspector.d.ts +0 -1
- package/dist-types/diagnostics/inspector.d.ts.map +1 -1
- package/dist-types/diagnostics/load-tracker.d.ts +82 -0
- package/dist-types/diagnostics/load-tracker.d.ts.map +1 -0
- package/dist-types/diagnostics/loading-overlay.d.ts +41 -0
- package/dist-types/diagnostics/loading-overlay.d.ts.map +1 -0
- package/dist-types/event-map/index.d.ts +1 -0
- package/dist-types/event-map/index.d.ts.map +1 -1
- package/dist-types/event-map/transition-handler.d.ts +2 -0
- package/dist-types/event-map/transition-handler.d.ts.map +1 -0
- package/dist-types/interfaces/providers.d.ts +5 -0
- package/dist-types/interfaces/providers.d.ts.map +1 -1
- package/dist-types/layer/action/popup.d.ts +1 -0
- package/dist-types/layer/action/popup.d.ts.map +1 -1
- package/dist-types/layer/dual-canvas-layer.d.ts.map +1 -1
- package/dist-types/layer/index.d.ts +1 -0
- package/dist-types/layer/index.d.ts.map +1 -1
- package/dist-types/layer/layer.d.ts +1 -0
- package/dist-types/layer/layer.d.ts.map +1 -1
- package/dist-types/layer/model-layer.d.ts +53 -7
- package/dist-types/layer/model-layer.d.ts.map +1 -1
- package/dist-types/layer/modeler/path-handler.d.ts.map +1 -1
- package/dist-types/layer/modeling-layer.d.ts.map +1 -1
- package/dist-types/layer/selection/selected-finder.d.ts.map +1 -1
- package/dist-types/layer/selection-layer.d.ts.map +1 -1
- package/dist-types/layer/snap-guide-layer.d.ts +23 -0
- package/dist-types/layer/snap-guide-layer.d.ts.map +1 -0
- package/dist-types/search/index.d.ts +3 -0
- package/dist-types/search/index.d.ts.map +1 -0
- package/dist-types/search/scene-search-engine.d.ts +65 -0
- package/dist-types/search/scene-search-engine.d.ts.map +1 -0
- package/dist-types/search/search-overlay.d.ts +69 -0
- package/dist-types/search/search-overlay.d.ts.map +1 -0
- package/dist-types/things-scene/api/align.d.ts.map +1 -1
- package/dist-types/things-scene/api/distribute.d.ts.map +1 -1
- package/dist-types/things-scene/api/place.d.ts.map +1 -1
- package/dist-types/things-scene/application-context.d.ts +16 -0
- package/dist-types/things-scene/application-context.d.ts.map +1 -1
- package/dist-types/things-scene/create.d.ts +4 -1
- package/dist-types/things-scene/create.d.ts.map +1 -1
- package/dist-types/things-scene/index.d.ts +7 -0
- package/dist-types/things-scene/index.d.ts.map +1 -1
- package/dist-types/things-scene/scene.d.ts +15 -0
- package/dist-types/things-scene/scene.d.ts.map +1 -1
- package/dist-types/threed/arrow-3d.d.ts +13 -4
- package/dist-types/threed/arrow-3d.d.ts.map +1 -1
- package/dist-types/threed/common.d.ts +5 -0
- package/dist-types/threed/common.d.ts.map +1 -1
- package/dist-types/threed/environments/base-environment.d.ts +9 -0
- package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/factory-environment.d.ts +2 -3
- package/dist-types/threed/environments/factory-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/home-environment.d.ts +2 -3
- package/dist-types/threed/environments/home-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/office-environment.d.ts +2 -3
- package/dist-types/threed/environments/office-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/studio-environment.d.ts +2 -3
- package/dist-types/threed/environments/studio-environment.d.ts.map +1 -1
- package/dist-types/threed/environments/warehouse-environment.d.ts +2 -3
- package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -1
- package/dist-types/threed/factories/banner.d.ts +2 -1
- package/dist-types/threed/factories/banner.d.ts.map +1 -1
- package/dist-types/threed/factories/camera.d.ts +1 -0
- package/dist-types/threed/factories/camera.d.ts.map +1 -1
- package/dist-types/threed/factories/cube.d.ts +1 -0
- package/dist-types/threed/factories/cube.d.ts.map +1 -1
- package/dist-types/threed/factories/cylinder.d.ts +1 -0
- package/dist-types/threed/factories/cylinder.d.ts.map +1 -1
- package/dist-types/threed/factories/floor-plate.d.ts +250 -0
- package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
- package/dist-types/threed/factories/gltf-object.d.ts +20 -4
- package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
- package/dist-types/threed/factories/group.d.ts +2 -0
- package/dist-types/threed/factories/group.d.ts.map +1 -0
- package/dist-types/threed/factories/light.d.ts +1 -0
- package/dist-types/threed/factories/light.d.ts.map +1 -1
- package/dist-types/threed/factories/line.d.ts +10 -0
- package/dist-types/threed/factories/line.d.ts.map +1 -0
- package/dist-types/threed/factories/polyline.d.ts +10 -0
- package/dist-types/threed/factories/polyline.d.ts.map +1 -0
- package/dist-types/threed/factories/sphere.d.ts +1 -0
- package/dist-types/threed/factories/sphere.d.ts.map +1 -1
- package/dist-types/threed/factories/sprite.d.ts +1 -0
- package/dist-types/threed/factories/sprite.d.ts.map +1 -1
- package/dist-types/threed/factories/wall.d.ts +1 -0
- package/dist-types/threed/factories/wall.d.ts.map +1 -1
- package/dist-types/threed/index.d.ts +9 -0
- package/dist-types/threed/index.d.ts.map +1 -1
- package/dist-types/threed/managers/box-selection-manager.d.ts +26 -0
- package/dist-types/threed/managers/box-selection-manager.d.ts.map +1 -0
- package/dist-types/threed/managers/camera-bookmark-manager.d.ts +127 -0
- package/dist-types/threed/managers/camera-bookmark-manager.d.ts.map +1 -0
- package/dist-types/threed/managers/camera-manager.d.ts +9 -3
- package/dist-types/threed/managers/camera-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/controls-manager.d.ts +22 -4
- package/dist-types/threed/managers/controls-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/event-manager3d.d.ts +8 -0
- package/dist-types/threed/managers/event-manager3d.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +6 -0
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/index.d.ts +3 -0
- package/dist-types/threed/managers/index.d.ts.map +1 -1
- package/dist-types/threed/managers/interaction-manager.d.ts +16 -0
- package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/renderer-manager.d.ts +32 -0
- package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/types.d.ts +5 -2
- package/dist-types/threed/managers/types.d.ts.map +1 -1
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts +109 -0
- package/dist-types/threed/managers/vertex-gizmo-manager.d.ts.map +1 -0
- package/dist-types/threed/material-3d.d.ts +5 -0
- package/dist-types/threed/material-3d.d.ts.map +1 -1
- package/dist-types/threed/ratio-lock-utils.d.ts +9 -0
- package/dist-types/threed/ratio-lock-utils.d.ts.map +1 -0
- package/dist-types/threed/real-object-dom-element.d.ts.map +1 -1
- package/dist-types/threed/real-object-extrude.d.ts +6 -0
- package/dist-types/threed/real-object-extrude.d.ts.map +1 -1
- package/dist-types/threed/real-object-gltf.d.ts +48 -3
- package/dist-types/threed/real-object-gltf.d.ts.map +1 -1
- package/dist-types/threed/real-object-group.d.ts +2 -0
- package/dist-types/threed/real-object-group.d.ts.map +1 -1
- package/dist-types/threed/real-object-line.d.ts +81 -0
- package/dist-types/threed/real-object-line.d.ts.map +1 -0
- package/dist-types/threed/real-object-mesh.d.ts.map +1 -1
- package/dist-types/threed/real-object-service.d.ts +14 -0
- package/dist-types/threed/real-object-service.d.ts.map +1 -0
- package/dist-types/threed/real-object-text.d.ts +2 -0
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +24 -2
- package/dist-types/threed/real-object.d.ts.map +1 -1
- package/dist-types/threed/text-editor-3d.d.ts +11 -0
- package/dist-types/threed/text-editor-3d.d.ts.map +1 -0
- package/dist-types/threed/texture/fillstyle-texture.d.ts +37 -0
- package/dist-types/threed/texture/fillstyle-texture.d.ts.map +1 -0
- package/dist-types/threed/texture/text-texture.d.ts +15 -0
- package/dist-types/threed/texture/text-texture.d.ts.map +1 -1
- package/dist-types/threed/three-capability.d.ts +137 -6
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/threed/three-container.d.ts +0 -1
- package/dist-types/threed/three-container.d.ts.map +1 -1
- package/dist-types/threed/three-dimensional-container.d.ts +0 -1
- package/dist-types/threed/three-dimensional-container.d.ts.map +1 -1
- package/dist-types/transition/transition-effect.d.ts +84 -0
- package/dist-types/transition/transition-effect.d.ts.map +1 -0
- package/package.json +4 -3
- package/things-scene-min.js +11 -12
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +7 -8
- package/things-scene.mjs.map +1 -1
|
@@ -9,7 +9,6 @@ export declare class CameraManager {
|
|
|
9
9
|
get camera(): THREE.PerspectiveCamera | undefined;
|
|
10
10
|
get activeCamera(): THREE.Camera;
|
|
11
11
|
get activeView(): CameraViewName;
|
|
12
|
-
get zoom(): number | undefined;
|
|
13
12
|
get cameraZPos(): number;
|
|
14
13
|
setup(width: number, height: number, config: CameraConfig): THREE.PerspectiveCamera;
|
|
15
14
|
addToScene(scene: THREE.Scene): void;
|
|
@@ -19,12 +18,19 @@ export declare class CameraManager {
|
|
|
19
18
|
* 직교 투영 카메라로 특정 뷰를 설정한다.
|
|
20
19
|
* Top/Front/Back/Right/Left — 원근법 없는 정사영 뷰.
|
|
21
20
|
*/
|
|
22
|
-
setOrthoView(view: CameraViewName, width: number, height: number): THREE.OrthographicCamera;
|
|
21
|
+
setOrthoView(view: CameraViewName, width: number, height: number, viewportWidth?: number, viewportHeight?: number): THREE.OrthographicCamera;
|
|
23
22
|
/**
|
|
24
23
|
* Perspective 카메라로 복귀한다.
|
|
25
24
|
*/
|
|
26
25
|
restorePerspective(): THREE.PerspectiveCamera;
|
|
27
|
-
|
|
26
|
+
/**
|
|
27
|
+
* 직교 카메라 frustum을 업데이트한다.
|
|
28
|
+
* @param sceneWidth 씬 모델 너비
|
|
29
|
+
* @param sceneHeight 씬 모델 높이
|
|
30
|
+
* @param viewportWidth 실제 뷰포트 너비 (옵션)
|
|
31
|
+
* @param viewportHeight 실제 뷰포트 높이 (옵션)
|
|
32
|
+
*/
|
|
33
|
+
updateOrthoFrustum(sceneWidth: number, sceneHeight: number, viewportWidth?: number, viewportHeight?: number): void;
|
|
28
34
|
destroy(): void;
|
|
29
35
|
}
|
|
30
36
|
//# sourceMappingURL=camera-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"camera-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/camera-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAExF,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAC,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAY;IAE/B,IAAI,MAAM,wCAET;IAED,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,CAK/B;IAED,IAAI,UAAU,IAAI,cAAc,CAE/B;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"camera-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/camera-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEzC,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;AAExF,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAC,CAAyB;IAC9C,OAAO,CAAC,YAAY,CAAC,CAA0B;IAC/C,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,WAAW,CAAY;IAE/B,IAAI,MAAM,wCAET;IAED,IAAI,YAAY,IAAI,KAAK,CAAC,MAAM,CAK/B;IAED,IAAI,UAAU,IAAI,cAAc,CAE/B;IAED,IAAI,UAAU,WAEb;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IA+BzD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK;IAK7B,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAgB1C,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC;IAU9C;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,kBAAkB;IAyC5I;;OAEG;IACH,kBAAkB,IAAI,KAAK,CAAC,iBAAiB;IAK7C;;;;;;OAMG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;IAyB3G,OAAO;CAKR"}
|
|
@@ -7,10 +7,13 @@ export declare class ControlsManager {
|
|
|
7
7
|
private _state;
|
|
8
8
|
private _autoRotate;
|
|
9
9
|
private _autoRotateSpeed;
|
|
10
|
+
private _onUserInteraction?;
|
|
10
11
|
private _dampingFactor;
|
|
11
12
|
private _rotateSpeed;
|
|
12
13
|
private _panSpeed;
|
|
13
14
|
private _lastScale;
|
|
15
|
+
/** true이면 카메라와 타겟이 Y=0 아래로 내려가지 못한다 (뷰어 전용). */
|
|
16
|
+
private _floorConstraint;
|
|
14
17
|
private _spherical;
|
|
15
18
|
private _sphericalDelta;
|
|
16
19
|
private _panOffset;
|
|
@@ -38,6 +41,7 @@ export declare class ControlsManager {
|
|
|
38
41
|
private get _isOrthoLocked();
|
|
39
42
|
setup(camera: THREE.Camera, host: Component): void;
|
|
40
43
|
setEnabled(enabled: boolean): void;
|
|
44
|
+
setOnUserInteraction(cb: (() => void) | undefined): void;
|
|
41
45
|
onDragStart(e: DragEvent): void;
|
|
42
46
|
onDragMove(e: DragEvent): void;
|
|
43
47
|
onDragEnd(_e: DragEvent): void;
|
|
@@ -47,15 +51,23 @@ export declare class ControlsManager {
|
|
|
47
51
|
onKeyDown(e: KeyboardEvent): void;
|
|
48
52
|
update(): boolean;
|
|
49
53
|
reset(): void;
|
|
54
|
+
/**
|
|
55
|
+
* 현재 카메라 위치/타겟을 리셋 기준점으로 저장한다.
|
|
56
|
+
* Pin Camera View 등으로 기본 위치를 변경한 후 호출.
|
|
57
|
+
*/
|
|
58
|
+
pinResetPosition(): void;
|
|
50
59
|
setCamera(camera: THREE.Camera): void;
|
|
60
|
+
isAutoRotating(): boolean;
|
|
51
61
|
setAutoRotate(enabled: boolean): void;
|
|
62
|
+
setFloorConstraint(enabled: boolean): void;
|
|
52
63
|
markCameraChanged(): void;
|
|
53
64
|
/**
|
|
54
|
-
* Perspective
|
|
55
|
-
*
|
|
56
|
-
*
|
|
65
|
+
* Perspective dolly zoom: 카메라를 target 방향으로 이동 (실제 거리 변화).
|
|
66
|
+
* projection zoom이 아닌 물리적 접근/후퇴로 자연스러운 3D 줌 제공.
|
|
67
|
+
* 커서 위치 기준 target 이동으로 커서 아래 월드 좌표가 고정된다.
|
|
68
|
+
* factor < 1: 가까이 (zoom in), factor > 1: 멀어짐 (zoom out)
|
|
57
69
|
*/
|
|
58
|
-
|
|
70
|
+
dollyAtCursor(factor: number, ndcX: number, ndcY: number): void;
|
|
59
71
|
/**
|
|
60
72
|
* 직교 뷰 줌: 마우스 커서 위치를 기준으로 확대/축소.
|
|
61
73
|
* 커서 아래의 월드 좌표가 줌 후에도 동일한 화면 위치에 유지된다.
|
|
@@ -63,6 +75,12 @@ export declare class ControlsManager {
|
|
|
63
75
|
*/
|
|
64
76
|
zoomOrthoAtCursor(factor: number, ndcX: number, ndcY: number): void;
|
|
65
77
|
destroy(): void;
|
|
78
|
+
/**
|
|
79
|
+
* 뷰포트의 CSS 표시 크기를 반환한다.
|
|
80
|
+
* element의 getBoundingClientRect()를 우선 사용하되,
|
|
81
|
+
* element가 없거나 rect가 0x0이면 bounds로 폴백한다.
|
|
82
|
+
*/
|
|
83
|
+
private _getViewportSize;
|
|
66
84
|
private _handleRotateMove;
|
|
67
85
|
private _handlePanMove;
|
|
68
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/controls-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAC1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAY9B,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAC,CAAc;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAW;IAEzB,OAAO,CAAC,QAAQ,CAAO;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,gBAAgB,CAAM;IAC9B,OAAO,CAAC,cAAc,CAAO;IAC7B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"controls-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/controls-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,15 @@ export declare class EventManager3D {
|
|
|
13
13
|
set lastHovered(value: IThreeRealObject | undefined);
|
|
14
14
|
updateMouseNDC(px: number, py: number, left: number, top: number, width: number, height: number): void;
|
|
15
15
|
getObjectByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Object3D | undefined;
|
|
16
|
+
/**
|
|
17
|
+
* Object3D의 전체 조상 체인이 visible인지 확인한다.
|
|
18
|
+
* Three.js raycaster는 visible을 자동으로 확인하지 않기 때문에 수동 필터링이 필요하다.
|
|
19
|
+
*/
|
|
20
|
+
private _isWorldVisible;
|
|
16
21
|
getObjectsByRaycast(camera: THREE.Camera, scene: THREE.Scene): THREE.Intersection[];
|
|
22
|
+
private _hudScene?;
|
|
23
|
+
private _hudCamera?;
|
|
24
|
+
setHUD(scene: THREE.Scene, camera: THREE.Camera): void;
|
|
17
25
|
handleClick(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent): IThreeRealObject | undefined;
|
|
18
26
|
handleHover(camera: THREE.Camera, scene: THREE.Scene, event: MouseEvent): void;
|
|
19
27
|
destroy(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-manager3d.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/event-manager3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAkB;;IAIvC,IAAI,KAAK,kBAER;IAED,IAAI,WAAW,IAIQ,gBAAgB,GAAG,SAAS,CAFlD;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAElD;IAED,IAAI,WAAW,IAIQ,gBAAgB,GAAG,SAAS,CAFlD;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAElD;IAED,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK/F,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS;
|
|
1
|
+
{"version":3,"file":"event-manager3d.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/event-manager3d.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAExD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAkB;;IAIvC,IAAI,KAAK,kBAER;IAED,IAAI,WAAW,IAIQ,gBAAgB,GAAG,SAAS,CAFlD;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAElD;IAED,IAAI,WAAW,IAIQ,gBAAgB,GAAG,SAAS,CAFlD;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,EAElD;IAED,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAK/F,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS;IAsBxF;;;OAGG;IACH,OAAO,CAAC,eAAe;IASvB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,YAAY,EAAE;IAMnF,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAc;IAEjC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;IAK/C,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAG,gBAAgB,GAAG,SAAS;IA0BtG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU;IAyBvE,OAAO;CAMR"}
|
|
@@ -37,6 +37,7 @@ export declare class GizmoOperationManager {
|
|
|
37
37
|
setEnabled(enabled: boolean): void;
|
|
38
38
|
}, getHost: () => GizmoOperationHost | undefined, callbacks?: {
|
|
39
39
|
onAttachChanged?: (isAttached: boolean) => void;
|
|
40
|
+
onDraggingChanged?: (isDragging: boolean) => void;
|
|
40
41
|
}): void;
|
|
41
42
|
private _onDragStart;
|
|
42
43
|
private _performAltDragDuplicate;
|
|
@@ -47,6 +48,11 @@ export declare class GizmoOperationManager {
|
|
|
47
48
|
* 기즈모 드래그 결과를 컴포넌트 속성에 역변환하여 반영한다.
|
|
48
49
|
*/
|
|
49
50
|
private _syncFromGizmo;
|
|
51
|
+
/**
|
|
52
|
+
* 오브젝트 바닥면이 Y=0(바닥)에 가까우면 스냅한다.
|
|
53
|
+
* Object3D.position.y는 오브젝트 중심이므로, 바닥면 = position.y - effectiveDepth/2.
|
|
54
|
+
*/
|
|
55
|
+
private _applyGroundSnap;
|
|
50
56
|
/**
|
|
51
57
|
* scale 기즈모 드래그를 dimension 변경으로 역산한다.
|
|
52
58
|
* 축 매핑: scale.x → width, scale.y → depth, scale.z → height
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gizmo-operation-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/gizmo-operation-manager.ts"],"names":[],"mappings":"
|
|
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,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;IAE3E;;;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;IA+BP,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,wBAAwB;IAyBhC,OAAO,CAAC,wBAAwB;IA2ChC,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,UAAU;IAyElB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyEtB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;CAmChC"}
|
|
@@ -8,5 +8,8 @@ export { GizmoManager, type GizmoMode } from './gizmo-manager.js';
|
|
|
8
8
|
export { GizmoOperationManager, type GizmoOperationHost } from './gizmo-operation-manager.js';
|
|
9
9
|
export { InteractionManager, type InteractionDelegate } from './interaction-manager.js';
|
|
10
10
|
export { PlacementManager, type PlacementDelegate } from './placement-manager.js';
|
|
11
|
+
export { CameraBookmarkManager, type CameraBookmark } from './camera-bookmark-manager.js';
|
|
12
|
+
export { BoxSelectionManager } from './box-selection-manager.js';
|
|
13
|
+
export { VertexGizmoManager } from './vertex-gizmo-manager.js';
|
|
11
14
|
export type { CameraConfig, RendererConfig, LightingConfig } from './types.js';
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACjF,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACjE,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAC7F,OAAO,EAAE,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AACvF,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AACjF,OAAO,EAAE,qBAAqB,EAAE,KAAK,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -32,6 +32,22 @@ export interface InteractionDelegate {
|
|
|
32
32
|
handleTouchEnd(e: TouchEvent): void;
|
|
33
33
|
/** 키 입력. 처리했으면 true, 상위로 전파해야 하면 false */
|
|
34
34
|
handleKeyDown(e: KeyboardEvent): boolean;
|
|
35
|
+
/** 키 해제. 처리했으면 true */
|
|
36
|
+
handleKeyUp?(e: KeyboardEvent): boolean;
|
|
37
|
+
/** Space 키 패닝 모드 여부 */
|
|
38
|
+
isSpacePanning?(): boolean;
|
|
39
|
+
/** 박스 셀렉션 시작 */
|
|
40
|
+
handleBoxSelectionStart?(x: number, y: number): void;
|
|
41
|
+
/** 박스 셀렉션 업데이트 */
|
|
42
|
+
handleBoxSelectionUpdate?(x: number, y: number): void;
|
|
43
|
+
/** 박스 셀렉션 종료 (additive: Shift 유지 여부 — 기존 선택에 추가) */
|
|
44
|
+
handleBoxSelectionEnd?(additive: boolean): void;
|
|
45
|
+
/** vertex 핸들 드래그 시작 시도. 성공 시 true 반환 */
|
|
46
|
+
tryVertexDragStart?(e: MouseEvent): boolean;
|
|
47
|
+
/** vertex 핸들 드래그 이동 */
|
|
48
|
+
handleVertexDragMove?(e: MouseEvent): void;
|
|
49
|
+
/** vertex 핸들 드래그 종료 */
|
|
50
|
+
handleVertexDragEnd?(e: MouseEvent): void;
|
|
35
51
|
}
|
|
36
52
|
/**
|
|
37
53
|
* DOM 이벤트 핸들링과 드래그 상태 관리를 담당하는 매니저.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interaction-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/interaction-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,2BAA2B;IAC3B,eAAe,IAAI,OAAO,CAAA;IAC1B,6BAA6B;IAC7B,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACzC,qCAAqC;IACrC,oBAAoB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACzC,mDAAmD;IACnD,iBAAiB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;IACzC,0CAA0C;IAC1C,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IAC7C,8BAA8B;IAC9B,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACxE,YAAY;IACZ,WAAW,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,eAAe;IACf,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACnC,YAAY;IACZ,gBAAgB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACrC,YAAY;IACZ,eAAe,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACpC,YAAY;IACZ,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IACnC,0CAA0C;IAC1C,aAAa,CAAC,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"interaction-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/interaction-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"light-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAC,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,GAAG,SAAS,CAEjD;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAEjD;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"light-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/light-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,UAAU,CAAC,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAAC,CAAwB;IAC1C,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B,IAAI,SAAS,IAAI,KAAK,CAAC,eAAe,GAAG,SAAS,CAEjD;IAED,IAAI,QAAQ,IAAI,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAEjD;IAED,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc;IAwDtE,gBAAgB,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOhH,iBAAiB,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAM/E,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAevG,OAAO;CAQR"}
|
|
@@ -9,29 +9,61 @@ export declare class RendererManager {
|
|
|
9
9
|
private _composer?;
|
|
10
10
|
private _outlinePass?;
|
|
11
11
|
private _noSupportWebgl;
|
|
12
|
+
private _hudScene?;
|
|
13
|
+
private _hudCamera?;
|
|
14
|
+
private _hudCSS3DRenderer?;
|
|
15
|
+
private _hudCSS3DScene?;
|
|
16
|
+
private _hudCSS3DCamera?;
|
|
12
17
|
get renderer(): THREE.WebGLRenderer | undefined;
|
|
13
18
|
get css3DRenderer(): CSS3DRenderer;
|
|
14
19
|
get css3DScene(): THREE.Scene;
|
|
15
20
|
get composer(): EffectComposer | undefined;
|
|
16
21
|
get noSupportWebgl(): boolean;
|
|
17
22
|
get domElement(): HTMLCanvasElement | undefined;
|
|
23
|
+
get hudScene(): THREE.Scene;
|
|
24
|
+
get hudCSS3DScene(): THREE.Scene;
|
|
25
|
+
get hudCamera(): THREE.OrthographicCamera | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* HUD 직교 카메라를 초기화한다.
|
|
28
|
+
* 2D 좌표계와 동일: 원점 = 좌상단, X→오른쪽, Y→아래
|
|
29
|
+
*/
|
|
30
|
+
setupHUD(width: number, height: number): void;
|
|
31
|
+
/**
|
|
32
|
+
* HUD 카메라 프러스텀을 캔버스 크기에 맞춘다.
|
|
33
|
+
*/
|
|
34
|
+
resizeHUD(width: number, height: number): void;
|
|
18
35
|
setupWebGL(width: number, height: number, config: RendererConfig): boolean;
|
|
19
36
|
setupCSS3D(isViewMode: boolean, sceneAttr?: string): void;
|
|
20
37
|
private createCSS3DRenderer;
|
|
21
38
|
setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number, gizmoHelper?: THREE.Object3D): EffectComposer;
|
|
39
|
+
setupLightComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number): EffectComposer;
|
|
40
|
+
get hasOutlinePass(): boolean;
|
|
22
41
|
updateRenderPassCamera(camera: THREE.Camera): void;
|
|
23
42
|
/**
|
|
24
43
|
* 아웃라인을 표시할 오브젝트 목록을 설정한다.
|
|
25
44
|
*/
|
|
26
45
|
setOutlineObjects(objects: THREE.Object3D[]): void;
|
|
27
46
|
resize(width: number, height: number): void;
|
|
47
|
+
private _scene?;
|
|
48
|
+
private _camera?;
|
|
49
|
+
/**
|
|
50
|
+
* 경량 composer를 해제하고 direct render 모드로 복귀한다.
|
|
51
|
+
*/
|
|
52
|
+
teardownLightComposer(): void;
|
|
53
|
+
/**
|
|
54
|
+
* 포스트프로세싱 없이 직접 렌더링할 때 사용할 scene/camera를 설정한다.
|
|
55
|
+
*/
|
|
56
|
+
setDirectRenderTargets(scene: THREE.Scene, camera: THREE.Camera): void;
|
|
28
57
|
render(): void;
|
|
58
|
+
private renderHUD;
|
|
29
59
|
renderCSS3D(camera: THREE.Camera): void;
|
|
60
|
+
get hudCSS3DRenderer(): CSS3DRenderer | undefined;
|
|
30
61
|
getSize(): {
|
|
31
62
|
width: number;
|
|
32
63
|
height: number;
|
|
33
64
|
};
|
|
34
65
|
destroy(): void;
|
|
66
|
+
disposeHUD(): void;
|
|
35
67
|
disposeCSS3DScene(): void;
|
|
36
68
|
}
|
|
37
69
|
//# sourceMappingURL=renderer-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAA;AAKpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,eAAe,CAAQ;
|
|
1
|
+
{"version":3,"file":"renderer-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/renderer-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,qDAAqD,CAAA;AAKpF,OAAO,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAqB;IACvC,OAAO,CAAC,cAAc,CAAC,CAAe;IACtC,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,SAAS,CAAC,CAAgB;IAClC,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,eAAe,CAAQ;IAG/B,OAAO,CAAC,SAAS,CAAC,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAC,CAA0B;IAE7C,OAAO,CAAC,iBAAiB,CAAC,CAAe;IACzC,OAAO,CAAC,cAAc,CAAC,CAAa;IACpC,OAAO,CAAC,eAAe,CAAC,CAA0B;IAElD,IAAI,QAAQ,oCAEX;IAED,IAAI,aAAa,kBAKhB;IAED,IAAI,UAAU,gBAKb;IAED,IAAI,QAAQ,+BAEX;IAED,IAAI,cAAc,YAEjB;IAED,IAAI,UAAU,kCAEb;IAED,IAAI,QAAQ,gBAKX;IAED,IAAI,aAAa,gBAKhB;IAED,IAAI,SAAS,yCAEZ;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IA4CtC;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAQvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;IA8C1E,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,MAAM;IAmBlD,OAAO,CAAC,mBAAmB;IAI3B,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,QAAQ;IA4CnH,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAsB1F,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED,sBAAsB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAa3C;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE;IAM3C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAkBpC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE9B;;OAEG;IACH,qBAAqB;IAQrB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;IAK/D,MAAM;IAsBN,OAAO,CAAC,SAAS;IAcjB,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM;IAchC,IAAI,gBAAgB,8BAEnB;IAED,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAM5C,OAAO;IAWP,UAAU;IAkCV,iBAAiB;CAMlB"}
|
|
@@ -2,7 +2,6 @@ export interface CameraConfig {
|
|
|
2
2
|
fov: number;
|
|
3
3
|
near: number;
|
|
4
4
|
far: number;
|
|
5
|
-
zoom: number;
|
|
6
5
|
cameraX?: number;
|
|
7
6
|
cameraY?: number;
|
|
8
7
|
cameraZ?: number;
|
|
@@ -11,6 +10,9 @@ export interface RendererConfig {
|
|
|
11
10
|
precision: string;
|
|
12
11
|
antialias: boolean;
|
|
13
12
|
exposure: number;
|
|
13
|
+
postprocessing?: boolean;
|
|
14
|
+
shadowMap?: boolean;
|
|
15
|
+
logarithmicDepthBuffer?: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface LightingConfig {
|
|
16
18
|
hemisphere: {
|
|
@@ -21,7 +23,8 @@ export interface LightingConfig {
|
|
|
21
23
|
directional?: {
|
|
22
24
|
color: number;
|
|
23
25
|
intensity: number;
|
|
24
|
-
attachToCamera
|
|
26
|
+
attachToCamera?: boolean;
|
|
27
|
+
position?: [number, number, number];
|
|
25
28
|
castShadow?: boolean;
|
|
26
29
|
shadowMapSize?: number;
|
|
27
30
|
shadowBias?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACxE,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,cAAc,CAAC,EAAE,OAAO,CAAA;QACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QACnC,UAAU,CAAC,EAAE,OAAO,CAAA;QACpB,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,UAAU,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,MAAM,CAAA;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,UAAU,EAAE,OAAO,CAAA;QACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAClC,UAAU,EAAE,MAAM,CAAA;QAClB,SAAS,EAAE,MAAM,CAAA;KAClB,CAAA;CACF"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import type Component from '../../components/component.js';
|
|
3
|
+
/**
|
|
4
|
+
* 선택된 path 기반 컴포넌트의 각 vertex에 드래그 가능한 핸들을 표시하는 매니저.
|
|
5
|
+
*
|
|
6
|
+
* polyline, line, polygon, path 등 mutable+path 속성을 가진 컴포넌트에 공통 적용.
|
|
7
|
+
* 멀티셀렉트 시 모든 mutable+path 컴포넌트의 핸들을 표시한다.
|
|
8
|
+
*
|
|
9
|
+
* 기능:
|
|
10
|
+
* - vertex 핸들 드래그: vertex 이동
|
|
11
|
+
* - midpoint 핸들 드래그: 세그먼트 중간에 새 vertex 삽입
|
|
12
|
+
* - Alt+드래그 끝점: 끝에 새 vertex 추가 (pathExtendable인 경우)
|
|
13
|
+
* - 더블클릭 vertex: vertex 삭제 (pathExtendable이고 path.length > 2)
|
|
14
|
+
*/
|
|
15
|
+
export declare class VertexGizmoManager {
|
|
16
|
+
private _componentHandles;
|
|
17
|
+
private _handleGroup?;
|
|
18
|
+
private _scene3d?;
|
|
19
|
+
private _commander?;
|
|
20
|
+
private _activeComponent?;
|
|
21
|
+
private _activeVertexHandles;
|
|
22
|
+
private _activeHandleIndex;
|
|
23
|
+
private _isDragging;
|
|
24
|
+
private _isExtending;
|
|
25
|
+
private _dragPlane;
|
|
26
|
+
private _dragOffset;
|
|
27
|
+
private _raycaster;
|
|
28
|
+
private _intersection;
|
|
29
|
+
get isDragging(): boolean;
|
|
30
|
+
get isAttached(): boolean;
|
|
31
|
+
/** 핸들 표시/숨김 (기즈모 드래그 중에는 숨김) */
|
|
32
|
+
setVisible(visible: boolean): void;
|
|
33
|
+
/**
|
|
34
|
+
* 선택된 컴포넌트들에 vertex 핸들을 표시한다.
|
|
35
|
+
*/
|
|
36
|
+
attachMultiple(components: Component[], scene: THREE.Scene, commander?: any): void;
|
|
37
|
+
/** 하위 호환: 단일 컴포넌트 attach */
|
|
38
|
+
attach(component: Component, scene: THREE.Scene, commander?: any): void;
|
|
39
|
+
/**
|
|
40
|
+
* 핸들을 제거한다.
|
|
41
|
+
*/
|
|
42
|
+
detach(): void;
|
|
43
|
+
/**
|
|
44
|
+
* 컴포넌트에 대한 핸들을 생성한다.
|
|
45
|
+
*/
|
|
46
|
+
private _buildComponentHandles;
|
|
47
|
+
/**
|
|
48
|
+
* 특정 컴포넌트의 핸들만 재생성한다.
|
|
49
|
+
*/
|
|
50
|
+
private _rebuildComponentHandles;
|
|
51
|
+
private _createVertexHandle;
|
|
52
|
+
private _createMidpointHandle;
|
|
53
|
+
/**
|
|
54
|
+
* 3D 핸들 위치 → 2D path 포인트 역변환
|
|
55
|
+
*/
|
|
56
|
+
private _handlePosToPoint;
|
|
57
|
+
/**
|
|
58
|
+
* mutatePath를 commander undo 지원과 함께 실행
|
|
59
|
+
*/
|
|
60
|
+
private _execMutatePath;
|
|
61
|
+
/** 모든 핸들을 flat 배열로 반환 */
|
|
62
|
+
private _getAllHandles;
|
|
63
|
+
/** 컴포넌트에 속하는 ComponentHandles를 찾는다 */
|
|
64
|
+
private _findComponentHandles;
|
|
65
|
+
/**
|
|
66
|
+
* 마우스 다운: vertex/midpoint 핸들 raycast hit 감지 → 드래그 시작.
|
|
67
|
+
* @returns true이면 이벤트를 소비
|
|
68
|
+
*/
|
|
69
|
+
onPointerDown(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* midpoint 핸들 드래그 시작: 세그먼트 중간에 새 vertex를 삽입
|
|
72
|
+
*/
|
|
73
|
+
private _startMidpointDrag;
|
|
74
|
+
/**
|
|
75
|
+
* Alt+드래그 끝점: 끝에 새 vertex를 추가하고 드래그 시작
|
|
76
|
+
*/
|
|
77
|
+
private _startEndpointExtend;
|
|
78
|
+
/**
|
|
79
|
+
* 카메라 방향 기반 드래그 평면 설정
|
|
80
|
+
*/
|
|
81
|
+
private _setupDragPlane;
|
|
82
|
+
/**
|
|
83
|
+
* 마우스 이동: 드래그 중이면 핸들 이동.
|
|
84
|
+
*/
|
|
85
|
+
onPointerMove(ndc: THREE.Vector2, camera: THREE.Camera, event: MouseEvent): boolean;
|
|
86
|
+
/**
|
|
87
|
+
* 현재 활성 컴포넌트의 vertex 핸들 위치로부터 Line2 geometry를 실시간 업데이트한다.
|
|
88
|
+
*/
|
|
89
|
+
private _updateLinePreview;
|
|
90
|
+
/**
|
|
91
|
+
* 마우스 업: 드래그 종료 → component.mutatePath() 호출.
|
|
92
|
+
*/
|
|
93
|
+
onPointerUp(): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* 더블클릭: vertex 핸들 위에서 더블클릭하면 해당 vertex 삭제.
|
|
96
|
+
* @returns true이면 이벤트를 소비
|
|
97
|
+
*/
|
|
98
|
+
onDblClick(ndc: THREE.Vector2, camera: THREE.Camera): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* 핸들 위치를 현재 path 데이터에서 갱신한다.
|
|
101
|
+
*/
|
|
102
|
+
syncHandles(): void;
|
|
103
|
+
/**
|
|
104
|
+
* 카메라 거리에 따라 핸들 크기를 조절하여 화면상 일정한 크기를 유지한다.
|
|
105
|
+
*/
|
|
106
|
+
updateHandleScales(camera: THREE.Camera): void;
|
|
107
|
+
destroy(): void;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=vertex-gizmo-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vertex-gizmo-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/vertex-gizmo-manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AA2B1D;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,YAAY,CAAC,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAC,CAAK;IAGxB,OAAO,CAAC,gBAAgB,CAAC,CAAW;IACpC,OAAO,CAAC,oBAAoB,CAAmB;IAC/C,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,YAAY,CAAQ;IAC5B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAAsB;IAE3C,IAAI,UAAU,YAA8B;IAC5C,IAAI,UAAU,YAA+C;IAE7D,gCAAgC;IAChC,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAMlC;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAqBlF,4BAA4B;IAC5B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,IAAI;IAIvE;;OAEG;IACH,MAAM,IAAI,IAAI;IAiBd;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA2C9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAiB7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB,yBAAyB;IACzB,OAAO,CAAC,cAAc;IAQtB,sCAAsC;IACtC,OAAO,CAAC,qBAAqB;IAI7B;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IAgDnF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO;IA6BnF;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,WAAW,IAAI,OAAO;IA+BtB;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,OAAO;IA8B7D;;OAEG;IACH,WAAW,IAAI,IAAI;IAMnB;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI;IAuB9C,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -33,4 +33,9 @@ export interface MaterialPreset {
|
|
|
33
33
|
export declare const MATERIAL_PRESETS: Record<string, MaterialPreset>;
|
|
34
34
|
export declare function resolveMaterial3d(material3d?: Material3D): ResolvedMaterial3D;
|
|
35
35
|
export declare function toThreeSide(side: ResolvedMaterial3D['side']): THREE.Side;
|
|
36
|
+
/**
|
|
37
|
+
* resolved material3d 속성을 MeshStandardMaterial에 일괄 적용한다.
|
|
38
|
+
* createMaterials / updateMaterial3d 에서 공통으로 사용.
|
|
39
|
+
*/
|
|
40
|
+
export declare function applyMaterial3dProps(material: THREE.MeshStandardMaterial, resolved: ResolvedMaterial3D): void;
|
|
36
41
|
//# sourceMappingURL=material-3d.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"material-3d.d.ts","sourceRoot":"","sources":["../../src/threed/material-3d.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IAGvB,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAQ3D,CAAA;AAED,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,kBAAkB,CA4B7E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAExE"}
|
|
1
|
+
{"version":3,"file":"material-3d.d.ts","sourceRoot":"","sources":["../../src/threed/material-3d.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,UAAU;IAEzB,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAC7F,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAG1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,aAAa,CAAC,EAAE,OAAO,CAAA;IAGvB,UAAU,CAAC,EAAE,WAAW,GAAG,OAAO,CAAA;IAGlC,UAAU,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,iBAAiB,EAAE,MAAM,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;IACjC,UAAU,EAAE,OAAO,CAAA;IACnB,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAQ3D,CAAA;AAED,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,kBAAkB,CA4B7E;AAQD,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAExE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,oBAAoB,EAAE,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAS7G"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 3축의 변화율 중 가장 큰 것을 기준으로 균일 비율을 반환한다.
|
|
3
|
+
* 모든 변화가 threshold 미만이면 null 반환 (변경 없음).
|
|
4
|
+
*
|
|
5
|
+
* @param ratios - [x, y, z] 각 축의 변화 비율 (1.0 = 변화 없음)
|
|
6
|
+
* @returns 균일 비율 또는 null
|
|
7
|
+
*/
|
|
8
|
+
export declare function getUniformRatio(ratios: [number, number, number]): number | null;
|
|
9
|
+
//# sourceMappingURL=ratio-lock-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ratio-lock-utils.d.ts","sourceRoot":"","sources":["../../src/threed/ratio-lock-utils.ts"],"names":[],"mappings":"AASA;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAW/E"}
|
|
@@ -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,SAAS,CAAC,mBAAmB;IAI7B;;;OAGG;IACH,IAAI,QAAQ;;;;MAQX;IAED;;OAEG;IACH,gBAAgB;IAiChB,KAAK;IAeL,eAAe;IAWf,WAAW;CAUZ"}
|
|
@@ -27,6 +27,12 @@ export declare class RealObjectExtrude extends RealObject {
|
|
|
27
27
|
updateAlpha(): void;
|
|
28
28
|
updateStrokeStyle(): void;
|
|
29
29
|
updateFillStyle(): void;
|
|
30
|
+
updateText(): void;
|
|
31
|
+
/**
|
|
32
|
+
* cap 면(앞/뒤)에 fillStyle + 텍스트를 합성한 텍스처를 적용한다.
|
|
33
|
+
* 텍스트가 없으면 fillStyle만 적용한다.
|
|
34
|
+
*/
|
|
35
|
+
private _applyCapTexture;
|
|
30
36
|
updateDimension(): void;
|
|
31
37
|
}
|
|
32
38
|
//# sourceMappingURL=real-object-extrude.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-extrude.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"real-object-extrude.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-extrude.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAOhE;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,iBAAiB,CAAC,EAAE,gBAAgB,CAAA;IACpC,OAAO,CAAC,KAAK,CAAC,CAAY;IAE1B,KAAK;IAKL,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,gBAAgB,qBAInB;IAED,KAAK;IAoCL,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc;IAoBxD,eAAe,IAAI,KAAK,CAAC,QAAQ,EAAE;IAcnC,aAAa;IAqBb,OAAO,CAAC,YAAY;IAMpB,gBAAgB;IAYhB,WAAW;IAUX,iBAAiB;IAQjB,eAAe;IAIf,UAAU;IAIV;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA4DxB,eAAe;CAKhB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import type { Properties } from '../interfaces/types.js';
|
|
3
3
|
import { RealObject } from './real-object.js';
|
|
4
|
+
import { GLTF, GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
|
|
4
5
|
export interface GLTFNodeState {
|
|
5
6
|
color?: string;
|
|
6
7
|
visible?: boolean;
|
|
@@ -16,17 +17,54 @@ export interface GLTFAnimationState {
|
|
|
16
17
|
loop?: 'once' | 'repeat' | 'pingpong';
|
|
17
18
|
}
|
|
18
19
|
export declare class RealObjectGLTF extends RealObject {
|
|
20
|
+
private static _topViewCache;
|
|
21
|
+
private static _gltfCache;
|
|
19
22
|
private static _sharedLoader;
|
|
20
|
-
|
|
23
|
+
/**
|
|
24
|
+
* DRACO/KTX2/Meshopt/SpecGloss가 모두 설정된 공유 GLTFLoader를 반환한다.
|
|
25
|
+
* renderer를 전달하면 KTX2 detectSupport를 갱신한다.
|
|
26
|
+
* 2D 스냅샷 등 renderer 없이도 호출 가능하다.
|
|
27
|
+
*/
|
|
28
|
+
static getSharedLoader(renderer?: THREE.WebGLRenderer): GLTFLoader;
|
|
29
|
+
/**
|
|
30
|
+
* URL로 GLTF를 로드한다. 동일 URL은 캐시하여 1회만 파싱한다.
|
|
31
|
+
* 로드 실패 시 캐시에서 제거하여 재시도 가능.
|
|
32
|
+
*/
|
|
33
|
+
static loadGLTF(url: string, renderer?: THREE.WebGLRenderer): Promise<GLTF>;
|
|
21
34
|
private pivot?;
|
|
22
|
-
private
|
|
35
|
+
private _objectSize?;
|
|
36
|
+
get objectSize(): THREE.Vector3 | undefined;
|
|
23
37
|
private _nodeIndex;
|
|
24
38
|
private _originals;
|
|
25
|
-
|
|
39
|
+
_animationActions: Map<string, THREE.AnimationAction>;
|
|
26
40
|
private _fillStyleOriginals;
|
|
41
|
+
private _clonedMaterials;
|
|
42
|
+
/**
|
|
43
|
+
* mesh의 material이 아직 복제되지 않았으면 복제하여 독립 인스턴스로 만든다.
|
|
44
|
+
* GLTF 캐시로 인해 동일 소스의 오브젝트들이 material을 공유하므로,
|
|
45
|
+
* material을 변경하기 전에 반드시 호출해야 한다.
|
|
46
|
+
*/
|
|
47
|
+
private _ensureOwnMaterial;
|
|
27
48
|
private _loadGen;
|
|
28
49
|
build(): void;
|
|
29
50
|
private gltfLoaded;
|
|
51
|
+
private _renderTopViewSnapshot;
|
|
52
|
+
/**
|
|
53
|
+
* 오프스크린 렌더러로 Object3D의 탑뷰(Y축 위→아래) 스냅샷을 생성한다.
|
|
54
|
+
* GLTFObject에서 2D 모드 독립 로딩 시에도 사용한다.
|
|
55
|
+
*/
|
|
56
|
+
static renderTopView(object: THREE.Object3D): HTMLCanvasElement;
|
|
57
|
+
/** 캐시에서 스냅샷을 조회한다 */
|
|
58
|
+
static getTopViewCache(source: string): HTMLCanvasElement | undefined;
|
|
59
|
+
/** 캐시에 스냅샷을 저장한다 */
|
|
60
|
+
static setTopViewCache(source: string, canvas: HTMLCanvasElement): void;
|
|
61
|
+
/**
|
|
62
|
+
* GLTF 파싱 캐시와 탑뷰 스냅샷 캐시를 모두 비운다.
|
|
63
|
+
* Scene(보드) 전환 시 호출하여 메모리를 회수한다.
|
|
64
|
+
* clone()은 geometry/texture를 공유 참조하므로,
|
|
65
|
+
* 모든 컴포넌트가 dispose된 후에만 호출해야 한다.
|
|
66
|
+
*/
|
|
67
|
+
static flushCache(): void;
|
|
30
68
|
private _buildNodeIndex;
|
|
31
69
|
getNode(name: string): THREE.Object3D | undefined;
|
|
32
70
|
get nodeNames(): string[];
|
|
@@ -40,9 +78,16 @@ export declare class RealObjectGLTF extends RealObject {
|
|
|
40
78
|
*/
|
|
41
79
|
private _resetAllNodes;
|
|
42
80
|
private _setupAnimations;
|
|
81
|
+
/**
|
|
82
|
+
* playTargets에 따라 해당 애니메이션만 재생.
|
|
83
|
+
* '*' → 전체, undefined/'none'/[] → 없음, [...] → 선택된 것만
|
|
84
|
+
* (fillStyleTargets와 동일한 규칙)
|
|
85
|
+
*/
|
|
86
|
+
_playTargetAnimations(): void;
|
|
43
87
|
private _applyAnimationStates;
|
|
44
88
|
get animationNames(): string[];
|
|
45
89
|
private _showErrorPlaceholder;
|
|
90
|
+
private _showEmptyPlaceholder;
|
|
46
91
|
updateFillStyle(): void;
|
|
47
92
|
private _restoreFillStyleTargets;
|
|
48
93
|
clear(): THREE.Object3D<THREE.Object3DEventMap>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-gltf.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"real-object-gltf.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-gltf.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,7 @@ import * as THREE from 'three';
|
|
|
2
2
|
import { RealObject } from './real-object.js';
|
|
3
3
|
export declare class RealObjectGroup extends RealObject<THREE.Group> {
|
|
4
4
|
protected getObject3dInstance(): THREE.Group<THREE.Object3DEventMap>;
|
|
5
|
+
/** Group은 translate만 허용 (rotate/scale은 ungroup 시 정확한 분해가 어려움) */
|
|
6
|
+
get allowedGizmoModes(): string[] | null;
|
|
5
7
|
}
|
|
6
8
|
//# sourceMappingURL=real-object-group.d.ts.map
|