@galacean/effects 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.
@@ -0,0 +1,337 @@
1
+ import type { Disposable, JSONValue, LostHandler, RestoreHandler, SceneLoadOptions, Scene, GPUCapability } from '@galacean/effects-core';
2
+ import { Ticker, Composition, Renderer, spec } from '@galacean/effects-core';
3
+ /**
4
+ * `onItemClicked` 点击回调函数的传入参数
5
+ */
6
+ export interface ItemClickedData {
7
+ name: string;
8
+ player: Player;
9
+ id: string;
10
+ hitPositions: spec.vec3[];
11
+ compositionId: number;
12
+ }
13
+ /**
14
+ * player 创建的构造参数
15
+ */
16
+ export interface PlayerConfig {
17
+ /**
18
+ * 播放器的容器,会在容器中创建 canvas,container 和 canvas 必传一个
19
+ */
20
+ container?: HTMLElement | null;
21
+ /**
22
+ * 指定 canvas 进行播放
23
+ */
24
+ canvas?: HTMLCanvasElement;
25
+ /**
26
+ * 画布比例,尽量使用默认值,如果不够清晰,可以写2,但是可能产生渲染卡顿
27
+ */
28
+ pixelRatio?: number | 'auto';
29
+ /**
30
+ * 播放器是否可交互
31
+ */
32
+ interactive?: boolean;
33
+ /**
34
+ * canvas 是否透明,如果不透明可以略微提升性能
35
+ * @default true
36
+ */
37
+ transparentBackground?: boolean;
38
+ /**
39
+ * 渲染帧数
40
+ * @default 60
41
+ */
42
+ fps?: number;
43
+ /**
44
+ * 是否停止计时器,否手动渲染
45
+ * @default false
46
+ */
47
+ manualRender?: boolean;
48
+ /**
49
+ * 播放合成的环境
50
+ * @default '' - 编辑器中为 'editor'
51
+ */
52
+ env?: string;
53
+ /**
54
+ * 指定 WebGL 创建的上下文类型,`debug-disable` 表示不创建
55
+ */
56
+ renderFramework?: 'webgl' | 'webgl2' | 'debug-disable';
57
+ /**
58
+ * player 的 name
59
+ */
60
+ name?: string;
61
+ renderOptions?: {
62
+ /**
63
+ * 播放器是否需要截图(对应 WebGL 的 preserveDrawingBuffer 参数)
64
+ */
65
+ willCaptureImage?: boolean;
66
+ /**
67
+ * 图片预乘 Alpha
68
+ * @default false
69
+ */
70
+ premultiplyAlpha?: boolean;
71
+ };
72
+ /**
73
+ * 是否通知 container touchend / mouseup 事件, 默认不通知
74
+ */
75
+ notifyTouch?: boolean;
76
+ /**
77
+ * 当 WebGL context lost 时候发出的回调,这个时候播放器已经自动被销毁,业务需要做兜底逻辑
78
+ */
79
+ onWebGLContextLost?: (event: Event) => void;
80
+ /**
81
+ * 当 WebGL context restore 时候发出的回调,这个时候播放器已经自动恢复,业务可视情况做逻辑处理
82
+ */
83
+ onWebGLContextRestored?: () => void;
84
+ /**
85
+ * 播放器被元素暂停的回调
86
+ */
87
+ onPausedByItem?: (data: {
88
+ name: string;
89
+ player: Player;
90
+ }) => void;
91
+ /**
92
+ * 交互元素被点击的回调
93
+ */
94
+ onItemClicked?: (data: ItemClickedData) => void;
95
+ /**
96
+ * 交互元素发送 message 的回调
97
+ */
98
+ onMessageItem?: (data: {
99
+ name: string;
100
+ phrase: number;
101
+ }) => void;
102
+ /**
103
+ * 播放器更新的回调
104
+ */
105
+ onPlayableUpdate?: (data: {
106
+ playing: boolean;
107
+ time?: number;
108
+ player: Player;
109
+ }) => void;
110
+ /**
111
+ * 渲染出错时候的回调
112
+ * @param - err
113
+ */
114
+ onRenderError?: (err: Error) => void;
115
+ /**
116
+ * 每帧渲染调用后的回调,WebGL2 上下文生效
117
+ * @param time - GPU 渲染使用的时间,秒
118
+ */
119
+ reportGPUTime?: (time: number) => void;
120
+ [key: string]: any;
121
+ }
122
+ /**
123
+ * `player.config` 传入的合成播放配置参数,目前仅支持速度
124
+ */
125
+ export interface PlayerConfiguration {
126
+ speed?: number;
127
+ compositionName?: string;
128
+ }
129
+ export type SceneType = string | JSONValue | Scene;
130
+ export type SceneWithOptionsType = {
131
+ scene: SceneType;
132
+ options: SceneLoadOptions;
133
+ };
134
+ export type SceneLoadType = SceneType | SceneWithOptionsType;
135
+ /**
136
+ * Galacean Effects 播放器
137
+ */
138
+ export declare class Player implements Disposable, LostHandler, RestoreHandler {
139
+ readonly env: string;
140
+ readonly pixelRatio: number;
141
+ readonly canvas: HTMLCanvasElement;
142
+ readonly name: string;
143
+ readonly gpuCapability: GPUCapability;
144
+ readonly container: HTMLElement | null;
145
+ /**
146
+ * 当前播放的合成对象数组,请不要修改内容
147
+ */
148
+ protected compositions: Composition[];
149
+ /**
150
+ * 播放器的渲染对象
151
+ */
152
+ readonly renderer: Renderer;
153
+ /**
154
+ * 计时器
155
+ * 手动渲染 `manualRender=true` 时不创建计时器
156
+ */
157
+ readonly ticker: Ticker;
158
+ private readonly event;
159
+ private readonly handleWebGLContextLost?;
160
+ private readonly handleWebGLContextRestored?;
161
+ private readonly handleMessageItem?;
162
+ private readonly handlePlayerPause?;
163
+ private readonly reportGPUTime?;
164
+ private readonly handleItemClicked?;
165
+ private readonly handlePlayableUpdate?;
166
+ private readonly handleRenderError?;
167
+ private displayAspect;
168
+ private displayScale;
169
+ private forceRenderNextFrame;
170
+ private forwardingTime;
171
+ private resumePending;
172
+ private offscreenMode;
173
+ private disposed;
174
+ private assetManager;
175
+ private speed;
176
+ /**
177
+ * 播放器的构造函数
178
+ * @param config
179
+ */
180
+ constructor(config: PlayerConfig);
181
+ /**
182
+ * 设置 player 的播放速度,
183
+ * @param speed - 播放速度
184
+ */
185
+ setSpeed(speed: number): void;
186
+ getSpeed(): number;
187
+ /**
188
+ * 根据名称查找对应的合成,可能找不到
189
+ * @param name - 目标合成名称
190
+ */
191
+ getCompositionByName(name: string): Composition | undefined;
192
+ /**
193
+ * 获取当前播放的所有合成, 请不要修改返回数组的内容
194
+ */
195
+ getCompositions(): Composition[];
196
+ /**
197
+ * 是否有合成在播放
198
+ */
199
+ get hasPlayable(): boolean;
200
+ /**
201
+ * 播放器是否已暂停
202
+ */
203
+ get paused(): boolean;
204
+ /**
205
+ * 获取播放器是否可交互
206
+ */
207
+ get interactive(): boolean;
208
+ /**
209
+ * 设置播放器是否可交互
210
+ */
211
+ set interactive(enable: boolean);
212
+ /**
213
+ * 加载动画资源
214
+ * @param scene - 一个或一组 URL 或者通过 URL 请求的 JSONObject 或者 Scene 对象
215
+ * @param options - 加载可选参数
216
+ * @returns
217
+ */
218
+ loadScene(scene: SceneLoadType, options?: SceneLoadOptions): Promise<Composition>;
219
+ loadScene(scene: SceneLoadType[], options?: SceneLoadOptions): Promise<Composition[]>;
220
+ private createComposition;
221
+ /**
222
+ * 播放通过 player 加载好的全部合成
223
+ */
224
+ play(): void;
225
+ /**
226
+ * 跳转全部合成到指定时间后播放
227
+ * @param time - 指定时间
228
+ */
229
+ gotoAndPlay(time: number): void;
230
+ /**
231
+ * 跳转全部合成带指定时间并停留
232
+ * @param time - 指定时间
233
+ */
234
+ gotoAndStop(time: number): void;
235
+ /**
236
+ * 顺序播放一组还未开始播放的合成
237
+ * @param - compositions 要播放的合成数组
238
+ */
239
+ playSequence(compositions: Composition[]): void;
240
+ /**
241
+ * 暂停播放器
242
+ * @param options
243
+ * @param options.offloadTexture - 是否卸载贴图纹理,减少内存
244
+ * @returns
245
+ */
246
+ pause(options?: {
247
+ offloadTexture?: boolean;
248
+ }): true | undefined;
249
+ /**
250
+ * 恢复播放器
251
+ * > 如果暂停时卸载了纹理贴图,此函数将自动请求网络重新加载纹理
252
+ * @returns
253
+ */
254
+ resume(): Promise<void>;
255
+ /**
256
+ * player 在定时器每帧的回调
257
+ * @param dt - 时间差,毫秒
258
+ */
259
+ tick(dt: number): void;
260
+ private doTick;
261
+ /**
262
+ * 调整画布的宽高比
263
+ * @param aspect
264
+ * @param scale
265
+ */
266
+ resizeToAspect(aspect: number, scale?: number): void;
267
+ /**
268
+ * 将播放器重新和父容器大小对齐
269
+ */
270
+ resize(): void;
271
+ /**
272
+ * 修改播放器的配置
273
+ * @param config - 播放配置,当前仅支持修改合成播放速度
274
+ */
275
+ config(config: PlayerConfiguration): void;
276
+ /**
277
+ * 快进/快退指定时间间隔
278
+ * @param composition - 要快进的合成
279
+ * @param timeInSeconds - 需要快进/快退的时间长度(秒),可正可负
280
+ */
281
+ forwardCompositionTime(composition: Composition, timeInSeconds: number): void;
282
+ /**
283
+ * 清空 canvas 的画面
284
+ * @param immediate - 如果立即清理,当前画面将会消失,如果 player 还有合成在渲染,可能出现闪烁
285
+ */
286
+ clearCanvas(immediate?: boolean): void;
287
+ /**
288
+ * @internal
289
+ * @deprecated since 2.0.0
290
+ * @param id
291
+ * @param options
292
+ */
293
+ destroyItem(id: string, options?: {}): void;
294
+ /**
295
+ * 播放器在 `webglcontextlost` 时执行的操作
296
+ * @param e - Event
297
+ */
298
+ lost: (e: Event) => void;
299
+ /**
300
+ * 播放器在 `webglcontextrestored` 时执行的操作
301
+ * @returns
302
+ */
303
+ restore: () => Promise<void>;
304
+ /**
305
+ * 销毁播放器
306
+ * @param keepCanvas - 是否保留 canvas 画面,默认不保留,canvas 不能再被使用
307
+ */
308
+ dispose(keepCanvas?: boolean): void;
309
+ private renderFrame;
310
+ private handleResume;
311
+ private offloadTexture;
312
+ private handleClick;
313
+ private getTargetSize;
314
+ }
315
+ export declare function isSceneWithOptions(scene: any): scene is SceneWithOptionsType;
316
+ /**
317
+ * 禁止/允许创建新的播放器,已创建的不受影响
318
+ * @param disable - 是否禁止
319
+ */
320
+ export declare function disableAllPlayer(disable: boolean): void;
321
+ /**
322
+ * 判断指定的 canvas 是否有播放器正在使用
323
+ * @param canvas - 指定的 canvas
324
+ * @returns
325
+ */
326
+ export declare function isCanvasUsedByPlayer(canvas: HTMLCanvasElement): boolean;
327
+ /**
328
+ * 获取 canvas 对应的播放器
329
+ * @param canvas - 指定的 canvas
330
+ * @returns
331
+ */
332
+ export declare function getPlayerByCanvas(canvas: HTMLCanvasElement): Player | undefined;
333
+ /**
334
+ * 获取使用中的播放器
335
+ * @returns
336
+ */
337
+ export declare function getActivePlayers(): Player[];
@@ -0,0 +1 @@
1
+ export declare function isDowngradeIOS(): boolean;