modern-canvas 0.0.3 → 0.1.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/README.md +33 -42
- package/dist/index.cjs +14067 -17
- package/dist/index.d.cts +3115 -0
- package/dist/index.d.mts +3115 -0
- package/dist/index.d.ts +3115 -0
- package/dist/index.js +869 -17
- package/dist/index.mjs +13861 -614
- package/package.json +59 -28
- package/types/app.d.ts +0 -63
- package/types/container.d.ts +0 -13
- package/types/create-app.d.ts +0 -3
- package/types/index.d.ts +0 -4
- package/types/material.d.ts +0 -24
- package/types/node.d.ts +0 -4
- package/types/options.d.ts +0 -7
- package/types/plugin.d.ts +0 -6
- package/types/plugins/index.d.ts +0 -1
- package/types/plugins/renderer2d.d.ts +0 -1
- package/types/query.d.ts +0 -4
- package/types/render.d.ts +0 -13
- package/types/setup.d.ts +0 -2
- package/types/shape.d.ts +0 -12
- package/types/system.d.ts +0 -5
- package/types/texture.d.ts +0 -7
- package/types/utils.d.ts +0 -11
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,3115 @@
|
|
|
1
|
+
import { Visibility, Overflow, FontWeight, FontStyle, FontKerning, TextWrap, TextAlign, VerticalAlign, TextTransform, TextDecoration, WritingMode, IDOCTextContent, IDOCStyleDeclaration } from 'modern-idoc';
|
|
2
|
+
import { AnyColor, Colord } from 'colord';
|
|
3
|
+
import { AnimationItem } from 'lottie-web';
|
|
4
|
+
import { MeasureResult } from 'modern-text';
|
|
5
|
+
import { Font } from 'modern-font';
|
|
6
|
+
|
|
7
|
+
interface CssFunctionArg {
|
|
8
|
+
unit: string | null;
|
|
9
|
+
value: string;
|
|
10
|
+
intValue: number;
|
|
11
|
+
normalizedIntValue: number;
|
|
12
|
+
normalizedDefaultIntValue: number;
|
|
13
|
+
}
|
|
14
|
+
interface CssFunction {
|
|
15
|
+
name: string;
|
|
16
|
+
args: CssFunctionArg[];
|
|
17
|
+
}
|
|
18
|
+
interface ParseArgumentContext {
|
|
19
|
+
index?: number;
|
|
20
|
+
fontSize?: number;
|
|
21
|
+
width?: number;
|
|
22
|
+
height?: number;
|
|
23
|
+
}
|
|
24
|
+
declare function getDefaultCssPropertyValue<T extends CssFunctionArg | CssFunction[]>(value: T): T;
|
|
25
|
+
declare function parseCssProperty(name: string, propertyValue: string, context?: ParseArgumentContext): CssFunctionArg | CssFunction[];
|
|
26
|
+
declare function parseCssFunctions(propertyValue: string, context?: ParseArgumentContext): CssFunction[];
|
|
27
|
+
|
|
28
|
+
declare const SUPPORTS_WEBGL2: boolean;
|
|
29
|
+
declare const SUPPORTS_IMAGE_BITMAP: boolean;
|
|
30
|
+
declare const SUPPORTS_RESIZE_OBSERVER: boolean;
|
|
31
|
+
declare const SUPPORTS_POINTER_EVENTS: boolean;
|
|
32
|
+
declare const SUPPORTS_WHEEL_EVENTS: boolean;
|
|
33
|
+
declare const SUPPORTS_MOUSE_EVENTS: boolean;
|
|
34
|
+
declare const SUPPORTS_TOUCH_EVENTS: boolean;
|
|
35
|
+
declare const SUPPORTS_CLICK_EVENTS: boolean;
|
|
36
|
+
declare const SUPPORTS_CREATE_IMAGE_BITMAP: boolean;
|
|
37
|
+
declare const SUPPORTS_AUDIO_CONTEXT: boolean;
|
|
38
|
+
declare const SUPPORTS_WEBKIT_AUDIO_CONTEXT: boolean;
|
|
39
|
+
declare const SUPPORTS_OFFLINE_AUDIO_CONTEXT: boolean;
|
|
40
|
+
declare const SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT: boolean;
|
|
41
|
+
declare const SUPPORTS_WEB_AUDIO: boolean;
|
|
42
|
+
declare const IN_BROWSER: boolean;
|
|
43
|
+
declare const DEVICE_PIXEL_RATIO: number;
|
|
44
|
+
declare const isElementNode: (node: unknown) => node is Element;
|
|
45
|
+
declare const isVideoElement: (node: unknown) => node is HTMLVideoElement;
|
|
46
|
+
declare const isImageElement: (node: unknown) => node is HTMLImageElement;
|
|
47
|
+
declare function isCanvasElement(node: unknown): node is HTMLCanvasElement;
|
|
48
|
+
declare function isWebgl2(gl: unknown): gl is WebGL2RenderingContext;
|
|
49
|
+
declare function createHTMLCanvas(): HTMLCanvasElement | undefined;
|
|
50
|
+
declare function determineCrossOrigin(url: string, loc?: Location): string;
|
|
51
|
+
declare function crossOrigin(element: HTMLImageElement | HTMLVideoElement, url: string, crossorigin: boolean | string | null): void;
|
|
52
|
+
|
|
53
|
+
type EventListenerValue = (...args: any[]) => void;
|
|
54
|
+
type EventListenerOptions = boolean | AddEventListenerOptions;
|
|
55
|
+
interface EventListener {
|
|
56
|
+
value: EventListenerValue;
|
|
57
|
+
options?: EventListenerOptions;
|
|
58
|
+
}
|
|
59
|
+
declare class EventEmitter {
|
|
60
|
+
eventListeners: Map<string, EventListener | EventListener[]>;
|
|
61
|
+
removeAllListeners(): this;
|
|
62
|
+
hasEventListener(event: string): boolean;
|
|
63
|
+
on(type: string, listener: EventListenerValue, options?: EventListenerOptions): any;
|
|
64
|
+
once(type: string, listener: EventListenerValue): this;
|
|
65
|
+
off(type: string, listener: EventListenerValue, options?: EventListenerOptions): this;
|
|
66
|
+
emit(type: string, ...args: any[]): boolean;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
declare const PI: number;
|
|
70
|
+
declare const PI_2: number;
|
|
71
|
+
declare function uid(object?: Record<string, any>): number;
|
|
72
|
+
declare function isPow2(v: number): boolean;
|
|
73
|
+
|
|
74
|
+
interface CustomNodeOptions {
|
|
75
|
+
tag: string;
|
|
76
|
+
renderable?: boolean;
|
|
77
|
+
}
|
|
78
|
+
declare const customNodes: Map<string, any>;
|
|
79
|
+
declare function customNode(tag: string): ClassDecorator;
|
|
80
|
+
declare function customNode(options: CustomNodeOptions): ClassDecorator;
|
|
81
|
+
|
|
82
|
+
interface PropertyDeclaration {
|
|
83
|
+
readonly default?: any;
|
|
84
|
+
readonly protected?: boolean;
|
|
85
|
+
readonly alias?: string;
|
|
86
|
+
}
|
|
87
|
+
declare function getDeclarations(constructor: any): Map<PropertyKey, PropertyDeclaration>;
|
|
88
|
+
declare function defineProperty(constructor: any, name: PropertyKey, declaration?: PropertyDeclaration): void;
|
|
89
|
+
declare function property(options?: PropertyDeclaration): PropertyDecorator;
|
|
90
|
+
declare function protectedProperty(options?: Omit<PropertyDeclaration, 'protected'>): PropertyDecorator;
|
|
91
|
+
|
|
92
|
+
interface _ObjectEventMap {
|
|
93
|
+
updateProperty: (key: PropertyKey, newValue: any, oldValue: any, declaration?: PropertyDeclaration) => void;
|
|
94
|
+
}
|
|
95
|
+
interface _Object {
|
|
96
|
+
on: (<K extends keyof _ObjectEventMap>(type: K, listener: _ObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
97
|
+
off: (<K extends keyof _ObjectEventMap>(type: K, listener: _ObjectEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
98
|
+
emit: (<K extends keyof _ObjectEventMap>(type: K, ...args: Parameters<_ObjectEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Object 是所有 Godot 类的根类。
|
|
102
|
+
* 它提供了基础的功能,如内存管理、信号(signals)机制、实例化和对象生命周期等。
|
|
103
|
+
*
|
|
104
|
+
* 功能和用途:
|
|
105
|
+
* • 所有的类都继承自 Object,这使得 Godot 中的所有对象都能共享一些基础的功能。
|
|
106
|
+
* • 提供了内存管理功能,例如销毁对象。
|
|
107
|
+
* • 支持信号机制,允许对象间进行通信。
|
|
108
|
+
* • 支持对象的序列化和保存。
|
|
109
|
+
*/
|
|
110
|
+
declare class _Object extends EventEmitter {
|
|
111
|
+
readonly instanceId: number;
|
|
112
|
+
protected _defaultProperties?: Record<PropertyKey, any>;
|
|
113
|
+
protected _updatedProperties: Map<PropertyKey, unknown>;
|
|
114
|
+
protected _changedProperties: Set<PropertyKey>;
|
|
115
|
+
protected _updatePending: Promise<void>;
|
|
116
|
+
protected _isUpdatePending: boolean;
|
|
117
|
+
protected _enqueueUpdate(): Promise<void>;
|
|
118
|
+
protected _performUpdate(): void;
|
|
119
|
+
protected _onUpdate(changed: Map<PropertyKey, unknown>): void;
|
|
120
|
+
protected _onUpdateProperty(key: PropertyKey, newValue: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
121
|
+
isDirty(key: string): boolean;
|
|
122
|
+
getPropertyDeclarations(): Map<PropertyKey, PropertyDeclaration>;
|
|
123
|
+
getPropertyDeclaration(key: PropertyKey): PropertyDeclaration | undefined;
|
|
124
|
+
getDefaultProperties(): Record<PropertyKey, any>;
|
|
125
|
+
getProperty(key: PropertyKey): any | undefined;
|
|
126
|
+
setProperty(key: PropertyKey, value: any): this;
|
|
127
|
+
getProperties(keys?: PropertyKey[]): Record<PropertyKey, any>;
|
|
128
|
+
setProperties(properties?: Record<PropertyKey, any>): this;
|
|
129
|
+
requestUpdate(key?: PropertyKey, oldValue?: unknown, declaration?: PropertyDeclaration): void;
|
|
130
|
+
toJSON(): Record<string, any>;
|
|
131
|
+
destroy(): void;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
declare abstract class Renderer {
|
|
135
|
+
view?: HTMLCanvasElement;
|
|
136
|
+
pixelRatio: number;
|
|
137
|
+
readonly screen: {
|
|
138
|
+
x: number;
|
|
139
|
+
y: number;
|
|
140
|
+
width: number;
|
|
141
|
+
height: number;
|
|
142
|
+
};
|
|
143
|
+
readonly related: WeakMap<object, any>;
|
|
144
|
+
getRelated<T>(source: object, createFn?: () => T): T;
|
|
145
|
+
resize(width: number, height: number, updateStyle?: boolean): void;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
type WebGLBufferTarget = 'array_buffer' | 'element_array_buffer';
|
|
149
|
+
interface WebGLBufferOptions {
|
|
150
|
+
target?: WebGLBufferTarget;
|
|
151
|
+
usage?: WebGLBufferUsage;
|
|
152
|
+
data: BufferSource | number[] | null;
|
|
153
|
+
}
|
|
154
|
+
type WebGLBufferUsage = 'static_draw' | 'dynamic_draw';
|
|
155
|
+
interface WebGLBufferMeta {
|
|
156
|
+
id: number;
|
|
157
|
+
target?: WebGLBufferTarget;
|
|
158
|
+
usage?: WebGLBufferUsage;
|
|
159
|
+
length: number;
|
|
160
|
+
byteLength: number;
|
|
161
|
+
bytesPerElement: number;
|
|
162
|
+
}
|
|
163
|
+
type WebGLDrawMode = 'points' | 'line_strip' | 'line_loop' | 'lines' | 'triangle_strip' | 'triangle_fan' | 'triangles';
|
|
164
|
+
interface WebGLDrawOptions {
|
|
165
|
+
mode?: WebGLDrawMode;
|
|
166
|
+
count?: number;
|
|
167
|
+
first?: number;
|
|
168
|
+
bytesPerElement?: number;
|
|
169
|
+
instanceCount?: number;
|
|
170
|
+
}
|
|
171
|
+
interface WebGLExtensions {
|
|
172
|
+
loseContext?: WEBGL_lose_context | null;
|
|
173
|
+
anisotropicFiltering?: EXT_texture_filter_anisotropic | null;
|
|
174
|
+
floatTextureLinear?: OES_texture_float_linear | null;
|
|
175
|
+
s3tc?: WEBGL_compressed_texture_s3tc | null;
|
|
176
|
+
s3tcSRGB?: WEBGL_compressed_texture_s3tc_srgb | null;
|
|
177
|
+
etc?: WEBGL_compressed_texture_etc | null;
|
|
178
|
+
etc1?: WEBGL_compressed_texture_etc1 | null;
|
|
179
|
+
pvrtc?: any | null;
|
|
180
|
+
atc?: any | null;
|
|
181
|
+
astc?: WEBGL_compressed_texture_astc | null;
|
|
182
|
+
instancedArrays?: ANGLE_instanced_arrays | null;
|
|
183
|
+
drawBuffers?: WEBGL_draw_buffers | null;
|
|
184
|
+
depthTexture?: WEBGL_depth_texture | null;
|
|
185
|
+
vertexArrayObject?: OES_vertex_array_object | null;
|
|
186
|
+
uint32ElementIndex?: OES_element_index_uint | null;
|
|
187
|
+
floatTexture?: OES_texture_float | null;
|
|
188
|
+
textureHalfFloat?: OES_texture_half_float | null;
|
|
189
|
+
textureHalfFloatLinear?: OES_texture_half_float_linear | null;
|
|
190
|
+
colorBufferFloat?: EXT_color_buffer_float | null;
|
|
191
|
+
}
|
|
192
|
+
interface WebGLFramebufferOptions {
|
|
193
|
+
width: number;
|
|
194
|
+
height: number;
|
|
195
|
+
mipLevel?: number;
|
|
196
|
+
stencil?: boolean;
|
|
197
|
+
depth?: boolean;
|
|
198
|
+
depthTexture?: WebGLTexture | null;
|
|
199
|
+
colorTextures?: WebGLTexture[];
|
|
200
|
+
}
|
|
201
|
+
interface WebGLFramebufferMeta extends Required<WebGLFramebufferOptions> {
|
|
202
|
+
multisample: number;
|
|
203
|
+
stencilBuffer?: WebGLBuffer | null;
|
|
204
|
+
msaaBuffer?: WebGLBuffer | null;
|
|
205
|
+
}
|
|
206
|
+
type Pick<T> = T extends string ? T extends Uppercase<T> ? Lowercase<T> : never : never;
|
|
207
|
+
type WebGLTarget = Pick<keyof WebGL2RenderingContext>;
|
|
208
|
+
interface WebGLProgramMeta {
|
|
209
|
+
attributes: Map<string, {
|
|
210
|
+
type: WebGLTarget;
|
|
211
|
+
size: number;
|
|
212
|
+
name: string;
|
|
213
|
+
location: number;
|
|
214
|
+
}>;
|
|
215
|
+
uniforms: Map<string, {
|
|
216
|
+
index: number;
|
|
217
|
+
type: WebGLTarget;
|
|
218
|
+
size: number;
|
|
219
|
+
isArray: boolean;
|
|
220
|
+
name: string;
|
|
221
|
+
location: WebGLUniformLocation | null;
|
|
222
|
+
}>;
|
|
223
|
+
boundUniforms: WeakMap<object, any>;
|
|
224
|
+
}
|
|
225
|
+
interface WebGLProgramOptions {
|
|
226
|
+
vert: string;
|
|
227
|
+
frag: string;
|
|
228
|
+
}
|
|
229
|
+
type WebGLTextureFilterMode = 'linear' | 'nearest' | 'nearest_mipmap_nearest' | 'linear_mipmap_nearest' | 'nearest_mipmap_linear' | 'linear_mipmap_linear';
|
|
230
|
+
type WebGLTextureLocation = number;
|
|
231
|
+
interface WebGLTextureMeta extends Omit<WebGLTextureOptions, 'value'> {
|
|
232
|
+
}
|
|
233
|
+
interface WebGLTextureOptions {
|
|
234
|
+
value: WebGLTextureSource;
|
|
235
|
+
target?: WebGLTextureTarget;
|
|
236
|
+
location?: WebGLTextureLocation;
|
|
237
|
+
filterMode?: WebGLTextureFilterMode;
|
|
238
|
+
wrapMode?: WebGLTextureWrapMode;
|
|
239
|
+
anisoLevel?: number;
|
|
240
|
+
}
|
|
241
|
+
type WebGLTextureSource = TexImageSource | null | {
|
|
242
|
+
width: number;
|
|
243
|
+
height: number;
|
|
244
|
+
pixels: ArrayBufferView | null;
|
|
245
|
+
};
|
|
246
|
+
type WebGLTextureTarget = 'texture_2d' | 'texture_cube_map';
|
|
247
|
+
type WebGLTextureWrapMode = 'repeat' | 'clamp_to_edge' | 'mirrored_repeat';
|
|
248
|
+
interface WebGLVertexArrayObjectMeta {
|
|
249
|
+
attributes: Record<string, WebGLVertexAttrib>;
|
|
250
|
+
elementArrayBuffer: WebGLBuffer | null;
|
|
251
|
+
}
|
|
252
|
+
interface WebGLVertexArrayObjectOptions {
|
|
253
|
+
attributes?: Record<string, WebGLBuffer | WebGLVertexAttrib>;
|
|
254
|
+
elementArrayBuffer?: WebGLBuffer | null;
|
|
255
|
+
}
|
|
256
|
+
type WebGLVertexAttribType = 'float' | 'unsigned_byte' | 'unsigned_short';
|
|
257
|
+
interface WebGLVertexAttrib {
|
|
258
|
+
buffer: WebGLBuffer;
|
|
259
|
+
enable?: boolean;
|
|
260
|
+
size?: number;
|
|
261
|
+
type?: WebGLVertexAttribType;
|
|
262
|
+
normalized?: boolean;
|
|
263
|
+
stride?: number;
|
|
264
|
+
offset?: number;
|
|
265
|
+
divisor?: number;
|
|
266
|
+
}
|
|
267
|
+
interface WebGLViewport {
|
|
268
|
+
x: number;
|
|
269
|
+
y: number;
|
|
270
|
+
width: number;
|
|
271
|
+
height: number;
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
interface WebGLRenderer {
|
|
275
|
+
texture: WebGLTextureModule;
|
|
276
|
+
buffer: WebGLBufferModule;
|
|
277
|
+
framebuffer: WebGLFramebufferModule;
|
|
278
|
+
program: WebGLProgramModule;
|
|
279
|
+
vertexArray: WebGLVertexArrayModule;
|
|
280
|
+
viewport: WebGLViewportModule;
|
|
281
|
+
state: WebGLStateModule;
|
|
282
|
+
mask: WebGLMaskModule;
|
|
283
|
+
scissor: WebGLScissorModule;
|
|
284
|
+
stencil: WebGLStencilModule;
|
|
285
|
+
batch2D: WebGLBatch2DModule;
|
|
286
|
+
}
|
|
287
|
+
declare class WebGLRenderer extends Renderer {
|
|
288
|
+
gl: WebGLRenderingContext | WebGL2RenderingContext;
|
|
289
|
+
version: 1 | 2;
|
|
290
|
+
extensions: WebGLExtensions;
|
|
291
|
+
protected _modules: (WebGLTextureModule | WebGLBufferModule | WebGLFramebufferModule | WebGLProgramModule | WebGLVertexArrayModule | WebGLViewportModule | WebGLStateModule | WebGLMaskModule | WebGLScissorModule | WebGLStencilModule | WebGLBatch2DModule)[];
|
|
292
|
+
readonly bindPoints: Map<number, WebGLTarget>;
|
|
293
|
+
constructor(view?: HTMLCanvasElement | WebGLRenderingContext | WebGL2RenderingContext, options?: WebGLContextAttributes);
|
|
294
|
+
protected _setupContext(view: HTMLCanvasElement, options?: WebGLContextAttributes): this;
|
|
295
|
+
/**
|
|
296
|
+
* Setup extensions
|
|
297
|
+
*
|
|
298
|
+
* @protected
|
|
299
|
+
*/
|
|
300
|
+
protected _setupExtensions(): this;
|
|
301
|
+
/**
|
|
302
|
+
* Setup bind points
|
|
303
|
+
*
|
|
304
|
+
* @protected
|
|
305
|
+
*/
|
|
306
|
+
protected _setupBindPoints(): this;
|
|
307
|
+
/**
|
|
308
|
+
* Setup polyfill
|
|
309
|
+
*
|
|
310
|
+
* @protected
|
|
311
|
+
*/
|
|
312
|
+
protected _setupPolyfill(): this;
|
|
313
|
+
protected _onContextLost(event: WebGLContextEvent): void;
|
|
314
|
+
protected _onContextRestored(): void;
|
|
315
|
+
getBindPoint(target: WebGLTarget): number;
|
|
316
|
+
clear(mask?: number): void;
|
|
317
|
+
draw(options?: WebGLDrawOptions): void;
|
|
318
|
+
reset(): void;
|
|
319
|
+
flush(): void;
|
|
320
|
+
destroy(): void;
|
|
321
|
+
toPixels(): Uint8ClampedArray;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
interface Renderable {
|
|
325
|
+
render: (renderer: WebGLRenderer) => void;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
declare enum WebGLBlendMode {
|
|
329
|
+
NORMAL = "normal",
|
|
330
|
+
ADD = "add",
|
|
331
|
+
MULTIPLY = "multiply",
|
|
332
|
+
SCREEN = "screen",
|
|
333
|
+
NONE = "none",
|
|
334
|
+
NORMAL_NPM = "normal_npm",
|
|
335
|
+
ADD_NPM = "add_npm",
|
|
336
|
+
SCREEN_NPM = "screen_npm",
|
|
337
|
+
SRC_IN = "src_in",
|
|
338
|
+
SRC_OUT = "src_out",
|
|
339
|
+
SRC_ATOP = "src_atop",
|
|
340
|
+
DST_OVER = "dst_over",
|
|
341
|
+
DST_IN = "dst_in",
|
|
342
|
+
DST_OUT = "dst_out",
|
|
343
|
+
DST_ATOP = "dst_atop",
|
|
344
|
+
XOR = "xor",
|
|
345
|
+
SUBTRACT = "subtract"
|
|
346
|
+
}
|
|
347
|
+
declare function mapWebGLBlendModes(gl: WebGLRenderingContext): Record<WebGLBlendMode, any>;
|
|
348
|
+
|
|
349
|
+
declare abstract class WebGLModule {
|
|
350
|
+
protected _renderer: WebGLRenderer;
|
|
351
|
+
get gl(): WebGLRenderingContext | WebGL2RenderingContext;
|
|
352
|
+
install(renderer: WebGLRenderer): void;
|
|
353
|
+
onUpdateContext(): void;
|
|
354
|
+
flush(): void;
|
|
355
|
+
reset(): void;
|
|
356
|
+
destroy(): void;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
interface WebGLState {
|
|
360
|
+
blend: boolean;
|
|
361
|
+
offsets: boolean;
|
|
362
|
+
culling: boolean;
|
|
363
|
+
depthTest: boolean;
|
|
364
|
+
clockwiseFrontFace: boolean;
|
|
365
|
+
depthMask: boolean;
|
|
366
|
+
}
|
|
367
|
+
declare class WebGLState {
|
|
368
|
+
static readonly _properties: string[];
|
|
369
|
+
static _init(): void;
|
|
370
|
+
static for2D(): WebGLState;
|
|
371
|
+
protected _blendMode: WebGLBlendMode;
|
|
372
|
+
protected _polygonOffset: number;
|
|
373
|
+
bitmap: number;
|
|
374
|
+
get blendMode(): WebGLBlendMode;
|
|
375
|
+
set blendMode(value: WebGLBlendMode);
|
|
376
|
+
get polygonOffset(): number;
|
|
377
|
+
set polygonOffset(value: number);
|
|
378
|
+
constructor(options?: {
|
|
379
|
+
blend?: boolean;
|
|
380
|
+
offsets?: boolean;
|
|
381
|
+
culling?: boolean;
|
|
382
|
+
depthTest?: boolean;
|
|
383
|
+
clockwiseFrontFace?: boolean;
|
|
384
|
+
depthMask?: boolean;
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
declare class WebGLStateModule extends WebGLModule {
|
|
388
|
+
install(renderer: WebGLRenderer): void;
|
|
389
|
+
protected _blendEq: boolean;
|
|
390
|
+
protected _setters: any[];
|
|
391
|
+
boundStateBitmap: number;
|
|
392
|
+
boundBlendMode?: string;
|
|
393
|
+
blendModes: Record<WebGLBlendMode, any>;
|
|
394
|
+
defaultState: WebGLState;
|
|
395
|
+
onUpdateContext(): void;
|
|
396
|
+
toggle(boundPoint: number, enable: boolean): void;
|
|
397
|
+
setBlend(value: boolean): void;
|
|
398
|
+
setOffsets(value: boolean): void;
|
|
399
|
+
setCulling(value: boolean): void;
|
|
400
|
+
setDepthTest(value: boolean): void;
|
|
401
|
+
setDepthMask(value: boolean): void;
|
|
402
|
+
setClockwiseFrontFace(value: boolean): void;
|
|
403
|
+
setBlendMode(value: WebGLBlendMode): void;
|
|
404
|
+
setPolygonOffset(value: number, scale: number): void;
|
|
405
|
+
bind(state: WebGLState): void;
|
|
406
|
+
reset(): void;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
interface Batchable2D {
|
|
410
|
+
vertices: number[];
|
|
411
|
+
indices: number[];
|
|
412
|
+
uvs?: number[];
|
|
413
|
+
texture?: WebGLTexture;
|
|
414
|
+
backgroundColor?: number;
|
|
415
|
+
tint?: number;
|
|
416
|
+
colorMatrix?: ArrayLike<number>;
|
|
417
|
+
colorMatrixOffset?: ArrayLike<number>;
|
|
418
|
+
blendMode?: WebGLBlendMode;
|
|
419
|
+
}
|
|
420
|
+
interface Shader {
|
|
421
|
+
update: (attributeBuffer: ArrayBuffer, indexBuffer: Uint16Array) => void;
|
|
422
|
+
draw: (options?: WebGLDrawOptions) => void;
|
|
423
|
+
}
|
|
424
|
+
declare class WebGLBatch2DModule extends WebGLModule {
|
|
425
|
+
install(renderer: WebGLRenderer): void;
|
|
426
|
+
protected _state: WebGLState;
|
|
427
|
+
protected _batchSize: number;
|
|
428
|
+
protected _vertexSize: number;
|
|
429
|
+
protected _drawCallUid: number;
|
|
430
|
+
protected _defaultTint: number;
|
|
431
|
+
protected _defaultBackgroundColor: number;
|
|
432
|
+
protected _defaultColorMatrixOffset: number[];
|
|
433
|
+
protected _defaultColorMatrix: number[];
|
|
434
|
+
protected _batchables: Batchable2D[];
|
|
435
|
+
protected _vertexCount: number;
|
|
436
|
+
protected _indexCount: number;
|
|
437
|
+
protected _attributeBuffer: ArrayBuffer[];
|
|
438
|
+
protected _indexBuffers: Uint16Array[];
|
|
439
|
+
protected _shaders: Map<number, Shader>;
|
|
440
|
+
protected _attributes: Record<string, Partial<WebGLVertexAttrib>>;
|
|
441
|
+
protected _getShader(maxTextureUnits: number): Shader;
|
|
442
|
+
protected _createShader(maxTextureUnits: number): Shader;
|
|
443
|
+
render(batchable: Batchable2D): void;
|
|
444
|
+
flush(): void;
|
|
445
|
+
/**
|
|
446
|
+
* Fetches an attribute buffer from `this._attributeBuffer` that can hold atleast `size` floats.
|
|
447
|
+
* @param size - minimum capacity required
|
|
448
|
+
* @returns - buffer than can hold atleast `size` floats
|
|
449
|
+
*/
|
|
450
|
+
protected _getAttributeBuffer(size: number): ArrayBuffer;
|
|
451
|
+
/**
|
|
452
|
+
* Fetches an index buffer from `this._indexBuffers` that can
|
|
453
|
+
* have at least `size` capacity.
|
|
454
|
+
* @param size - minimum required capacity
|
|
455
|
+
* @returns - buffer that can fit `size` indices.
|
|
456
|
+
*/
|
|
457
|
+
protected _getIndexBuffer(size: number): Uint16Array;
|
|
458
|
+
}
|
|
459
|
+
/**
|
|
460
|
+
* Rounds to next power of two.
|
|
461
|
+
* @param {number} v - input value
|
|
462
|
+
* @returns {number} - next rounded power of two
|
|
463
|
+
*/
|
|
464
|
+
declare function nextPow2(v: number): number;
|
|
465
|
+
/**
|
|
466
|
+
* Computes ceil of log base 2
|
|
467
|
+
* @param {number} v - input value
|
|
468
|
+
* @returns {number} logarithm base 2
|
|
469
|
+
*/
|
|
470
|
+
declare function log2(v: number): number;
|
|
471
|
+
|
|
472
|
+
declare class WebGLBufferModule extends WebGLModule {
|
|
473
|
+
install(renderer: WebGLRenderer): void;
|
|
474
|
+
boundArrayBuffer: WebGLBuffer | null;
|
|
475
|
+
boundTarget: WebGLBufferTarget;
|
|
476
|
+
create(options?: WebGLBufferOptions): WebGLBuffer;
|
|
477
|
+
getMeta(buffer: WebGLBuffer): WebGLBufferMeta;
|
|
478
|
+
update(options: WebGLBufferOptions): void;
|
|
479
|
+
update(buffer: WebGLBuffer, options: WebGLBufferOptions): void;
|
|
480
|
+
bind(options: {
|
|
481
|
+
target?: WebGLBufferTarget;
|
|
482
|
+
value: WebGLBuffer | null;
|
|
483
|
+
}): void;
|
|
484
|
+
unbind(target: WebGLBufferTarget): void;
|
|
485
|
+
reset(): void;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
declare class WebGLFramebufferModule extends WebGLModule {
|
|
489
|
+
install(renderer: WebGLRenderer): void;
|
|
490
|
+
boundFramebuffer: WebGLFramebuffer | null;
|
|
491
|
+
protected _msaaSamples: number[];
|
|
492
|
+
protected _hasMRT: boolean;
|
|
493
|
+
protected _writeDepthTexture: boolean;
|
|
494
|
+
onUpdateContext(): void;
|
|
495
|
+
create(options?: WebGLFramebufferOptions): WebGLFramebuffer;
|
|
496
|
+
getMeta(framebuffer: WebGLFramebuffer): WebGLFramebufferMeta;
|
|
497
|
+
update(options: WebGLFramebufferOptions): void;
|
|
498
|
+
update(framebuffer: WebGLFramebuffer, options: WebGLFramebufferOptions): void;
|
|
499
|
+
protected _getAttachmentAndFormat(meta: WebGLFramebufferMeta): {
|
|
500
|
+
attachment: number;
|
|
501
|
+
format: number;
|
|
502
|
+
};
|
|
503
|
+
resize(framebuffer: WebGLFramebuffer, width: number, height: number): void;
|
|
504
|
+
bind(framebuffer: WebGLFramebuffer | null): void;
|
|
505
|
+
forceStencil(): void;
|
|
506
|
+
reset(): void;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
type MaskColor = number;
|
|
510
|
+
interface MaskRect {
|
|
511
|
+
x: number;
|
|
512
|
+
y: number;
|
|
513
|
+
width: number;
|
|
514
|
+
height: number;
|
|
515
|
+
}
|
|
516
|
+
type MaskObject = Renderable;
|
|
517
|
+
type Maskable = MaskColor | MaskRect | MaskObject;
|
|
518
|
+
interface MaskData {
|
|
519
|
+
source: Renderable;
|
|
520
|
+
mask: Maskable;
|
|
521
|
+
color?: number;
|
|
522
|
+
preComputedColor?: number;
|
|
523
|
+
scissorCounter?: number;
|
|
524
|
+
stencilCounter?: number;
|
|
525
|
+
}
|
|
526
|
+
declare class WebGLMaskModule extends WebGLModule {
|
|
527
|
+
install(renderer: WebGLRenderer): void;
|
|
528
|
+
stack: MaskData[];
|
|
529
|
+
get length(): number;
|
|
530
|
+
get last(): MaskData;
|
|
531
|
+
push(source: Renderable, mask: Maskable): void;
|
|
532
|
+
pop(source: Renderable): void;
|
|
533
|
+
pushColorMask(data: MaskData): void;
|
|
534
|
+
popColorMask(data: MaskData): void;
|
|
535
|
+
useColorMask(value: number): void;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
declare class WebGLProgramModule extends WebGLModule {
|
|
539
|
+
install(renderer: WebGLRenderer): void;
|
|
540
|
+
boundProgram: WebGLProgram | null;
|
|
541
|
+
uniforms: Record<string, any>;
|
|
542
|
+
create(options?: WebGLProgramOptions): WebGLProgram;
|
|
543
|
+
getMeta(program: WebGLProgram): WebGLProgramMeta;
|
|
544
|
+
update(options: WebGLProgramOptions): void;
|
|
545
|
+
update(program: WebGLProgram, options: WebGLProgramOptions): void;
|
|
546
|
+
bind(program: WebGLProgram | null): void;
|
|
547
|
+
createShader(source: string, type: 'vertex_shader' | 'fragment_shader'): WebGLShader;
|
|
548
|
+
updateUniforms(program: WebGLProgram, uniforms: Record<string, any>): void;
|
|
549
|
+
updateUniforms(uniforms: Record<string, any>): void;
|
|
550
|
+
reset(): void;
|
|
551
|
+
destroy(): void;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
declare class WebGLScissorModule extends WebGLModule {
|
|
555
|
+
install(renderer: WebGLRenderer): void;
|
|
556
|
+
get length(): number;
|
|
557
|
+
push(data: MaskData): void;
|
|
558
|
+
pop(_data: MaskData): void;
|
|
559
|
+
use(): void;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
declare class WebGLStencilModule extends WebGLModule {
|
|
563
|
+
install(renderer: WebGLRenderer): void;
|
|
564
|
+
get length(): number;
|
|
565
|
+
push(data: MaskData): void;
|
|
566
|
+
pop(data: MaskData): void;
|
|
567
|
+
use(): void;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
declare class WebGLTextureModule extends WebGLModule {
|
|
571
|
+
install(renderer: WebGLRenderer): void;
|
|
572
|
+
maxUnits: number;
|
|
573
|
+
boundLocation: WebGLTextureLocation;
|
|
574
|
+
boundTarget: WebGLTextureTarget;
|
|
575
|
+
boundTextures: Record<WebGLTextureTarget, WebGLTexture | null>[];
|
|
576
|
+
emptyTextures: Record<WebGLTextureTarget, WebGLTexture | null>;
|
|
577
|
+
onUpdateContext(): void;
|
|
578
|
+
create(options?: WebGLTextureOptions): WebGLTexture;
|
|
579
|
+
getMeta(texture: WebGLTexture): WebGLTextureMeta;
|
|
580
|
+
update(options: WebGLTextureOptions): void;
|
|
581
|
+
update(texture: WebGLTexture, options: WebGLTextureOptions): void;
|
|
582
|
+
bind(texture: {
|
|
583
|
+
location?: WebGLTextureLocation;
|
|
584
|
+
forceUpdateLocation?: boolean;
|
|
585
|
+
target?: WebGLTextureTarget;
|
|
586
|
+
value: WebGLTexture | null;
|
|
587
|
+
} | null): void;
|
|
588
|
+
unbind(location: number, target?: WebGLTextureTarget): void;
|
|
589
|
+
unbind(texture: WebGLTexture): void;
|
|
590
|
+
reset(): void;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
declare class WebGLVertexArrayModule extends WebGLModule {
|
|
594
|
+
install(renderer: WebGLRenderer): void;
|
|
595
|
+
boundVertexArrayNull: WebGLVertexArrayObjectMeta;
|
|
596
|
+
boundVertexArrayObject: WebGLVertexArrayObject | null;
|
|
597
|
+
boundVertexArray: WebGLVertexArrayObjectMeta;
|
|
598
|
+
enableVertexAttrib(key: string, location: number, attrib: WebGLVertexAttrib, dimension?: number): void;
|
|
599
|
+
create(options?: WebGLVertexArrayObjectOptions): WebGLVertexArrayObject | null;
|
|
600
|
+
create(program?: WebGLProgram, options?: WebGLVertexArrayObjectOptions): WebGLVertexArrayObject | null;
|
|
601
|
+
getVertexArrayMeta(vertexArray: WebGLVertexArrayObject): WebGLVertexArrayObjectMeta;
|
|
602
|
+
update(options: WebGLVertexArrayObjectOptions): void;
|
|
603
|
+
update(vertexArray: WebGLVertexArrayObject, options: WebGLVertexArrayObjectOptions): void;
|
|
604
|
+
update(program: WebGLProgram, vertexArray: WebGLVertexArrayObject, options: WebGLVertexArrayObjectOptions): void;
|
|
605
|
+
bind(vertexArrayObject: WebGLVertexArrayObject | null | WebGLVertexArrayObjectOptions): void;
|
|
606
|
+
unbind(): void;
|
|
607
|
+
reset(): void;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
declare class WebGLViewportModule extends WebGLModule {
|
|
611
|
+
install(renderer: WebGLRenderer): void;
|
|
612
|
+
boundViewport: WebGLViewport;
|
|
613
|
+
bind(viewport: WebGLViewport): void;
|
|
614
|
+
reset(): void;
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
interface ReferenceEventMap extends _ObjectEventMap {
|
|
618
|
+
}
|
|
619
|
+
interface Reference {
|
|
620
|
+
on: (<K extends keyof ReferenceEventMap>(type: K, listener: ReferenceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
621
|
+
off: (<K extends keyof ReferenceEventMap>(type: K, listener: ReferenceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
622
|
+
emit: (<K extends keyof ReferenceEventMap>(type: K, ...args: Parameters<ReferenceEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Reference 是 Object 的子类,提供了对对象的引用计数功能。
|
|
626
|
+
* 这使得它成为 Godot 中处理资源(如纹理、音频文件)和某些类的基础。
|
|
627
|
+
* 与普通对象不同,Reference 类的对象会进行引用计数,直到没有任何引用时才会被销毁。
|
|
628
|
+
*
|
|
629
|
+
* 功能和用途:
|
|
630
|
+
* • 提供自动内存管理,避免了内存泄漏。
|
|
631
|
+
* • 经常被用作 资源类(如 Resource 和其子类)和某些非节点类型的对象。
|
|
632
|
+
*/
|
|
633
|
+
declare class Reference extends _Object {
|
|
634
|
+
protected _refCount: number;
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
interface ResourceEventMap extends ReferenceEventMap {
|
|
638
|
+
}
|
|
639
|
+
interface Resource {
|
|
640
|
+
on: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
641
|
+
off: (<K extends keyof ResourceEventMap>(type: K, listener: ResourceEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
642
|
+
emit: (<K extends keyof ResourceEventMap>(type: K, ...args: Parameters<ResourceEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Resource 是继承自 Reference 的类,是所有资源类型的基类。
|
|
646
|
+
* 它用于存储各种可重用的资源,如纹理、材质、音效、脚本等。
|
|
647
|
+
* Resource 类的主要功能是为资源提供序列化和管理支持,使得这些资源能够被保存、加载和共享。
|
|
648
|
+
*
|
|
649
|
+
* 功能和用途:
|
|
650
|
+
* • 序列化支持:Resource 支持将资源序列化为文件并保存到磁盘,通常以 .tres 或 .res 格式存储。
|
|
651
|
+
* • 资源加载和引用:可以在多个地方引用同一个资源实例,资源本身是共享的。当一个 Resource 实例被加载时,它不会创建多个副本,而是通过引用计数来管理其生命周期。
|
|
652
|
+
* • 可重用性:资源是可以在多个场景中共享的,例如一个纹理资源可以在多个 Sprite 节点中使用,而不需要重新加载。
|
|
653
|
+
*/
|
|
654
|
+
declare class Resource extends Reference {
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
interface MaterialOptions {
|
|
658
|
+
vert?: string;
|
|
659
|
+
frag?: string;
|
|
660
|
+
uniforms?: Record<string, any>;
|
|
661
|
+
}
|
|
662
|
+
declare class Material extends Resource {
|
|
663
|
+
static instance: Material;
|
|
664
|
+
vert: string;
|
|
665
|
+
frag: string;
|
|
666
|
+
readonly uniforms: Map<string, any>;
|
|
667
|
+
constructor(options?: MaterialOptions);
|
|
668
|
+
/** @internal */
|
|
669
|
+
_glProgram(renderer: WebGLRenderer): WebGLProgram;
|
|
670
|
+
activate(renderer: WebGLRenderer, uniforms?: Record<string, any>): void;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
interface IndexBufferOptions {
|
|
674
|
+
data?: Uint16Array | null;
|
|
675
|
+
dynamic?: boolean;
|
|
676
|
+
}
|
|
677
|
+
declare class IndexBuffer extends Resource {
|
|
678
|
+
data: Uint16Array | null;
|
|
679
|
+
dynamic: boolean;
|
|
680
|
+
needsUpload: boolean;
|
|
681
|
+
constructor(options?: IndexBufferOptions);
|
|
682
|
+
/** @internal */
|
|
683
|
+
_glBufferOptions(): WebGLBufferOptions;
|
|
684
|
+
/** @internal */
|
|
685
|
+
_glBuffer(renderer: WebGLRenderer): WebGLBuffer;
|
|
686
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
687
|
+
upload(renderer: WebGLRenderer): boolean;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
interface VertexBufferOptions {
|
|
691
|
+
data?: BufferSource | null;
|
|
692
|
+
dynamic?: boolean;
|
|
693
|
+
}
|
|
694
|
+
declare class VertexBuffer extends Resource {
|
|
695
|
+
data: BufferSource | null;
|
|
696
|
+
dynamic: boolean;
|
|
697
|
+
needsUpload: boolean;
|
|
698
|
+
constructor(options?: VertexBufferOptions);
|
|
699
|
+
/** @internal */
|
|
700
|
+
_glBufferOptions(): WebGLBufferOptions;
|
|
701
|
+
/** @internal */
|
|
702
|
+
_glBuffer(renderer: WebGLRenderer): WebGLBuffer;
|
|
703
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
704
|
+
upload(renderer: WebGLRenderer): boolean;
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
interface VertexAttributeOptions {
|
|
708
|
+
buffer?: VertexBuffer;
|
|
709
|
+
size?: number;
|
|
710
|
+
normalized?: boolean;
|
|
711
|
+
type?: 'float' | 'unsigned_byte' | 'unsigned_short';
|
|
712
|
+
stride?: number;
|
|
713
|
+
offset?: number;
|
|
714
|
+
divisor?: number;
|
|
715
|
+
}
|
|
716
|
+
declare class VertexAttribute extends Resource {
|
|
717
|
+
buffer: VertexBuffer;
|
|
718
|
+
size: number;
|
|
719
|
+
normalized: boolean;
|
|
720
|
+
type: 'float' | 'unsigned_byte' | 'unsigned_short';
|
|
721
|
+
stride?: number;
|
|
722
|
+
offset?: number;
|
|
723
|
+
divisor?: number;
|
|
724
|
+
needsUpload: boolean;
|
|
725
|
+
constructor(options?: VertexAttributeOptions);
|
|
726
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
727
|
+
upload(): boolean;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
interface GeometryOptions {
|
|
731
|
+
vertexAttributes?: Record<string, VertexAttribute>;
|
|
732
|
+
indexBuffer?: IndexBuffer;
|
|
733
|
+
instanceCount?: number;
|
|
734
|
+
mode?: WebGLDrawMode;
|
|
735
|
+
}
|
|
736
|
+
declare class Geometry extends Resource {
|
|
737
|
+
vertexAttributes: Map<string, VertexAttribute>;
|
|
738
|
+
indexBuffer?: IndexBuffer;
|
|
739
|
+
instanceCount?: number;
|
|
740
|
+
mode: WebGLDrawMode;
|
|
741
|
+
protected _materialWeakMap: WeakMap<Material, Record<string, any>>;
|
|
742
|
+
constructor(options?: GeometryOptions);
|
|
743
|
+
/** @internal */
|
|
744
|
+
_glVertexArray(renderer: WebGLRenderer): WebGLVertexArrayObjectOptions;
|
|
745
|
+
/** @internal */
|
|
746
|
+
_glVertexArrayObject(renderer: WebGLRenderer, material: Material): WebGLVertexArrayObject | null;
|
|
747
|
+
draw(renderer: WebGLRenderer, material: Material, uniforms?: Record<string, any>): void;
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
declare class QuadGeometry extends Geometry {
|
|
751
|
+
constructor();
|
|
752
|
+
}
|
|
753
|
+
|
|
754
|
+
declare class UvMaterial extends Material {
|
|
755
|
+
protected static _instance: UvMaterial;
|
|
756
|
+
static get instance(): UvMaterial;
|
|
757
|
+
constructor();
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
declare class QuadUvGeometry extends Geometry {
|
|
761
|
+
protected static _instance: QuadUvGeometry;
|
|
762
|
+
static get instance(): QuadUvGeometry;
|
|
763
|
+
static draw(renderer: WebGLRenderer, material?: Material, uniforms?: Record<string, any>): void;
|
|
764
|
+
constructor();
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
declare class UvGeometry extends Geometry {
|
|
768
|
+
positionBuffer: VertexBuffer;
|
|
769
|
+
uvBuffer: VertexBuffer;
|
|
770
|
+
constructor();
|
|
771
|
+
update(vertices: Float32Array, uvs: Float32Array, indices: Uint16Array): this;
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
interface MainLoopEventMap extends _ObjectEventMap {
|
|
775
|
+
process: (delta: number) => void;
|
|
776
|
+
}
|
|
777
|
+
interface MainLoop {
|
|
778
|
+
on: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
779
|
+
off: (<K extends keyof MainLoopEventMap>(type: K, listener: MainLoopEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
780
|
+
emit: (<K extends keyof EventListenerOptions>(type: K, ...args: Parameters<EventListenerOptions[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
781
|
+
}
|
|
782
|
+
declare class MainLoop extends _Object {
|
|
783
|
+
fps: number;
|
|
784
|
+
speed: number;
|
|
785
|
+
protected _starting: boolean;
|
|
786
|
+
protected _nextDeltaTime: number;
|
|
787
|
+
get starting(): boolean;
|
|
788
|
+
get spf(): number;
|
|
789
|
+
constructor();
|
|
790
|
+
start(process: (delta: number) => void): this;
|
|
791
|
+
stop(): this;
|
|
792
|
+
protected _onNextTick(): void;
|
|
793
|
+
}
|
|
794
|
+
|
|
795
|
+
interface RenderCall {
|
|
796
|
+
renderable: Node;
|
|
797
|
+
fn: (renderer: WebGLRenderer, next: () => void) => void;
|
|
798
|
+
parentCall: RenderCall | undefined;
|
|
799
|
+
calls: RenderCall[];
|
|
800
|
+
}
|
|
801
|
+
declare class RenderStack {
|
|
802
|
+
currentCall?: RenderCall;
|
|
803
|
+
calls: RenderCall[];
|
|
804
|
+
createCall(renderable: Node): RenderCall;
|
|
805
|
+
push(renderable: Node): RenderCall;
|
|
806
|
+
render(renderer: WebGLRenderer): void;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
interface TimerEventMap extends NodeEventMap {
|
|
810
|
+
update: (current: number, delta: number) => void;
|
|
811
|
+
}
|
|
812
|
+
interface TimerOptions extends NodeOptions {
|
|
813
|
+
start?: number;
|
|
814
|
+
current?: number;
|
|
815
|
+
end?: number;
|
|
816
|
+
loop?: boolean;
|
|
817
|
+
}
|
|
818
|
+
interface Timer {
|
|
819
|
+
on: (<K extends keyof TimerEventMap>(type: K, listener: TimerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
820
|
+
off: (<K extends keyof TimerEventMap>(type: K, listener: TimerEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
821
|
+
emit: (<K extends keyof TimerEventMap>(type: K, ...args: Parameters<TimerEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
822
|
+
}
|
|
823
|
+
declare class Timer extends Node {
|
|
824
|
+
start: number;
|
|
825
|
+
current: number;
|
|
826
|
+
end: number;
|
|
827
|
+
loop: boolean;
|
|
828
|
+
static from(range: number | number[]): Timer;
|
|
829
|
+
constructor(options?: TimerOptions);
|
|
830
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
831
|
+
addTime(delta: number): this;
|
|
832
|
+
protected _process(delta: number): void;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
type VectorLike = number | number[] | Matrix | Vector;
|
|
836
|
+
type VectorOperateOutput = number[] | Vector;
|
|
837
|
+
declare abstract class Vector extends EventEmitter {
|
|
838
|
+
readonly dim: number;
|
|
839
|
+
protected _array: number[];
|
|
840
|
+
get length(): number;
|
|
841
|
+
constructor(dim: number);
|
|
842
|
+
protected _operate(operator: '+' | '-' | '*' | '/' | 'rot' | '==' | '=' | string, target: VectorLike, output?: VectorOperateOutput): any;
|
|
843
|
+
add(value: VectorLike): this;
|
|
844
|
+
add<T extends VectorOperateOutput>(value: VectorLike, output: T): T;
|
|
845
|
+
sub(value: VectorLike): this;
|
|
846
|
+
sub<T extends VectorOperateOutput>(value: VectorLike, output: T): T;
|
|
847
|
+
multiply(value: VectorLike): this;
|
|
848
|
+
multiply<T extends VectorOperateOutput>(value: VectorLike, output: T): T;
|
|
849
|
+
divide(value: VectorLike): this;
|
|
850
|
+
divide<T extends VectorOperateOutput>(value: VectorLike, output: T): T;
|
|
851
|
+
rotate(angle: number): this;
|
|
852
|
+
rotate<T extends VectorOperateOutput>(angle: number, output: T): T;
|
|
853
|
+
set(value: VectorLike, ...args: number[]): this;
|
|
854
|
+
equals(value: VectorLike): boolean;
|
|
855
|
+
clone(): this;
|
|
856
|
+
onUpdate(callback: (array: number[]) => void): this;
|
|
857
|
+
offUpdate(callback: (array: number[]) => void): this;
|
|
858
|
+
protected _emitUpdate(array: number[]): void;
|
|
859
|
+
protected _onUpdate(_array: number[]): void;
|
|
860
|
+
toArray(): number[];
|
|
861
|
+
toName(): string;
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
type MatrixLike = number | number[] | Matrix;
|
|
865
|
+
type MatrixOperateOutput = number[] | Matrix | Vector;
|
|
866
|
+
declare abstract class Matrix extends EventEmitter {
|
|
867
|
+
readonly rows: number;
|
|
868
|
+
readonly cols: number;
|
|
869
|
+
protected _array: number[];
|
|
870
|
+
get length(): number;
|
|
871
|
+
constructor(rows: number, cols: number, array?: number[]);
|
|
872
|
+
protected _operate(operator: string, target: MatrixLike | Vector, output?: MatrixOperateOutput): any;
|
|
873
|
+
identity(): this;
|
|
874
|
+
clone(): this;
|
|
875
|
+
set(value: MatrixLike): this;
|
|
876
|
+
multiply<T extends Vector>(value: T): T;
|
|
877
|
+
multiply(value: MatrixLike): this;
|
|
878
|
+
multiply<T extends MatrixOperateOutput>(value: MatrixLike, output: T): T;
|
|
879
|
+
onUpdate(callback: (array: number[]) => void): this;
|
|
880
|
+
offUpdate(callback: (array: number[]) => void): this;
|
|
881
|
+
protected _emitUpdate(array: number[]): void;
|
|
882
|
+
protected _onUpdate(_array: number[]): void;
|
|
883
|
+
toArray(transpose?: boolean): number[];
|
|
884
|
+
toName(): string;
|
|
885
|
+
toJSON(): number[];
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* Matrix3
|
|
890
|
+
*
|
|
891
|
+
* | x0 | y0 | z0 |
|
|
892
|
+
* | x1 | y1 | z1 |
|
|
893
|
+
* | x2 | y2 | z2 |
|
|
894
|
+
*/
|
|
895
|
+
declare class Matrix3 extends Matrix {
|
|
896
|
+
constructor(array?: number[]);
|
|
897
|
+
invert(): this;
|
|
898
|
+
}
|
|
899
|
+
|
|
900
|
+
interface Transform2DObject {
|
|
901
|
+
a: number;
|
|
902
|
+
c: number;
|
|
903
|
+
tx: number;
|
|
904
|
+
b: number;
|
|
905
|
+
d: number;
|
|
906
|
+
ty: number;
|
|
907
|
+
tz: number;
|
|
908
|
+
}
|
|
909
|
+
/**
|
|
910
|
+
* Transform
|
|
911
|
+
*
|
|
912
|
+
* | a | c | tx|
|
|
913
|
+
* | b | d | ty|
|
|
914
|
+
* | 0 | 0 | 1 |
|
|
915
|
+
*/
|
|
916
|
+
declare class Transform2D extends Matrix3 {
|
|
917
|
+
autoUpdate: boolean;
|
|
918
|
+
protected _cx: number;
|
|
919
|
+
protected _sx: number;
|
|
920
|
+
protected _cy: number;
|
|
921
|
+
protected _sy: number;
|
|
922
|
+
protected _translateX: number;
|
|
923
|
+
protected _translateY: number;
|
|
924
|
+
protected _translateZ: number;
|
|
925
|
+
protected _scaleX: number;
|
|
926
|
+
protected _scaleY: number;
|
|
927
|
+
protected _skewX: number;
|
|
928
|
+
protected _skewY: number;
|
|
929
|
+
protected _rotate: number;
|
|
930
|
+
dirtyId: number;
|
|
931
|
+
protected _needsUpdateArray: boolean;
|
|
932
|
+
protected _needsUpdateFields: boolean;
|
|
933
|
+
constructor(autoUpdate?: boolean);
|
|
934
|
+
protected _onUpdate(array: number[]): void;
|
|
935
|
+
protected _updateSkew(): void;
|
|
936
|
+
protected _requestUpdateArray(): void;
|
|
937
|
+
protected _requestUpdateFields(): void;
|
|
938
|
+
protected _performUpdateArray(): void;
|
|
939
|
+
protected _performUpdateFields(): void;
|
|
940
|
+
skew(x: number, y: number): this;
|
|
941
|
+
skewX(x: number): this;
|
|
942
|
+
skewY(y: number): this;
|
|
943
|
+
translate(x: number, y: number, z?: number): this;
|
|
944
|
+
translateX(x: number): this;
|
|
945
|
+
translateY(y: number): this;
|
|
946
|
+
translateZ(z: number): this;
|
|
947
|
+
translate3d(x: number, y: number, z: number): this;
|
|
948
|
+
scale(x: number, y: number, _z?: number): this;
|
|
949
|
+
scaleX(x: number): this;
|
|
950
|
+
scaleY(y: number): this;
|
|
951
|
+
scale3d(x: number, y: number, z: number): this;
|
|
952
|
+
rotate(rad: number): this;
|
|
953
|
+
rotateX(x: number): this;
|
|
954
|
+
rotateY(y: number): this;
|
|
955
|
+
rotateZ(z: number): this;
|
|
956
|
+
rotate3d(x: number, y: number, z: number, rad: number): this;
|
|
957
|
+
protected _rotateToScale(rad: number): number;
|
|
958
|
+
protected _rotate3d(x: number, y: number, z: number, rad: number): number[];
|
|
959
|
+
applyToPoint(x: number, y: number): number[];
|
|
960
|
+
inverse(): this;
|
|
961
|
+
update(): boolean;
|
|
962
|
+
isIdentity(): boolean;
|
|
963
|
+
toObject(): Transform2DObject;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
interface Shape {
|
|
967
|
+
x: number;
|
|
968
|
+
y: number;
|
|
969
|
+
contains: (x: number, y: number) => boolean;
|
|
970
|
+
strokeContains: (x: number, y: number, strokeWidth: number) => boolean;
|
|
971
|
+
getBounds: (out?: Rectangle) => Rectangle;
|
|
972
|
+
buildOutline: (points: number[]) => void;
|
|
973
|
+
buildGeometry: (vertices: number[], indices: number[]) => void;
|
|
974
|
+
}
|
|
975
|
+
|
|
976
|
+
declare class Rectangle implements Shape {
|
|
977
|
+
x: number;
|
|
978
|
+
y: number;
|
|
979
|
+
width: number;
|
|
980
|
+
height: number;
|
|
981
|
+
get left(): number;
|
|
982
|
+
get right(): number;
|
|
983
|
+
get top(): number;
|
|
984
|
+
get bottom(): number;
|
|
985
|
+
isEmpty(): boolean;
|
|
986
|
+
constructor(x?: number, y?: number, width?: number, height?: number);
|
|
987
|
+
copyFromBounds(bounds: Bounds): this;
|
|
988
|
+
contains(x: number, y: number): boolean;
|
|
989
|
+
strokeContains(x: number, y: number, strokeWidth: number): boolean;
|
|
990
|
+
clone(): Rectangle;
|
|
991
|
+
copyFrom(rectangle: Rectangle): void;
|
|
992
|
+
copyTo(rectangle: Rectangle): void;
|
|
993
|
+
intersects(other: Rectangle, transform?: Transform2D): boolean;
|
|
994
|
+
pad(paddingX?: number, paddingY?: number): this;
|
|
995
|
+
fit(rectangle: Rectangle): this;
|
|
996
|
+
ceil(resolution?: number, eps?: number): this;
|
|
997
|
+
enlarge(rectangle: Rectangle): this;
|
|
998
|
+
getBounds(out?: Rectangle): Rectangle;
|
|
999
|
+
buildOutline(points: number[]): void;
|
|
1000
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
interface BoundsData {
|
|
1004
|
+
minX: number;
|
|
1005
|
+
minY: number;
|
|
1006
|
+
maxX: number;
|
|
1007
|
+
maxY: number;
|
|
1008
|
+
}
|
|
1009
|
+
declare class Bounds {
|
|
1010
|
+
minX: number;
|
|
1011
|
+
minY: number;
|
|
1012
|
+
maxX: number;
|
|
1013
|
+
maxY: number;
|
|
1014
|
+
matrix: Transform2D;
|
|
1015
|
+
protected _rectangle?: Rectangle;
|
|
1016
|
+
get x(): number;
|
|
1017
|
+
set x(value: number);
|
|
1018
|
+
get y(): number;
|
|
1019
|
+
set y(value: number);
|
|
1020
|
+
get width(): number;
|
|
1021
|
+
set width(value: number);
|
|
1022
|
+
get height(): number;
|
|
1023
|
+
set height(value: number);
|
|
1024
|
+
get left(): number;
|
|
1025
|
+
get right(): number;
|
|
1026
|
+
get top(): number;
|
|
1027
|
+
get bottom(): number;
|
|
1028
|
+
get isPositive(): boolean;
|
|
1029
|
+
get isValid(): boolean;
|
|
1030
|
+
constructor(minX?: number, minY?: number, maxX?: number, maxY?: number);
|
|
1031
|
+
isEmpty(): boolean;
|
|
1032
|
+
get rectangle(): Rectangle;
|
|
1033
|
+
clear(): this;
|
|
1034
|
+
set(x0: number, y0: number, x1: number, y1: number): this;
|
|
1035
|
+
addFrame(x0: number, y0: number, x1: number, y1: number, matrix?: Transform2D): void;
|
|
1036
|
+
addRect(rect: Rectangle, matrix?: Transform2D): this;
|
|
1037
|
+
addBounds(bounds: BoundsData, matrix?: Transform2D): this;
|
|
1038
|
+
addBoundsMask(mask: Bounds): void;
|
|
1039
|
+
applyMatrix(matrix: Transform2D): void;
|
|
1040
|
+
fit(rect: Rectangle): this;
|
|
1041
|
+
fitBounds(left: number, right: number, top: number, bottom: number): this;
|
|
1042
|
+
pad(paddingX: number, paddingY?: number): this;
|
|
1043
|
+
ceil(): this;
|
|
1044
|
+
clone(): Bounds;
|
|
1045
|
+
scale(x: number, y?: number): this;
|
|
1046
|
+
addVertexData(vertexData: Float32Array, beginOffset: number, endOffset: number, matrix?: Transform2D): void;
|
|
1047
|
+
containsPoint(x: number, y: number): boolean;
|
|
1048
|
+
}
|
|
1049
|
+
|
|
1050
|
+
declare function buildAdaptiveBezier(points: number[], sX: number, sY: number, cp1x: number, cp1y: number, cp2x: number, cp2y: number, eX: number, eY: number, smoothness?: number): number[];
|
|
1051
|
+
|
|
1052
|
+
declare function buildAdaptiveQuadratic(points: number[], sX: number, sY: number, cp1x: number, cp1y: number, eX: number, eY: number, smoothness?: number): number[];
|
|
1053
|
+
|
|
1054
|
+
declare function buildArc(points: number[], x: number, y: number, radius: number, start: number, end: number, clockwise: boolean, steps?: number): void;
|
|
1055
|
+
|
|
1056
|
+
/**
|
|
1057
|
+
* The arcTo() method creates an arc/curve between two tangents on the canvas.
|
|
1058
|
+
* "borrowed" from https://code.google.com/p/fxcanvas/ - thanks google!
|
|
1059
|
+
* @param points
|
|
1060
|
+
* @param x1
|
|
1061
|
+
* @param y1
|
|
1062
|
+
* @param x2
|
|
1063
|
+
* @param y2
|
|
1064
|
+
* @param radius
|
|
1065
|
+
*/
|
|
1066
|
+
declare function buildArcTo(points: number[], x1: number, y1: number, x2: number, y2: number, radius: number): void;
|
|
1067
|
+
|
|
1068
|
+
declare function buildArcToSvg(points: number[], px: number, py: number, cx: number, cy: number, rx: number, ry: number, xAxisRotation?: number, largeArcFlag?: number, sweepFlag?: number): void;
|
|
1069
|
+
|
|
1070
|
+
declare class Circle implements Shape {
|
|
1071
|
+
x: number;
|
|
1072
|
+
y: number;
|
|
1073
|
+
radius: number;
|
|
1074
|
+
constructor(x?: number, y?: number, radius?: number);
|
|
1075
|
+
contains(x: number, y: number): boolean;
|
|
1076
|
+
strokeContains(x: number, y: number, width: number): boolean;
|
|
1077
|
+
clone(): Circle;
|
|
1078
|
+
copyFrom(circle: Circle): this;
|
|
1079
|
+
copyTo(circle: Circle): Circle;
|
|
1080
|
+
getBounds(out?: Rectangle): Rectangle;
|
|
1081
|
+
buildOutline(points: number[]): void;
|
|
1082
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1083
|
+
}
|
|
1084
|
+
|
|
1085
|
+
declare class Ellipse implements Shape {
|
|
1086
|
+
x: number;
|
|
1087
|
+
y: number;
|
|
1088
|
+
halfWidth: number;
|
|
1089
|
+
halfHeight: number;
|
|
1090
|
+
constructor(x?: number, y?: number, halfWidth?: number, halfHeight?: number);
|
|
1091
|
+
contains(x: number, y: number): boolean;
|
|
1092
|
+
strokeContains(x: number, y: number, width: number): boolean;
|
|
1093
|
+
clone(): Ellipse;
|
|
1094
|
+
copyFrom(ellipse: Ellipse): this;
|
|
1095
|
+
copyTo(ellipse: Ellipse): Ellipse;
|
|
1096
|
+
getBounds(): Rectangle;
|
|
1097
|
+
buildOutline(points: number[]): void;
|
|
1098
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1099
|
+
}
|
|
1100
|
+
|
|
1101
|
+
interface PointData {
|
|
1102
|
+
x: number;
|
|
1103
|
+
y: number;
|
|
1104
|
+
}
|
|
1105
|
+
interface PointLike extends PointData {
|
|
1106
|
+
copyFrom: (p: PointData) => this;
|
|
1107
|
+
copyTo: <T extends PointLike>(p: T) => T;
|
|
1108
|
+
equals: (p: PointData) => boolean;
|
|
1109
|
+
set: (x?: number, y?: number) => void;
|
|
1110
|
+
}
|
|
1111
|
+
declare class Point {
|
|
1112
|
+
x: number;
|
|
1113
|
+
y: number;
|
|
1114
|
+
protected static _shared?: Point;
|
|
1115
|
+
static get shared(): Point;
|
|
1116
|
+
constructor(x?: number, y?: number);
|
|
1117
|
+
copyFrom(p: PointData): this;
|
|
1118
|
+
copyTo<T extends PointLike>(p: T): T;
|
|
1119
|
+
equals(p: PointData): boolean;
|
|
1120
|
+
set(x?: number, y?: number): this;
|
|
1121
|
+
}
|
|
1122
|
+
|
|
1123
|
+
declare class Polygon implements Shape {
|
|
1124
|
+
points: number[];
|
|
1125
|
+
closed: boolean;
|
|
1126
|
+
get lastX(): number;
|
|
1127
|
+
get lastY(): number;
|
|
1128
|
+
get x(): number;
|
|
1129
|
+
get y(): number;
|
|
1130
|
+
constructor(points: PointData[] | number[]);
|
|
1131
|
+
constructor(...points: PointData[] | number[]);
|
|
1132
|
+
reset(): this;
|
|
1133
|
+
contains(x: number, y: number): boolean;
|
|
1134
|
+
strokeContains(x: number, y: number, strokeWidth: number): boolean;
|
|
1135
|
+
clone(): Polygon;
|
|
1136
|
+
copyFrom(polygon: Polygon): this;
|
|
1137
|
+
copyTo(polygon: Polygon): Polygon;
|
|
1138
|
+
getBounds(out?: Rectangle): Rectangle;
|
|
1139
|
+
buildOutline(points: number[]): void;
|
|
1140
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
declare class RoundedRectangle implements Shape {
|
|
1144
|
+
x: number;
|
|
1145
|
+
y: number;
|
|
1146
|
+
width: number;
|
|
1147
|
+
height: number;
|
|
1148
|
+
radius: number;
|
|
1149
|
+
constructor(x?: number, y?: number, width?: number, height?: number, radius?: number);
|
|
1150
|
+
getBounds(out?: Rectangle): Rectangle;
|
|
1151
|
+
clone(): RoundedRectangle;
|
|
1152
|
+
copyFrom(rectangle: RoundedRectangle): this;
|
|
1153
|
+
copyTo(rectangle: RoundedRectangle): RoundedRectangle;
|
|
1154
|
+
contains(x: number, y: number): boolean;
|
|
1155
|
+
strokeContains(pX: number, pY: number, strokeWidth: number): boolean;
|
|
1156
|
+
buildOutline(points: number[]): void;
|
|
1157
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
declare class Star extends Polygon {
|
|
1161
|
+
constructor(x?: number, y?: number, points?: number, radius?: number, innerRadius?: number, rotation?: number);
|
|
1162
|
+
}
|
|
1163
|
+
|
|
1164
|
+
declare function squaredDistanceToLineSegment(x: number, y: number, x1: number, y1: number, x2: number, y2: number): number;
|
|
1165
|
+
declare class Triangle implements Shape {
|
|
1166
|
+
x: number;
|
|
1167
|
+
y: number;
|
|
1168
|
+
x2: number;
|
|
1169
|
+
y2: number;
|
|
1170
|
+
x3: number;
|
|
1171
|
+
y3: number;
|
|
1172
|
+
constructor(x?: number, y?: number, x2?: number, y2?: number, x3?: number, y3?: number);
|
|
1173
|
+
contains(x: number, y: number): boolean;
|
|
1174
|
+
strokeContains(pointX: number, pointY: number, strokeWidth: number): boolean;
|
|
1175
|
+
clone(): Triangle;
|
|
1176
|
+
copyFrom(triangle: Triangle): this;
|
|
1177
|
+
copyTo(triangle: Triangle): Triangle;
|
|
1178
|
+
getBounds(out?: Rectangle): Rectangle;
|
|
1179
|
+
buildOutline(points: number[]): void;
|
|
1180
|
+
buildGeometry(vertices: number[], indices: number[]): void;
|
|
1181
|
+
}
|
|
1182
|
+
|
|
1183
|
+
interface ShapeBuildCommand<T extends Shape = Shape> {
|
|
1184
|
+
build: (shape: T, points: number[]) => void;
|
|
1185
|
+
triangulate: (points: number[], vertices: number[], verticesStride: number, verticesOffset: number, indices: number[], indicesOffset: number) => void;
|
|
1186
|
+
}
|
|
1187
|
+
|
|
1188
|
+
type RoundedShape = Circle | Ellipse | RoundedRectangle;
|
|
1189
|
+
declare const buildCircle: ShapeBuildCommand<RoundedShape>;
|
|
1190
|
+
|
|
1191
|
+
type LineCap = 'butt' | 'round' | 'square';
|
|
1192
|
+
type LineJoin = 'round' | 'bevel' | 'miter';
|
|
1193
|
+
declare const closePointEps = 0.0001;
|
|
1194
|
+
declare const curveEps = 0.0001;
|
|
1195
|
+
interface LineStyle {
|
|
1196
|
+
width: number;
|
|
1197
|
+
alignment: number;
|
|
1198
|
+
join: LineJoin;
|
|
1199
|
+
cap: LineCap;
|
|
1200
|
+
miterLimit: number;
|
|
1201
|
+
}
|
|
1202
|
+
/**
|
|
1203
|
+
* Builds a line to draw using the polygon method.
|
|
1204
|
+
* @param points
|
|
1205
|
+
* @param lineStyle
|
|
1206
|
+
* @param flipAlignment
|
|
1207
|
+
* @param closed
|
|
1208
|
+
* @param vertices
|
|
1209
|
+
* @param _verticesStride
|
|
1210
|
+
* @param _verticesOffset
|
|
1211
|
+
* @param indices
|
|
1212
|
+
* @param _indicesOffset
|
|
1213
|
+
*/
|
|
1214
|
+
declare function buildLine(points: number[], lineStyle: LineStyle, flipAlignment: boolean, closed: boolean, vertices: number[], _verticesStride: number, _verticesOffset: number, indices: number[], _indicesOffset: number): void;
|
|
1215
|
+
|
|
1216
|
+
declare const buildPolygon: ShapeBuildCommand<Polygon>;
|
|
1217
|
+
|
|
1218
|
+
declare const buildRectangle: ShapeBuildCommand<Rectangle>;
|
|
1219
|
+
|
|
1220
|
+
declare const buildTriangle: ShapeBuildCommand<Triangle>;
|
|
1221
|
+
|
|
1222
|
+
interface Path2DShape {
|
|
1223
|
+
shape: Shape;
|
|
1224
|
+
transform?: Transform2D;
|
|
1225
|
+
}
|
|
1226
|
+
declare class Path2D {
|
|
1227
|
+
protected _polygon?: Polygon;
|
|
1228
|
+
protected _bounds: Bounds;
|
|
1229
|
+
shapes: Path2DShape[];
|
|
1230
|
+
get bounds(): Bounds;
|
|
1231
|
+
startPolygon(x: number, y: number): this;
|
|
1232
|
+
endPolygon(closePath?: boolean): this;
|
|
1233
|
+
ensurePolygon(start?: boolean): void;
|
|
1234
|
+
beginPath(): this;
|
|
1235
|
+
moveTo(x: number, y: number): this;
|
|
1236
|
+
lineTo(x: number, y: number): this;
|
|
1237
|
+
bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): this;
|
|
1238
|
+
quadraticCurveTo(cp1x: number, cp1y: number, x: number, y: number, smoothing?: number): this;
|
|
1239
|
+
rect(x: number, y: number, width: number, height: number, transform?: Transform2D): void;
|
|
1240
|
+
roundRect(x: number, y: number, width: number, height: number, radii: number, transform?: Transform2D): void;
|
|
1241
|
+
ellipse(x: number, y: number, radiusX: number, radiusY: number, transform?: Transform2D): void;
|
|
1242
|
+
arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean): this;
|
|
1243
|
+
ellipticalArc(rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, x: number, y: number): this;
|
|
1244
|
+
poly(points: number[] | PointData[], close?: boolean, transform?: Transform2D): this;
|
|
1245
|
+
addShape(shape: Shape, transform?: Transform2D): this;
|
|
1246
|
+
addPath(path2D: Path2D): this;
|
|
1247
|
+
addSVGPath(d: string): this;
|
|
1248
|
+
closePath(): this;
|
|
1249
|
+
buildOutline(points?: number[]): number[];
|
|
1250
|
+
buildGeometry(vertices?: number[], indices?: number[]): {
|
|
1251
|
+
vertices: number[];
|
|
1252
|
+
indices: number[];
|
|
1253
|
+
};
|
|
1254
|
+
}
|
|
1255
|
+
|
|
1256
|
+
type SVGPathDefineCommand = 'a' | 's' | 't' | 'v' | 'z' | 'q' | 'g' | 'm' | 'h' | 'l' | 'c' | 'A' | 'S' | 'T' | 'V' | 'Z' | 'Q' | 'G' | 'M' | 'H' | 'L' | 'C';
|
|
1257
|
+
interface SVGPathDefine {
|
|
1258
|
+
command: SVGPathDefineCommand;
|
|
1259
|
+
args: number[];
|
|
1260
|
+
}
|
|
1261
|
+
type Path2DCallMethod = 'moveTo' | 'lineTo' | 'bezierCurveTo' | 'quadraticCurveTo' | 'ellipticalArc' | 'closePath' | 'rect' | 'roundRect' | 'circle' | 'ellipse' | 'arc' | 'poly' | 'addPath' | 'arcTo' | 'regularPoly' | 'roundPoly' | 'roundShape' | 'filletRect' | 'chamferRect';
|
|
1262
|
+
interface Path2DCall {
|
|
1263
|
+
method: Path2DCallMethod;
|
|
1264
|
+
args: any[];
|
|
1265
|
+
}
|
|
1266
|
+
declare class SVGPath {
|
|
1267
|
+
defines: SVGPathDefine[];
|
|
1268
|
+
protected _calls: Path2DCall[];
|
|
1269
|
+
protected _dirty: boolean;
|
|
1270
|
+
get path2D(): Path2D;
|
|
1271
|
+
constructor(d: string | SVGPath);
|
|
1272
|
+
protected _addCall(method: Path2DCallMethod, args?: any[], dirty?: boolean): this;
|
|
1273
|
+
protected _parseDefines(d: string): SVGPathDefine[];
|
|
1274
|
+
update(): void;
|
|
1275
|
+
protected _getLastPoint(out: Point): Point;
|
|
1276
|
+
protected _smoothBezierCurveTo(cp2x: number, cp2y: number, x: number, y: number, smoothness?: number): this;
|
|
1277
|
+
protected _smoothQuadraticCurveTo(x: number, y: number, smoothness?: number): this;
|
|
1278
|
+
}
|
|
1279
|
+
|
|
1280
|
+
/**
|
|
1281
|
+
* Matrix2
|
|
1282
|
+
*
|
|
1283
|
+
* | x0 | y0 |
|
|
1284
|
+
* | x1 | y1 |
|
|
1285
|
+
*/
|
|
1286
|
+
declare class Matrix2 extends Matrix {
|
|
1287
|
+
constructor(array?: number[]);
|
|
1288
|
+
}
|
|
1289
|
+
|
|
1290
|
+
/**
|
|
1291
|
+
* Matrix4
|
|
1292
|
+
*
|
|
1293
|
+
* | x0 | y0 | z0 | m0 |
|
|
1294
|
+
* | x1 | y1 | z1 | m1 |
|
|
1295
|
+
* | x2 | y2 | z2 | m2 |
|
|
1296
|
+
*/
|
|
1297
|
+
declare class Matrix4 extends Matrix {
|
|
1298
|
+
constructor(array?: number[]);
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1301
|
+
declare class Projection2D extends Matrix3 {
|
|
1302
|
+
protected _x: number;
|
|
1303
|
+
protected _y: number;
|
|
1304
|
+
protected _width: number;
|
|
1305
|
+
protected _height: number;
|
|
1306
|
+
protected _flipY: boolean;
|
|
1307
|
+
constructor(_x?: number, _y?: number, _width?: number, _height?: number, _flipY?: boolean);
|
|
1308
|
+
flipY(flipY: boolean): this;
|
|
1309
|
+
translate(x: number, y: number): this;
|
|
1310
|
+
resize(width: number, height: number): this;
|
|
1311
|
+
protected _performUpdateArray(): void;
|
|
1312
|
+
}
|
|
1313
|
+
|
|
1314
|
+
declare const DEG_TO_RAD: number;
|
|
1315
|
+
declare const RAD_TO_DEG: number;
|
|
1316
|
+
declare function clamp(min: number, val: number, max: number): number;
|
|
1317
|
+
declare function lerp(a: number, b: number, weight: number): number;
|
|
1318
|
+
declare const curves: {
|
|
1319
|
+
adaptive: boolean;
|
|
1320
|
+
maxLength: number;
|
|
1321
|
+
minSegments: number;
|
|
1322
|
+
maxSegments: number;
|
|
1323
|
+
epsilon: number;
|
|
1324
|
+
_segmentsCount(length: number, defaultSegments?: number): number;
|
|
1325
|
+
};
|
|
1326
|
+
|
|
1327
|
+
/**
|
|
1328
|
+
* Vector2
|
|
1329
|
+
*/
|
|
1330
|
+
declare class Vector2 extends Vector {
|
|
1331
|
+
get x(): number;
|
|
1332
|
+
set x(val: number);
|
|
1333
|
+
get y(): number;
|
|
1334
|
+
set y(val: number);
|
|
1335
|
+
get width(): number;
|
|
1336
|
+
set width(val: number);
|
|
1337
|
+
get height(): number;
|
|
1338
|
+
set height(val: number);
|
|
1339
|
+
constructor(x?: VectorLike, y?: number);
|
|
1340
|
+
update(x: number, y: number): this;
|
|
1341
|
+
getLength(): number;
|
|
1342
|
+
getAngle(): number;
|
|
1343
|
+
distanceTo(point: Vector2): number;
|
|
1344
|
+
normalize(): this;
|
|
1345
|
+
static lerp(a: VectorLike, b: VectorLike, t: number): Vector2;
|
|
1346
|
+
}
|
|
1347
|
+
|
|
1348
|
+
/**
|
|
1349
|
+
* Vector3
|
|
1350
|
+
*/
|
|
1351
|
+
declare class Vector3 extends Vector {
|
|
1352
|
+
constructor();
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
/**
|
|
1356
|
+
* Vector4
|
|
1357
|
+
*/
|
|
1358
|
+
declare class Vector4 extends Vector {
|
|
1359
|
+
constructor(x?: number, y?: number, z?: number, m?: number);
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
type TextureFilterMode = WebGLTextureFilterMode;
|
|
1363
|
+
type TextureWrapMode = WebGLTextureWrapMode;
|
|
1364
|
+
interface TexturePixelsSource {
|
|
1365
|
+
width: number;
|
|
1366
|
+
height: number;
|
|
1367
|
+
pixels: Uint8Array | null;
|
|
1368
|
+
}
|
|
1369
|
+
type TextureSource = TexImageSource | TexturePixelsSource;
|
|
1370
|
+
declare class Texture<T extends TextureSource = TextureSource> extends Resource {
|
|
1371
|
+
static get EMPTY(): Texture;
|
|
1372
|
+
static get WHITE(): Texture;
|
|
1373
|
+
static get BLACK(): Texture;
|
|
1374
|
+
static get RED(): Texture;
|
|
1375
|
+
static get GREEN(): Texture;
|
|
1376
|
+
static get BLUE(): Texture;
|
|
1377
|
+
source: T;
|
|
1378
|
+
width: number;
|
|
1379
|
+
height: number;
|
|
1380
|
+
filterMode: TextureFilterMode;
|
|
1381
|
+
wrapMode: TextureWrapMode;
|
|
1382
|
+
pixelRatio: number;
|
|
1383
|
+
protected _isPowerOfTwo: boolean;
|
|
1384
|
+
protected _needsUpload: boolean;
|
|
1385
|
+
get valid(): boolean;
|
|
1386
|
+
get realWidth(): number;
|
|
1387
|
+
get realHeight(): number;
|
|
1388
|
+
constructor(source: T);
|
|
1389
|
+
protected _refreshPOT(): void;
|
|
1390
|
+
/** @internal */
|
|
1391
|
+
_glTextureOptions(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): WebGLTextureOptions;
|
|
1392
|
+
/** @internal */
|
|
1393
|
+
_glTexture(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): WebGLTexture;
|
|
1394
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
1395
|
+
protected _updateSize(): void;
|
|
1396
|
+
requestUpload(): void;
|
|
1397
|
+
upload(renderer: WebGLRenderer, options?: Partial<WebGLTextureOptions>): boolean;
|
|
1398
|
+
activate(renderer: WebGLRenderer, location?: number): void;
|
|
1399
|
+
inactivate(renderer: WebGLRenderer): void;
|
|
1400
|
+
destroy(): void;
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
interface ImageTextureOptions {
|
|
1404
|
+
autoLoad?: boolean;
|
|
1405
|
+
useBitmap?: boolean;
|
|
1406
|
+
crossorigin?: boolean | string | null;
|
|
1407
|
+
}
|
|
1408
|
+
declare class ImageTexture extends Texture<HTMLImageElement> {
|
|
1409
|
+
bitmap?: ImageBitmap;
|
|
1410
|
+
useBitmap: boolean;
|
|
1411
|
+
preserveBitmap: boolean;
|
|
1412
|
+
protected _loadSource?: Promise<this>;
|
|
1413
|
+
protected _loadBitmap?: Promise<this>;
|
|
1414
|
+
constructor(source: HTMLImageElement, options?: ImageTextureOptions);
|
|
1415
|
+
load(): Promise<this>;
|
|
1416
|
+
genBitmap(): Promise<this>;
|
|
1417
|
+
/** @internal */
|
|
1418
|
+
_glTextureOptions(renderer: WebGLRenderer): WebGLTextureOptions;
|
|
1419
|
+
upload(renderer: WebGLRenderer): boolean;
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1422
|
+
declare class PixelsTexture extends Texture<TexturePixelsSource> {
|
|
1423
|
+
constructor(pixels?: ArrayLike<number> | ArrayBufferLike | ArrayBufferView | null, width?: number, height?: number);
|
|
1424
|
+
}
|
|
1425
|
+
|
|
1426
|
+
interface VideoTextureOptions {
|
|
1427
|
+
autoLoad?: boolean;
|
|
1428
|
+
autoPlay?: boolean;
|
|
1429
|
+
fps?: number;
|
|
1430
|
+
crossorigin?: boolean | string | null;
|
|
1431
|
+
loop?: boolean;
|
|
1432
|
+
muted?: boolean;
|
|
1433
|
+
playsinline?: boolean;
|
|
1434
|
+
}
|
|
1435
|
+
interface VideoTextureSource {
|
|
1436
|
+
src: string;
|
|
1437
|
+
mime: string;
|
|
1438
|
+
}
|
|
1439
|
+
declare class VideoTexture extends Texture<HTMLVideoElement> {
|
|
1440
|
+
autoUpdate: boolean;
|
|
1441
|
+
fps: number;
|
|
1442
|
+
static readonly mimeTypes: Map<string, string>;
|
|
1443
|
+
get isReady(): boolean;
|
|
1444
|
+
get isPlaying(): boolean;
|
|
1445
|
+
get duration(): number;
|
|
1446
|
+
get seeking(): boolean;
|
|
1447
|
+
get currentTime(): number;
|
|
1448
|
+
set currentTime(val: number);
|
|
1449
|
+
protected _spf: number;
|
|
1450
|
+
protected _autoPlay: boolean;
|
|
1451
|
+
protected _sourceLoad?: Promise<this>;
|
|
1452
|
+
protected _nextTime: number;
|
|
1453
|
+
protected _connected: boolean;
|
|
1454
|
+
protected _requestId?: number;
|
|
1455
|
+
protected _resolve?: (val: this) => void;
|
|
1456
|
+
protected _reject?: (event: ErrorEvent) => void;
|
|
1457
|
+
constructor(source: HTMLVideoElement | (string | VideoTextureSource)[] | string, options?: VideoTextureOptions);
|
|
1458
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
1459
|
+
protected _onPlayStart: () => void;
|
|
1460
|
+
protected _onPlayStop: () => void;
|
|
1461
|
+
protected _onCanPlay: () => void;
|
|
1462
|
+
protected _onError: (event: ErrorEvent) => void;
|
|
1463
|
+
/** Fired when the video is completed seeking to the current playback position. */
|
|
1464
|
+
protected _onSeeked: () => void;
|
|
1465
|
+
protected _setupAutoUpdate(): void;
|
|
1466
|
+
protected _videoFrameRequestCallback: () => void;
|
|
1467
|
+
requestUpload: () => void;
|
|
1468
|
+
load(): Promise<this>;
|
|
1469
|
+
destroy(): void;
|
|
1470
|
+
}
|
|
1471
|
+
|
|
1472
|
+
declare class ViewportTexture extends PixelsTexture {
|
|
1473
|
+
}
|
|
1474
|
+
|
|
1475
|
+
interface ViewportFramebuffer {
|
|
1476
|
+
texture: ViewportTexture;
|
|
1477
|
+
needsUpload: boolean;
|
|
1478
|
+
}
|
|
1479
|
+
declare class Viewport extends Node {
|
|
1480
|
+
flipY: boolean;
|
|
1481
|
+
x: number;
|
|
1482
|
+
y: number;
|
|
1483
|
+
width: number;
|
|
1484
|
+
height: number;
|
|
1485
|
+
protected _projection: Projection2D;
|
|
1486
|
+
protected _framebufferIndex: number;
|
|
1487
|
+
protected _framebuffers: ViewportFramebuffer[];
|
|
1488
|
+
get framebuffer(): ViewportFramebuffer;
|
|
1489
|
+
get texture(): ViewportTexture;
|
|
1490
|
+
constructor(flipY?: boolean);
|
|
1491
|
+
/** @internal */
|
|
1492
|
+
_glFramebufferOptions(renderer: WebGLRenderer): WebGLFramebufferOptions;
|
|
1493
|
+
/** @internal */
|
|
1494
|
+
_glFramebuffer(renderer: WebGLRenderer): WebGLFramebuffer;
|
|
1495
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
1496
|
+
requestUpload(): void;
|
|
1497
|
+
resize(width: number, height: number): void;
|
|
1498
|
+
upload(renderer: WebGLRenderer): boolean;
|
|
1499
|
+
activate(renderer: WebGLRenderer): void;
|
|
1500
|
+
redraw(renderer: WebGLRenderer, cb: () => void): void;
|
|
1501
|
+
activateWithCopy(renderer: WebGLRenderer, target: Viewport): void;
|
|
1502
|
+
render(renderer: WebGLRenderer, next?: () => void): void;
|
|
1503
|
+
toProjectionArray(transpose?: boolean): number[];
|
|
1504
|
+
}
|
|
1505
|
+
|
|
1506
|
+
interface SceneTreeEventMap extends MainLoopEventMap {
|
|
1507
|
+
processing: () => void;
|
|
1508
|
+
processed: () => void;
|
|
1509
|
+
nodeProcessing: (node: Node) => void;
|
|
1510
|
+
nodeProcessed: (node: Node) => void;
|
|
1511
|
+
}
|
|
1512
|
+
interface SceneTree {
|
|
1513
|
+
on: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
1514
|
+
off: (<K extends keyof SceneTreeEventMap>(type: K, listener: SceneTreeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
1515
|
+
emit: (<K extends keyof SceneTreeEventMap>(type: K, ...args: Parameters<SceneTreeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
1516
|
+
}
|
|
1517
|
+
declare class SceneTree extends MainLoop {
|
|
1518
|
+
readonly renderStack: RenderStack;
|
|
1519
|
+
readonly root: Viewport;
|
|
1520
|
+
readonly timeline: Timer;
|
|
1521
|
+
protected _currentViewport?: Viewport;
|
|
1522
|
+
getCurrentViewport(): Viewport | undefined;
|
|
1523
|
+
setCurrentViewport(viewport: Viewport | undefined): void;
|
|
1524
|
+
protected _render(renderer: WebGLRenderer, delta?: number): this;
|
|
1525
|
+
protected _renderScreen(renderer: WebGLRenderer): void;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
interface NodeEventMap extends ReferenceEventMap {
|
|
1529
|
+
enterTree: () => void;
|
|
1530
|
+
exitTree: () => void;
|
|
1531
|
+
childExitingTree: (node: Node) => void;
|
|
1532
|
+
childEnteredTree: (node: Node) => void;
|
|
1533
|
+
postEnterTree: () => void;
|
|
1534
|
+
ready: () => void;
|
|
1535
|
+
treeEntered: () => void;
|
|
1536
|
+
treeExiting: () => void;
|
|
1537
|
+
treeExited: () => void;
|
|
1538
|
+
parented: () => void;
|
|
1539
|
+
unparented: () => void;
|
|
1540
|
+
process: (delta?: number) => void;
|
|
1541
|
+
addChild: (child: Node) => void;
|
|
1542
|
+
removeChild: (child: Node, index: number) => void;
|
|
1543
|
+
moveChild: (child: Node, newIndex: number, oldIndex: number) => void;
|
|
1544
|
+
}
|
|
1545
|
+
declare enum InternalMode {
|
|
1546
|
+
DEFAULT = 0,
|
|
1547
|
+
FRONT = 1,
|
|
1548
|
+
BACK = 2
|
|
1549
|
+
}
|
|
1550
|
+
interface NodeOptions {
|
|
1551
|
+
name?: string;
|
|
1552
|
+
mask?: Maskable;
|
|
1553
|
+
visibility?: Visibility;
|
|
1554
|
+
visibleDelay?: number;
|
|
1555
|
+
visibleDuration?: number;
|
|
1556
|
+
}
|
|
1557
|
+
interface Node {
|
|
1558
|
+
on: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
1559
|
+
off: (<K extends keyof NodeEventMap>(type: K, listener: NodeEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
1560
|
+
emit: (<K extends keyof NodeEventMap>(type: K, ...args: Parameters<NodeEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
1561
|
+
}
|
|
1562
|
+
/**
|
|
1563
|
+
* Node 是所有节点的基类,提供了管理场景树的功能。
|
|
1564
|
+
* 在 Godot 中,节点代表了游戏中的元素或对象,所有的节点都是通过继承 Node 类来实现的。
|
|
1565
|
+
* Node 处理与场景树、节点的添加、删除、子父关系、以及输入事件等相关的操作。
|
|
1566
|
+
*
|
|
1567
|
+
* 功能和用途:
|
|
1568
|
+
* • 管理节点在场景树中的位置和生命周期。
|
|
1569
|
+
* • 节点可以有 子节点,并且可以通过 add_child() 方法将子节点添加到当前节点。
|
|
1570
|
+
* • 支持 信号(signals)机制,用于事件通知。
|
|
1571
|
+
* • 提供 生命周期方法,如 _ready()、_enter_tree()、_exit_tree() 等。
|
|
1572
|
+
* • 支持 输入事件,通过 _input() 等方法来处理输入。
|
|
1573
|
+
*/
|
|
1574
|
+
declare class Node extends Reference {
|
|
1575
|
+
readonly tag: string;
|
|
1576
|
+
renderable?: boolean;
|
|
1577
|
+
name: string;
|
|
1578
|
+
mask?: Maskable;
|
|
1579
|
+
visibility: Visibility;
|
|
1580
|
+
visibleDelay: number;
|
|
1581
|
+
visibleDuration: number;
|
|
1582
|
+
/** @internal */
|
|
1583
|
+
_computedVisibleDelay: number;
|
|
1584
|
+
_computedVisibleDuration: number;
|
|
1585
|
+
_computedVisibility: Visibility;
|
|
1586
|
+
/** @internal */
|
|
1587
|
+
_internalMode: InternalMode;
|
|
1588
|
+
protected _readyed: boolean;
|
|
1589
|
+
protected _tree?: SceneTree;
|
|
1590
|
+
protected _parent?: Node;
|
|
1591
|
+
protected _children: Node[];
|
|
1592
|
+
get children(): Node[];
|
|
1593
|
+
get visibleTimeline(): number[];
|
|
1594
|
+
get visibleRelativeTime(): number;
|
|
1595
|
+
get visibleProgress(): number;
|
|
1596
|
+
get siblingIndex(): number;
|
|
1597
|
+
set siblingIndex(toIndex: number);
|
|
1598
|
+
get previousSibling(): Node | undefined;
|
|
1599
|
+
get nextSibling(): Node | undefined;
|
|
1600
|
+
get firstSibling(): Node | undefined;
|
|
1601
|
+
get lastSibling(): Node | undefined;
|
|
1602
|
+
constructor(options?: NodeOptions);
|
|
1603
|
+
/** Meta */
|
|
1604
|
+
protected _meta: Map<string, unknown>;
|
|
1605
|
+
hasMeta(name: string): boolean;
|
|
1606
|
+
getMeta<T = any>(name: string): T | undefined;
|
|
1607
|
+
getMeta<T = any>(name: string, defaultVal: T): T;
|
|
1608
|
+
setMeta(name: string, value: any): void;
|
|
1609
|
+
deleteMeta(name: string): void;
|
|
1610
|
+
clearMeta(): void;
|
|
1611
|
+
/** Name */
|
|
1612
|
+
setName(value: string): this;
|
|
1613
|
+
/** Tree */
|
|
1614
|
+
getTree(): SceneTree | undefined;
|
|
1615
|
+
getViewport(): Viewport | undefined;
|
|
1616
|
+
getWindow(): Viewport | undefined;
|
|
1617
|
+
isInsideTree(): boolean;
|
|
1618
|
+
/** @internal */
|
|
1619
|
+
_setTree(tree: SceneTree | undefined): this;
|
|
1620
|
+
isRenderable(): boolean;
|
|
1621
|
+
isVisible(): boolean;
|
|
1622
|
+
protected _updateVisibility(): void;
|
|
1623
|
+
protected _onEnterTree(): void;
|
|
1624
|
+
protected _onExitTree(): void;
|
|
1625
|
+
protected _onParented(): void;
|
|
1626
|
+
protected _onUnparented(): void;
|
|
1627
|
+
protected _onReady(): void;
|
|
1628
|
+
protected _onProcess(delta?: number): void;
|
|
1629
|
+
render(renderer: WebGLRenderer, next?: () => void): void;
|
|
1630
|
+
input(event: UIEvent): void;
|
|
1631
|
+
/** Parent */
|
|
1632
|
+
get parent(): Node | undefined;
|
|
1633
|
+
hasParent(): boolean;
|
|
1634
|
+
getParent(): Node | undefined;
|
|
1635
|
+
/** @internal */
|
|
1636
|
+
_setParent(parent: Node | undefined): this;
|
|
1637
|
+
/** Children */
|
|
1638
|
+
getChildren(includeInternal?: boolean | InternalMode): Node[];
|
|
1639
|
+
getIndex(includeInternal?: boolean | InternalMode): number;
|
|
1640
|
+
getNode<T extends Node>(path: string): T | undefined;
|
|
1641
|
+
removeNode(path: string): void;
|
|
1642
|
+
addSibling(sibling: Node): this;
|
|
1643
|
+
addChild(child: Node, internalMode?: InternalMode): this;
|
|
1644
|
+
moveChild(child: Node, toIndex: number, internalMode?: InternalMode): this;
|
|
1645
|
+
removeChild(child: Node): this;
|
|
1646
|
+
removeChildren(): void;
|
|
1647
|
+
remove(): void;
|
|
1648
|
+
forEach(fn: (child: Node) => void): this;
|
|
1649
|
+
deepForEach(fn: (descendant: Node) => void): this;
|
|
1650
|
+
is(target: Node | undefined | null): boolean;
|
|
1651
|
+
protected _enterTree(): void;
|
|
1652
|
+
protected _ready(): void;
|
|
1653
|
+
protected _exitTree(): void;
|
|
1654
|
+
protected _parented(): void;
|
|
1655
|
+
protected _unparented(): void;
|
|
1656
|
+
protected _process(_delta: number): void;
|
|
1657
|
+
protected _input(_event: UIEvent): void;
|
|
1658
|
+
protected _render(_renderer: WebGLRenderer): void;
|
|
1659
|
+
toJSON(): Record<string, any>;
|
|
1660
|
+
static parse(JSON: Record<string, any>[]): Node[];
|
|
1661
|
+
static parse(JSON: Record<string, any>): Node;
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
declare function createNode<T extends Node>(tag?: string, options?: Record<string, any>): T;
|
|
1665
|
+
|
|
1666
|
+
declare function nextTick(cb?: () => void): Promise<void>;
|
|
1667
|
+
|
|
1668
|
+
type Callback = () => void;
|
|
1669
|
+
interface QueueItem {
|
|
1670
|
+
cb: Callback;
|
|
1671
|
+
once: boolean;
|
|
1672
|
+
}
|
|
1673
|
+
interface Options {
|
|
1674
|
+
sort?: number;
|
|
1675
|
+
once?: boolean;
|
|
1676
|
+
}
|
|
1677
|
+
declare class Ticker {
|
|
1678
|
+
protected static _queue: QueueItem[][];
|
|
1679
|
+
protected static _currentTime: number;
|
|
1680
|
+
protected static _elapsed: number;
|
|
1681
|
+
protected static _requestId?: number;
|
|
1682
|
+
static get currentTime(): number;
|
|
1683
|
+
static get elapsed(): number;
|
|
1684
|
+
static on(cb: Callback, options?: Options): void;
|
|
1685
|
+
static off(cb: Callback, options?: Options): void;
|
|
1686
|
+
static start(): void;
|
|
1687
|
+
static stop(): void;
|
|
1688
|
+
protected static _update(time: number): void;
|
|
1689
|
+
protected static _performUpdate(): void;
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
declare const linear: (amount: number) => number;
|
|
1693
|
+
declare const ease: (amount: number) => number;
|
|
1694
|
+
declare const easeIn: (amount: number) => number;
|
|
1695
|
+
declare const easeOut: (amount: number) => number;
|
|
1696
|
+
declare const easeInOut: (amount: number) => number;
|
|
1697
|
+
declare function cubicBezier(x1: number, y1: number, x2: number, y2: number): (amount: number) => number;
|
|
1698
|
+
declare const timingFunctions: {
|
|
1699
|
+
linear: (amount: number) => number;
|
|
1700
|
+
ease: (amount: number) => number;
|
|
1701
|
+
easeIn: (amount: number) => number;
|
|
1702
|
+
easeOut: (amount: number) => number;
|
|
1703
|
+
easeInOut: (amount: number) => number;
|
|
1704
|
+
};
|
|
1705
|
+
type TimingFunctions = typeof timingFunctions;
|
|
1706
|
+
type Easing = keyof TimingFunctions | `cubic-bezier(${string})`;
|
|
1707
|
+
interface Keyframe {
|
|
1708
|
+
easing?: Easing;
|
|
1709
|
+
offset?: number;
|
|
1710
|
+
[property: string]: string | number | null | undefined;
|
|
1711
|
+
}
|
|
1712
|
+
interface NormalizedKeyframe {
|
|
1713
|
+
easing: (amount: number) => number;
|
|
1714
|
+
offset: number;
|
|
1715
|
+
props: Record<string, any>;
|
|
1716
|
+
}
|
|
1717
|
+
interface AnimationOptions {
|
|
1718
|
+
mode?: 'parent' | 'sibling';
|
|
1719
|
+
startTime?: number;
|
|
1720
|
+
duration?: number;
|
|
1721
|
+
loop?: boolean;
|
|
1722
|
+
keyframes?: Keyframe[];
|
|
1723
|
+
}
|
|
1724
|
+
declare class Animation2D extends Node {
|
|
1725
|
+
mode: 'parent' | 'sibling';
|
|
1726
|
+
loop: boolean;
|
|
1727
|
+
keyframes: Keyframe[];
|
|
1728
|
+
easing?: Easing;
|
|
1729
|
+
delay: number;
|
|
1730
|
+
duration: number;
|
|
1731
|
+
protected _keyframes: NormalizedKeyframe[];
|
|
1732
|
+
protected _starting: boolean;
|
|
1733
|
+
protected _startProps: WeakMap<any, Map<string, any>>;
|
|
1734
|
+
constructor(options?: AnimationOptions);
|
|
1735
|
+
protected _enterTree(): void;
|
|
1736
|
+
protected _exitTree(): void;
|
|
1737
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
1738
|
+
protected _getTargets(): any[];
|
|
1739
|
+
protected _updateKeyframes(): void;
|
|
1740
|
+
protected _onUpdateTime(): void;
|
|
1741
|
+
protected _updateStartProps(): void;
|
|
1742
|
+
protected _parseEasing(easing: Easing | undefined): (amount: number) => number;
|
|
1743
|
+
protected _parseKeyframes(currentTime: number, startProps: Map<string, any>): [NormalizedKeyframe, NormalizedKeyframe] | null;
|
|
1744
|
+
protected _commitStyle(currentTime: number, target: any, startProps: Map<string, any>, previous: NormalizedKeyframe, current: NormalizedKeyframe): void;
|
|
1745
|
+
protected _getDiffValue(name: string, previous: string | undefined, current: string | undefined, weight: number, context: Record<string, any>): any;
|
|
1746
|
+
cancel(): void;
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
type ColorValue = number | AnyColor;
|
|
1750
|
+
declare class Color {
|
|
1751
|
+
protected _colord: Colord;
|
|
1752
|
+
protected _value: ColorValue;
|
|
1753
|
+
get value(): ColorValue;
|
|
1754
|
+
set value(value: ColorValue);
|
|
1755
|
+
get r8(): number;
|
|
1756
|
+
get g8(): number;
|
|
1757
|
+
get b8(): number;
|
|
1758
|
+
get a8(): number;
|
|
1759
|
+
get r(): number;
|
|
1760
|
+
get g(): number;
|
|
1761
|
+
get b(): number;
|
|
1762
|
+
get a(): number;
|
|
1763
|
+
get rgb(): number;
|
|
1764
|
+
get bgr(): number;
|
|
1765
|
+
get abgr(): number;
|
|
1766
|
+
constructor(value?: ColorValue);
|
|
1767
|
+
toArgb(alpha?: number, applyToRGB?: boolean): number;
|
|
1768
|
+
toHex(): string;
|
|
1769
|
+
toArray(): [number, number, number, number];
|
|
1770
|
+
}
|
|
1771
|
+
|
|
1772
|
+
/**
|
|
1773
|
+
* Matrix4(4x5)
|
|
1774
|
+
*
|
|
1775
|
+
* | r0 | g0 | b0 | a0 | tr |
|
|
1776
|
+
* | r1 | g1 | b1 | a1 | tg |
|
|
1777
|
+
* | r2 | g2 | b2 | a2 | tb |
|
|
1778
|
+
* | r3 | g3 | b3 | a3 | ta |
|
|
1779
|
+
*/
|
|
1780
|
+
declare class ColorMatrix extends Matrix {
|
|
1781
|
+
constructor(array?: number[]);
|
|
1782
|
+
hueRotate(angle?: number): this;
|
|
1783
|
+
saturate(amount?: number): this;
|
|
1784
|
+
brightness(amount?: number): this;
|
|
1785
|
+
contrast(amount?: number): this;
|
|
1786
|
+
invert(amount?: number): this;
|
|
1787
|
+
sepia(amount?: number): this;
|
|
1788
|
+
opacity(amount?: number): this;
|
|
1789
|
+
grayscale(amount?: number): this;
|
|
1790
|
+
multiply(target: number[]): this;
|
|
1791
|
+
toMatrix4(): Matrix4;
|
|
1792
|
+
toVector4(): Vector4;
|
|
1793
|
+
}
|
|
1794
|
+
|
|
1795
|
+
declare class ColorTexture extends Texture {
|
|
1796
|
+
constructor(value: ColorValue);
|
|
1797
|
+
}
|
|
1798
|
+
|
|
1799
|
+
interface CanvasBatchable extends Batchable2D {
|
|
1800
|
+
type: 'stroke' | 'fill';
|
|
1801
|
+
texture?: Texture;
|
|
1802
|
+
}
|
|
1803
|
+
interface StrokedGraphics {
|
|
1804
|
+
shapes: Path2DShape[];
|
|
1805
|
+
texture?: Texture;
|
|
1806
|
+
textureTransform?: Transform2D;
|
|
1807
|
+
style: LineStyle;
|
|
1808
|
+
}
|
|
1809
|
+
interface FilledGraphics {
|
|
1810
|
+
shapes: Path2DShape[];
|
|
1811
|
+
texture?: Texture;
|
|
1812
|
+
textureTransform?: Transform2D;
|
|
1813
|
+
}
|
|
1814
|
+
declare class CanvasContext {
|
|
1815
|
+
moveTo: (x: number, y: number) => this;
|
|
1816
|
+
lineTo: (x: number, y: number) => this;
|
|
1817
|
+
bezierCurveTo: (cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number, smoothness?: number) => this;
|
|
1818
|
+
quadraticCurveTo: (cp1x: number, cp1y: number, x: number, y: number, smoothing?: number) => this;
|
|
1819
|
+
ellipticalArc: (rx: number, ry: number, xAxisRotation: number, largeArcFlag: number, sweepFlag: number, x: number, y: number) => this;
|
|
1820
|
+
rect: (x: number, y: number, width: number, height: number, transform?: Transform2D) => this;
|
|
1821
|
+
roundRect: (x: number, y: number, width: number, height: number, radii: number, transform?: Transform2D) => this;
|
|
1822
|
+
ellipse: (x: number, y: number, radiusX: number, radiusY: number, transform?: Transform2D) => this;
|
|
1823
|
+
arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise: boolean) => this;
|
|
1824
|
+
poly: (points: number[] | PointData[], close?: boolean, transform?: Transform2D) => this;
|
|
1825
|
+
addShape: (shape: Shape, transform?: Transform2D) => this;
|
|
1826
|
+
addPath: (path2D: Path2D) => this;
|
|
1827
|
+
addSvgPath: (d: string) => this;
|
|
1828
|
+
closePath: () => this;
|
|
1829
|
+
textureTransform?: Transform2D;
|
|
1830
|
+
fillStyle?: ColorValue | Texture;
|
|
1831
|
+
strokeStyle?: ColorValue | Texture;
|
|
1832
|
+
lineCap?: LineCap;
|
|
1833
|
+
lineJoin?: LineJoin;
|
|
1834
|
+
lineWidth?: number;
|
|
1835
|
+
miterLimit?: number;
|
|
1836
|
+
protected _path2D: Path2D;
|
|
1837
|
+
protected _defaultStyle: Texture<TextureSource>;
|
|
1838
|
+
protected _stroked: StrokedGraphics[];
|
|
1839
|
+
protected _filled: FilledGraphics[];
|
|
1840
|
+
stroke(): void;
|
|
1841
|
+
fillRect(x: number, y: number, width: number, height: number): void;
|
|
1842
|
+
strokeRect(x: number, y: number, width: number, height: number): void;
|
|
1843
|
+
fill(): void;
|
|
1844
|
+
reset(): void;
|
|
1845
|
+
buildUvs(start: number, vertices: number[], uvs: number[], texture?: Texture, textureTransform?: Transform2D): void;
|
|
1846
|
+
toBatchables(): CanvasBatchable[];
|
|
1847
|
+
}
|
|
1848
|
+
|
|
1849
|
+
interface Style2DOptions extends Partial<Style2DBackgroundProperties>, Partial<Style2DFilterProperties>, Partial<Style2DOffsetProperties>, Partial<Style2DTextProperties>, Partial<Style2DTransformProperties> {
|
|
1850
|
+
shadowColor?: string;
|
|
1851
|
+
shadowOffsetX?: number;
|
|
1852
|
+
shadowOffsetY?: number;
|
|
1853
|
+
shadowBlur?: number;
|
|
1854
|
+
opacity?: number;
|
|
1855
|
+
borderRadius?: number;
|
|
1856
|
+
overflow?: Overflow;
|
|
1857
|
+
}
|
|
1858
|
+
interface Style2D extends Style2DBackgroundExtend, Style2DFilterExtend, Style2DOffsetExtend, Style2DTextExtend, Style2DTransformExtend {
|
|
1859
|
+
}
|
|
1860
|
+
declare class Style2D extends _Object {
|
|
1861
|
+
shadowColor: string;
|
|
1862
|
+
shadowOffsetX: number;
|
|
1863
|
+
shadowOffsetY: number;
|
|
1864
|
+
shadowBlur: number;
|
|
1865
|
+
opacity: number;
|
|
1866
|
+
borderRadius: number;
|
|
1867
|
+
overflow: Overflow;
|
|
1868
|
+
constructor(options?: Style2DOptions);
|
|
1869
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
declare abstract class Style2DModule {
|
|
1873
|
+
abstract install(Style2D: new () => Style2D): void;
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
interface Style2DBackgroundProperties {
|
|
1877
|
+
backgroundColor?: string;
|
|
1878
|
+
backgroundImage?: string;
|
|
1879
|
+
}
|
|
1880
|
+
interface Style2DBackgroundExtend extends Style2DBackgroundProperties {
|
|
1881
|
+
getComputedBackground: typeof getComputedBackground;
|
|
1882
|
+
}
|
|
1883
|
+
declare class Style2DBackgroundModule extends Style2DModule {
|
|
1884
|
+
install(Style2D: new () => Style2D): void;
|
|
1885
|
+
}
|
|
1886
|
+
declare function getComputedBackground(this: Style2D): Promise<ColorTexture | undefined>;
|
|
1887
|
+
|
|
1888
|
+
type Style2DFilterKey = 'hue-rotate' | 'saturate' | 'brightness' | 'contrast' | 'invert' | 'sepia' | 'opacity' | 'grayscale';
|
|
1889
|
+
type Style2DFilter = Record<Style2DFilterKey, number>;
|
|
1890
|
+
interface Style2DFilterProperties {
|
|
1891
|
+
filter: string;
|
|
1892
|
+
}
|
|
1893
|
+
interface Style2DFilterExtend extends Style2DFilterProperties {
|
|
1894
|
+
getComputedFilter: typeof getComputedFilter;
|
|
1895
|
+
getComputedFilterColorMatrix: typeof getComputedFilterColorMatrix;
|
|
1896
|
+
}
|
|
1897
|
+
declare class Style2DFilterModule extends Style2DModule {
|
|
1898
|
+
install(Style2D: new () => Style2D): void;
|
|
1899
|
+
}
|
|
1900
|
+
declare function getComputedFilter(this: Style2D): Style2DFilter;
|
|
1901
|
+
declare function getComputedFilterColorMatrix(this: Style2D): ColorMatrix;
|
|
1902
|
+
|
|
1903
|
+
interface Style2DOffsetProperties {
|
|
1904
|
+
offsetPath?: string;
|
|
1905
|
+
offsetAnchor?: string | number;
|
|
1906
|
+
offsetDistance?: string | number;
|
|
1907
|
+
offsetPosition?: string | number;
|
|
1908
|
+
}
|
|
1909
|
+
interface Style2DOffsetExtend extends Style2DOffsetProperties {
|
|
1910
|
+
getComputedOffset: typeof getComputedOffset;
|
|
1911
|
+
}
|
|
1912
|
+
declare module '../Style2D' {
|
|
1913
|
+
interface Style2DOptions extends Partial<Style2DOffsetProperties> {
|
|
1914
|
+
}
|
|
1915
|
+
interface Style2D extends Style2DOffsetProperties {
|
|
1916
|
+
getComputedOffset: typeof getComputedOffset;
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
declare class Style2DOffsetModule extends Style2DModule {
|
|
1920
|
+
install(Style2D: new () => Style2D): void;
|
|
1921
|
+
}
|
|
1922
|
+
declare function getComputedOffset(this: Style2D): void;
|
|
1923
|
+
|
|
1924
|
+
interface Style2DTextProperties {
|
|
1925
|
+
color: string;
|
|
1926
|
+
fontSize: number;
|
|
1927
|
+
fontWeight: FontWeight;
|
|
1928
|
+
fontFamily: string;
|
|
1929
|
+
fontStyle: FontStyle;
|
|
1930
|
+
fontKerning: FontKerning;
|
|
1931
|
+
textWrap: TextWrap;
|
|
1932
|
+
textAlign: TextAlign;
|
|
1933
|
+
verticalAlign: VerticalAlign;
|
|
1934
|
+
textTransform: TextTransform;
|
|
1935
|
+
textDecoration: TextDecoration | null;
|
|
1936
|
+
textStrokeWidth: number;
|
|
1937
|
+
textStrokeColor: string;
|
|
1938
|
+
direction: 'inherit' | 'ltr' | 'rtl';
|
|
1939
|
+
lineHeight: number;
|
|
1940
|
+
letterSpacing: number;
|
|
1941
|
+
writingMode: WritingMode;
|
|
1942
|
+
}
|
|
1943
|
+
interface Style2DTextExtend extends Style2DTextProperties {
|
|
1944
|
+
}
|
|
1945
|
+
declare class Style2DTextModule extends Style2DModule {
|
|
1946
|
+
install(Style2D: new () => Style2D): void;
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1949
|
+
interface Style2DTransformProperties {
|
|
1950
|
+
left: number;
|
|
1951
|
+
top: number;
|
|
1952
|
+
width: number;
|
|
1953
|
+
height: number;
|
|
1954
|
+
rotate: number;
|
|
1955
|
+
scaleX: number;
|
|
1956
|
+
scaleY: number;
|
|
1957
|
+
transform?: string;
|
|
1958
|
+
transformOrigin: string;
|
|
1959
|
+
}
|
|
1960
|
+
interface Style2DTransformExtend extends Style2DTransformProperties {
|
|
1961
|
+
getComputedTransform: typeof getComputedTransform;
|
|
1962
|
+
getComputedTransformOrigin: typeof getComputedTransformOrigin;
|
|
1963
|
+
}
|
|
1964
|
+
declare class Style2DTransformModule extends Style2DModule {
|
|
1965
|
+
install(Style2D: new () => Style2D): void;
|
|
1966
|
+
}
|
|
1967
|
+
declare function getComputedTransform(this: Style2D): Transform2D;
|
|
1968
|
+
declare function getComputedTransformOrigin(this: Style2D): number[];
|
|
1969
|
+
|
|
1970
|
+
interface CanvasItemOptions extends NodeOptions {
|
|
1971
|
+
style?: Style2DOptions;
|
|
1972
|
+
tint?: string;
|
|
1973
|
+
blendMode?: WebGLBlendMode;
|
|
1974
|
+
}
|
|
1975
|
+
declare class CanvasItem extends Node {
|
|
1976
|
+
tint?: ColorValue;
|
|
1977
|
+
blendMode?: WebGLBlendMode;
|
|
1978
|
+
protected _style: Style2D;
|
|
1979
|
+
get style(): Style2D;
|
|
1980
|
+
set style(style: Style2D);
|
|
1981
|
+
/** @internal */
|
|
1982
|
+
opacity: number;
|
|
1983
|
+
protected _parentOpacity?: number;
|
|
1984
|
+
protected _tint: Color;
|
|
1985
|
+
protected _backgroundColor: Color;
|
|
1986
|
+
context: CanvasContext;
|
|
1987
|
+
protected _resetContext: boolean;
|
|
1988
|
+
protected _waitingRedraw: boolean;
|
|
1989
|
+
protected _waitingReflow: boolean;
|
|
1990
|
+
protected _waitingRepaint: boolean;
|
|
1991
|
+
protected _originalBatchables: CanvasBatchable[];
|
|
1992
|
+
protected _layoutedBatchables: CanvasBatchable[];
|
|
1993
|
+
protected _batchables: CanvasBatchable[];
|
|
1994
|
+
constructor(options?: CanvasItemOptions);
|
|
1995
|
+
setProperties(properties?: Record<PropertyKey, any>): this;
|
|
1996
|
+
protected _onUpdateProperty(key: PropertyKey, newValue: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
1997
|
+
protected _onUpdateStyleProperty(key: PropertyKey, newValue: any, oldValue: any, declaration?: PropertyDeclaration): void;
|
|
1998
|
+
protected _updateOpacity(): void;
|
|
1999
|
+
isVisible(): boolean;
|
|
2000
|
+
requestRedraw(): void;
|
|
2001
|
+
requestReflow(): void;
|
|
2002
|
+
requestRepaint(): void;
|
|
2003
|
+
protected _process(delta: number): void;
|
|
2004
|
+
protected _draw(): void;
|
|
2005
|
+
protected _relayout(batchables: CanvasBatchable[]): CanvasBatchable[];
|
|
2006
|
+
protected _reflow(batchables: CanvasBatchable[]): CanvasBatchable[];
|
|
2007
|
+
protected _repaint(batchables: CanvasBatchable[]): CanvasBatchable[];
|
|
2008
|
+
protected _render(renderer: WebGLRenderer): void;
|
|
2009
|
+
toJSON(): Record<string, any>;
|
|
2010
|
+
}
|
|
2011
|
+
|
|
2012
|
+
interface Node2DOptions extends CanvasItemOptions {
|
|
2013
|
+
}
|
|
2014
|
+
declare class Node2D extends CanvasItem {
|
|
2015
|
+
readonly _transform: Transform2D;
|
|
2016
|
+
protected _parentTransformDirtyId?: number;
|
|
2017
|
+
constructor(options?: Node2DOptions);
|
|
2018
|
+
getBoundingBox(): Rectangle;
|
|
2019
|
+
protected _onUpdateStyleProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2020
|
+
protected _updateTransform(): void;
|
|
2021
|
+
protected _transformVertices(vertices: number[]): number[];
|
|
2022
|
+
protected _reflow(batchables: CanvasBatchable[]): CanvasBatchable[];
|
|
2023
|
+
protected _process(delta: number): void;
|
|
2024
|
+
input(event: UIEvent): void;
|
|
2025
|
+
}
|
|
2026
|
+
|
|
2027
|
+
interface Element2DOptions extends Node2DOptions {
|
|
2028
|
+
draggable?: boolean;
|
|
2029
|
+
}
|
|
2030
|
+
declare class Element2D extends Node2D {
|
|
2031
|
+
draggable?: boolean;
|
|
2032
|
+
protected _background?: Texture;
|
|
2033
|
+
constructor(options?: Element2DOptions);
|
|
2034
|
+
protected _onUpdateStyleProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2035
|
+
protected _updateBackground(): Promise<void>;
|
|
2036
|
+
protected _updateTransform(): void;
|
|
2037
|
+
protected _updateOverflow(): void;
|
|
2038
|
+
protected _draw(): void;
|
|
2039
|
+
protected _drawBackground(): void;
|
|
2040
|
+
protected _drawContent(): void;
|
|
2041
|
+
protected _drawRect(): void;
|
|
2042
|
+
}
|
|
2043
|
+
|
|
2044
|
+
declare class Graphics2D extends Node2D {
|
|
2045
|
+
protected _resetContext: boolean;
|
|
2046
|
+
lineCap?: LineCap;
|
|
2047
|
+
lineJoin?: LineJoin;
|
|
2048
|
+
fillStyle?: ColorValue | Texture;
|
|
2049
|
+
strokeStyle?: ColorValue | Texture;
|
|
2050
|
+
lineWidth?: number;
|
|
2051
|
+
miterLimit?: number;
|
|
2052
|
+
rect: (x: number, y: number, width: number, height: number) => this;
|
|
2053
|
+
fillRect: (x: number, y: number, width: number, height: number) => this;
|
|
2054
|
+
strokeRect: (x: number, y: number, width: number, height: number) => this;
|
|
2055
|
+
roundRect: (x: number, y: number, width: number, height: number, radii: number) => this;
|
|
2056
|
+
ellipse: (x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean) => this;
|
|
2057
|
+
arc: (x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean) => this;
|
|
2058
|
+
beginPath: () => this;
|
|
2059
|
+
moveTo: (x: number, y: number) => this;
|
|
2060
|
+
lineTo: (x: number, y: number) => this;
|
|
2061
|
+
closePath: () => this;
|
|
2062
|
+
fill: () => this;
|
|
2063
|
+
stroke: () => this;
|
|
2064
|
+
drawCircle(x: number, y: number, radius: number): this;
|
|
2065
|
+
drawEllipse(x: number, y: number, width: number, height: number): this;
|
|
2066
|
+
}
|
|
2067
|
+
|
|
2068
|
+
interface ImageFrame {
|
|
2069
|
+
texture: Texture;
|
|
2070
|
+
duration: number;
|
|
2071
|
+
}
|
|
2072
|
+
declare class Image2DResource extends Resource {
|
|
2073
|
+
frames: ImageFrame[];
|
|
2074
|
+
duration: number;
|
|
2075
|
+
constructor(source: Texture | ImageFrame[]);
|
|
2076
|
+
updateDuration(): this;
|
|
2077
|
+
destroy(): void;
|
|
2078
|
+
}
|
|
2079
|
+
|
|
2080
|
+
interface Image2DOptions extends Element2DOptions {
|
|
2081
|
+
src?: string;
|
|
2082
|
+
gif?: boolean;
|
|
2083
|
+
}
|
|
2084
|
+
declare class Image2D extends Element2D {
|
|
2085
|
+
resource?: Image2DResource;
|
|
2086
|
+
gif: boolean;
|
|
2087
|
+
src: string;
|
|
2088
|
+
get currentTexture(): Texture | undefined;
|
|
2089
|
+
get duration(): number;
|
|
2090
|
+
get naturalWidth(): number;
|
|
2091
|
+
get naturalHeight(): number;
|
|
2092
|
+
get complete(): boolean;
|
|
2093
|
+
protected _frameIndex: number;
|
|
2094
|
+
protected _complete: boolean;
|
|
2095
|
+
protected _wait: Promise<void>;
|
|
2096
|
+
constructor(options?: Image2DOptions);
|
|
2097
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2098
|
+
decode(): Promise<void>;
|
|
2099
|
+
setResource(source: Texture | ImageFrame[] | Image2DResource): this;
|
|
2100
|
+
protected _load(src: string): Promise<void>;
|
|
2101
|
+
protected _getCurrentTime(): number;
|
|
2102
|
+
protected _updateFrameIndex(): this;
|
|
2103
|
+
protected _process(delta: number): void;
|
|
2104
|
+
protected _drawContent(): void;
|
|
2105
|
+
protected _repaint(batchables: CanvasBatchable[]): CanvasBatchable[];
|
|
2106
|
+
}
|
|
2107
|
+
|
|
2108
|
+
interface LottieOptions extends Element2DOptions {
|
|
2109
|
+
pixelRatio?: number;
|
|
2110
|
+
src?: string;
|
|
2111
|
+
}
|
|
2112
|
+
declare class Lottie2D extends Element2D {
|
|
2113
|
+
pixelRatio: number;
|
|
2114
|
+
src: string;
|
|
2115
|
+
duration: number;
|
|
2116
|
+
readonly texture: Texture<HTMLCanvasElement>;
|
|
2117
|
+
animation?: AnimationItem;
|
|
2118
|
+
constructor(options?: LottieOptions);
|
|
2119
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2120
|
+
protected _onUpdateStyleProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2121
|
+
protected _load(): Promise<void>;
|
|
2122
|
+
protected _process(delta: number): void;
|
|
2123
|
+
protected _drawContent(): void;
|
|
2124
|
+
}
|
|
2125
|
+
|
|
2126
|
+
interface Text2DOptions extends Element2DOptions {
|
|
2127
|
+
pixelRatio?: number;
|
|
2128
|
+
split?: boolean;
|
|
2129
|
+
content?: IDOCTextContent;
|
|
2130
|
+
effects?: Partial<IDOCStyleDeclaration>[];
|
|
2131
|
+
}
|
|
2132
|
+
declare class Text2D extends Element2D {
|
|
2133
|
+
pixelRatio: number;
|
|
2134
|
+
split: boolean;
|
|
2135
|
+
content: IDOCTextContent;
|
|
2136
|
+
effects?: Partial<IDOCStyleDeclaration>[];
|
|
2137
|
+
readonly texture: Texture<HTMLCanvasElement>;
|
|
2138
|
+
protected _subTextsCount: number;
|
|
2139
|
+
constructor(options?: Text2DOptions);
|
|
2140
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2141
|
+
protected _onUpdateStyleProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2142
|
+
protected _getSubTexts(): Text2D[];
|
|
2143
|
+
protected _updateSubTexts(): void;
|
|
2144
|
+
measure(): MeasureResult;
|
|
2145
|
+
protected _updateSplit(): void;
|
|
2146
|
+
protected _drawContent(): void;
|
|
2147
|
+
}
|
|
2148
|
+
|
|
2149
|
+
interface Video2DOptions extends Element2DOptions {
|
|
2150
|
+
src?: string;
|
|
2151
|
+
}
|
|
2152
|
+
declare class Video2D extends Element2D {
|
|
2153
|
+
src: string;
|
|
2154
|
+
texture?: VideoTexture;
|
|
2155
|
+
get duration(): number;
|
|
2156
|
+
protected _wait: Promise<void>;
|
|
2157
|
+
constructor(options?: Video2DOptions);
|
|
2158
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2159
|
+
waitLoad(): Promise<void>;
|
|
2160
|
+
protected _load(src: string): Promise<void>;
|
|
2161
|
+
protected _drawContent(): void;
|
|
2162
|
+
protected _updateVideoCurrentTime(): void;
|
|
2163
|
+
protected _process(delta: number): void;
|
|
2164
|
+
}
|
|
2165
|
+
|
|
2166
|
+
declare abstract class Loader {
|
|
2167
|
+
abstract install(assets: Assets): this;
|
|
2168
|
+
}
|
|
2169
|
+
|
|
2170
|
+
declare class FontLoader extends Loader {
|
|
2171
|
+
load: (url: string) => Promise<Font>;
|
|
2172
|
+
install(assets: Assets): this;
|
|
2173
|
+
}
|
|
2174
|
+
|
|
2175
|
+
declare class GifLoader extends Loader {
|
|
2176
|
+
load: (url: string) => Promise<Image2DResource>;
|
|
2177
|
+
install(assets: Assets): this;
|
|
2178
|
+
}
|
|
2179
|
+
|
|
2180
|
+
declare class JsonLoader extends Loader {
|
|
2181
|
+
load: (url: string) => Promise<Record<string, any>>;
|
|
2182
|
+
install(assets: Assets): this;
|
|
2183
|
+
}
|
|
2184
|
+
|
|
2185
|
+
declare class LottieLoader extends Loader {
|
|
2186
|
+
load: (url: string, canvas: HTMLCanvasElement) => Promise<AnimationItem>;
|
|
2187
|
+
install(assets: Assets): this;
|
|
2188
|
+
}
|
|
2189
|
+
|
|
2190
|
+
declare class TextLoader extends Loader {
|
|
2191
|
+
load: (url: string) => Promise<string>;
|
|
2192
|
+
install(assets: Assets): this;
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
declare class TextureLoader extends Loader {
|
|
2196
|
+
load: (url: string) => Promise<Texture<ImageBitmap>>;
|
|
2197
|
+
install(assets: Assets): this;
|
|
2198
|
+
}
|
|
2199
|
+
|
|
2200
|
+
declare class VideoLoader extends Loader {
|
|
2201
|
+
load: (url: string) => Promise<VideoTexture>;
|
|
2202
|
+
install(assets: Assets): this;
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
type AssetHandler = (url: string, options?: any) => any | Promise<any>;
|
|
2206
|
+
interface Assets {
|
|
2207
|
+
font: FontLoader;
|
|
2208
|
+
gif: GifLoader;
|
|
2209
|
+
json: JsonLoader;
|
|
2210
|
+
lottie: LottieLoader;
|
|
2211
|
+
text: TextLoader;
|
|
2212
|
+
texture: TextureLoader;
|
|
2213
|
+
video: VideoLoader;
|
|
2214
|
+
}
|
|
2215
|
+
declare class Assets {
|
|
2216
|
+
defaultHandler: AssetHandler;
|
|
2217
|
+
protected _handlers: Map<string, AssetHandler>;
|
|
2218
|
+
protected _handleing: Map<string, Promise<any>>;
|
|
2219
|
+
protected _handled: Map<string, any>;
|
|
2220
|
+
protected _gc: FinalizationRegistry<string> | undefined;
|
|
2221
|
+
constructor();
|
|
2222
|
+
use(loader: Loader): this;
|
|
2223
|
+
register(mimeType: string, handler: AssetHandler): this;
|
|
2224
|
+
fetch(url: string): Promise<Response>;
|
|
2225
|
+
protected _fixSVG(dataURI: string): string;
|
|
2226
|
+
fetchImageBitmap(url: string, options?: ImageBitmapOptions): Promise<ImageBitmap>;
|
|
2227
|
+
get<T>(id: string): T | undefined;
|
|
2228
|
+
set(id: string, value: any): void;
|
|
2229
|
+
loadBy<T>(id: string, handler: () => Promise<T>): Promise<T>;
|
|
2230
|
+
load<T>(url: string, options?: any): Promise<T>;
|
|
2231
|
+
waitUntilLoad(): Promise<void>;
|
|
2232
|
+
gc(): void;
|
|
2233
|
+
}
|
|
2234
|
+
declare const assets: Assets;
|
|
2235
|
+
|
|
2236
|
+
declare abstract class AudioProcessor {
|
|
2237
|
+
destination: IAudioNode;
|
|
2238
|
+
source: IAudioNode | null;
|
|
2239
|
+
constructor(destination: IAudioNode, source?: IAudioNode | null);
|
|
2240
|
+
connect(destination: IAudioNode): void;
|
|
2241
|
+
disconnect(): void;
|
|
2242
|
+
}
|
|
2243
|
+
|
|
2244
|
+
declare class AudioPipeline extends EventEmitter {
|
|
2245
|
+
protected _input: IAudioNode;
|
|
2246
|
+
protected _output: IAudioNode;
|
|
2247
|
+
protected _processers: AudioProcessor[];
|
|
2248
|
+
constructor(_input: IAudioNode, _output: IAudioNode);
|
|
2249
|
+
get processors(): AudioProcessor[];
|
|
2250
|
+
set processors(val: AudioProcessor[]);
|
|
2251
|
+
get destination(): IAudioNode;
|
|
2252
|
+
}
|
|
2253
|
+
|
|
2254
|
+
interface IAudioContext {
|
|
2255
|
+
muted: boolean;
|
|
2256
|
+
volume: number;
|
|
2257
|
+
playbackRate: number;
|
|
2258
|
+
paused: boolean;
|
|
2259
|
+
processors: AudioProcessor[];
|
|
2260
|
+
toggleMute: () => boolean;
|
|
2261
|
+
togglePause: () => boolean;
|
|
2262
|
+
refreshPaused: () => void;
|
|
2263
|
+
refresh: () => void;
|
|
2264
|
+
audioContext: AudioContext;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
type IAudioNode = AudioNode;
|
|
2268
|
+
|
|
2269
|
+
interface IPlayOptions {
|
|
2270
|
+
start?: number;
|
|
2271
|
+
end?: number;
|
|
2272
|
+
playbackRate?: number;
|
|
2273
|
+
loop?: boolean;
|
|
2274
|
+
volume?: number;
|
|
2275
|
+
muted?: boolean;
|
|
2276
|
+
processors?: AudioProcessor[];
|
|
2277
|
+
complete?: () => void;
|
|
2278
|
+
multiple?: boolean;
|
|
2279
|
+
}
|
|
2280
|
+
|
|
2281
|
+
declare class HTMLAudioContext extends EventEmitter implements IAudioContext {
|
|
2282
|
+
protected static _instance?: HTMLAudioContext;
|
|
2283
|
+
static get instance(): HTMLAudioContext;
|
|
2284
|
+
playbackRate: number;
|
|
2285
|
+
muted: boolean;
|
|
2286
|
+
volume: number;
|
|
2287
|
+
paused: boolean;
|
|
2288
|
+
refresh(): void;
|
|
2289
|
+
refreshPaused(): void;
|
|
2290
|
+
get processors(): AudioProcessor[];
|
|
2291
|
+
set processors(_processors: AudioProcessor[]);
|
|
2292
|
+
get audioContext(): AudioContext;
|
|
2293
|
+
toggleMute(): boolean;
|
|
2294
|
+
togglePause(): boolean;
|
|
2295
|
+
destroy(): void;
|
|
2296
|
+
}
|
|
2297
|
+
|
|
2298
|
+
declare class HTMLSound extends EventEmitter {
|
|
2299
|
+
static readonly PADDING = 0.1;
|
|
2300
|
+
protected _source: HTMLAudioElement | null;
|
|
2301
|
+
protected _audio: HTMLAudio | null;
|
|
2302
|
+
protected _end: number;
|
|
2303
|
+
protected _pausedReal: boolean;
|
|
2304
|
+
protected _duration: number;
|
|
2305
|
+
protected _start: number;
|
|
2306
|
+
protected _playing: boolean;
|
|
2307
|
+
get progress(): number;
|
|
2308
|
+
/** Paused */
|
|
2309
|
+
protected _paused: boolean;
|
|
2310
|
+
get paused(): boolean;
|
|
2311
|
+
set paused(val: boolean);
|
|
2312
|
+
/** PlaybackRate */
|
|
2313
|
+
protected _playbackRate: number;
|
|
2314
|
+
get playbackRate(): number;
|
|
2315
|
+
set playbackRate(val: number);
|
|
2316
|
+
/** Volume */
|
|
2317
|
+
protected _volume: number;
|
|
2318
|
+
get volume(): number;
|
|
2319
|
+
set volume(val: number);
|
|
2320
|
+
/** Loop */
|
|
2321
|
+
protected _loop: boolean;
|
|
2322
|
+
get loop(): boolean;
|
|
2323
|
+
set loop(val: boolean);
|
|
2324
|
+
/** Muted */
|
|
2325
|
+
protected _muted: boolean;
|
|
2326
|
+
get muted(): boolean;
|
|
2327
|
+
set muted(val: boolean);
|
|
2328
|
+
set(name: 'playbackRate' | 'volume' | 'muted' | 'loop' | 'paused', value: number | boolean): this;
|
|
2329
|
+
protected _onPlay(): void;
|
|
2330
|
+
protected _onPause(): void;
|
|
2331
|
+
init(audio: HTMLAudio): this;
|
|
2332
|
+
protected _stop(): void;
|
|
2333
|
+
stop(): void;
|
|
2334
|
+
get processors(): AudioProcessor[];
|
|
2335
|
+
set processors(_val: AudioProcessor[]);
|
|
2336
|
+
refresh(): void;
|
|
2337
|
+
refreshPaused(): void;
|
|
2338
|
+
play(options?: IPlayOptions): void;
|
|
2339
|
+
protected _onUpdate: () => void;
|
|
2340
|
+
protected _onComplete(): void;
|
|
2341
|
+
destroy(): void;
|
|
2342
|
+
}
|
|
2343
|
+
|
|
2344
|
+
declare class HTMLAudio {
|
|
2345
|
+
parent: Audio;
|
|
2346
|
+
source: HTMLAudioElement;
|
|
2347
|
+
protected _src: string;
|
|
2348
|
+
get src(): string;
|
|
2349
|
+
set src(val: string);
|
|
2350
|
+
get duration(): number;
|
|
2351
|
+
get isPlayable(): boolean;
|
|
2352
|
+
get context(): HTMLAudioContext;
|
|
2353
|
+
constructor(parent: Audio);
|
|
2354
|
+
load(): Promise<this>;
|
|
2355
|
+
createSound(): HTMLSound;
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
declare class WebAudioContext extends AudioPipeline implements IAudioContext {
|
|
2359
|
+
/** Singleton */
|
|
2360
|
+
protected static _instance?: WebAudioContext;
|
|
2361
|
+
static get instance(): WebAudioContext;
|
|
2362
|
+
static get audioContext(): AudioContext;
|
|
2363
|
+
static get offlineContext(): OfflineAudioContext;
|
|
2364
|
+
static setParamValue(param: AudioParam, value: number): void;
|
|
2365
|
+
static decode(buffer: ArrayBuffer): Promise<AudioBuffer>;
|
|
2366
|
+
/** Context */
|
|
2367
|
+
protected _context: AudioContext;
|
|
2368
|
+
protected _offlineContext: OfflineAudioContext;
|
|
2369
|
+
get audioContext(): AudioContext;
|
|
2370
|
+
get offlineContext(): OfflineAudioContext;
|
|
2371
|
+
protected _locked: boolean;
|
|
2372
|
+
muted: boolean;
|
|
2373
|
+
volume: number;
|
|
2374
|
+
playbackRate: number;
|
|
2375
|
+
/** Paused */
|
|
2376
|
+
autoPause: boolean;
|
|
2377
|
+
protected _paused: boolean;
|
|
2378
|
+
protected _pausedOnBlur: boolean;
|
|
2379
|
+
get paused(): boolean;
|
|
2380
|
+
set paused(val: boolean);
|
|
2381
|
+
/** Nodes */
|
|
2382
|
+
protected _compressor: DynamicsCompressorNode;
|
|
2383
|
+
protected _analyser: AnalyserNode;
|
|
2384
|
+
constructor();
|
|
2385
|
+
protected _onFocus(): void;
|
|
2386
|
+
protected _onBlur(): void;
|
|
2387
|
+
protected _unlock: () => void;
|
|
2388
|
+
playEmptySound(): void;
|
|
2389
|
+
refresh(): void;
|
|
2390
|
+
refreshPaused(): void;
|
|
2391
|
+
toggleMute(): boolean;
|
|
2392
|
+
togglePause(): boolean;
|
|
2393
|
+
decode(buffer: ArrayBuffer): Promise<AudioBuffer>;
|
|
2394
|
+
setParamValue(param: AudioParam, value: number): void;
|
|
2395
|
+
}
|
|
2396
|
+
|
|
2397
|
+
declare class WebSound extends EventEmitter {
|
|
2398
|
+
protected _audio: WebAudio | null;
|
|
2399
|
+
protected _sourceNode: AudioBufferSourceNode | null;
|
|
2400
|
+
protected _gain: GainNode | null;
|
|
2401
|
+
/** Progress */
|
|
2402
|
+
protected _progress: number;
|
|
2403
|
+
get progress(): number;
|
|
2404
|
+
/** Paused */
|
|
2405
|
+
protected _pausedReal: boolean;
|
|
2406
|
+
protected _paused: boolean;
|
|
2407
|
+
get paused(): boolean;
|
|
2408
|
+
set paused(val: boolean);
|
|
2409
|
+
/** Volume */
|
|
2410
|
+
protected _volume: number;
|
|
2411
|
+
get volume(): number;
|
|
2412
|
+
set volume(val: number);
|
|
2413
|
+
/** PlaybackRate */
|
|
2414
|
+
protected _playbackRate: number;
|
|
2415
|
+
get playbackRate(): number;
|
|
2416
|
+
set playbackRate(val: number);
|
|
2417
|
+
/** Loop */
|
|
2418
|
+
protected _loop: boolean;
|
|
2419
|
+
get loop(): boolean;
|
|
2420
|
+
set loop(val: boolean);
|
|
2421
|
+
/** Muted */
|
|
2422
|
+
protected _muted: boolean;
|
|
2423
|
+
get muted(): boolean;
|
|
2424
|
+
set muted(val: boolean);
|
|
2425
|
+
protected _duration: number;
|
|
2426
|
+
protected _end: number;
|
|
2427
|
+
protected _elapsed: number;
|
|
2428
|
+
protected _lastUpdate: number;
|
|
2429
|
+
/** Processors */
|
|
2430
|
+
protected _processors: AudioProcessor[];
|
|
2431
|
+
init(audio: WebAudio): this;
|
|
2432
|
+
protected _now(): number;
|
|
2433
|
+
play(options?: IPlayOptions): void;
|
|
2434
|
+
protected _stop(): void;
|
|
2435
|
+
stop(): void;
|
|
2436
|
+
protected _update(force?: boolean): void;
|
|
2437
|
+
refresh(): void;
|
|
2438
|
+
applyProcessors(): void;
|
|
2439
|
+
refreshPaused(): void;
|
|
2440
|
+
protected _onComplete: () => void;
|
|
2441
|
+
protected _updateListener: () => void;
|
|
2442
|
+
protected _enableTicker(enabled: boolean): void;
|
|
2443
|
+
destroy(): void;
|
|
2444
|
+
}
|
|
2445
|
+
|
|
2446
|
+
declare class WebAudio extends AudioPipeline {
|
|
2447
|
+
parent: Audio;
|
|
2448
|
+
/** Source */
|
|
2449
|
+
protected _sourceBuffer?: AudioBuffer;
|
|
2450
|
+
protected _sourceNode: AudioBufferSourceNode;
|
|
2451
|
+
protected _sourceLoad?: Promise<this>;
|
|
2452
|
+
/** Nodes */
|
|
2453
|
+
gain: GainNode;
|
|
2454
|
+
analyser: AnalyserNode;
|
|
2455
|
+
get context(): WebAudioContext;
|
|
2456
|
+
get isPlayable(): boolean;
|
|
2457
|
+
get duration(): number;
|
|
2458
|
+
get buffer(): AudioBuffer | null;
|
|
2459
|
+
set buffer(val: AudioBuffer | null);
|
|
2460
|
+
constructor(parent: Audio);
|
|
2461
|
+
load(): Promise<this>;
|
|
2462
|
+
protected _loadUrl(url: string): Promise<this>;
|
|
2463
|
+
protected _decode(buffer: ArrayBuffer | AudioBuffer): Promise<AudioBuffer>;
|
|
2464
|
+
cloneSource(): {
|
|
2465
|
+
source: AudioBufferSourceNode;
|
|
2466
|
+
gain: GainNode;
|
|
2467
|
+
};
|
|
2468
|
+
createSound(): WebSound;
|
|
2469
|
+
}
|
|
2470
|
+
|
|
2471
|
+
type PlatformAudio = WebAudio | HTMLAudio;
|
|
2472
|
+
type PlatformSound = WebSound | HTMLSound;
|
|
2473
|
+
declare class Audio extends Node {
|
|
2474
|
+
protected static _soundPool: PlatformSound[];
|
|
2475
|
+
protected _sounds: PlatformSound[];
|
|
2476
|
+
/** PlatformAudio */
|
|
2477
|
+
protected _platformAudio: HTMLAudio | WebAudio;
|
|
2478
|
+
get platformAudio(): PlatformAudio;
|
|
2479
|
+
/** Src */
|
|
2480
|
+
protected _src: string;
|
|
2481
|
+
get src(): string;
|
|
2482
|
+
set src(val: string);
|
|
2483
|
+
isLoaded: boolean;
|
|
2484
|
+
get isPlayable(): boolean;
|
|
2485
|
+
/** Duration */
|
|
2486
|
+
get duration(): number;
|
|
2487
|
+
/** Volume */
|
|
2488
|
+
protected _volume: number;
|
|
2489
|
+
get volume(): number;
|
|
2490
|
+
set volume(val: number);
|
|
2491
|
+
/** Muted */
|
|
2492
|
+
protected _muted: boolean;
|
|
2493
|
+
get muted(): boolean;
|
|
2494
|
+
set muted(val: boolean);
|
|
2495
|
+
/** Loop */
|
|
2496
|
+
protected _loop: boolean;
|
|
2497
|
+
get loop(): boolean;
|
|
2498
|
+
set loop(val: boolean);
|
|
2499
|
+
/** PlaybackRate */
|
|
2500
|
+
protected _playbackRate: number;
|
|
2501
|
+
get playbackRate(): number;
|
|
2502
|
+
set playbackRate(val: number);
|
|
2503
|
+
/** IsPlaying */
|
|
2504
|
+
protected _isPlaying: boolean;
|
|
2505
|
+
get isPlaying(): boolean;
|
|
2506
|
+
/** Paused */
|
|
2507
|
+
protected _paused: boolean;
|
|
2508
|
+
get paused(): boolean;
|
|
2509
|
+
set paused(val: boolean);
|
|
2510
|
+
multiple: boolean;
|
|
2511
|
+
start: number;
|
|
2512
|
+
end: number;
|
|
2513
|
+
constructor(src?: string);
|
|
2514
|
+
load(): Promise<this>;
|
|
2515
|
+
pause(): this;
|
|
2516
|
+
resume(): this;
|
|
2517
|
+
stop(): this;
|
|
2518
|
+
play(options?: IPlayOptions): PlatformSound | undefined;
|
|
2519
|
+
protected _removeSounds(): void;
|
|
2520
|
+
protected _createSound(): PlatformSound;
|
|
2521
|
+
refresh(): void;
|
|
2522
|
+
refreshPaused(): void;
|
|
2523
|
+
protected _onComplete: (sound: PlatformSound) => void;
|
|
2524
|
+
protected _recycleSound(sound: PlatformSound): void;
|
|
2525
|
+
protected _prevTime: number;
|
|
2526
|
+
protected _timer: number;
|
|
2527
|
+
protected _process(delta: number): void;
|
|
2528
|
+
protected _setTimeStop(): void;
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2531
|
+
declare class AudioSpectrum extends Element2D {
|
|
2532
|
+
}
|
|
2533
|
+
|
|
2534
|
+
interface AudioWaveformOptions extends Element2DOptions {
|
|
2535
|
+
src?: string;
|
|
2536
|
+
gap?: number;
|
|
2537
|
+
color?: string;
|
|
2538
|
+
}
|
|
2539
|
+
declare class AudioWaveform extends Element2D {
|
|
2540
|
+
src?: string;
|
|
2541
|
+
gap: number;
|
|
2542
|
+
color: string;
|
|
2543
|
+
protected _audioBuffer?: AudioBuffer;
|
|
2544
|
+
protected _src: Texture<HTMLCanvasElement> | undefined;
|
|
2545
|
+
protected _needsUpdateTexture: boolean;
|
|
2546
|
+
constructor(options?: AudioWaveformOptions);
|
|
2547
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2548
|
+
_loadSrc(src: string): Promise<void>;
|
|
2549
|
+
syncTexture(force?: boolean): void;
|
|
2550
|
+
protected _process(delta: number): void;
|
|
2551
|
+
protected _drawSrc(): void;
|
|
2552
|
+
}
|
|
2553
|
+
|
|
2554
|
+
type EffectMode = 'before' | 'parent' | 'children' | 'transition';
|
|
2555
|
+
interface EffectOptions extends NodeOptions {
|
|
2556
|
+
mode?: EffectMode;
|
|
2557
|
+
duration?: number;
|
|
2558
|
+
glsl?: string;
|
|
2559
|
+
glslSrc?: string;
|
|
2560
|
+
material?: Material;
|
|
2561
|
+
}
|
|
2562
|
+
interface EffectContext {
|
|
2563
|
+
redraw?: boolean;
|
|
2564
|
+
/** parent redraw */
|
|
2565
|
+
target?: Node;
|
|
2566
|
+
targetArea?: [number, number, number, number];
|
|
2567
|
+
/** transition */
|
|
2568
|
+
from?: Viewport;
|
|
2569
|
+
to?: Viewport;
|
|
2570
|
+
}
|
|
2571
|
+
declare class Effect extends Node {
|
|
2572
|
+
material?: Material;
|
|
2573
|
+
mode?: EffectMode;
|
|
2574
|
+
glsl: string;
|
|
2575
|
+
glslSrc: string;
|
|
2576
|
+
delay: number;
|
|
2577
|
+
duration: number;
|
|
2578
|
+
protected get _mode(): EffectMode;
|
|
2579
|
+
/** Viewports */
|
|
2580
|
+
readonly viewport: Viewport;
|
|
2581
|
+
readonly viewport2: Viewport;
|
|
2582
|
+
/** Render call */
|
|
2583
|
+
protected _renderId: number;
|
|
2584
|
+
protected _renderViewport?: Viewport;
|
|
2585
|
+
/** Temporary nodes for transition */
|
|
2586
|
+
protected _previousSibling?: Node;
|
|
2587
|
+
protected _nextSibling?: Node;
|
|
2588
|
+
constructor(options?: EffectOptions);
|
|
2589
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2590
|
+
protected _enterTree(): void;
|
|
2591
|
+
protected _exitTree(): void;
|
|
2592
|
+
protected _onProcessing: () => void;
|
|
2593
|
+
protected _onNodeProcessed: (node: Node) => void;
|
|
2594
|
+
protected _processParent(): void;
|
|
2595
|
+
protected _processChildren(): void;
|
|
2596
|
+
_onProcess(delta?: number): void;
|
|
2597
|
+
protected _renderBefore(renderer: WebGLRenderer): void;
|
|
2598
|
+
protected _renderTransition(renderer: WebGLRenderer): void;
|
|
2599
|
+
protected _renderParentOrChildren(renderer: WebGLRenderer): void;
|
|
2600
|
+
protected _parseTargetArea(): number[] | undefined;
|
|
2601
|
+
protected _render(renderer: WebGLRenderer): void;
|
|
2602
|
+
apply(renderer: WebGLRenderer, viewport: Viewport, context?: EffectContext): void;
|
|
2603
|
+
}
|
|
2604
|
+
|
|
2605
|
+
declare class BlurEffect extends Effect {
|
|
2606
|
+
static materialX: Material;
|
|
2607
|
+
static materialY: Material;
|
|
2608
|
+
strength: number;
|
|
2609
|
+
quality: number;
|
|
2610
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2611
|
+
}
|
|
2612
|
+
|
|
2613
|
+
declare class ColorAdjustEffect extends Effect {
|
|
2614
|
+
static material: Material;
|
|
2615
|
+
saturation: number;
|
|
2616
|
+
contrast: number;
|
|
2617
|
+
brightness: number;
|
|
2618
|
+
red: number;
|
|
2619
|
+
green: number;
|
|
2620
|
+
blue: number;
|
|
2621
|
+
alpha: number;
|
|
2622
|
+
gamma: number;
|
|
2623
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2624
|
+
}
|
|
2625
|
+
|
|
2626
|
+
interface ColorFilterEffectOptions {
|
|
2627
|
+
filter?: string;
|
|
2628
|
+
}
|
|
2629
|
+
declare class ColorFilterEffect extends Effect {
|
|
2630
|
+
filter: string;
|
|
2631
|
+
protected _colorMatrix: ColorMatrix;
|
|
2632
|
+
constructor(options?: ColorFilterEffectOptions);
|
|
2633
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2634
|
+
static material: Material;
|
|
2635
|
+
}
|
|
2636
|
+
|
|
2637
|
+
declare class ColorOverlayEffect extends Effect {
|
|
2638
|
+
static material: Material;
|
|
2639
|
+
colors: ColorValue[];
|
|
2640
|
+
alpha: number;
|
|
2641
|
+
protected _color: Color;
|
|
2642
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2643
|
+
}
|
|
2644
|
+
|
|
2645
|
+
declare class ColorRemoveEffect extends Effect {
|
|
2646
|
+
static material: Material;
|
|
2647
|
+
colors: ColorValue[];
|
|
2648
|
+
epsilon: number;
|
|
2649
|
+
protected _color: Color;
|
|
2650
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
declare class ColorReplaceEffect extends Effect {
|
|
2654
|
+
static material: Material;
|
|
2655
|
+
colors: ColorValue[][];
|
|
2656
|
+
epsilon: number;
|
|
2657
|
+
protected _color: Color;
|
|
2658
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2659
|
+
}
|
|
2660
|
+
|
|
2661
|
+
declare class EffectMaterial extends Material {
|
|
2662
|
+
vert: string;
|
|
2663
|
+
readonly uniforms: Map<string, any>;
|
|
2664
|
+
static RE: {
|
|
2665
|
+
getColor: RegExp;
|
|
2666
|
+
getFromColor: RegExp;
|
|
2667
|
+
getToColor: RegExp;
|
|
2668
|
+
transform: RegExp;
|
|
2669
|
+
transition: RegExp;
|
|
2670
|
+
};
|
|
2671
|
+
has: {
|
|
2672
|
+
getColor: boolean;
|
|
2673
|
+
getFromColor: boolean;
|
|
2674
|
+
getToColor: boolean;
|
|
2675
|
+
transform: boolean;
|
|
2676
|
+
transition: boolean;
|
|
2677
|
+
};
|
|
2678
|
+
constructor(glsl: string);
|
|
2679
|
+
}
|
|
2680
|
+
|
|
2681
|
+
declare class EmbossEffect extends Effect {
|
|
2682
|
+
strength: number;
|
|
2683
|
+
constructor(strength?: number);
|
|
2684
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2685
|
+
static material: Material;
|
|
2686
|
+
}
|
|
2687
|
+
|
|
2688
|
+
declare class GlitchEffect extends Effect {
|
|
2689
|
+
static material: Material;
|
|
2690
|
+
protected _canvas: HTMLCanvasElement;
|
|
2691
|
+
protected _texture: Texture;
|
|
2692
|
+
protected _sizes: Float32Array;
|
|
2693
|
+
protected _offsets: Float32Array;
|
|
2694
|
+
protected _redraw: boolean;
|
|
2695
|
+
slices: number;
|
|
2696
|
+
sampleSize: number;
|
|
2697
|
+
offset: number;
|
|
2698
|
+
direction: number;
|
|
2699
|
+
fillMode: number;
|
|
2700
|
+
seed: number;
|
|
2701
|
+
red: number[];
|
|
2702
|
+
green: number[];
|
|
2703
|
+
blue: number[];
|
|
2704
|
+
constructor();
|
|
2705
|
+
redraw(): void;
|
|
2706
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2707
|
+
}
|
|
2708
|
+
|
|
2709
|
+
declare class GodrayEffect extends Effect {
|
|
2710
|
+
static material: Material;
|
|
2711
|
+
angle: number;
|
|
2712
|
+
gain: number;
|
|
2713
|
+
lacunarity: number;
|
|
2714
|
+
parallel: boolean;
|
|
2715
|
+
center: number[];
|
|
2716
|
+
alpha: number;
|
|
2717
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2718
|
+
}
|
|
2719
|
+
|
|
2720
|
+
declare class KawaseEffect extends Effect {
|
|
2721
|
+
static material: Material;
|
|
2722
|
+
blur: number;
|
|
2723
|
+
quality: number;
|
|
2724
|
+
apply(renderer: WebGLRenderer, target: Viewport): void;
|
|
2725
|
+
}
|
|
2726
|
+
|
|
2727
|
+
declare class LeftEraseEffect extends Effect {
|
|
2728
|
+
static material: Material;
|
|
2729
|
+
apply(renderer: WebGLRenderer): void;
|
|
2730
|
+
}
|
|
2731
|
+
|
|
2732
|
+
interface MaskEffectOptions extends EffectOptions {
|
|
2733
|
+
src?: string;
|
|
2734
|
+
}
|
|
2735
|
+
declare class MaskEffect extends Effect {
|
|
2736
|
+
texture?: Texture<ImageBitmap>;
|
|
2737
|
+
src: string;
|
|
2738
|
+
constructor(options?: MaskEffectOptions);
|
|
2739
|
+
load(): Promise<void>;
|
|
2740
|
+
protected _onUpdateProperty(key: PropertyKey, value: any, oldValue: any): void;
|
|
2741
|
+
apply(renderer: WebGLRenderer, source: Viewport, context: EffectContext): void;
|
|
2742
|
+
static material: Material;
|
|
2743
|
+
}
|
|
2744
|
+
|
|
2745
|
+
declare class PixelateEffect extends Effect {
|
|
2746
|
+
static material: Material;
|
|
2747
|
+
size: number;
|
|
2748
|
+
constructor(size?: number);
|
|
2749
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2750
|
+
}
|
|
2751
|
+
|
|
2752
|
+
declare class TiltShiftEffect extends Effect {
|
|
2753
|
+
static material: Material;
|
|
2754
|
+
blur: number;
|
|
2755
|
+
gradientBlur: number;
|
|
2756
|
+
apply(renderer: WebGLRenderer, target: Viewport): void;
|
|
2757
|
+
}
|
|
2758
|
+
|
|
2759
|
+
declare class TwistEffect extends Effect {
|
|
2760
|
+
static material: Material;
|
|
2761
|
+
radius?: number;
|
|
2762
|
+
angle: number;
|
|
2763
|
+
padding: number;
|
|
2764
|
+
offset?: number;
|
|
2765
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2766
|
+
}
|
|
2767
|
+
|
|
2768
|
+
declare class ZoomBlurEffect extends Effect {
|
|
2769
|
+
static material: Material;
|
|
2770
|
+
center?: number[];
|
|
2771
|
+
innerRadius: number;
|
|
2772
|
+
radius: number;
|
|
2773
|
+
strength: number;
|
|
2774
|
+
apply(renderer: WebGLRenderer, source: Viewport): void;
|
|
2775
|
+
}
|
|
2776
|
+
|
|
2777
|
+
type Cursor = 'auto' | 'default' | 'none' | 'context-menu' | 'help' | 'pointer' | 'progress' | 'wait' | 'cell' | 'crosshair' | 'text' | 'vertical-text' | 'alias' | 'copy' | 'move' | 'no-drop' | 'not-allowed' | 'e-resize' | 'n-resize' | 'ne-resize' | 'nw-resize' | 's-resize' | 'se-resize' | 'sw-resize' | 'w-resize' | 'ns-resize' | 'ew-resize' | 'nesw-resize' | 'col-resize' | 'nwse-resize' | 'row-resize' | 'all-scroll' | 'zoom-in' | 'zoom-out' | 'grab' | 'grabbing';
|
|
2778
|
+
|
|
2779
|
+
declare class UIInputEvent<N extends UIEvent = UIEvent> implements UIEvent {
|
|
2780
|
+
/** Flags whether this event bubbles. This will take effect only if it is set before propagation. */
|
|
2781
|
+
bubbles: boolean;
|
|
2782
|
+
readonly cancelable = false;
|
|
2783
|
+
which: number;
|
|
2784
|
+
cancelBubble: boolean;
|
|
2785
|
+
returnValue: boolean;
|
|
2786
|
+
srcElement: EventTarget;
|
|
2787
|
+
readonly composed = false;
|
|
2788
|
+
/** The listeners of the event target that are being notified. */
|
|
2789
|
+
currentTarget: any;
|
|
2790
|
+
/** Flags whether the default response of the user agent was prevent through this event. */
|
|
2791
|
+
defaultPrevented: boolean;
|
|
2792
|
+
/**
|
|
2793
|
+
* The propagation phase.
|
|
2794
|
+
*/
|
|
2795
|
+
eventPhase: number;
|
|
2796
|
+
/** Flags whether this is a user-trusted event */
|
|
2797
|
+
isTrusted: boolean;
|
|
2798
|
+
/** The event target that this will be dispatched to. */
|
|
2799
|
+
target: any;
|
|
2800
|
+
/** The timestamp of when the event was created. */
|
|
2801
|
+
timeStamp: number;
|
|
2802
|
+
/** The type of event, e.g. {@code "mouseup"}. */
|
|
2803
|
+
type: string;
|
|
2804
|
+
/** The native event that caused the foremost original event. */
|
|
2805
|
+
nativeEvent: N;
|
|
2806
|
+
/** The original event that caused this event, if any. */
|
|
2807
|
+
originalEvent: UIInputEvent<N> | null;
|
|
2808
|
+
/** Flags whether propagation was stopped. */
|
|
2809
|
+
propagationStopped: boolean;
|
|
2810
|
+
/** Flags whether propagation was immediately stopped. */
|
|
2811
|
+
propagationImmediatelyStopped: boolean;
|
|
2812
|
+
/** The composed path of the event's propagation. The {@code target} is at the end. */
|
|
2813
|
+
path: any[];
|
|
2814
|
+
/** Event-specific detail */
|
|
2815
|
+
detail: number;
|
|
2816
|
+
/** The global Window object. */
|
|
2817
|
+
view: WindowProxy;
|
|
2818
|
+
/** The coordinates of the evnet relative to the nearest DOM layer. This is a non-standard property. */
|
|
2819
|
+
layer: {
|
|
2820
|
+
x: number;
|
|
2821
|
+
y: number;
|
|
2822
|
+
};
|
|
2823
|
+
get layerX(): number;
|
|
2824
|
+
get layerY(): number;
|
|
2825
|
+
/** The coordinates of the event relative to the DOM document. This is a non-standard property. */
|
|
2826
|
+
page: {
|
|
2827
|
+
x: number;
|
|
2828
|
+
y: number;
|
|
2829
|
+
};
|
|
2830
|
+
get pageX(): number;
|
|
2831
|
+
get pageY(): number;
|
|
2832
|
+
initEvent(..._args: any[]): void;
|
|
2833
|
+
initUIEvent(..._args: any[]): void;
|
|
2834
|
+
/** The propagation path for this event. */
|
|
2835
|
+
composedPath(): any[];
|
|
2836
|
+
/** Prevent default behavior of PixiJS and the user agent. */
|
|
2837
|
+
preventDefault(): void;
|
|
2838
|
+
stopImmediatePropagation(): void;
|
|
2839
|
+
stopPropagation(): void;
|
|
2840
|
+
readonly NONE = 0;
|
|
2841
|
+
readonly CAPTURING_PHASE = 1;
|
|
2842
|
+
readonly AT_TARGET = 2;
|
|
2843
|
+
readonly BUBBLING_PHASE = 3;
|
|
2844
|
+
}
|
|
2845
|
+
|
|
2846
|
+
declare class MouseInputEvent extends UIInputEvent implements MouseEvent {
|
|
2847
|
+
/** Whether the "alt" key was pressed when this mouse event occurred. */
|
|
2848
|
+
altKey: boolean;
|
|
2849
|
+
/** The specific button that was pressed in this mouse event. */
|
|
2850
|
+
button: number;
|
|
2851
|
+
/** The button depressed when this event occurred. */
|
|
2852
|
+
buttons: number;
|
|
2853
|
+
/** Whether the "control" key was pressed when this mouse event occurred. */
|
|
2854
|
+
ctrlKey: boolean;
|
|
2855
|
+
/** Whether the "meta" key was pressed when this mouse event occurred. */
|
|
2856
|
+
metaKey: boolean;
|
|
2857
|
+
/** This is currently not implemented in the Federated Events API. */
|
|
2858
|
+
relatedTarget: EventTarget | null;
|
|
2859
|
+
/** Whether the "shift" key was pressed when this mouse event occurred. */
|
|
2860
|
+
shiftKey: boolean;
|
|
2861
|
+
/** The coordinates of the mouse event relative to the canvas. */
|
|
2862
|
+
client: {
|
|
2863
|
+
x: number;
|
|
2864
|
+
y: number;
|
|
2865
|
+
};
|
|
2866
|
+
get clientX(): number;
|
|
2867
|
+
get clientY(): number;
|
|
2868
|
+
get x(): number;
|
|
2869
|
+
get y(): number;
|
|
2870
|
+
/** This is the number of clicks that occurs in 200ms/click of each other. */
|
|
2871
|
+
detail: number;
|
|
2872
|
+
/** The movement in this pointer relative to the last `mousemove` event. */
|
|
2873
|
+
movement: {
|
|
2874
|
+
x: number;
|
|
2875
|
+
y: number;
|
|
2876
|
+
};
|
|
2877
|
+
get movementX(): number;
|
|
2878
|
+
get movementY(): number;
|
|
2879
|
+
/**
|
|
2880
|
+
* The offset of the pointer coordinates w.r.t. target DisplayObject in world space. This is
|
|
2881
|
+
* not supported at the moment.
|
|
2882
|
+
*/
|
|
2883
|
+
offset: {
|
|
2884
|
+
x: number;
|
|
2885
|
+
y: number;
|
|
2886
|
+
};
|
|
2887
|
+
get offsetX(): number;
|
|
2888
|
+
get offsetY(): number;
|
|
2889
|
+
/** The pointer coordinates in world space. */
|
|
2890
|
+
global: {
|
|
2891
|
+
x: number;
|
|
2892
|
+
y: number;
|
|
2893
|
+
};
|
|
2894
|
+
get globalX(): number;
|
|
2895
|
+
get globalY(): number;
|
|
2896
|
+
/**
|
|
2897
|
+
* The pointer coordinates in the renderer's.
|
|
2898
|
+
* This has slightly different semantics than native PointerEvent screenX/screenY.
|
|
2899
|
+
*/
|
|
2900
|
+
screen: {
|
|
2901
|
+
x: number;
|
|
2902
|
+
y: number;
|
|
2903
|
+
};
|
|
2904
|
+
get screenX(): number;
|
|
2905
|
+
get screenY(): number;
|
|
2906
|
+
/**
|
|
2907
|
+
* Whether the modifier key was pressed when this event natively occurred.
|
|
2908
|
+
* @param key - The modifier key.
|
|
2909
|
+
*/
|
|
2910
|
+
getModifierState(key: string): boolean;
|
|
2911
|
+
initMouseEvent(..._args: any[]): void;
|
|
2912
|
+
}
|
|
2913
|
+
|
|
2914
|
+
declare class PointerInputEvent extends MouseInputEvent implements PointerEvent {
|
|
2915
|
+
altitudeAngle: number;
|
|
2916
|
+
azimuthAngle: number;
|
|
2917
|
+
/**
|
|
2918
|
+
* The unique identifier of the pointer.
|
|
2919
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerId
|
|
2920
|
+
*/
|
|
2921
|
+
pointerId: number;
|
|
2922
|
+
/**
|
|
2923
|
+
* The width of the pointer's contact along the x-axis, measured in CSS pixels.
|
|
2924
|
+
* radiusX of TouchEvents will be represented by this value.
|
|
2925
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/width
|
|
2926
|
+
*/
|
|
2927
|
+
width: number;
|
|
2928
|
+
/**
|
|
2929
|
+
* The height of the pointer's contact along the y-axis, measured in CSS pixels.
|
|
2930
|
+
* radiusY of TouchEvents will be represented by this value.
|
|
2931
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/height
|
|
2932
|
+
*/
|
|
2933
|
+
height: number;
|
|
2934
|
+
/**
|
|
2935
|
+
* Indicates whether or not the pointer device that created the event is the primary pointer.
|
|
2936
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/isPrimary
|
|
2937
|
+
*/
|
|
2938
|
+
isPrimary: boolean;
|
|
2939
|
+
/**
|
|
2940
|
+
* The type of pointer that triggered the event.
|
|
2941
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pointerType
|
|
2942
|
+
*/
|
|
2943
|
+
pointerType: string;
|
|
2944
|
+
/**
|
|
2945
|
+
* Pressure applied by the pointing device during the event.
|
|
2946
|
+
*s
|
|
2947
|
+
* A Touch's force property will be represented by this value.
|
|
2948
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/pressure
|
|
2949
|
+
*/
|
|
2950
|
+
pressure: number;
|
|
2951
|
+
/**
|
|
2952
|
+
* Barrel pressure on a stylus pointer.
|
|
2953
|
+
* @see https://w3c.github.io/pointerevents/#pointerevent-interface
|
|
2954
|
+
*/
|
|
2955
|
+
tangentialPressure: number;
|
|
2956
|
+
/**
|
|
2957
|
+
* The angle, in degrees, between the pointer device and the screen.
|
|
2958
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltX
|
|
2959
|
+
*/
|
|
2960
|
+
tiltX: number;
|
|
2961
|
+
/**
|
|
2962
|
+
* The angle, in degrees, between the pointer device and the screen.
|
|
2963
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent/tiltY
|
|
2964
|
+
*/
|
|
2965
|
+
tiltY: number;
|
|
2966
|
+
/**
|
|
2967
|
+
* Twist of a stylus pointer.
|
|
2968
|
+
* @see https://w3c.github.io/pointerevents/#pointerevent-interface
|
|
2969
|
+
*/
|
|
2970
|
+
twist: number;
|
|
2971
|
+
/**
|
|
2972
|
+
* This is the number of clicks that occurs in 200ms/click of each other.
|
|
2973
|
+
*/
|
|
2974
|
+
detail: number;
|
|
2975
|
+
/**
|
|
2976
|
+
* Only included for completeness for now
|
|
2977
|
+
*/
|
|
2978
|
+
getCoalescedEvents(): PointerEvent[];
|
|
2979
|
+
/**
|
|
2980
|
+
* Only included for completeness for now
|
|
2981
|
+
*/
|
|
2982
|
+
getPredictedEvents(): PointerEvent[];
|
|
2983
|
+
}
|
|
2984
|
+
|
|
2985
|
+
declare class WheelInputEvent extends MouseInputEvent implements WheelEvent {
|
|
2986
|
+
/**
|
|
2987
|
+
* The units of `deltaX`, `deltaY`, and `deltaZ`. This is one of `DOM_DELTA_LINE`,
|
|
2988
|
+
* `DOM_DELTA_PAGE`, `DOM_DELTA_PIXEL`.
|
|
2989
|
+
*/
|
|
2990
|
+
deltaMode: number;
|
|
2991
|
+
/** Horizontal scroll amount */
|
|
2992
|
+
deltaX: number;
|
|
2993
|
+
/** Vertical scroll amount */
|
|
2994
|
+
deltaY: number;
|
|
2995
|
+
/** z-axis scroll amount. */
|
|
2996
|
+
deltaZ: number;
|
|
2997
|
+
/** Units specified in pixels. */
|
|
2998
|
+
static readonly DOM_DELTA_PIXEL = 0;
|
|
2999
|
+
/** Units specified in pixels. */
|
|
3000
|
+
readonly DOM_DELTA_PIXEL = 0;
|
|
3001
|
+
/** Units specified in lines. */
|
|
3002
|
+
static readonly DOM_DELTA_LINE = 1;
|
|
3003
|
+
/** Units specified in lines. */
|
|
3004
|
+
readonly DOM_DELTA_LINE = 1;
|
|
3005
|
+
/** Units specified in pages. */
|
|
3006
|
+
static readonly DOM_DELTA_PAGE = 2;
|
|
3007
|
+
/** Units specified in pages. */
|
|
3008
|
+
readonly DOM_DELTA_PAGE = 2;
|
|
3009
|
+
}
|
|
3010
|
+
|
|
3011
|
+
declare class Input extends EventEmitter {
|
|
3012
|
+
target?: HTMLElement;
|
|
3013
|
+
cursor: Cursor | string;
|
|
3014
|
+
cursorStyles: Record<string, any>;
|
|
3015
|
+
setuped: boolean;
|
|
3016
|
+
/**
|
|
3017
|
+
* Current event
|
|
3018
|
+
*/
|
|
3019
|
+
event?: PointerInputEvent | WheelInputEvent;
|
|
3020
|
+
enableMoveEvent: boolean;
|
|
3021
|
+
enableWheelEvent: boolean;
|
|
3022
|
+
enableClickEvent: boolean;
|
|
3023
|
+
setTarget(target: HTMLElement): void;
|
|
3024
|
+
removeEventListeners(): void;
|
|
3025
|
+
addEventListeners(): void;
|
|
3026
|
+
protected normalize(event: WheelEvent): WheelEvent[];
|
|
3027
|
+
protected normalize(event: TouchEvent | PointerEvent | MouseEvent): PointerEvent[];
|
|
3028
|
+
protected cloneWheelEvent(nativeEvent: WheelEvent): WheelInputEvent;
|
|
3029
|
+
protected clonePointerEvent(nativeEvent: PointerEvent): PointerInputEvent;
|
|
3030
|
+
protected copyMouseEvent(event: MouseInputEvent, nativeEvent: MouseEvent): void;
|
|
3031
|
+
/**
|
|
3032
|
+
* Sets the current cursor mode, handling any callbacks or CSS style changes.
|
|
3033
|
+
* @param mode - cursor mode, a key from the cursorStyles dictionary
|
|
3034
|
+
*/
|
|
3035
|
+
setCursor(mode: string): void;
|
|
3036
|
+
mapPositionToPoint(point: {
|
|
3037
|
+
x: number;
|
|
3038
|
+
y: number;
|
|
3039
|
+
}, x: number, y: number): void;
|
|
3040
|
+
protected onPointerDown: (nativeEvent: PointerEvent | TouchEvent | MouseEvent) => void;
|
|
3041
|
+
protected onPointerOver: (nativeEvent: PointerEvent | TouchEvent | MouseEvent) => void;
|
|
3042
|
+
protected onPointerMove: (nativeEvent: PointerEvent | TouchEvent | MouseEvent) => void;
|
|
3043
|
+
protected onPointerUp: (nativeEvent: PointerEvent | TouchEvent | MouseEvent) => void;
|
|
3044
|
+
protected onWheel: (nativeEvent: WheelEvent) => void;
|
|
3045
|
+
}
|
|
3046
|
+
|
|
3047
|
+
interface EngineOptions extends WebGLContextAttributes {
|
|
3048
|
+
view?: HTMLCanvasElement | WebGLRenderingContext | WebGL2RenderingContext;
|
|
3049
|
+
width?: number;
|
|
3050
|
+
height?: number;
|
|
3051
|
+
pixelRatio?: number;
|
|
3052
|
+
background?: ColorValue;
|
|
3053
|
+
autoResize?: boolean;
|
|
3054
|
+
}
|
|
3055
|
+
interface EngineEventMap {
|
|
3056
|
+
pointerdown: (ev: PointerInputEvent) => void;
|
|
3057
|
+
pointerover: (ev: PointerInputEvent) => void;
|
|
3058
|
+
pointermove: (ev: PointerInputEvent) => void;
|
|
3059
|
+
pointerup: (ev: PointerInputEvent) => void;
|
|
3060
|
+
wheel: (ev: WheelInputEvent) => void;
|
|
3061
|
+
}
|
|
3062
|
+
declare const defaultOptions: {
|
|
3063
|
+
readonly alpha: true;
|
|
3064
|
+
readonly stencil: true;
|
|
3065
|
+
readonly antialias: false;
|
|
3066
|
+
readonly premultipliedAlpha: true;
|
|
3067
|
+
readonly preserveDrawingBuffer: false;
|
|
3068
|
+
readonly powerPreference: "default";
|
|
3069
|
+
};
|
|
3070
|
+
interface Engine {
|
|
3071
|
+
on: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
3072
|
+
off: (<K extends keyof EngineEventMap>(type: K, listener: EngineEventMap[K], options?: EventListenerOptions) => this) & ((type: string, listener: EventListenerValue, options?: EventListenerOptions) => this);
|
|
3073
|
+
emit: (<K extends keyof EngineEventMap>(type: K, ...args: Parameters<EngineEventMap[K]>) => boolean) & ((type: string, ...args: any[]) => boolean);
|
|
3074
|
+
}
|
|
3075
|
+
declare class Engine extends SceneTree {
|
|
3076
|
+
readonly input: Input;
|
|
3077
|
+
readonly renderer: WebGLRenderer;
|
|
3078
|
+
get view(): HTMLCanvasElement | undefined;
|
|
3079
|
+
get gl(): WebGLRenderingContext | WebGL2RenderingContext;
|
|
3080
|
+
get screen(): {
|
|
3081
|
+
x: number;
|
|
3082
|
+
y: number;
|
|
3083
|
+
width: number;
|
|
3084
|
+
height: number;
|
|
3085
|
+
};
|
|
3086
|
+
get width(): number;
|
|
3087
|
+
get height(): number;
|
|
3088
|
+
get pixelRatio(): number;
|
|
3089
|
+
set pixelRatio(val: number);
|
|
3090
|
+
protected _background: Color;
|
|
3091
|
+
get background(): ColorValue;
|
|
3092
|
+
set background(val: ColorValue);
|
|
3093
|
+
protected _resizeObserver: ResizeObserver | undefined;
|
|
3094
|
+
constructor(options?: EngineOptions);
|
|
3095
|
+
protected _setupInput(): this;
|
|
3096
|
+
enableAutoResize(enable?: boolean): this;
|
|
3097
|
+
resize(width: number, height: number, updateCss?: boolean): this;
|
|
3098
|
+
nextTick(): Promise<void>;
|
|
3099
|
+
waitUntilLoad(): Promise<void>;
|
|
3100
|
+
render(delta?: number): this;
|
|
3101
|
+
start(): this;
|
|
3102
|
+
destroy(): void;
|
|
3103
|
+
toPixels(): Uint8ClampedArray;
|
|
3104
|
+
toImageData(): ImageData;
|
|
3105
|
+
toCanvas2D(): HTMLCanvasElement;
|
|
3106
|
+
}
|
|
3107
|
+
|
|
3108
|
+
interface RenderOptions {
|
|
3109
|
+
data: Record<string, any> | Node | (Node | Record<string, any>)[];
|
|
3110
|
+
width: number;
|
|
3111
|
+
height: number;
|
|
3112
|
+
}
|
|
3113
|
+
declare function render(options: RenderOptions): Promise<HTMLCanvasElement>;
|
|
3114
|
+
|
|
3115
|
+
export { Animation2D, type AnimationOptions, type AssetHandler, Assets, Audio, AudioPipeline, AudioProcessor, AudioSpectrum, AudioWaveform, type AudioWaveformOptions, type Batchable2D, BlurEffect, Bounds, type BoundsData, type CanvasBatchable, CanvasContext, CanvasItem, type CanvasItemOptions, Circle, Color, ColorAdjustEffect, ColorFilterEffect, type ColorFilterEffectOptions, ColorMatrix, ColorOverlayEffect, ColorRemoveEffect, ColorReplaceEffect, ColorTexture, type ColorValue, type CssFunction, type CssFunctionArg, type Cursor, type CustomNodeOptions, DEG_TO_RAD, DEVICE_PIXEL_RATIO, type Easing, Effect, type EffectContext, EffectMaterial, type EffectMode, type EffectOptions, Element2D, type Element2DOptions, Ellipse, EmbossEffect, Engine, type EngineOptions, EventEmitter, type EventListener, type EventListenerOptions, type EventListenerValue, type FilledGraphics, FontLoader, Geometry, type GeometryOptions, GifLoader, GlitchEffect, GodrayEffect, Graphics2D, HTMLAudio, HTMLAudioContext, HTMLSound, type IAudioContext, type IAudioNode, IN_BROWSER, type IPlayOptions, Image2D, type Image2DOptions, Image2DResource, type ImageFrame, ImageTexture, type ImageTextureOptions, IndexBuffer, type IndexBufferOptions, Input, InternalMode, JsonLoader, KawaseEffect, type Keyframe, LeftEraseEffect, type LineCap, type LineJoin, type LineStyle, Loader, Lottie2D, LottieLoader, type LottieOptions, MainLoop, type MainLoopEventMap, type MaskColor, type MaskData, MaskEffect, type MaskEffectOptions, type MaskObject, type MaskRect, type Maskable, Material, type MaterialOptions, Matrix, Matrix2, Matrix3, Matrix4, type MatrixLike, type MatrixOperateOutput, MouseInputEvent, Node, Node2D, type Node2DOptions, type NodeEventMap, type NodeOptions, type NormalizedKeyframe, PI, PI_2, Path2D, type Path2DCall, type Path2DCallMethod, type Path2DShape, PixelateEffect, PixelsTexture, type PlatformAudio, type PlatformSound, Point, type PointData, type PointLike, PointerInputEvent, Polygon, Projection2D, type PropertyDeclaration, QuadGeometry, QuadUvGeometry, RAD_TO_DEG, Rectangle, Reference, type ReferenceEventMap, type RenderCall, type RenderOptions, RenderStack, type Renderable, Renderer, Resource, type ResourceEventMap, RoundedRectangle, SUPPORTS_AUDIO_CONTEXT, SUPPORTS_CLICK_EVENTS, SUPPORTS_CREATE_IMAGE_BITMAP, SUPPORTS_IMAGE_BITMAP, SUPPORTS_MOUSE_EVENTS, SUPPORTS_OFFLINE_AUDIO_CONTEXT, SUPPORTS_POINTER_EVENTS, SUPPORTS_RESIZE_OBSERVER, SUPPORTS_TOUCH_EVENTS, SUPPORTS_WEBGL2, SUPPORTS_WEBKIT_AUDIO_CONTEXT, SUPPORTS_WEBKIT_OFFLINE_AUDIO_CONTEXT, SUPPORTS_WEB_AUDIO, SUPPORTS_WHEEL_EVENTS, SVGPath, type SVGPathDefine, type SVGPathDefineCommand, SceneTree, type SceneTreeEventMap, type Shape, type ShapeBuildCommand, Star, type StrokedGraphics, Style2D, type Style2DBackgroundExtend, Style2DBackgroundModule, type Style2DBackgroundProperties, type Style2DFilter, type Style2DFilterExtend, type Style2DFilterKey, Style2DFilterModule, type Style2DFilterProperties, Style2DModule, type Style2DOffsetExtend, Style2DOffsetModule, type Style2DOffsetProperties, type Style2DOptions, type Style2DTextExtend, Style2DTextModule, type Style2DTextProperties, type Style2DTransformExtend, Style2DTransformModule, type Style2DTransformProperties, Text2D, type Text2DOptions, TextLoader, Texture, type TextureFilterMode, TextureLoader, type TexturePixelsSource, type TextureSource, type TextureWrapMode, Ticker, TiltShiftEffect, Timer, type TimerEventMap, type TimerOptions, type TimingFunctions, Transform2D, type Transform2DObject, Triangle, TwistEffect, UIInputEvent, UvGeometry, UvMaterial, Vector, Vector2, Vector3, Vector4, type VectorLike, type VectorOperateOutput, VertexAttribute, type VertexAttributeOptions, VertexBuffer, type VertexBufferOptions, Video2D, type Video2DOptions, VideoLoader, VideoTexture, type VideoTextureOptions, type VideoTextureSource, Viewport, type ViewportFramebuffer, ViewportTexture, WebAudio, WebAudioContext, WebGLBatch2DModule, WebGLBlendMode, type WebGLBufferMeta, WebGLBufferModule, type WebGLBufferOptions, type WebGLBufferTarget, type WebGLBufferUsage, type WebGLDrawMode, type WebGLDrawOptions, type WebGLExtensions, type WebGLFramebufferMeta, WebGLFramebufferModule, type WebGLFramebufferOptions, WebGLMaskModule, WebGLModule, type WebGLProgramMeta, WebGLProgramModule, type WebGLProgramOptions, WebGLRenderer, WebGLScissorModule, WebGLState, WebGLStateModule, WebGLStencilModule, type WebGLTarget, type WebGLTextureFilterMode, type WebGLTextureLocation, type WebGLTextureMeta, WebGLTextureModule, type WebGLTextureOptions, type WebGLTextureSource, type WebGLTextureTarget, type WebGLTextureWrapMode, WebGLVertexArrayModule, type WebGLVertexArrayObjectMeta, type WebGLVertexArrayObjectOptions, type WebGLVertexAttrib, type WebGLVertexAttribType, type WebGLViewport, WebGLViewportModule, WebSound, WheelInputEvent, ZoomBlurEffect, _Object, type _ObjectEventMap, assets, buildAdaptiveBezier, buildAdaptiveQuadratic, buildArc, buildArcTo, buildArcToSvg, buildCircle, buildLine, buildPolygon, buildRectangle, buildTriangle, clamp, closePointEps, createHTMLCanvas, createNode, crossOrigin, cubicBezier, curveEps, curves, customNode, customNodes, defaultOptions, defineProperty, determineCrossOrigin, ease, easeIn, easeInOut, easeOut, getDeclarations, getDefaultCssPropertyValue, isCanvasElement, isElementNode, isImageElement, isPow2, isVideoElement, isWebgl2, lerp, linear, log2, mapWebGLBlendModes, nextPow2, nextTick, parseCssFunctions, parseCssProperty, property, protectedProperty, render, squaredDistanceToLineSegment, timingFunctions, uid };
|