@hatiolab/things-scene 10.0.0-beta.8 → 10.0.0-beta.81
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 +77 -0
- package/dist-types/animation/animate.d.ts.map +1 -1
- package/dist-types/animation/animations/animation.d.ts.map +1 -1
- 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 +24 -0
- package/dist-types/components/component-data.d.ts.map +1 -1
- package/dist-types/components/container-abstract.d.ts +26 -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/drawer/fill.d.ts.map +1 -1
- package/dist-types/components/drawer/stroke.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/html/shadow.d.ts +33 -1
- package/dist-types/components/html/shadow.d.ts.map +1 -1
- package/dist-types/components/image-view.d.ts.map +1 -1
- package/dist-types/components/index.d.ts +2 -0
- package/dist-types/components/index.d.ts.map +1 -1
- package/dist-types/components/line.d.ts +2 -1
- package/dist-types/components/line.d.ts.map +1 -1
- package/dist-types/components/mixins/three-d-only.d.ts +243 -0
- package/dist-types/components/mixins/three-d-only.d.ts.map +1 -0
- package/dist-types/components/mixins/value-holder.d.ts.map +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/animated-icon-decorator.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 +14 -4
- 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/effect/shadow.d.ts +3 -1
- package/dist-types/effect/shadow.d.ts.map +1 -1
- 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 +20 -3
- package/dist-types/interfaces/providers.d.ts.map +1 -1
- package/dist-types/interfaces/rendering.d.ts +86 -14
- package/dist-types/interfaces/rendering.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 +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 +43 -0
- package/dist-types/things-scene/application-context.d.ts.map +1 -1
- package/dist-types/things-scene/create.d.ts +38 -3
- 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 +64 -1
- 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/environments/base-environment.d.ts +9 -0
- package/dist-types/threed/environments/base-environment.d.ts.map +1 -0
- package/dist-types/threed/environments/cloudy-environment.d.ts +10 -0
- package/dist-types/threed/environments/cloudy-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/rainy-environment.d.ts +10 -0
- package/dist-types/threed/environments/rainy-environment.d.ts.map +1 -0
- 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/sunny-environment.d.ts +10 -0
- package/dist-types/threed/environments/sunny-environment.d.ts.map +1 -0
- 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/backdrop.d.ts +525 -0
- package/dist-types/threed/factories/backdrop.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/decal.d.ts +502 -0
- package/dist-types/threed/factories/decal.d.ts.map +1 -0
- package/dist-types/threed/factories/floor-plate.d.ts +10 -0
- package/dist-types/threed/factories/floor-plate.d.ts.map +1 -0
- package/dist-types/threed/factories/gltf-object.d.ts +13 -2
- 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/ortholine.d.ts +10 -0
- package/dist-types/threed/factories/ortholine.d.ts.map +1 -0
- package/dist-types/threed/factories/polygon.d.ts.map +1 -1
- 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/rect.d.ts.map +1 -1
- package/dist-types/threed/factories/sphere.d.ts +6 -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/triangle.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/floor/floor.d.ts.map +1 -1
- package/dist-types/threed/handle-3d.d.ts +21 -0
- package/dist-types/threed/handle-3d.d.ts.map +1 -0
- package/dist-types/threed/index.d.ts +16 -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 +25 -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-manager.d.ts +6 -0
- package/dist-types/threed/managers/gizmo-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/gizmo-operation-manager.d.ts +55 -1
- 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 +17 -0
- package/dist-types/threed/managers/interaction-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/light-manager.d.ts +15 -0
- package/dist-types/threed/managers/light-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/renderer-manager.d.ts +37 -0
- package/dist-types/threed/managers/renderer-manager.d.ts.map +1 -1
- package/dist-types/threed/managers/scene-manager.d.ts +6 -2
- 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 -2
- 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 +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 +9 -0
- package/dist-types/threed/real-object-dom-texture.d.ts.map +1 -1
- package/dist-types/threed/real-object-external-model.d.ts +24 -0
- package/dist-types/threed/real-object-external-model.d.ts.map +1 -0
- 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 +39 -11
- 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 +83 -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-plane-2d.d.ts +23 -0
- package/dist-types/threed/real-object-plane-2d.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-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 +3 -0
- package/dist-types/threed/real-object-text.d.ts.map +1 -1
- package/dist-types/threed/real-object.d.ts +122 -6
- 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/canvas-texture.d.ts +7 -0
- package/dist-types/threed/texture/canvas-texture.d.ts.map +1 -1
- package/dist-types/threed/texture/fillstyle-texture.d.ts +46 -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 +142 -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/threed/utils/dispose.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 +2 -1
- package/things-scene-min.js +12 -13
- package/things-scene-min.js.map +1 -1
- package/things-scene.mjs +8 -9
- package/things-scene.mjs.map +1 -1
|
@@ -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 유지 여부, typeFiltered: Ctrl/Cmd 유지 여부) */
|
|
44
|
+
handleBoxSelectionEnd?(additive: boolean, typeFiltered?: 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 이벤트 핸들링과 드래그 상태 관리를 담당하는 매니저.
|
|
@@ -45,6 +61,7 @@ export declare class InteractionManager {
|
|
|
45
61
|
private _hostElement?;
|
|
46
62
|
private _mouseIsDown;
|
|
47
63
|
private _isDragging;
|
|
64
|
+
private _touchGizmoCaptured;
|
|
48
65
|
private _mouseDownPos;
|
|
49
66
|
private _boundHandlers?;
|
|
50
67
|
private _docMoveHandler?;
|
|
@@ -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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"}
|
|
@@ -18,6 +18,21 @@ export declare class LightManager {
|
|
|
18
18
|
color?: number | string;
|
|
19
19
|
intensity?: number;
|
|
20
20
|
}): void;
|
|
21
|
+
/**
|
|
22
|
+
* directional light를 camera에 붙일지, scene에 독립 배치할지 전환한다.
|
|
23
|
+
* - follow=true: camera에 attach — light는 카메라 이동에 따라 함께 이동 (기본 동작)
|
|
24
|
+
* - follow=false: scene에 attach — light는 고정 월드 위치, angle 기반 조명 가능
|
|
25
|
+
*/
|
|
26
|
+
setDirectionalFollowCamera(follow: boolean): void;
|
|
27
|
+
/**
|
|
28
|
+
* directional light의 방향을 방위각/고도각으로 설정 (world-space).
|
|
29
|
+
* - azimuth: 수평면 회전 (deg, 0=+Z/정면, 90=+X/우측)
|
|
30
|
+
* - elevation: 수직 고도 (deg, 0=수평, 90=정수리)
|
|
31
|
+
* - distance: 중심으로부터의 거리 (기본 1000)
|
|
32
|
+
*
|
|
33
|
+
* follow-camera 모드일 땐 설정해도 효과 없음 (camera 좌표계 기준으로 재계산됨).
|
|
34
|
+
*/
|
|
35
|
+
setDirectionalAngle(azimuthDeg: number, elevationDeg: number, distance?: number): void;
|
|
21
36
|
setDirectionalEnabled(enabled: boolean, config?: {
|
|
22
37
|
color?: number | string;
|
|
23
38
|
intensity?: number;
|
|
@@ -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;;;;OAIG;IACH,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAOjD;;;;;;;OAOG;IACH,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,IAAI;IAiBpF,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;IAiBvG,OAAO;CAQR"}
|
|
@@ -9,29 +9,66 @@ 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;
|
|
18
|
+
/**
|
|
19
|
+
* 런타임에 tone mapping exposure만 갱신한다. property-panel에서 slider로
|
|
20
|
+
* 조정할 때 호출 — renderer 재생성 없이 다음 renderThreeD()부터 반영.
|
|
21
|
+
*/
|
|
22
|
+
setExposure(value: number): void;
|
|
13
23
|
get css3DRenderer(): CSS3DRenderer;
|
|
14
24
|
get css3DScene(): THREE.Scene;
|
|
15
25
|
get composer(): EffectComposer | undefined;
|
|
16
26
|
get noSupportWebgl(): boolean;
|
|
17
27
|
get domElement(): HTMLCanvasElement | undefined;
|
|
28
|
+
get hudScene(): THREE.Scene;
|
|
29
|
+
get hudCSS3DScene(): THREE.Scene;
|
|
30
|
+
get hudCamera(): THREE.OrthographicCamera | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* HUD 직교 카메라를 초기화한다.
|
|
33
|
+
* 2D 좌표계와 동일: 원점 = 좌상단, X→오른쪽, Y→아래
|
|
34
|
+
*/
|
|
35
|
+
setupHUD(width: number, height: number): void;
|
|
36
|
+
/**
|
|
37
|
+
* HUD 카메라 프러스텀을 캔버스 크기에 맞춘다.
|
|
38
|
+
*/
|
|
39
|
+
resizeHUD(width: number, height: number): void;
|
|
18
40
|
setupWebGL(width: number, height: number, config: RendererConfig): boolean;
|
|
19
41
|
setupCSS3D(isViewMode: boolean, sceneAttr?: string): void;
|
|
20
42
|
private createCSS3DRenderer;
|
|
21
43
|
setupComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number, gizmoHelper?: THREE.Object3D): EffectComposer;
|
|
44
|
+
setupLightComposer(scene: THREE.Scene, camera: THREE.Camera, width: number, height: number): EffectComposer;
|
|
45
|
+
get hasOutlinePass(): boolean;
|
|
22
46
|
updateRenderPassCamera(camera: THREE.Camera): void;
|
|
23
47
|
/**
|
|
24
48
|
* 아웃라인을 표시할 오브젝트 목록을 설정한다.
|
|
25
49
|
*/
|
|
26
50
|
setOutlineObjects(objects: THREE.Object3D[]): void;
|
|
27
51
|
resize(width: number, height: number): void;
|
|
52
|
+
private _scene?;
|
|
53
|
+
private _camera?;
|
|
54
|
+
/**
|
|
55
|
+
* 경량 composer를 해제하고 direct render 모드로 복귀한다.
|
|
56
|
+
*/
|
|
57
|
+
teardownLightComposer(): void;
|
|
58
|
+
/**
|
|
59
|
+
* 포스트프로세싱 없이 직접 렌더링할 때 사용할 scene/camera를 설정한다.
|
|
60
|
+
*/
|
|
61
|
+
setDirectRenderTargets(scene: THREE.Scene, camera: THREE.Camera): void;
|
|
28
62
|
render(): void;
|
|
63
|
+
private renderHUD;
|
|
29
64
|
renderCSS3D(camera: THREE.Camera): void;
|
|
65
|
+
get hudCSS3DRenderer(): CSS3DRenderer | undefined;
|
|
30
66
|
getSize(): {
|
|
31
67
|
width: number;
|
|
32
68
|
height: number;
|
|
33
69
|
};
|
|
34
70
|
destroy(): void;
|
|
71
|
+
disposeHUD(): void;
|
|
35
72
|
disposeCSS3DScene(): void;
|
|
36
73
|
}
|
|
37
74
|
//# 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;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAMhC,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;IAmD1E,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;IAYP,UAAU;IAkCV,iBAAiB;CAMlB"}
|
|
@@ -16,8 +16,12 @@ export declare class SceneManager {
|
|
|
16
16
|
*/
|
|
17
17
|
private _applyEnvironment;
|
|
18
18
|
/**
|
|
19
|
-
*
|
|
20
|
-
|
|
19
|
+
* 환경맵을 해제한다. (IBL 기여 제거)
|
|
20
|
+
*/
|
|
21
|
+
private _clearEnvironment;
|
|
22
|
+
/**
|
|
23
|
+
* 3D 씬 배경(sky)을 설정한다. environment(IBL)도 함께 관리한다.
|
|
24
|
+
* @param sky - 프리셋 이름 (studio/warehouse/factory/office/home | sunny/cloudy/rainy) | 'color' | '' (none)
|
|
21
25
|
* @param skyColor - sky='color'일 때 사용할 색상
|
|
22
26
|
*/
|
|
23
27
|
setSky(sky?: string, skyColor?: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"scene-manager.d.ts","sourceRoot":"","sources":["../../../src/threed/managers/scene-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,SAAS,MAAM,+BAA+B,CAAA;AAyB1D,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAe;IACnC,OAAO,CAAC,SAAS,CAAC,CAAqB;IAEvC,IAAI,KAAK,4BAER;IAED,IAAI,KAAK,qCAER;IAED,KAAK;IAKL,UAAU;IAOV,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa;IAO9C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;OAIG;IACH,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM;IAmBtC,QAAQ,CAAC,SAAS,EAAE,SAAS;IAO7B;;;OAGG;IACH,WAAW,CAAC,SAAS,EAAE,SAAS;IAYhC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ;IAI/B,eAAe;IAOf,OAAO;CAyBR"}
|
|
@@ -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"}
|
|
@@ -10,8 +10,6 @@ export interface Material3D {
|
|
|
10
10
|
side?: 'double' | 'front' | 'back';
|
|
11
11
|
castShadow?: boolean;
|
|
12
12
|
receiveShadow?: boolean;
|
|
13
|
-
spriteMode?: 'billboard' | 'plane';
|
|
14
|
-
renderMode?: 'css3d' | 'texture';
|
|
15
13
|
}
|
|
16
14
|
export interface ResolvedMaterial3D {
|
|
17
15
|
metalness: number;
|
|
@@ -33,4 +31,9 @@ export interface MaterialPreset {
|
|
|
33
31
|
export declare const MATERIAL_PRESETS: Record<string, MaterialPreset>;
|
|
34
32
|
export declare function resolveMaterial3d(material3d?: Material3D): ResolvedMaterial3D;
|
|
35
33
|
export declare function toThreeSide(side: ResolvedMaterial3D['side']): THREE.Side;
|
|
34
|
+
/**
|
|
35
|
+
* resolved material3d 속성을 MeshStandardMaterial에 일괄 적용한다.
|
|
36
|
+
* createMaterials / updateMaterial3d 에서 공통으로 사용.
|
|
37
|
+
*/
|
|
38
|
+
export declare function applyMaterial3dProps(material: THREE.MeshStandardMaterial, resolved: ResolvedMaterial3D): void;
|
|
36
39
|
//# 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;
|
|
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;CACxB;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"}
|
|
@@ -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,7 +3,10 @@ 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?;
|
|
8
|
+
private _origInvalidate?;
|
|
9
|
+
constructor(component: any);
|
|
7
10
|
protected getObject3dInstance(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
8
11
|
build(): void;
|
|
9
12
|
updateDimension(): void;
|
|
@@ -11,9 +14,15 @@ export declare class RealObjectDomTexture extends RealObject<THREE.Mesh> {
|
|
|
11
14
|
updateHidden(): void;
|
|
12
15
|
private _debouncedRebuild;
|
|
13
16
|
private _rebuildTexture;
|
|
17
|
+
/**
|
|
18
|
+
* 기존 캔버스/텍스처를 유지한 채 그림만 다시 그린다. 애니메이션 프레임용 경량 경로.
|
|
19
|
+
* 캔버스는 세팅된 상태에서만 호출되므로 canvas/texture가 아직 없으면 no-op.
|
|
20
|
+
*/
|
|
21
|
+
private _refreshTextureNow;
|
|
14
22
|
updateFillStyle(): void;
|
|
15
23
|
updateStrokeStyle(): void;
|
|
16
24
|
updateText(): void;
|
|
25
|
+
onchange(after: Record<string, any>, before: Record<string, any>): void;
|
|
17
26
|
updateMaterial3d(): void;
|
|
18
27
|
clear(): THREE.Mesh<THREE.BufferGeometry<THREE.NormalBufferAttributes, THREE.BufferGeometryEventMap>, THREE.Material | THREE.Material[], THREE.Object3DEventMap>;
|
|
19
28
|
dispose(): void;
|
|
@@ -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;
|
|
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;IAiB1B,SAAS,CAAC,mBAAmB;IAI7B,KAAK;IA4BL,eAAe;IAMf,WAAW;IAKX,YAAY;IAIZ,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,eAAe;IAQvB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAW1B,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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { RealObject } from './real-object.js';
|
|
3
|
+
export declare abstract class RealObjectExternalModel<TData = unknown> extends RealObject {
|
|
4
|
+
/**
|
|
5
|
+
* 로드 세대 카운터. build() 호출마다 증가한다.
|
|
6
|
+
* 비동기 load 콜백은 gen 비교로 stale 여부를 판단해야 한다.
|
|
7
|
+
*/
|
|
8
|
+
protected _loadGen: number;
|
|
9
|
+
/** 모델 subtree의 직접 부모. clear() 시 통째로 disposeObject3D된다. */
|
|
10
|
+
protected pivot?: THREE.Object3D;
|
|
11
|
+
protected _objectSize?: THREE.Vector3;
|
|
12
|
+
get objectSize(): THREE.Vector3 | undefined;
|
|
13
|
+
build(): void;
|
|
14
|
+
updateSource(): void;
|
|
15
|
+
protected abstract _loadExternal(url: string): Promise<TData>;
|
|
16
|
+
protected abstract _onLoaded(data: TData): void;
|
|
17
|
+
protected abstract get _formatLabel(): string;
|
|
18
|
+
/** 빈 상태 placeholder의 색상. 포맷별로 식별 색 override 가능. */
|
|
19
|
+
protected get _placeholderColor(): number;
|
|
20
|
+
protected _showEmptyPlaceholder(): void;
|
|
21
|
+
protected _showErrorPlaceholder(): void;
|
|
22
|
+
clear(): THREE.Object3D<THREE.Object3DEventMap>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=real-object-external-model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"real-object-external-model.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-external-model.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,8BAAsB,uBAAuB,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,UAAU;IAC/E;;;OAGG;IACH,SAAS,CAAC,QAAQ,SAAI;IAEtB,0DAA0D;IAC1D,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAA;IAEhC,SAAS,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,OAAO,CAAsB;IAE3D,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,GAAG,SAAS,CAE1C;IAED,KAAK;IAqCL,YAAY;IAMZ,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAC7D,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAC/C,SAAS,CAAC,QAAQ,KAAK,YAAY,IAAI,MAAM,CAAA;IAI7C,mDAAmD;IACnD,SAAS,KAAK,iBAAiB,IAAI,MAAM,CAExC;IAED,SAAS,CAAC,qBAAqB;IA8B/B,SAAS,CAAC,qBAAqB;IAa/B,KAAK;CASN"}
|
|
@@ -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;IA+DxB,eAAe;CAMhB"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as THREE from 'three';
|
|
2
2
|
import type { Properties } from '../interfaces/types.js';
|
|
3
|
-
import {
|
|
3
|
+
import { RealObjectExternalModel } from './real-object-external-model.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;
|
|
@@ -15,19 +16,35 @@ export interface GLTFAnimationState {
|
|
|
15
16
|
weight?: number;
|
|
16
17
|
loop?: 'once' | 'repeat' | 'pingpong';
|
|
17
18
|
}
|
|
18
|
-
export declare class RealObjectGLTF extends
|
|
19
|
+
export declare class RealObjectGLTF extends RealObjectExternalModel<GLTF> {
|
|
20
|
+
protected get _formatLabel(): string;
|
|
19
21
|
private static _topViewCache;
|
|
22
|
+
private static _gltfCache;
|
|
20
23
|
private static _sharedLoader;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
+
/**
|
|
25
|
+
* DRACO/KTX2/Meshopt/SpecGloss가 모두 설정된 공유 GLTFLoader를 반환한다.
|
|
26
|
+
* renderer를 전달하면 KTX2 detectSupport를 갱신한다.
|
|
27
|
+
* 2D 스냅샷 등 renderer 없이도 호출 가능하다.
|
|
28
|
+
*/
|
|
29
|
+
static getSharedLoader(renderer?: THREE.WebGLRenderer): GLTFLoader;
|
|
30
|
+
/**
|
|
31
|
+
* URL로 GLTF를 로드한다. 동일 URL은 캐시하여 1회만 파싱한다.
|
|
32
|
+
* 로드 실패 시 캐시에서 제거하여 재시도 가능.
|
|
33
|
+
*/
|
|
34
|
+
static loadGLTF(url: string, renderer?: THREE.WebGLRenderer): Promise<GLTF>;
|
|
24
35
|
private _nodeIndex;
|
|
25
36
|
private _originals;
|
|
26
|
-
|
|
37
|
+
_animationActions: Map<string, THREE.AnimationAction>;
|
|
27
38
|
private _fillStyleOriginals;
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
|
|
39
|
+
private _clonedMaterials;
|
|
40
|
+
/**
|
|
41
|
+
* mesh의 material이 아직 복제되지 않았으면 복제하여 독립 인스턴스로 만든다.
|
|
42
|
+
* GLTF 캐시로 인해 동일 소스의 오브젝트들이 material을 공유하므로,
|
|
43
|
+
* material을 변경하기 전에 반드시 호출해야 한다.
|
|
44
|
+
*/
|
|
45
|
+
private _ensureOwnMaterial;
|
|
46
|
+
protected _loadExternal(url: string): Promise<GLTF>;
|
|
47
|
+
protected _onLoaded(gltf: GLTF): void;
|
|
31
48
|
private _renderTopViewSnapshot;
|
|
32
49
|
/**
|
|
33
50
|
* 오프스크린 렌더러로 Object3D의 탑뷰(Y축 위→아래) 스냅샷을 생성한다.
|
|
@@ -38,6 +55,13 @@ export declare class RealObjectGLTF extends RealObject {
|
|
|
38
55
|
static getTopViewCache(source: string): HTMLCanvasElement | undefined;
|
|
39
56
|
/** 캐시에 스냅샷을 저장한다 */
|
|
40
57
|
static setTopViewCache(source: string, canvas: HTMLCanvasElement): void;
|
|
58
|
+
/**
|
|
59
|
+
* GLTF 파싱 캐시와 탑뷰 스냅샷 캐시를 모두 비운다.
|
|
60
|
+
* Scene(보드) 전환 시 호출하여 메모리를 회수한다.
|
|
61
|
+
* clone()은 geometry/texture를 공유 참조하므로,
|
|
62
|
+
* 모든 컴포넌트가 dispose된 후에만 호출해야 한다.
|
|
63
|
+
*/
|
|
64
|
+
static flushCache(): void;
|
|
41
65
|
private _buildNodeIndex;
|
|
42
66
|
getNode(name: string): THREE.Object3D | undefined;
|
|
43
67
|
get nodeNames(): string[];
|
|
@@ -51,14 +75,18 @@ export declare class RealObjectGLTF extends RealObject {
|
|
|
51
75
|
*/
|
|
52
76
|
private _resetAllNodes;
|
|
53
77
|
private _setupAnimations;
|
|
78
|
+
/**
|
|
79
|
+
* playTargets에 따라 해당 애니메이션만 재생.
|
|
80
|
+
* '*' → 전체, undefined/'none'/[] → 없음, [...] → 선택된 것만
|
|
81
|
+
* (fillStyleTargets와 동일한 규칙)
|
|
82
|
+
*/
|
|
83
|
+
_playTargetAnimations(): void;
|
|
54
84
|
private _applyAnimationStates;
|
|
55
85
|
get animationNames(): string[];
|
|
56
|
-
private _showErrorPlaceholder;
|
|
57
86
|
updateFillStyle(): void;
|
|
58
87
|
private _restoreFillStyleTargets;
|
|
59
88
|
clear(): THREE.Object3D<THREE.Object3DEventMap>;
|
|
60
89
|
updateDimension(): void;
|
|
61
|
-
updateSource(): void;
|
|
62
90
|
onchange(after: Properties, before: Properties): void;
|
|
63
91
|
}
|
|
64
92
|
//# sourceMappingURL=real-object-gltf.d.ts.map
|
|
@@ -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;
|
|
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;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAEzE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAA;AAoC3E,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAA;CACtC;AAQD,qBAAa,cAAe,SAAQ,uBAAuB,CAAC,IAAI,CAAC;IAC/D,SAAS,KAAK,YAAY,WAAoB;IAE9C,OAAO,CAAC,MAAM,CAAC,aAAa,CAAuC;IAGnE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAmC;IAG5D,OAAO,CAAC,MAAM,CAAC,aAAa,CAA0B;IAEtD;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,UAAU;IA2BlE;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3E,OAAO,CAAC,UAAU,CAAoC;IAGtD,OAAO,CAAC,UAAU,CASd;IAGJ,iBAAiB,qCAA2C;IAG5D,OAAO,CAAC,mBAAmB,CAKvB;IAIJ,OAAO,CAAC,gBAAgB,CAAgC;IAExD;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAU1B,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI;IAsH9B,OAAO,CAAC,sBAAsB;IAO9B;;;OAGG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,GAAG,iBAAiB;IA8E/D,qBAAqB;IACrB,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIrE,oBAAoB;IACpB,MAAM,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB;IAIhE;;;;;OAKG;IACH,MAAM,CAAC,UAAU;IAOjB,OAAO,CAAC,eAAe;IA6BvB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,GAAG,SAAS;IAIjD,IAAI,SAAS,IAAI,MAAM,EAAE,CAExB;IAID,OAAO,CAAC,gBAAgB;IA0CxB;;OAEG;IACH,OAAO,CAAC,UAAU;IAoBlB;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,gBAAgB;IAqBxB;;;;OAIG;IACH,qBAAqB;IAarB,OAAO,CAAC,qBAAqB;IA8B7B,IAAI,cAAc,IAAI,MAAM,EAAE,CAE7B;IAID,eAAe;IA2Df,OAAO,CAAC,wBAAwB;IA2BhC,KAAK;IAWL,eAAe;IAUf,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU;CA8C/C"}
|
|
@@ -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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"real-object-group.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,qBAAa,eAAgB,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1D,SAAS,CAAC,mBAAmB;
|
|
1
|
+
{"version":3,"file":"real-object-group.d.ts","sourceRoot":"","sources":["../../src/threed/real-object-group.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,qBAAa,eAAgB,SAAQ,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1D,SAAS,CAAC,mBAAmB;IAI7B,iEAAiE;IACjE,IAAI,iBAAiB,IAAI,MAAM,EAAE,GAAG,IAAI,CAEvC;CACF"}
|