@hatiolab/things-scene 10.0.0-beta.4 → 10.0.0-beta.40
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/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/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 +46 -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 +10 -0
- package/dist-types/threed/environments/factory-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/home-environment.d.ts +10 -0
- package/dist-types/threed/environments/home-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/index.d.ts +6 -0
- package/dist-types/threed/environments/index.d.ts.map +1 -0
- package/dist-types/threed/environments/office-environment.d.ts +10 -0
- package/dist-types/threed/environments/office-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/studio-environment.d.ts +11 -0
- package/dist-types/threed/environments/studio-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/warehouse-environment.d.ts +10 -0
- package/dist-types/threed/environments/warehouse-environment.d.ts.map +1 -0
- 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/gltf-object.d.ts +20 -4
- package/dist-types/threed/factories/gltf-object.d.ts.map +1 -1
- 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 +6 -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/scene-manager.d.ts +11 -0
- package/dist-types/threed/managers/scene-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-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 +22 -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 +136 -6
- package/dist-types/threed/three-capability.d.ts.map +1 -1
- package/dist-types/threed/three-container.d.ts +5 -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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Component from '../components/component.js';
|
|
2
2
|
import * as THREE from 'three';
|
|
3
3
|
import { type ArrowStyle3D } from './arrow-3d.js';
|
|
4
|
-
import { SceneManager, CameraManager, RendererManager, LightManager, ControlsManager, EventManager3D, GizmoManager, GizmoOperationManager, InteractionManager, PlacementManager, LightingConfig } from './managers/index.js';
|
|
4
|
+
import { SceneManager, CameraManager, RendererManager, LightManager, ControlsManager, EventManager3D, GizmoManager, GizmoOperationManager, InteractionManager, PlacementManager, CameraBookmarkManager, BoxSelectionManager, VertexGizmoManager, LightingConfig } from './managers/index.js';
|
|
5
5
|
import type { CameraViewName } from './managers/index.js';
|
|
6
6
|
/**
|
|
7
7
|
* ThreeCapability를 사용하는 호스트가 구현해야 하는 인터페이스.
|
|
@@ -37,7 +37,6 @@ export interface CameraSessionState {
|
|
|
37
37
|
y: number;
|
|
38
38
|
z: number;
|
|
39
39
|
};
|
|
40
|
-
perspZoom?: number;
|
|
41
40
|
orbitTarget?: {
|
|
42
41
|
x: number;
|
|
43
42
|
y: number;
|
|
@@ -62,7 +61,12 @@ export declare class ThreeCapability {
|
|
|
62
61
|
protected interactionManager: InteractionManager;
|
|
63
62
|
protected placementManager: PlacementManager;
|
|
64
63
|
protected gizmoOperationManager: GizmoOperationManager;
|
|
64
|
+
readonly bookmarkManager: CameraBookmarkManager;
|
|
65
|
+
protected boxSelectionManager: BoxSelectionManager;
|
|
66
|
+
protected vertexGizmoManager: VertexGizmoManager;
|
|
65
67
|
private _host?;
|
|
68
|
+
private _isSpacePanning;
|
|
69
|
+
private _beforeSpaceMode?;
|
|
66
70
|
private _clipboard?;
|
|
67
71
|
private _onFocus?;
|
|
68
72
|
private _redrawHandler?;
|
|
@@ -74,14 +78,17 @@ export declare class ThreeCapability {
|
|
|
74
78
|
private _initialized;
|
|
75
79
|
private _decoratorOutlines;
|
|
76
80
|
private _selectionOutlineObjects;
|
|
81
|
+
private _highlightedMarkerIndex;
|
|
77
82
|
private _arrows;
|
|
78
83
|
private _resizeDebouncer?;
|
|
84
|
+
private _pathLine?;
|
|
85
|
+
private _pathMarkers?;
|
|
86
|
+
private _pathVisible;
|
|
79
87
|
get isInitialized(): boolean;
|
|
80
88
|
get host(): ThreeCapabilityHost | undefined;
|
|
81
89
|
get scene3d(): THREE.Scene | undefined;
|
|
82
90
|
get renderer3d(): THREE.WebGLRenderer | undefined;
|
|
83
91
|
get mixer(): THREE.AnimationMixer | undefined;
|
|
84
|
-
get zoom(): number | undefined;
|
|
85
92
|
get camera(): THREE.PerspectiveCamera | undefined;
|
|
86
93
|
get activeCamera(): THREE.Camera;
|
|
87
94
|
get css3DScene(): THREE.Scene;
|
|
@@ -94,6 +101,13 @@ export declare class ThreeCapability {
|
|
|
94
101
|
onGizmoModeChanged?: (mode: 'translate' | 'rotate' | 'scale') => void;
|
|
95
102
|
onGizmoAttachChanged?: (isAttached: boolean) => void;
|
|
96
103
|
onCameraViewChanged?: (view: string) => void;
|
|
104
|
+
onBookmarkChanged?: () => void;
|
|
105
|
+
onHelpToggle?: () => void;
|
|
106
|
+
onSearchToggle?: () => void;
|
|
107
|
+
onDataBindingToggle?: () => void;
|
|
108
|
+
onMonitorToggle?: () => void;
|
|
109
|
+
onBookmarkNavToggle?: () => void;
|
|
110
|
+
onBookmarkEditToggle?: () => void;
|
|
97
111
|
setGizmoMode(mode: 'translate' | 'rotate' | 'scale'): void;
|
|
98
112
|
get gizmoMode(): 'translate' | 'rotate' | 'scale';
|
|
99
113
|
/**
|
|
@@ -103,6 +117,11 @@ export declare class ThreeCapability {
|
|
|
103
117
|
init(host: ThreeCapabilityHost, options?: {
|
|
104
118
|
lightingConfig?: LightingConfig;
|
|
105
119
|
css3DSceneAttribute?: string;
|
|
120
|
+
skipEnvironment?: boolean;
|
|
121
|
+
skipPostprocessing?: boolean;
|
|
122
|
+
useLightComposer?: boolean;
|
|
123
|
+
skipShadowMap?: boolean;
|
|
124
|
+
skipFloor?: boolean;
|
|
106
125
|
}): void;
|
|
107
126
|
/**
|
|
108
127
|
* 이벤트 핸들러를 정리한다 (init/dispose에서 공용).
|
|
@@ -205,12 +224,23 @@ export declare class ThreeCapability {
|
|
|
205
224
|
* arrow function으로 this(ThreeCapability)를 캡처하여
|
|
206
225
|
* 호스트 교체 후에도 올바른 인스턴스를 참조한다.
|
|
207
226
|
*/
|
|
227
|
+
/**
|
|
228
|
+
* screenFixed DOM 컴포넌트를 호스트 위에 절대 위치로 고정 배치한다.
|
|
229
|
+
* CSS3D 렌더러를 거치지 않고, HTML element를 직접 호스트 element 위에 배치.
|
|
230
|
+
*/
|
|
231
|
+
/**
|
|
232
|
+
* screenFixed 컴포넌트를 HUD에 배치한다.
|
|
233
|
+
* - DOM 컴포넌트: 호스트 위에 absolute positioning
|
|
234
|
+
* - WebGL 컴포넌트: 2D 렌더링을 캔버스 텍스처로 XY Plane에 입힘
|
|
235
|
+
*/
|
|
208
236
|
private _buildInteractionDelegate;
|
|
209
237
|
/**
|
|
210
238
|
* 클릭 처리: raycast로 오브젝트 선택.
|
|
211
239
|
* NDC는 InteractionManager가 이미 업데이트한 상태여야 한다.
|
|
212
240
|
*/
|
|
213
241
|
private _handleClickAt;
|
|
242
|
+
/** Shift+클릭 토글 / 일반 클릭 단일 선택 / 빈 공간 클릭 해제 */
|
|
243
|
+
private _applySelection;
|
|
214
244
|
/**
|
|
215
245
|
* Raycast로 마우스 아래의 3D 오브젝트를 찾는다.
|
|
216
246
|
*/
|
|
@@ -225,10 +255,15 @@ export declare class ThreeCapability {
|
|
|
225
255
|
* DOM 직접 리스닝 경로는 InteractionManager.updateMouseNDCFromClient()를 사용한다.
|
|
226
256
|
*/
|
|
227
257
|
private _updateMouseNDCFromClient;
|
|
258
|
+
/**
|
|
259
|
+
* 이벤트 → NDC 좌표 (-1~+1) 변환.
|
|
260
|
+
* element rect를 사용하되, 없거나 0x0이면 transcoordC2S+bounds로 폴백.
|
|
261
|
+
*/
|
|
262
|
+
private _eventToNDC;
|
|
228
263
|
/**
|
|
229
264
|
* 마우스 이벤트의 NDC 좌표를 업데이트한다.
|
|
230
|
-
*
|
|
231
|
-
*
|
|
265
|
+
* DOM element가 있으면 clientX/clientY → element-relative로 변환하고,
|
|
266
|
+
* 없으면 (ThreeContainer 등) offsetX/offsetY를 transcoordC2S로 논리 좌표 변환 후 bounds 기준 NDC.
|
|
232
267
|
*/
|
|
233
268
|
private _updateMouseNDC;
|
|
234
269
|
onMouseUp(e: MouseEvent): boolean;
|
|
@@ -237,6 +272,10 @@ export declare class ThreeCapability {
|
|
|
237
272
|
onMouseLeave(_e: MouseEvent): boolean;
|
|
238
273
|
onWheel(e: WheelEvent): boolean;
|
|
239
274
|
onDblClick(e: MouseEvent): boolean;
|
|
275
|
+
/**
|
|
276
|
+
* 현재 카메라 위치/타겟을 더블클릭 리셋 기준점으로 저장한다.
|
|
277
|
+
*/
|
|
278
|
+
pinResetPosition(): void;
|
|
240
279
|
onDragStart(e: DragEvent): boolean;
|
|
241
280
|
onDragMove(e: DragEvent): boolean;
|
|
242
281
|
onDragEnd(e: DragEvent): boolean;
|
|
@@ -244,6 +283,19 @@ export declare class ThreeCapability {
|
|
|
244
283
|
onPan(e: TouchEvent): boolean;
|
|
245
284
|
onTouchEnd(e: TouchEvent): boolean;
|
|
246
285
|
onKeyDown(e: KeyboardEvent): boolean;
|
|
286
|
+
/** Escape: MODE_ADD 취소, paste mode 종료, 기즈모 detach + 선택 해제 */
|
|
287
|
+
private _handleEscapeKey;
|
|
288
|
+
/** 편집 모드 전용 키: Ctrl+Z/C/X/V/D, Enter, W/E/R, Delete, 화살표 */
|
|
289
|
+
private _handleEditModeKey;
|
|
290
|
+
/** 화살표 키로 선택된 오브젝트 이동 */
|
|
291
|
+
private _handleArrowKeyMove;
|
|
292
|
+
/** Alt/Shift 키: orbit/pan 및 박스 셀렉션 힌트 커서 */
|
|
293
|
+
private _handleCursorHintKey;
|
|
294
|
+
/** 카메라 뷰 전환 (0-6, Q), H: 도움말, F: 검색, B: 북마크 네비게이션 */
|
|
295
|
+
private _handleCameraAndViewKey;
|
|
296
|
+
/** Space/P/O: 재생 제어 (뷰어), Space: 패닝 모드 (편집) */
|
|
297
|
+
private _handlePlaybackKey;
|
|
298
|
+
private _onKeyUp;
|
|
247
299
|
onPinch(e: TouchEvent): boolean;
|
|
248
300
|
onDoubleTap(): void;
|
|
249
301
|
/**
|
|
@@ -252,13 +304,83 @@ export declare class ThreeCapability {
|
|
|
252
304
|
*/
|
|
253
305
|
getCameraState(): {
|
|
254
306
|
view: string;
|
|
255
|
-
zoom: number;
|
|
256
307
|
cameraX: number;
|
|
257
308
|
cameraY: number;
|
|
258
309
|
cameraZ: number;
|
|
259
310
|
} | null;
|
|
311
|
+
/**
|
|
312
|
+
* 현재 카메라 위치와 타겟을 월드 좌표로 반환한다.
|
|
313
|
+
*/
|
|
314
|
+
getCameraWorldState(): {
|
|
315
|
+
position: {
|
|
316
|
+
x: number;
|
|
317
|
+
y: number;
|
|
318
|
+
z: number;
|
|
319
|
+
};
|
|
320
|
+
target: {
|
|
321
|
+
x: number;
|
|
322
|
+
y: number;
|
|
323
|
+
z: number;
|
|
324
|
+
};
|
|
325
|
+
} | null;
|
|
260
326
|
captureSessionState(): CameraSessionState;
|
|
327
|
+
/**
|
|
328
|
+
* 3D→2D 전환 시 사용할 카메라 뷰포트 정보를 캡처한다.
|
|
329
|
+
* @returns target(orbit target), visibleSize(카메라 FOV 기반 가시 영역 크기)
|
|
330
|
+
*/
|
|
331
|
+
captureViewportInfo(): {
|
|
332
|
+
target: THREE.Vector3;
|
|
333
|
+
visibleWidth: number;
|
|
334
|
+
visibleHeight: number;
|
|
335
|
+
};
|
|
261
336
|
restoreSessionState(state: CameraSessionState): void;
|
|
337
|
+
/**
|
|
338
|
+
* 현재 카메라 위치를 슬롯에 저장한다 (편집 모드 전용).
|
|
339
|
+
*/
|
|
340
|
+
saveCameraToSlot(index: number): void;
|
|
341
|
+
/**
|
|
342
|
+
* 2D 뷰포트 정보를 기반으로 카메라 위치/타겟을 설정한다.
|
|
343
|
+
* 수직/수평 FOV를 모두 고려하여 2D 가시 영역이 3D에서 정확히 커버되도록 거리를 계산한다.
|
|
344
|
+
*/
|
|
345
|
+
positionCameraForViewport(targetX: number, targetZ: number, visibleWidth: number, visibleHeight: number, lastCameraState?: CameraSessionState): void;
|
|
346
|
+
/**
|
|
347
|
+
* 컴포넌트의 3D 위치로 카메라를 이동한다.
|
|
348
|
+
* 현재 카메라↔target 오프셋(거리/방향)을 유지하면서 target을 컴포넌트 중심으로 옮긴다.
|
|
349
|
+
*/
|
|
350
|
+
centerToComponent(component: Component, animated?: boolean): void;
|
|
351
|
+
/**
|
|
352
|
+
* 슬롯으로 카메라를 애니메이션 이동한다.
|
|
353
|
+
*/
|
|
354
|
+
animateToSlot(index: number): void;
|
|
355
|
+
/**
|
|
356
|
+
* 경로의 t∈[0,1] 지점으로 카메라를 즉시 이동한다 (스크러빙).
|
|
357
|
+
*/
|
|
358
|
+
scrubPath(t: number): void;
|
|
359
|
+
/**
|
|
360
|
+
* 슬롯 순회 플레이를 토글한다 (일시정지/재개).
|
|
361
|
+
* 재개 시 카메라 현재 위치에서 가장 가까운 다음 슬롯부터 시작.
|
|
362
|
+
*/
|
|
363
|
+
togglePlay(startFromProgress?: number): void;
|
|
364
|
+
/**
|
|
365
|
+
* 슬롯 순회 플레이를 처음부터 재시작한다.
|
|
366
|
+
*/
|
|
367
|
+
restartPlay(): void;
|
|
368
|
+
/**
|
|
369
|
+
* 뷰어 시작 시 자동 재생 모드를 시작한다.
|
|
370
|
+
*/
|
|
371
|
+
startAutoPlay(mode: 'orbit' | 'play'): void;
|
|
372
|
+
/**
|
|
373
|
+
* 북마크 동선 라인을 3D 씬에 표시한다.
|
|
374
|
+
*/
|
|
375
|
+
showBookmarkPath(): void;
|
|
376
|
+
/**
|
|
377
|
+
* 북마크 동선 라인을 제거한다.
|
|
378
|
+
*/
|
|
379
|
+
hideBookmarkPath(permanent?: boolean): void;
|
|
380
|
+
/**
|
|
381
|
+
* 모델에서 카메라 북마크를 복원한다.
|
|
382
|
+
*/
|
|
383
|
+
initBookmarks(): void;
|
|
262
384
|
/**
|
|
263
385
|
* 상태 변경을 3D 씬에 반영한다.
|
|
264
386
|
* width/height 처리는 호스트별로 다르므로 여기서는 하지 않는다:
|
|
@@ -285,6 +407,9 @@ export declare class ThreeCapability {
|
|
|
285
407
|
* 디버그 FPS를 2D context에 그린다.
|
|
286
408
|
*/
|
|
287
409
|
showDebugFPS(context: CanvasRenderingContext2D): void;
|
|
410
|
+
get decoratorOutlines(): Set<Component>;
|
|
411
|
+
private _lazyComposer;
|
|
412
|
+
private _ensureLightComposer;
|
|
288
413
|
addOutline(component: Component): void;
|
|
289
414
|
removeOutline(component: Component): void;
|
|
290
415
|
clearOutlines(): void;
|
|
@@ -309,6 +434,11 @@ export declare class ThreeCapability {
|
|
|
309
434
|
*/
|
|
310
435
|
updateArrow(id: string, from: Component, to: Component): void;
|
|
311
436
|
private _getArrowStyle;
|
|
437
|
+
/**
|
|
438
|
+
* 북마크 마커 하이라이트 (슬롯 호버 시 아웃라인 표시)
|
|
439
|
+
*/
|
|
440
|
+
highlightBookmarkMarker(slotIndex: number): void;
|
|
441
|
+
clearBookmarkMarkerHighlight(): void;
|
|
312
442
|
/**
|
|
313
443
|
* 편집모드 선택 아웃라인과 데코레이터 아웃라인을 합집합하여 OutlinePass에 설정한다.
|
|
314
444
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-capability.d.ts","sourceRoot":"","sources":["../../src/threed/three-capability.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"three-capability.d.ts","sourceRoot":"","sources":["../../src/threed/three-capability.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,10 +27,14 @@ export declare class ThreeContainer extends Container implements ThreeDimensiona
|
|
|
27
27
|
get scene3d(): THREE.Scene | undefined;
|
|
28
28
|
get renderer3d(): THREE.WebGLRenderer | undefined;
|
|
29
29
|
get mixer(): THREE.AnimationMixer | undefined;
|
|
30
|
-
get zoom(): number | undefined;
|
|
31
30
|
get css3DScene(): THREE.Scene;
|
|
32
31
|
get css3DRenderer(): import("three/examples/jsm/renderers/CSS3DRenderer.js").CSS3DRenderer;
|
|
33
32
|
render_threed(): void;
|
|
33
|
+
/**
|
|
34
|
+
* 부모 씬이 3D 모드이면 자식들은 부모 씬에서 렌더링되므로
|
|
35
|
+
* ThreeContainer 자체의 독립 3D 렌더링은 불필요하다.
|
|
36
|
+
*/
|
|
37
|
+
private get _parentIs3dMode();
|
|
34
38
|
render(ctx: CanvasRenderingContext2D): void;
|
|
35
39
|
postrender(ctx: CanvasRenderingContext2D): void;
|
|
36
40
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-container.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AA2BtI,qBACa,cAAe,SAAQ,SAAU,YAAW,yBAAyB;IAChF,SAAS,CAAC,WAAW,kBAAwB;IAE7C,qFAAqF;IACrF,SAAS,KAAK,YAAY,IAAI,YAAY,CAA4C;IACtF,SAAS,KAAK,aAAa,IAAI,aAAa,CAA6C;IACzF,SAAS,KAAK,eAAe,IAAI,eAAe,CAA+C;IAC/F,SAAS,KAAK,YAAY,IAAI,YAAY,CAA4C;IACtF,SAAS,KAAK,eAAe,IAAI,eAAe,CAA+C;IAC/F,SAAS,KAAK,YAAY,IAAI,cAAc,CAA4C;IAExF,WAAW,CAAC,SAAS,EAAE,SAAS;IAIhC,aAAa;IAIb,SAAS,CAAC,iBAAiB,IAAI,cAAc;
|
|
1
|
+
{"version":3,"file":"three-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-container.ts"],"names":[],"mappings":"AAIA,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AA2BtI,qBACa,cAAe,SAAQ,SAAU,YAAW,yBAAyB;IAChF,SAAS,CAAC,WAAW,kBAAwB;IAE7C,qFAAqF;IACrF,SAAS,KAAK,YAAY,IAAI,YAAY,CAA4C;IACtF,SAAS,KAAK,aAAa,IAAI,aAAa,CAA6C;IACzF,SAAS,KAAK,eAAe,IAAI,eAAe,CAA+C;IAC/F,SAAS,KAAK,YAAY,IAAI,YAAY,CAA4C;IACtF,SAAS,KAAK,eAAe,IAAI,eAAe,CAA+C;IAC/F,SAAS,KAAK,YAAY,IAAI,cAAc,CAA4C;IAExF,WAAW,CAAC,SAAS,EAAE,SAAS;IAIhC,aAAa;IAIb,SAAS,CAAC,iBAAiB,IAAI,cAAc;IAO7C,SAAS,CAAC,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAItD,YAAY;IAmBZ,eAAe;IAKf,IAAI;IAEJ,MAAM;IAMN,IAAI,OAAO,4BAKV;IAED,IAAI,UAAU,oCAEb;IAED,IAAI,KAAK,qCAER;IAED,IAAI,UAAU,gBAEb;IAED,IAAI,aAAa,0EAEhB;IAED,aAAa;IAIb;;;OAGG;IACH,OAAO,KAAK,eAAe,GAE1B;IAID,MAAM,CAAC,GAAG,EAAE,wBAAwB;IAiBpC,UAAU,CAAC,GAAG,EAAE,wBAAwB;IAoCxC,OAAO;IAKP,IAAI,MAAM,IAAI,GAAG,CAEhB;IAED,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,kBAAkB,IAAI,KAAK,CAAC,QAAQ,GAAG,SAAS;IAIhD,mBAAmB;IAMnB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;IAS9C,WAAW,CAAC,CAAC,EAAE,UAAU;IAIzB,SAAS,CAAC,CAAC,EAAE,UAAU;IAIvB,WAAW,CAAC,CAAC,EAAE,UAAU;IAIzB,YAAY,CAAC,CAAC,EAAE,UAAU;IAI1B,OAAO,CAAC,CAAC,EAAE,UAAU;IAMrB,UAAU,CAAC,CAAC,EAAE,UAAU;IAMxB,WAAW,CAAC,CAAC,EAAE,SAAS;IAIxB,UAAU,CAAC,CAAC,EAAE,SAAS;IAMvB,SAAS,CAAC,CAAC,EAAE,SAAS;IAMtB,YAAY,CAAC,CAAC,EAAE,UAAU;IAI1B,KAAK,CAAC,CAAC,EAAE,UAAU;IAMnB,UAAU,CAAC,CAAC,EAAE,UAAU;IAIxB,SAAS,CAAC,CAAC,EAAE,aAAa;IAI1B,OAAO,CAAC,CAAC,EAAE,UAAU;IAMrB,WAAW;CAIZ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"three-dimensional-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-dimensional-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,aAAa,IAAI,OAAO,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,GAAG,SAAS,CAAA;IAChC,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CAAA;IAC3C,IAAI,KAAK,IAAI,cAAc,GAAG,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"three-dimensional-container.d.ts","sourceRoot":"","sources":["../../src/threed/three-dimensional-container.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,OAAO,CAAA;AAEjE,MAAM,WAAW,yBAAyB;IACxC,aAAa,IAAI,OAAO,CAAA;IACxB,IAAI,OAAO,IAAI,KAAK,GAAG,SAAS,CAAA;IAChC,IAAI,UAAU,IAAI,aAAa,GAAG,SAAS,CAAA;IAC3C,IAAI,KAAK,IAAI,cAAc,GAAG,SAAS,CAAA;CACxC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
interface WorldState {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
rotation: number;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
}
|
|
8
|
+
interface State3D {
|
|
9
|
+
pos: any;
|
|
10
|
+
quat: any;
|
|
11
|
+
fromScale?: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
z: number;
|
|
15
|
+
};
|
|
16
|
+
toScale?: {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
z: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
interface ReparentState {
|
|
23
|
+
fromWorld?: WorldState;
|
|
24
|
+
toWorld?: WorldState;
|
|
25
|
+
from3D?: State3D;
|
|
26
|
+
to3D?: State3D;
|
|
27
|
+
duration: number;
|
|
28
|
+
startTime: number;
|
|
29
|
+
progress: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* TransitionEffect — reparent 전환의 모든 것을 소유한다.
|
|
33
|
+
*
|
|
34
|
+
* - 상태: Map<Component, ReparentState>
|
|
35
|
+
* - 타이밍: 자체 RAF loop
|
|
36
|
+
* - 2D 렌더링: transition canvas (lazy 생성/제거)
|
|
37
|
+
* - 3D 보간: object3d position/quaternion 직접 조작
|
|
38
|
+
* - 정리: suppressTransform 해제, canvas 제거
|
|
39
|
+
*/
|
|
40
|
+
export default class TransitionEffect {
|
|
41
|
+
private active;
|
|
42
|
+
private rafId;
|
|
43
|
+
private root;
|
|
44
|
+
private _canvas;
|
|
45
|
+
private _ctx;
|
|
46
|
+
constructor(root: any);
|
|
47
|
+
isReparenting(component: any): boolean;
|
|
48
|
+
getState(component: any): ReparentState | null;
|
|
49
|
+
begin(component: any, options: {
|
|
50
|
+
fromWorld?: WorldState;
|
|
51
|
+
toWorld?: WorldState;
|
|
52
|
+
from3D?: State3D;
|
|
53
|
+
to3D?: State3D;
|
|
54
|
+
duration: number;
|
|
55
|
+
ease?: string;
|
|
56
|
+
}): void;
|
|
57
|
+
cancel(component: any): void;
|
|
58
|
+
/**
|
|
59
|
+
* 2D transition canvas에 렌더링 — postrender()에서 호출
|
|
60
|
+
*/
|
|
61
|
+
renderComponent(component: any, modelLayer: any): void;
|
|
62
|
+
/**
|
|
63
|
+
* draw cycle 시작 시 호출 — canvas clear
|
|
64
|
+
*/
|
|
65
|
+
beginDraw(): void;
|
|
66
|
+
/**
|
|
67
|
+
* draw cycle 종료 시 호출 — canvas restore
|
|
68
|
+
*/
|
|
69
|
+
endDraw(): void;
|
|
70
|
+
/**
|
|
71
|
+
* model-layer resize 시 호출 — canvas 크기 동기화
|
|
72
|
+
*/
|
|
73
|
+
resize(): void;
|
|
74
|
+
dispose(): void;
|
|
75
|
+
private ensureCanvas;
|
|
76
|
+
private removeCanvas;
|
|
77
|
+
private startLoop;
|
|
78
|
+
private stopLoop;
|
|
79
|
+
private tick;
|
|
80
|
+
private complete;
|
|
81
|
+
private cleanup3D;
|
|
82
|
+
}
|
|
83
|
+
export {};
|
|
84
|
+
//# sourceMappingURL=transition-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transition-effect.d.ts","sourceRoot":"","sources":["../../src/transition/transition-effect.ts"],"names":[],"mappings":"AAcA,UAAU,UAAU;IAClB,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;CACf;AAED,UAAU,OAAO;IACf,GAAG,EAAE,GAAG,CAAA;IACR,IAAI,EAAE,GAAG,CAAA;IACT,SAAS,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,OAAO,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAC9C;AAED,UAAU,aAAa;IACrB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,IAAI,CAAK;IAGjB,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,IAAI,CAAwC;gBAExC,IAAI,EAAE,GAAG;IAMrB,aAAa,CAAC,SAAS,EAAE,GAAG,GAAG,OAAO;IAItC,QAAQ,CAAC,SAAS,EAAE,GAAG,GAAG,aAAa,GAAG,IAAI;IAI9C,KAAK,CACH,SAAS,EAAE,GAAG,EACd,OAAO,EAAE;QACP,SAAS,CAAC,EAAE,UAAU,CAAA;QACtB,OAAO,CAAC,EAAE,UAAU,CAAA;QACpB,MAAM,CAAC,EAAE,OAAO,CAAA;QAChB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,GACA,IAAI;IAqCP,MAAM,CAAC,SAAS,EAAE,GAAG,GAAG,IAAI;IAK5B;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,GAAG,IAAI;IAoCtD;;OAEG;IACH,SAAS,IAAI,IAAI;IAQjB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,MAAM,IAAI,IAAI;IASd,OAAO,IAAI,IAAI;IAWf,OAAO,CAAC,YAAY;IAyBpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,IAAI;IA6CZ,OAAO,CAAC,QAAQ;IAkBhB,OAAO,CAAC,SAAS;CAWlB"}
|
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.40",
|
|
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",
|
|
@@ -35,13 +35,13 @@
|
|
|
35
35
|
"test": "mocha --require should --require ./test/setup.js --node-option import=tsx test/**/test-*.js",
|
|
36
36
|
"test:case": "mocha --require should --require ./test/setup.js --node-option import=tsx",
|
|
37
37
|
"clean": "rimraf dist-types things-scene*.js *.js.map",
|
|
38
|
-
"build": "
|
|
38
|
+
"build": "yarn clean && yarn build:types && yarn build:rollup:prod",
|
|
39
39
|
"build:types": "tsc -p tsconfig.declarations.json",
|
|
40
40
|
"build:rollup": "NODE_ENV=development rollup -c",
|
|
41
41
|
"build:rollup:prod": "NODE_ENV=production rollup -c",
|
|
42
42
|
"dev": "npx rollup src/index.ts -o things-scene.mjs -f esm -p @rollup/plugin-node-resolve -p @rollup/plugin-commonjs -p @rollup/plugin-typescript -w",
|
|
43
43
|
"build:clean": "rm yarn.lock || echo 'yarn.lock not found.' && yarn install && yarn build",
|
|
44
|
-
"prepublishOnly": "
|
|
44
|
+
"prepublishOnly": "yarn build",
|
|
45
45
|
"prettify": "prettier --write \"{src,test}/**/*.{js,ts,css,html}\"",
|
|
46
46
|
"type-check": "tsc --noEmit",
|
|
47
47
|
"type-check:watch": "tsc --noEmit --watch"
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"lit": "^3.0.0",
|
|
65
65
|
"mocha": "^11.0.0",
|
|
66
66
|
"prettier": "^3.0.0",
|
|
67
|
+
"puppeteer": "^24.39.1",
|
|
67
68
|
"rimraf": "^6.0.0",
|
|
68
69
|
"rollup": "^4.0.0",
|
|
69
70
|
"should": "^13.2.3",
|