@vvfx/artis 0.0.1-alpha.0
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/LICENSE +22 -0
- package/dist/artis/artis.d.ts +44 -0
- package/dist/artis/base-artis.d.ts +520 -0
- package/dist/artis/canvas-layer-order.d.ts +19 -0
- package/dist/artis/create-info-to-schema.d.ts +21 -0
- package/dist/artis/index.d.ts +15 -0
- package/dist/artis/operations/index.d.ts +3 -0
- package/dist/artis/operations/operations.d.ts +362 -0
- package/dist/artis/operations/scene-operations.d.ts +26 -0
- package/dist/artis/operations/types.d.ts +39 -0
- package/dist/artis/scene-artis.d.ts +386 -0
- package/dist/artis/screenshot-service.d.ts +83 -0
- package/dist/artis/types.d.ts +130 -0
- package/dist/artis/wiring/index.d.ts +17 -0
- package/dist/artis/wiring/register-commands.d.ts +44 -0
- package/dist/artis/wiring/setup-commands.d.ts +5 -0
- package/dist/artis/wiring/setup-event-bindings.d.ts +16 -0
- package/dist/artis/wiring/setup-keybindings.d.ts +38 -0
- package/dist/artis/wiring/setup-plugins.d.ts +5 -0
- package/dist/artis/wiring/wiring-context.d.ts +34 -0
- package/dist/artis-sdk/artis-sdk.d.ts +1117 -0
- package/dist/artis-sdk/index.d.ts +1 -0
- package/dist/core/asset/asset-manager.d.ts +288 -0
- package/dist/core/asset/index.d.ts +3 -0
- package/dist/core/command/command-service.d.ts +315 -0
- package/dist/core/command/commands/composite-command.d.ts +45 -0
- package/dist/core/command/commands/frame-layout-command.d.ts +81 -0
- package/dist/core/command/commands/frame-layout-mode-command.d.ts +55 -0
- package/dist/core/command/commands/frame-move-in-command.d.ts +54 -0
- package/dist/core/command/commands/frame-move-out-command.d.ts +54 -0
- package/dist/core/command/commands/group-children-detach-command.d.ts +28 -0
- package/dist/core/command/commands/index.d.ts +98 -0
- package/dist/core/command/commands/item-align-command.d.ts +52 -0
- package/dist/core/command/commands/item-create-command.d.ts +66 -0
- package/dist/core/command/commands/item-delete-command.d.ts +40 -0
- package/dist/core/command/commands/item-distribute-command.d.ts +53 -0
- package/dist/core/command/commands/item-group-command.d.ts +41 -0
- package/dist/core/command/commands/item-reorder-command.d.ts +41 -0
- package/dist/core/command/commands/item-replace-source-command.d.ts +48 -0
- package/dist/core/command/commands/item-set-font-family-command.d.ts +46 -0
- package/dist/core/command/commands/item-set-generator-resource-command.d.ts +40 -0
- package/dist/core/command/commands/item-transform-command.d.ts +51 -0
- package/dist/core/command/commands/item-ungroup-command.d.ts +34 -0
- package/dist/core/command/commands/item-update-property-by-create-info-command.d.ts +41 -0
- package/dist/core/command/commands/item-update-property-command.d.ts +82 -0
- package/dist/core/command/commands/mask-commit-command.d.ts +53 -0
- package/dist/core/command/commands/page-auto-layout-command.d.ts +53 -0
- package/dist/core/command/commands/picture-cut-commit-command.d.ts +43 -0
- package/dist/core/command/commands/picture-expand-commit-command.d.ts +35 -0
- package/dist/core/command/commands/scene-switch-command.d.ts +35 -0
- package/dist/core/command/commands/selection-set-command.d.ts +38 -0
- package/dist/core/command/commands/sprite-image-command.d.ts +36 -0
- package/dist/core/command/commands/sprite-text-edit-commit-command.d.ts +43 -0
- package/dist/core/command/commands/state-hand-command.d.ts +14 -0
- package/dist/core/command/commands/state-image-cut-command.d.ts +14 -0
- package/dist/core/command/commands/state-image-expand-command.d.ts +14 -0
- package/dist/core/command/commands/state-image-mask-command.d.ts +15 -0
- package/dist/core/command/commands/state-image-text-edit-command.d.ts +14 -0
- package/dist/core/command/commands/state-item-create-command.d.ts +34 -0
- package/dist/core/command/commands/state-move-command.d.ts +14 -0
- package/dist/core/command/commands/state-switch-command-base.d.ts +41 -0
- package/dist/core/command/commands/text-move-command.d.ts +47 -0
- package/dist/core/command/commands/text-rotate-command.d.ts +52 -0
- package/dist/core/command/commands/text-scale-command.d.ts +56 -0
- package/dist/core/command/commands/text-update-content-command.d.ts +51 -0
- package/dist/core/command/commands/transform-move-command.d.ts +56 -0
- package/dist/core/command/commands/transform-move-with-frame-change-command.d.ts +80 -0
- package/dist/core/command/commands/transform-move-with-layout-command.d.ts +56 -0
- package/dist/core/command/commands/transform-rotate-command.d.ts +51 -0
- package/dist/core/command/commands/transform-scale-command.d.ts +54 -0
- package/dist/core/command/commands/video-play-command.d.ts +28 -0
- package/dist/core/command/commands/video-source-command.d.ts +39 -0
- package/dist/core/command/commands/viewport-fit-to-box-command.d.ts +37 -0
- package/dist/core/command/commands/viewport-fit-to-items-command.d.ts +43 -0
- package/dist/core/command/commands/viewport-move-command.d.ts +34 -0
- package/dist/core/command/commands/viewport-zoom-command.d.ts +35 -0
- package/dist/core/command/index.d.ts +5 -0
- package/dist/core/command/registry.d.ts +246 -0
- package/dist/core/command/types.d.ts +124 -0
- package/dist/core/element-registry/element-facade.d.ts +35 -0
- package/dist/core/element-registry/element-identity-strategy.d.ts +75 -0
- package/dist/core/element-registry/element-registry.d.ts +72 -0
- package/dist/core/element-registry/index.d.ts +5 -0
- package/dist/core/element-registry/types.d.ts +15 -0
- package/dist/core/gizmo/gizmo-bootstrap.d.ts +70 -0
- package/dist/core/gizmo/gizmo-command-binder.d.ts +55 -0
- package/dist/core/gizmo/gizmo-config-override.d.ts +24 -0
- package/dist/core/gizmo/gizmo-registry.d.ts +39 -0
- package/dist/core/gizmo/index.d.ts +19 -0
- package/dist/core/gizmo/register-gizmo-command-bindings.d.ts +20 -0
- package/dist/core/gizmo/state-gizmo-controller.d.ts +20 -0
- package/dist/core/history/history-manager.d.ts +174 -0
- package/dist/core/history/index.d.ts +1 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/item/base-item.d.ts +154 -0
- package/dist/core/item/card-item.d.ts +91 -0
- package/dist/core/item/default-item-schema.d.ts +20 -0
- package/dist/core/item/effects-item.d.ts +99 -0
- package/dist/core/item/frame-item.d.ts +153 -0
- package/dist/core/item/generator-item.d.ts +114 -0
- package/dist/core/item/group-item.d.ts +51 -0
- package/dist/core/item/index.d.ts +25 -0
- package/dist/core/item/sprite-item.d.ts +80 -0
- package/dist/core/item/text-item.d.ts +171 -0
- package/dist/core/item/types.d.ts +158 -0
- package/dist/core/item/video-item.d.ts +120 -0
- package/dist/core/keybinding/index.d.ts +11 -0
- package/dist/core/keybinding/key-binding-controller.d.ts +44 -0
- package/dist/core/keybinding/key-binding-registry.d.ts +92 -0
- package/dist/core/keybinding/key-binding-store.d.ts +29 -0
- package/dist/core/keybinding/key-matcher.d.ts +24 -0
- package/dist/core/keybinding/types.d.ts +84 -0
- package/dist/core/plugin/index.d.ts +3 -0
- package/dist/core/plugin/io-plugin.d.ts +167 -0
- package/dist/core/plugin/plugin-system.d.ts +77 -0
- package/dist/core/predict/align-predict.d.ts +20 -0
- package/dist/core/predict/base/box-ops.d.ts +40 -0
- package/dist/core/predict/base/index.d.ts +14 -0
- package/dist/core/predict/base/parent-coord.d.ts +29 -0
- package/dist/core/predict/base/schema-box.d.ts +21 -0
- package/dist/core/predict/distribute-predict.d.ts +19 -0
- package/dist/core/predict/frame-layout-predict.d.ts +24 -0
- package/dist/core/predict/index.d.ts +12 -0
- package/dist/core/preferences/index.d.ts +2 -0
- package/dist/core/preferences/user-preferences-manager.d.ts +130 -0
- package/dist/core/quality/error-monitor/error-monitor-facade.d.ts +73 -0
- package/dist/core/quality/error-monitor/error-monitor.d.ts +106 -0
- package/dist/core/quality/error-monitor/index.d.ts +4 -0
- package/dist/core/quality/error-monitor/types.d.ts +198 -0
- package/dist/core/quality/index.d.ts +3 -0
- package/dist/core/quality/perf-monitor/index.d.ts +5 -0
- package/dist/core/quality/perf-monitor/perf-monitor-facade.d.ts +45 -0
- package/dist/core/quality/perf-monitor/perf-monitor.d.ts +60 -0
- package/dist/core/quality/perf-monitor/types.d.ts +66 -0
- package/dist/core/quality/stability-monitor/index.d.ts +5 -0
- package/dist/core/quality/stability-monitor/stability-monitor-facade.d.ts +50 -0
- package/dist/core/quality/stability-monitor/stability-monitor.d.ts +61 -0
- package/dist/core/quality/stability-monitor/types.d.ts +69 -0
- package/dist/core/renderer/background-controller.d.ts +56 -0
- package/dist/core/renderer/index.d.ts +5 -0
- package/dist/core/renderer/player-adapter.d.ts +129 -0
- package/dist/core/renderer/renderer.d.ts +134 -0
- package/dist/core/service/frame-service.d.ts +116 -0
- package/dist/core/service/index.d.ts +9 -0
- package/dist/core/service/interaction-providers.d.ts +20 -0
- package/dist/core/service/interaction-service.d.ts +211 -0
- package/dist/core/service/item-asset-service.d.ts +120 -0
- package/dist/core/service/item-creator-service.d.ts +211 -0
- package/dist/core/service/item-service.d.ts +641 -0
- package/dist/core/service/item-sync-service.d.ts +66 -0
- package/dist/core/service/json-scene-sync-service.d.ts +140 -0
- package/dist/core/service/refresh-animation-base-service.d.ts +1 -0
- package/dist/core/service/scene-data-assembler.d.ts +166 -0
- package/dist/core/service/view-service.d.ts +202 -0
- package/dist/core/state/base-state.d.ts +28 -0
- package/dist/core/state/index.d.ts +6 -0
- package/dist/core/state/presets.d.ts +25 -0
- package/dist/core/state/state-manager.d.ts +50 -0
- package/dist/core/state/types.d.ts +52 -0
- package/dist/core/store/index.d.ts +3 -0
- package/dist/core/store/scene-store.d.ts +194 -0
- package/dist/core/store/store.d.ts +36 -0
- package/dist/core/types/artis-config.d.ts +186 -0
- package/dist/core/types/artis-events.d.ts +101 -0
- package/dist/core/types/frame.d.ts +3 -0
- package/dist/core/types/generator.d.ts +28 -0
- package/dist/core/types/index.d.ts +15 -0
- package/dist/core/types/item-create-info.d.ts +205 -0
- package/dist/core/types/item-property.d.ts +149 -0
- package/dist/core/types/item-reorder.d.ts +12 -0
- package/dist/core/types/item-schema.d.ts +263 -0
- package/dist/core/types/item-set-property.d.ts +48 -0
- package/dist/core/types/page.d.ts +40 -0
- package/dist/core/types/sdk.d.ts +28 -0
- package/dist/core/types/view.d.ts +39 -0
- package/dist/helper/exporter/config.d.ts +18 -0
- package/dist/helper/exporter/const.d.ts +71 -0
- package/dist/helper/exporter/export-media.d.ts +189 -0
- package/dist/helper/exporter/exporter.d.ts +58 -0
- package/dist/helper/exporter/index.d.ts +2 -0
- package/dist/helper/exporter/types.d.ts +194 -0
- package/dist/helper/exporter/utils.d.ts +71 -0
- package/dist/helper/exporter/wav-audio.d.ts +35 -0
- package/dist/helper/html-overlay/anchor-navigation-runtime.d.ts +1 -0
- package/dist/helper/html-overlay/auto-height-layout.d.ts +16 -0
- package/dist/helper/html-overlay/auto-height-runtime.d.ts +40 -0
- package/dist/helper/html-overlay/document-runtime.d.ts +18 -0
- package/dist/helper/html-overlay/document-transform.d.ts +46 -0
- package/dist/helper/html-overlay/dom-order.d.ts +5 -0
- package/dist/helper/html-overlay/host-message-runtime.d.ts +15 -0
- package/dist/helper/html-overlay/html-capture-runtime.d.ts +12 -0
- package/dist/helper/html-overlay/html-card-service.d.ts +287 -0
- package/dist/helper/html-overlay/html-viewport-style.d.ts +6 -0
- package/dist/helper/html-overlay/index.d.ts +1 -0
- package/dist/helper/html-overlay/inline-script-json.d.ts +1 -0
- package/dist/helper/html-overlay/mime-utils.d.ts +13 -0
- package/dist/helper/html-overlay/overlay-transform.d.ts +30 -0
- package/dist/helper/html-overlay/path-utils.d.ts +34 -0
- package/dist/helper/html-overlay/runtime-context.d.ts +2 -0
- package/dist/helper/html-overlay/shell-runtime.d.ts +13 -0
- package/dist/helper/index.d.ts +5 -0
- package/dist/helper/scene-builder.d.ts +111 -0
- package/dist/helper/screen-shot.d.ts +51 -0
- package/dist/helper/size-adapt.d.ts +88 -0
- package/dist/index.cjs +69350 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.mjs +68963 -0
- package/dist/index.mjs.map +1 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/player.d.ts +9 -0
- package/dist/utils/background-manager.d.ts +76 -0
- package/dist/utils/common-utils.d.ts +39 -0
- package/dist/utils/container-size.d.ts +7 -0
- package/dist/utils/find-player-item.d.ts +9 -0
- package/dist/utils/index.d.ts +11 -0
- package/dist/utils/json-data-utils.d.ts +198 -0
- package/dist/utils/layout-utils.d.ts +144 -0
- package/dist/utils/pixel-box-utils.d.ts +26 -0
- package/dist/utils/player-data-utils.d.ts +9 -0
- package/dist/utils/player-utils.d.ts +42 -0
- package/dist/utils/replay-utils.d.ts +22 -0
- package/dist/utils/types.d.ts +130 -0
- package/package.json +66 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { Ray, Box2, Euler, Plane, Vector2, Vector3, Matrix4 } from '@vvfx/gizmo';
|
|
2
|
+
import type { CameraInteractionParam, ViewInteractionParam } from '../../utils/types';
|
|
3
|
+
/**
|
|
4
|
+
* 视口数据提供者
|
|
5
|
+
* 提供当前视口的宽高、缩放、平移信息
|
|
6
|
+
*/
|
|
7
|
+
export type ViewportProvider = {
|
|
8
|
+
/**
|
|
9
|
+
* 获取当前视口的宽高、缩放因子与平移信息
|
|
10
|
+
* @returns 视口宽高;zoom 用户缩放、contentRatio 容器 aspect 补偿、viewScale 展示场景缩放、translation 平移
|
|
11
|
+
*/
|
|
12
|
+
getViewport(): {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
zoom: number;
|
|
16
|
+
contentRatio: number;
|
|
17
|
+
widthRatio: number;
|
|
18
|
+
heightRatio: number;
|
|
19
|
+
pixelRatio: number;
|
|
20
|
+
translation: Vector2;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* 相机数据提供者
|
|
25
|
+
* 提供相机的 VP 矩阵、逆 VP 矩阵、位置等信息
|
|
26
|
+
*/
|
|
27
|
+
export type CameraProvider = {
|
|
28
|
+
/**
|
|
29
|
+
* 获取相机的 VP、逆 VP、view 矩阵及 viewport 矩阵
|
|
30
|
+
* @returns 相机矩阵信息;场景未就绪时返回 undefined
|
|
31
|
+
|
|
32
|
+
*/
|
|
33
|
+
getCameraInfo(): {
|
|
34
|
+
viewProjectionMatrix: Matrix4;
|
|
35
|
+
inverseViewProjectionMatrix: Matrix4;
|
|
36
|
+
viewMatrix: Matrix4;
|
|
37
|
+
viewportMatrix: Matrix4;
|
|
38
|
+
} | undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* 元素变换提供者
|
|
42
|
+
* 提供指定元素的世界变换矩阵
|
|
43
|
+
*/
|
|
44
|
+
export type ItemTransformProvider = {
|
|
45
|
+
getWorldMatrix(id: string): Matrix4 | undefined;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* InteractionService 配置
|
|
49
|
+
*/
|
|
50
|
+
export type InteractionConfig = {
|
|
51
|
+
viewportProvider: ViewportProvider;
|
|
52
|
+
cameraProvider: CameraProvider;
|
|
53
|
+
itemTransformProvider: ItemTransformProvider;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* InteractionService - 坐标转换与交互计算服务
|
|
57
|
+
*
|
|
58
|
+
* 纯计算类,不直接引用 Player / PageData / Store。
|
|
59
|
+
* 所有外部数据通过接口注入,调用 refresh*() 时从接口拉取最新状态。
|
|
60
|
+
*/
|
|
61
|
+
export declare class InteractionService {
|
|
62
|
+
/** 交互平面(用于射线求交) */
|
|
63
|
+
plane: Plane;
|
|
64
|
+
/** 交互射线 */
|
|
65
|
+
ray: Ray;
|
|
66
|
+
/** 视口参数缓存 */
|
|
67
|
+
viewportParam: ViewInteractionParam;
|
|
68
|
+
/** 相机参数缓存 */
|
|
69
|
+
cameraParam: CameraInteractionParam;
|
|
70
|
+
private _config;
|
|
71
|
+
/**
|
|
72
|
+
* 注入视口、相机、元素变换数据提供者
|
|
73
|
+
* @param config 数据提供者配置
|
|
74
|
+
*/
|
|
75
|
+
constructor(config: InteractionConfig);
|
|
76
|
+
/**
|
|
77
|
+
* 从 ViewportProvider 刷新视口参数(含 zoom / contentRatio 三因子)
|
|
78
|
+
*/
|
|
79
|
+
refreshViewport(): void;
|
|
80
|
+
/**
|
|
81
|
+
* 渲染端有效缩放比 = zoom · contentRatio
|
|
82
|
+
*/
|
|
83
|
+
getEffectiveScale(): number;
|
|
84
|
+
/**
|
|
85
|
+
* 从 CameraProvider 刷新相机参数
|
|
86
|
+
*/
|
|
87
|
+
refreshCamera(): void;
|
|
88
|
+
/**
|
|
89
|
+
* 通过原始相机配置参数刷新(用于场景未就绪时的静态初始化)
|
|
90
|
+
* @param camera 相机原始配置
|
|
91
|
+
*/
|
|
92
|
+
refreshCameraByRawConfig(camera: {
|
|
93
|
+
near: number;
|
|
94
|
+
far: number;
|
|
95
|
+
fov: number;
|
|
96
|
+
aspect: number;
|
|
97
|
+
position: [number, number, number];
|
|
98
|
+
clipMode: number;
|
|
99
|
+
}): void;
|
|
100
|
+
/**
|
|
101
|
+
* 初始化交互平面
|
|
102
|
+
* @param position 平面上的参考点,缺省取相机焦点
|
|
103
|
+
* @param rotation 平面法线朝向,缺省取相机旋转
|
|
104
|
+
*/
|
|
105
|
+
initInteractionPlane(position?: Vector3, rotation?: Euler): void;
|
|
106
|
+
/**
|
|
107
|
+
* 将世界坐标投影到视口坐标
|
|
108
|
+
* @param point 世界坐标
|
|
109
|
+
* @returns 视口坐标
|
|
110
|
+
*/
|
|
111
|
+
projectPoint(point: Vector3): Vector2;
|
|
112
|
+
/**
|
|
113
|
+
* 通过视口坐标获取世界坐标(射线与相机焦点平面求交)
|
|
114
|
+
* @param point 视口坐标
|
|
115
|
+
* @returns 世界坐标;射线与平面无交点时返回 undefined
|
|
116
|
+
*/
|
|
117
|
+
getWorldPositionByViewPosition(point: Vector2): Vector3 | undefined;
|
|
118
|
+
/**
|
|
119
|
+
* 屏幕坐标 → NDC 坐标
|
|
120
|
+
* @param point 视口坐标
|
|
121
|
+
* @returns NDC 坐标
|
|
122
|
+
*/
|
|
123
|
+
getNDCPositionByViewPosition(point: Vector2): Vector2;
|
|
124
|
+
/**
|
|
125
|
+
* 像素坐标 → 视口坐标(应用 zoom + translation)
|
|
126
|
+
* @param point 像素坐标
|
|
127
|
+
* @returns 视口坐标
|
|
128
|
+
*/
|
|
129
|
+
getViewPositionByPixelPoint(point: Vector2): Vector2;
|
|
130
|
+
/**
|
|
131
|
+
* 视口坐标 → 像素坐标(逆向 zoom + translation)
|
|
132
|
+
* @param point 视口坐标
|
|
133
|
+
* @returns 像素坐标
|
|
134
|
+
*/
|
|
135
|
+
getPixelPositionByViewPoint(point: Vector2): Vector2;
|
|
136
|
+
/**
|
|
137
|
+
* 像素坐标系包围盒 → 视口坐标系包围盒(应用 zoom + translation)
|
|
138
|
+
*
|
|
139
|
+
* 以容器中心为锚点缩放后再平移,与 getViewPositionByPixelPoint 的坐标系一致。
|
|
140
|
+
* @param box 像素坐标系包围盒
|
|
141
|
+
* @returns 视口坐标系包围盒
|
|
142
|
+
*/
|
|
143
|
+
getViewBoxByBox(box: Box2): Box2;
|
|
144
|
+
/**
|
|
145
|
+
* 像素尺寸 → 视口(容器)尺寸
|
|
146
|
+
*
|
|
147
|
+
* @param pixelSize 像素尺寸(DOM delta)
|
|
148
|
+
* @returns 容器像素尺寸
|
|
149
|
+
*/
|
|
150
|
+
getViewSizeByPixelSize(pixelSize: Vector2): Vector2;
|
|
151
|
+
getWorldSizeByPixelSize(pixelSize: Vector2, isWorld?: boolean, itemId?: string): Vector3;
|
|
152
|
+
/**
|
|
153
|
+
* 视口(容器)尺寸 → 基准像素尺寸
|
|
154
|
+
*
|
|
155
|
+
* 与 {@link getViewSizeByPixelSize} 互逆:基准像素 = 容器像素 / effectiveScale / pixelRatio · (widthRatio, heightRatio)。
|
|
156
|
+
* effectiveScale 与 renderer viewportMatrix 同源,口径与 getWorldSizeByViewSize/投影一致。
|
|
157
|
+
* @param viewSize 容器像素尺寸(含视图缩放)
|
|
158
|
+
* @returns 基准像素尺寸
|
|
159
|
+
*/
|
|
160
|
+
getPixelSizeByViewSize(viewSize: Vector2): Vector2;
|
|
161
|
+
/**
|
|
162
|
+
* 世界尺寸 → 基准像素尺寸
|
|
163
|
+
*
|
|
164
|
+
* 走纯 VP 投影得容器像素差,再经 `getPixelSizeByViewSize` 转基准像素,与之互逆自洽。
|
|
165
|
+
* @param worldSize 世界尺寸
|
|
166
|
+
* @returns 基准像素尺寸(取绝对值)
|
|
167
|
+
*/
|
|
168
|
+
getPixelSizeByWorldSize(worldSize: Vector3): Vector2;
|
|
169
|
+
/**
|
|
170
|
+
* 视口(容器)尺寸 → 世界尺寸
|
|
171
|
+
*
|
|
172
|
+
* 入参 viewSize 为容器像素(与 `getViewSizeByPixelSize` 输出配套)。内部先除以
|
|
173
|
+
* effectiveScale 转基准像素,再走纯 VP 射线求交,与 `getPixelSizeByWorldSize` 自洽。
|
|
174
|
+
* @param viewSize 视口(容器)尺寸
|
|
175
|
+
* @param isWorld 是否基于世界坐标系(否则基于元素坐标系)
|
|
176
|
+
* @param itemId 目标元素 ID(用于确定交互平面)
|
|
177
|
+
* @returns 世界尺寸;超界时返回零向量
|
|
178
|
+
*/
|
|
179
|
+
getWorldSizeByViewSize(viewSize: Vector2, isWorld?: boolean, itemId?: string): Vector3;
|
|
180
|
+
/**
|
|
181
|
+
* 世界点 → 基准像素(用纯 VP),与 `projectPoint`(含 viewport)对应。
|
|
182
|
+
* @param point 世界坐标
|
|
183
|
+
* @returns 基准像素坐标
|
|
184
|
+
*/
|
|
185
|
+
private _projectPointBaseline;
|
|
186
|
+
/**
|
|
187
|
+
* 基准像素 → 世界坐标(射线与交互平面求交,用纯逆 VP)
|
|
188
|
+
* @param baselinePoint 基准像素坐标
|
|
189
|
+
* @returns 世界坐标;射线与平面无交点时返回 undefined
|
|
190
|
+
*/
|
|
191
|
+
private _getWorldPositionByBaselineView;
|
|
192
|
+
private _createInteractionPlane;
|
|
193
|
+
/**
|
|
194
|
+
* 视口尺寸合法性校验——几何坐标转换的前置防御。
|
|
195
|
+
*
|
|
196
|
+
* viewport width/height 为 0(容器未布局/隐藏)或 NaN(view-service handleResize 中
|
|
197
|
+
* `0/0` 中毒、widthRatio 污染)时,下游 `toViewCoordinate` / `viewPositionToNDC` /
|
|
198
|
+
* `.divide(widthRatio,heightRatio)` 会除零得 NaN,**JS 不抛错、静默污染 transform/gizmo**,
|
|
199
|
+
* 导致元素创建后 LoadingGizmo 挂死、坐标运算失真且无法被 catch。
|
|
200
|
+
*
|
|
201
|
+
* 此处把隐式 NaN 显式化为抛错(普通 Error,message 含 width/height + 调用方法名),
|
|
202
|
+
* 供调用方(createItemCore 等 service 层)try/catch 后经 captureSnapshot 产出
|
|
203
|
+
* 「场景快照 + 最近5 Command」emit('error')。gizmo 包不直接依赖 InteractionService,
|
|
204
|
+
* 故抛错不在拖拽/命中的热路径上,仅冒泡到 service 层创建/换源/布局/同步链路。
|
|
205
|
+
*
|
|
206
|
+
* 注:本类被 ItemService/FrameService/ItemSyncService 等 service 层调用,非 gizmo 热路径。
|
|
207
|
+
* 仅做入口输入校验,不对运算结果 NaN 二次检查(避免内部高频辅助调用每帧抛)。
|
|
208
|
+
* @param methodName 触发校验的方法名,写入 message 供排查
|
|
209
|
+
*/
|
|
210
|
+
private _assertViewportValid;
|
|
211
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { spec, VFXItem } from '../../shared';
|
|
2
|
+
import { Vector3 } from '@vvfx/gizmo';
|
|
3
|
+
import { type Store } from '../store';
|
|
4
|
+
import { type AssetManager } from '../asset';
|
|
5
|
+
import { type AssetLoadResult } from '../types';
|
|
6
|
+
import { type Renderer } from '../renderer';
|
|
7
|
+
import { type InteractionService } from './interaction-service';
|
|
8
|
+
/**
|
|
9
|
+
* ItemAssetService - 元素资源加载与切换(资源操作层)服务
|
|
10
|
+
*
|
|
11
|
+
* 只管资源操作本身(Texture 准备/绑定、引用计数释放、Component.setTexture):
|
|
12
|
+
* 不写 ArtisItem.property、不 gotoEdit、不感知 loading(gizmo)——以上收敛在 ItemService
|
|
13
|
+
* (统一换源协调器 + property 写入 + gotoEdit 单源头)。
|
|
14
|
+
*
|
|
15
|
+
* 贌责边界:只管资源生命周期(加载 / 删除 / 异步加载 / 切换),不修改元素自身尺寸/transform。
|
|
16
|
+
* 元素尺寸由创建层(ItemCreatorService / ItemService)在 create 期决定。
|
|
17
|
+
*
|
|
18
|
+
* 负责:
|
|
19
|
+
* 1. 首次加载:loadItemAsset(创建时发起,纹理绑定;loading 态由 ItemService.withLoading 管)
|
|
20
|
+
* 2. 切换资源:updateSpriteImage / switchVideoAsset(带引用计数的旧资源释放)
|
|
21
|
+
* 3. 特效/画板预合成异步加载:loadEffectsAsset / loadFrameAsset(仅创建子合成并适配渲染,不改元素尺寸)
|
|
22
|
+
* 4. 生成器转换:setGeneratorResource
|
|
23
|
+
* 注:generator→sprite/video 的元素类型转换与父子重挂归 ItemService.setGeneratorResourceCore,不在本服务。
|
|
24
|
+
*/
|
|
25
|
+
export declare class ItemAssetService {
|
|
26
|
+
private _store;
|
|
27
|
+
private _renderer;
|
|
28
|
+
private _assetManager;
|
|
29
|
+
private _interactionService;
|
|
30
|
+
/** 查找 Player 元素(注入避免循环依赖) */
|
|
31
|
+
private _findPlayerItemById;
|
|
32
|
+
/**
|
|
33
|
+
* 注入依赖与跨服务查找回调
|
|
34
|
+
* @param options 构造选项
|
|
35
|
+
*/
|
|
36
|
+
constructor(options: {
|
|
37
|
+
store: Store;
|
|
38
|
+
renderer: Renderer;
|
|
39
|
+
assetManager: AssetManager;
|
|
40
|
+
interactionService: InteractionService;
|
|
41
|
+
findPlayerItemById: (id: string) => VFXItem | undefined;
|
|
42
|
+
registerMapping: (elementId: string, vfxItemId: string) => void;
|
|
43
|
+
});
|
|
44
|
+
/** 当前激活的合成(场景未加载时返回 undefined) */
|
|
45
|
+
private get composition();
|
|
46
|
+
/**
|
|
47
|
+
* 加载元素资源(异步)
|
|
48
|
+
*
|
|
49
|
+
* 在 createItem 后调用。加载过程中元素处于 loading 态。
|
|
50
|
+
* 加载完成后将资源绑定到 VFXItem 的 Component,并在 AssetManager 中记录映射。
|
|
51
|
+
* @param id 元素实例 ID
|
|
52
|
+
* @param url 资源地址
|
|
53
|
+
* @param assetType 资源类型,默认 image
|
|
54
|
+
* @returns 加载结果;失败时返回含 error 的结果
|
|
55
|
+
*/
|
|
56
|
+
loadItemAsset(id: string, url: string, assetType?: 'image' | 'video'): Promise<AssetLoadResult>;
|
|
57
|
+
/**
|
|
58
|
+
* 切换元素绑定的资源(带引用计数的释放/复用)
|
|
59
|
+
*
|
|
60
|
+
* 流程:先准备新 Texture → 绑定新 asset → 返回延迟释放回调
|
|
61
|
+
* 调用方在 setTexture 应用完新贴图后调用 releaseOldAssets,确保无空帧闪烁。
|
|
62
|
+
* @param id 元素实例 ID
|
|
63
|
+
* @param newUrl 新资源地址
|
|
64
|
+
* @param assetType 资源类型
|
|
65
|
+
* @returns 新 Texture 与延迟释放旧资源的回调;准备失败时返回 undefined
|
|
66
|
+
*/
|
|
67
|
+
private switchItemAsset;
|
|
68
|
+
/**
|
|
69
|
+
* 切换图片元素的贴图到新资源(带引用计数的释放/复用)。
|
|
70
|
+
*
|
|
71
|
+
* 资源操作层:只负责准备新 Texture、绑定、应用到 SpriteComponent、释放旧资源。
|
|
72
|
+
* 不写 ArtisItem.property.image、不 gotoEdit —— 由 ItemService 的统一换源协调器提交 property 与渲染。
|
|
73
|
+
* @param id 元素实例 ID
|
|
74
|
+
* @param imageUrl 新图片地址
|
|
75
|
+
* @returns true 表示新贴图已成功应用到 Component;false 表示失败(playerItem 缺失或贴图未就绪)
|
|
76
|
+
*/
|
|
77
|
+
updateSpriteImage(id: string, imageUrl: string, shouldApply?: () => boolean): Promise<boolean>;
|
|
78
|
+
/**
|
|
79
|
+
* 切换视频元素资源并应用到 VideoComponent(带引用计数)。
|
|
80
|
+
*
|
|
81
|
+
* @param id 元素实例 ID
|
|
82
|
+
* @param videoUrl 新视频地址
|
|
83
|
+
*/
|
|
84
|
+
switchVideoAsset(id: string, videoUrl: string, shouldApply?: () => boolean): Promise<boolean>;
|
|
85
|
+
/**
|
|
86
|
+
* 加载特效资源(异步)——仅资源生命周期:fetch→解析→patch→缓存→建子合成→适配渲染→挂占位。
|
|
87
|
+
*
|
|
88
|
+
* URL 资源经 AssetManager 统一管理(fetch→解析→patch 主合成 endBehavior→缓存,含引用计数),
|
|
89
|
+
* 切换同 URL 直接命中缓存不重复 fetch。
|
|
90
|
+
*
|
|
91
|
+
* autoFit:autoFit=true 时,资源就绪后以主合成 previewSize(像素)回写元素尺寸
|
|
92
|
+
* (property.width/height + 占位 transform.setSize),并按新尺寸重算 cover 适配;
|
|
93
|
+
* autoFit=false 时维持「尺寸在 create 期定死、加载层不改」的既定语义。
|
|
94
|
+
*
|
|
95
|
+
* @param id 元素实例 ID
|
|
96
|
+
* @param name 元素名称
|
|
97
|
+
* @param effects 特效资源(URL 或 JSONScene;JSONScene 走旧路径不经 AssetManager)
|
|
98
|
+
* @param worldSize 世界坐标系下的尺寸(创建层已定;autoFit 时按主合成回写后会被本地变量覆盖)
|
|
99
|
+
* @param worldPosition 世界坐标位置
|
|
100
|
+
* @param worldRotation 世界坐标旋转
|
|
101
|
+
* @param worldScale 世界坐标缩放
|
|
102
|
+
* @param autoFit 是否自适应大小(true=随资源主合成改变尺寸)
|
|
103
|
+
*/
|
|
104
|
+
loadEffectsAsset(id: string, name: string, effects: string | spec.JSONScene, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, autoFit?: boolean, shouldApply?: () => boolean): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* autoFit 尺寸回写:把像素 previewSize 写进 ArtisItem.property.width/height。
|
|
107
|
+
* 单位为像素(对齐当前 property 约定,非 origin/master 旧世界坐标)。
|
|
108
|
+
* 仅写 property,世界坐标换算与占位 setSize 在调用方按需进行。
|
|
109
|
+
*/
|
|
110
|
+
private _applyAutoFitSize;
|
|
111
|
+
/**
|
|
112
|
+
* 加载画板底层预合成资源(异步)
|
|
113
|
+
* @param id 元素实例 ID
|
|
114
|
+
* @param compositionItemId 预合成元素实例 ID
|
|
115
|
+
* @param worldSize 世界坐标系下的尺寸
|
|
116
|
+
* @param scene 预合成场景数据
|
|
117
|
+
* @returns 元素或占位元素不存在时返回 undefined,否则无返回值
|
|
118
|
+
*/
|
|
119
|
+
loadFrameAsset(id: string, compositionItemId: string, worldSize: [number, number], scene: spec.JSONScene): Promise<any>;
|
|
120
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { spec, VFXItem } from '../../shared';
|
|
2
|
+
import { SpriteItem, TextItem, VideoItem, GroupItem, GeneratorItem, EffectsItem, FrameItem, CardItem } from '../item';
|
|
3
|
+
import type { AutoLayoutConfig, FrameManager, LayoutInfo } from '@vvfx/gizmo';
|
|
4
|
+
import { Vector3 } from '@vvfx/gizmo';
|
|
5
|
+
import { type Store } from '../store';
|
|
6
|
+
import { GeneratorType, TextItemSchema } from '../types';
|
|
7
|
+
import { type Renderer } from '../renderer';
|
|
8
|
+
import { type UserPreferencesManager } from '../preferences';
|
|
9
|
+
/**
|
|
10
|
+
* ItemCreatorService - 元素创建工厂
|
|
11
|
+
*
|
|
12
|
+
* 负责各类型元素的创建逻辑:
|
|
13
|
+
* 1. 在 Store 中创建对应的 ArtisItem 并推入 store.items
|
|
14
|
+
* 2. 在 Player 中创建对应的 VFXItem 占位(不含资源)
|
|
15
|
+
* 3. 资源加载由 ItemAssetService 负责(通过 loadItemAsset 回调注入)
|
|
16
|
+
*/
|
|
17
|
+
export declare class ItemCreatorService {
|
|
18
|
+
private _store;
|
|
19
|
+
private _renderer;
|
|
20
|
+
private _userPreferences;
|
|
21
|
+
private _frameManager;
|
|
22
|
+
/** 异步资源加载回调(注入自 ItemService,避免循环依赖) */
|
|
23
|
+
private _loadItemAsset;
|
|
24
|
+
private _loadEffectsAsset;
|
|
25
|
+
/** 资源空 url 占位回调:置 _pendingResource + 挂 loading(注入自 ItemService) */
|
|
26
|
+
private _markResourcePending;
|
|
27
|
+
private _loadFrameAsset;
|
|
28
|
+
/** Frame 子元素管理回调(避免引入 FrameService 循环依赖) */
|
|
29
|
+
private _moveItemsToFrame;
|
|
30
|
+
private _syncAllItemsFromPlayer;
|
|
31
|
+
/** 注册 elementId ↔ vfxItemId 映射(注入自 ItemService,创建 VFXItem 后回调用) */
|
|
32
|
+
private _registerMapping;
|
|
33
|
+
/** 元素ID → vfxItemId 翻译(注入自 ItemService,Group reparent 查 child 用) */
|
|
34
|
+
private _vfxItemIdOf;
|
|
35
|
+
private _elementIdOf;
|
|
36
|
+
/** 决定 artisItem.id(注入自 ItemService 策略):Artis 返 schemaId,SceneArtis 返 instanceId */
|
|
37
|
+
private _resolveItemId;
|
|
38
|
+
/**
|
|
39
|
+
* 注入依赖与异步资源加载、Frame 管理回调
|
|
40
|
+
* @param options 构造选项
|
|
41
|
+
*/
|
|
42
|
+
constructor(options: {
|
|
43
|
+
store: Store;
|
|
44
|
+
renderer: Renderer;
|
|
45
|
+
userPreferences: UserPreferencesManager;
|
|
46
|
+
frameManager: FrameManager;
|
|
47
|
+
loadItemAsset: (id: string, url: string, assetType: 'image' | 'video') => Promise<void>;
|
|
48
|
+
loadEffectsAsset: (id: string, name: string, effects: string | spec.JSONScene, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, autoFit: boolean) => Promise<void>;
|
|
49
|
+
markResourcePending: (id: string) => void;
|
|
50
|
+
loadFrameAsset: (id: string, compositionItemId: string, worldSize: [number, number], scene: spec.JSONScene) => Promise<VFXItem | undefined>;
|
|
51
|
+
moveItemsToFrame: (itemIds: string[], frameId: string) => void;
|
|
52
|
+
syncAllItemsFromPlayer: () => void;
|
|
53
|
+
registerMapping: (elementId: string, vfxItemId: string) => void;
|
|
54
|
+
vfxItemIdOf: (elementId: string) => string | undefined;
|
|
55
|
+
elementIdOf: (vfxItemId: string) => string | undefined;
|
|
56
|
+
resolveItemId: (schemaId: string, vfxItem: VFXItem) => string;
|
|
57
|
+
});
|
|
58
|
+
/** 当前激活的合成(场景未加载时返回 undefined) */
|
|
59
|
+
private get composition();
|
|
60
|
+
/**
|
|
61
|
+
* 根据生成器类型获取对应的默认名称,未知类型统一回退为“生成器”。
|
|
62
|
+
* @param generatorType 生成器类型
|
|
63
|
+
* @returns 生成器默认名称
|
|
64
|
+
*/
|
|
65
|
+
private _getGeneratorName;
|
|
66
|
+
/**
|
|
67
|
+
* 创建图片元素(建 ArtisItem + Player 占位 VFXItem,资源异步加载)
|
|
68
|
+
* @param id 元素 ID
|
|
69
|
+
* @param _name 元素名称(保留参数兼容性,生成器名称由 generatorType 决定)
|
|
70
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
71
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
72
|
+
* @param scale 缩放 [sx, sy]
|
|
73
|
+
* @param width 像素宽
|
|
74
|
+
* @param height 像素高
|
|
75
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
76
|
+
* @param worldPosition 世界坐标
|
|
77
|
+
* @param worldRotation 世界旋转
|
|
78
|
+
* @param worldScale 世界缩放
|
|
79
|
+
* @param resourceUrl 图片资源 URL,缺省不加载资源
|
|
80
|
+
*/
|
|
81
|
+
createSpriteItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, resourceUrl?: string, sizeMode?: 'auto' | 'fixed'): {
|
|
82
|
+
artisItem: SpriteItem;
|
|
83
|
+
resourcePromise?: Promise<void>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* 创建文本元素
|
|
87
|
+
* @param id 元素 ID
|
|
88
|
+
* @param name 元素名称
|
|
89
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
90
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
91
|
+
* @param scale 缩放 [sx, sy]
|
|
92
|
+
* @param width 像素宽
|
|
93
|
+
* @param height 像素高
|
|
94
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
95
|
+
* @param worldPosition 世界坐标
|
|
96
|
+
* @param worldRotation 世界旋转
|
|
97
|
+
* @param worldScale 世界缩放
|
|
98
|
+
* @param text 文本内容
|
|
99
|
+
* @param fontSize 字号,缺省 40
|
|
100
|
+
* @param fontFamily 字体族,缺省空串
|
|
101
|
+
*/
|
|
102
|
+
createTextItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, property: TextItemSchema['property']): TextItem;
|
|
103
|
+
/**
|
|
104
|
+
* 创建视频元素(资源异步加载)
|
|
105
|
+
* @param id 元素 ID
|
|
106
|
+
* @param name 元素名称
|
|
107
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
108
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
109
|
+
* @param scale 缩放 [sx, sy]
|
|
110
|
+
* @param width 像素宽
|
|
111
|
+
* @param height 像素高
|
|
112
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
113
|
+
* @param worldPosition 世界坐标
|
|
114
|
+
* @param worldRotation 世界旋转
|
|
115
|
+
* @param worldScale 世界缩放
|
|
116
|
+
* @param videoUrl 视频资源 URL
|
|
117
|
+
* @param muted 是否静音,缺省 true
|
|
118
|
+
* @param transparent 是否透明视频,缺省 false(普通视频;true 时按左右分屏 alpha 合成)
|
|
119
|
+
*/
|
|
120
|
+
createVideoItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, videoUrl: string | null | undefined, sizeMode?: 'auto' | 'fixed', muted?: boolean, transparent?: boolean): {
|
|
121
|
+
artisItem: VideoItem;
|
|
122
|
+
resourcePromise?: Promise<void>;
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* 创建组元素,并将指定子元素挂到组下
|
|
126
|
+
* @param id 元素 ID
|
|
127
|
+
* @param name 元素名称
|
|
128
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
129
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
130
|
+
* @param scale 缩放 [sx, sy]
|
|
131
|
+
* @param width 像素宽
|
|
132
|
+
* @param height 像素高
|
|
133
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
134
|
+
* @param worldPosition 世界坐标
|
|
135
|
+
* @param worldRotation 世界旋转
|
|
136
|
+
* @param worldScale 世界缩放
|
|
137
|
+
* @param children 子元素 ID 列表
|
|
138
|
+
*/
|
|
139
|
+
createGroupItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, children?: string[]): GroupItem;
|
|
140
|
+
/**
|
|
141
|
+
* 创建生成器元素(无资源占位)
|
|
142
|
+
* @param id 元素 ID
|
|
143
|
+
* @param name 元素名称
|
|
144
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
145
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
146
|
+
* @param scale 缩放 [sx, sy]
|
|
147
|
+
* @param width 像素宽
|
|
148
|
+
* @param height 像素高
|
|
149
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
150
|
+
* @param worldPosition 世界坐标
|
|
151
|
+
* @param worldRotation 世界旋转
|
|
152
|
+
* @param worldScale 世界缩放
|
|
153
|
+
* @param generatorType 生成器类型,缺省 IMAGE
|
|
154
|
+
*/
|
|
155
|
+
createGeneratorItem(id: string, _name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, generatorType?: GeneratorType): GeneratorItem;
|
|
156
|
+
/**
|
|
157
|
+
* 创建特效元素(异步加载预合成资源)
|
|
158
|
+
* @param id 元素 ID
|
|
159
|
+
* @param name 元素名称
|
|
160
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
161
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
162
|
+
* @param scale 缩放 [sx, sy]
|
|
163
|
+
* @param width 像素宽
|
|
164
|
+
* @param height 像素高
|
|
165
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
166
|
+
* @param worldPosition 世界坐标
|
|
167
|
+
* @param worldRotation 世界旋转
|
|
168
|
+
* @param worldScale 世界缩放
|
|
169
|
+
* @param effectsUrl 特效资源 URL
|
|
170
|
+
*/
|
|
171
|
+
createEffectsItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, effectsUrl?: string, autoFit?: boolean): {
|
|
172
|
+
artisItem: EffectsItem;
|
|
173
|
+
resourcePromise?: Promise<void>;
|
|
174
|
+
};
|
|
175
|
+
/**
|
|
176
|
+
* 创建画板元素(sync 段):建 ArtisItem + Player 控制器(空 null + FrameComponent),
|
|
177
|
+
* 完成 id/vfxItemId/register。不含资源加载与子元素挂载(见 {@link loadFrameAssetFor})。
|
|
178
|
+
*
|
|
179
|
+
* 拆分 sync/async 的理由:id(经策略 resolveItemId)与 vfxItemId 在 createEmpty 后同步可得,
|
|
180
|
+
* 供同步 createItemCore 即时返回真实 id;资源加载(loadFrameAsset)+ 子元素挂载 + 全量同步
|
|
181
|
+
* 留待 async 段,由 createItem(await) 等待或 createItemCore fire-and-forget。
|
|
182
|
+
* @returns 新建的 Frame ArtisItem(id/vfxItemId 已就绪)
|
|
183
|
+
*/
|
|
184
|
+
createFrameItemSync(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, layoutMode?: 'auto' | 'free', children?: string[], autoLayoutConfig?: AutoLayoutConfig, layoutInfos?: Record<string, LayoutInfo>): FrameItem;
|
|
185
|
+
/**
|
|
186
|
+
* 画板资源加载与子元素挂载(async 段,配合 {@link createFrameItemSync}):
|
|
187
|
+
* 加载底层预合成 → 把子元素移入画板 → 全量同步 transform。
|
|
188
|
+
* @param artisItem createFrameItemSync 返回的画板元素(id/subCompositionItemId 已就绪)
|
|
189
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
190
|
+
* @param scene 预合成场景数据
|
|
191
|
+
* @param children 子元素 ID 列表
|
|
192
|
+
*/
|
|
193
|
+
loadFrameAssetFor(artisItem: FrameItem, worldSize: [number, number], scene: spec.JSONScene, children?: string[]): Promise<void>;
|
|
194
|
+
/**
|
|
195
|
+
* 创建卡片元素
|
|
196
|
+
* @param id 元素 ID
|
|
197
|
+
* @param name 元素名称
|
|
198
|
+
* @param pixelPosition 像素坐标 [x, y]
|
|
199
|
+
* @param rotation 旋转角度(度,Z 轴)
|
|
200
|
+
* @param scale 缩放 [sx, sy]
|
|
201
|
+
* @param width 像素宽
|
|
202
|
+
* @param height 像素高
|
|
203
|
+
* @param worldSize 世界尺寸 [w, h]
|
|
204
|
+
* @param worldPosition 世界坐标
|
|
205
|
+
* @param worldRotation 世界旋转
|
|
206
|
+
* @param worldScale 世界缩放
|
|
207
|
+
* @param cardType 卡片类型,缺省空串
|
|
208
|
+
* @param autoHeight 是否自动高度
|
|
209
|
+
*/
|
|
210
|
+
createCardItem(id: string, name: string, pixelPosition: [number, number], rotation: number, scale: [number, number], width: number, height: number, worldSize: [number, number], worldPosition: Vector3, worldRotation: Vector3, worldScale: Vector3, cardType?: string, autoHeight?: boolean): CardItem;
|
|
211
|
+
}
|