@galfus/transport-types 0.31.0-alpha → 0.31.1-alpha
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/package.json +1 -1
- package/src/sdk/galfus.ts +1213 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galfus/transport-types",
|
|
3
|
-
"version": "0.31.
|
|
3
|
+
"version": "0.31.1-alpha",
|
|
4
4
|
"description": "Shared TypeScript types and protocol definitions for Galfus Engine transports",
|
|
5
5
|
"author": "Renato Rodrigues (morbden) <renato@vulppi.dev>",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -0,0 +1,1213 @@
|
|
|
1
|
+
/* Automatically generated by Galfus Engine codegen. Do not edit directly. */
|
|
2
|
+
/* Canonical shared domain types and payload specifications for Galfus Engine host bindings. */
|
|
3
|
+
|
|
4
|
+
/** Value object used for frequent 3D transform updates. */
|
|
5
|
+
export interface Transform3D {
|
|
6
|
+
position: [number, number, number];
|
|
7
|
+
rotation?: [number, number, number, number];
|
|
8
|
+
scale?: [number, number, number];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/** Value object used for frequent 2D transform updates. */
|
|
12
|
+
export interface Transform2D {
|
|
13
|
+
position: [number, number];
|
|
14
|
+
rotation?: number;
|
|
15
|
+
scale?: [number, number];
|
|
16
|
+
zLayer?: number;
|
|
17
|
+
drawOrder?: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Optional world-space target used by a 3D camera. */
|
|
21
|
+
export interface CameraLookAt3D {
|
|
22
|
+
target: [number, number, number];
|
|
23
|
+
up?: [number, number, number];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Platform environment capabilities as structured data. */
|
|
27
|
+
export interface PlatformCapabilities {
|
|
28
|
+
supportsMultipleWindows: boolean;
|
|
29
|
+
supportsWindowPositioning: boolean;
|
|
30
|
+
supportsCursorGrab: boolean;
|
|
31
|
+
supportsGamepad: boolean;
|
|
32
|
+
supportsAudio: boolean;
|
|
33
|
+
isHeadless: boolean;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Initial or requested window presentation state. */
|
|
37
|
+
export type WindowState = "windowed" | "minimized" | "maximized" | "fullscreen" | "borderlessFullscreen";
|
|
38
|
+
|
|
39
|
+
/** Configuration options used to create a new surface or window. */
|
|
40
|
+
export interface WindowConfig {
|
|
41
|
+
id: number;
|
|
42
|
+
title: string;
|
|
43
|
+
size?: [number, number];
|
|
44
|
+
position?: [number, number];
|
|
45
|
+
resizable?: boolean;
|
|
46
|
+
decorations?: boolean;
|
|
47
|
+
transparent?: boolean;
|
|
48
|
+
initialState?: WindowState;
|
|
49
|
+
canvasId?: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Physical kind of pointing device. */
|
|
53
|
+
export type PointerType = "mouse" | "touch" | "pen";
|
|
54
|
+
|
|
55
|
+
/** Button identifier for pointer events. */
|
|
56
|
+
export type PointerButton =
|
|
57
|
+
| "primary"
|
|
58
|
+
| "secondary"
|
|
59
|
+
| "auxiliary"
|
|
60
|
+
| "back"
|
|
61
|
+
| "forward"
|
|
62
|
+
| { other: number };
|
|
63
|
+
|
|
64
|
+
/** State of a pointer button action. */
|
|
65
|
+
export type PointerButtonState = "pressed" | "released";
|
|
66
|
+
|
|
67
|
+
/** Pointer scroll offset unit and magnitude. */
|
|
68
|
+
export type ScrollDelta =
|
|
69
|
+
| { lines: [number, number] }
|
|
70
|
+
| { pixels: [number, number] };
|
|
71
|
+
|
|
72
|
+
/** Pointer movement, action, and lifecycle events. */
|
|
73
|
+
export type PointerEvent =
|
|
74
|
+
| { kind: "pointer"; type: "move"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number]; delta: [number, number]; pressure: number }
|
|
75
|
+
| { kind: "pointer"; type: "button"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number]; button: PointerButton; state: PointerButtonState; pressure: number }
|
|
76
|
+
| { kind: "pointer"; type: "enter"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number] }
|
|
77
|
+
| { kind: "pointer"; type: "leave"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number] }
|
|
78
|
+
| { kind: "pointer"; type: "cancel"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number] }
|
|
79
|
+
| { kind: "pointer"; type: "scroll"; windowId: number; pointerId: number; pointerType: PointerType; position: [number, number]; delta: ScrollDelta };
|
|
80
|
+
|
|
81
|
+
/** Active modifier keys on keyboard or input events. */
|
|
82
|
+
export interface ModifiersState {
|
|
83
|
+
shift: boolean;
|
|
84
|
+
ctrl: boolean;
|
|
85
|
+
alt: boolean;
|
|
86
|
+
superKey: boolean;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** Logical key representation: normalized key string. */
|
|
90
|
+
export type LogicalKey = string;
|
|
91
|
+
|
|
92
|
+
/** State of a keyboard or button element. */
|
|
93
|
+
export type ElementState = "pressed" | "released";
|
|
94
|
+
|
|
95
|
+
/** Keyboard, committed text, modifier, and input method events. Use textInput as the single stream of committed text. */
|
|
96
|
+
export type KeyboardEvent =
|
|
97
|
+
| { kind: "keyboard"; type: "input"; windowId: number; physicalKey: string; logicalKey: LogicalKey; text?: string; state: ElementState; modifiers: ModifiersState; repeat: boolean }
|
|
98
|
+
| { kind: "keyboard"; type: "modifiersChanged"; windowId: number; modifiers: ModifiersState }
|
|
99
|
+
| { kind: "keyboard"; type: "imeEnabled"; windowId: number }
|
|
100
|
+
| { kind: "keyboard"; type: "imeDisabled"; windowId: number }
|
|
101
|
+
| { kind: "keyboard"; type: "imePreedit"; windowId: number; text: string; selection?: [number, number] }
|
|
102
|
+
| { kind: "keyboard"; type: "imeCommit"; windowId: number; text: string }
|
|
103
|
+
| { kind: "keyboard"; type: "textInput"; windowId: number; text: string };
|
|
104
|
+
|
|
105
|
+
/** Window lifecycle, resize, move, and focus events. */
|
|
106
|
+
export type WindowEvent =
|
|
107
|
+
| { kind: "window"; type: "resized"; windowId: number; width: number; height: number; scaleFactor: number }
|
|
108
|
+
| { kind: "window"; type: "moved"; windowId: number; x: number; y: number }
|
|
109
|
+
| { kind: "window"; type: "closeRequested"; windowId: number }
|
|
110
|
+
| { kind: "window"; type: "focusChanged"; windowId: number; focused: boolean }
|
|
111
|
+
| { kind: "window"; type: "occluded"; windowId: number; occluded: boolean }
|
|
112
|
+
| { kind: "window"; type: "scaleFactorChanged"; windowId: number; scaleFactor: number }
|
|
113
|
+
| { kind: "window"; type: "redrawRequested"; windowId: number };
|
|
114
|
+
|
|
115
|
+
/** Standard gamepad buttons or custom other button index. */
|
|
116
|
+
export type GamepadButton =
|
|
117
|
+
| "south"
|
|
118
|
+
| "east"
|
|
119
|
+
| "west"
|
|
120
|
+
| "north"
|
|
121
|
+
| "leftBumper"
|
|
122
|
+
| "rightBumper"
|
|
123
|
+
| "leftTrigger"
|
|
124
|
+
| "rightTrigger"
|
|
125
|
+
| "select"
|
|
126
|
+
| "start"
|
|
127
|
+
| "guide"
|
|
128
|
+
| "leftThumbstick"
|
|
129
|
+
| "rightThumbstick"
|
|
130
|
+
| "dpadUp"
|
|
131
|
+
| "dpadDown"
|
|
132
|
+
| "dpadLeft"
|
|
133
|
+
| "dpadRight"
|
|
134
|
+
| { other: number };
|
|
135
|
+
|
|
136
|
+
/** Standard gamepad axes or custom other axis index. */
|
|
137
|
+
export type GamepadAxis =
|
|
138
|
+
| "leftStickX"
|
|
139
|
+
| "leftStickY"
|
|
140
|
+
| "rightStickX"
|
|
141
|
+
| "rightStickY"
|
|
142
|
+
| "leftTrigger"
|
|
143
|
+
| "rightTrigger"
|
|
144
|
+
| { other: number };
|
|
145
|
+
|
|
146
|
+
/** Gamepad button pressed or released state. */
|
|
147
|
+
export type GamepadButtonState = "pressed" | "released";
|
|
148
|
+
|
|
149
|
+
/** Metadata describing a connected gamepad device. */
|
|
150
|
+
export interface GamepadInfo {
|
|
151
|
+
id: number;
|
|
152
|
+
name: string;
|
|
153
|
+
supportsRumble: boolean;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Gamepad lifecycle, button, and axis movement events. */
|
|
157
|
+
export type GamepadEvent =
|
|
158
|
+
| { kind: "gamepad"; type: "connected"; gamepadId: number; name: string }
|
|
159
|
+
| { kind: "gamepad"; type: "disconnected"; gamepadId: number }
|
|
160
|
+
| { kind: "gamepad"; type: "button"; gamepadId: number; button: GamepadButton; state: GamepadButtonState }
|
|
161
|
+
| { kind: "gamepad"; type: "axis"; gamepadId: number; axis: GamepadAxis; value: number };
|
|
162
|
+
|
|
163
|
+
/** 3D/2D spatial transform for positional audio emitters and listener ears/microphones. */
|
|
164
|
+
export interface SpatialTransform {
|
|
165
|
+
position: [number, number, number];
|
|
166
|
+
rotation?: [number, number, number, number];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/** Configuration parameters for spatial sound attenuation and stereo panning. */
|
|
170
|
+
export interface SpatialAudioConfig {
|
|
171
|
+
volume?: number;
|
|
172
|
+
minDistance?: number;
|
|
173
|
+
maxDistance?: number;
|
|
174
|
+
rolloff?: number;
|
|
175
|
+
speed?: number;
|
|
176
|
+
looping?: boolean;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** Complete spatial playback state used for frequent voice updates. */
|
|
180
|
+
export interface SpatialAudio {
|
|
181
|
+
emitter: SpatialTransform;
|
|
182
|
+
listener: SpatialTransform;
|
|
183
|
+
config: SpatialAudioConfig;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/** Root enum of all events dispatched from the platform layer. */
|
|
187
|
+
export type PlatformEvent =
|
|
188
|
+
| WindowEvent
|
|
189
|
+
| PointerEvent
|
|
190
|
+
| KeyboardEvent
|
|
191
|
+
| GamepadEvent;
|
|
192
|
+
|
|
193
|
+
/** Target type: window surface swapchain or offscreen GPU texture. */
|
|
194
|
+
export type TargetKind =
|
|
195
|
+
| { type: "window"; windowId: number }
|
|
196
|
+
| { type: "texture"; width: number; height: number; format?: string };
|
|
197
|
+
|
|
198
|
+
/** Descriptor for creating a Target in the Multiverse. */
|
|
199
|
+
export interface TargetDesc {
|
|
200
|
+
kind: TargetKind;
|
|
201
|
+
size?: [number, number];
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/** Horizontal viewport anchor alignment. */
|
|
205
|
+
export type AnchorX = "left" | "center" | "right";
|
|
206
|
+
|
|
207
|
+
/** Vertical viewport anchor alignment. */
|
|
208
|
+
export type AnchorY = "top" | "center" | "bottom";
|
|
209
|
+
|
|
210
|
+
/** Measurement unit for viewport dimensions and offsets (pixels or percentage of width/height). */
|
|
211
|
+
export type UnitValue =
|
|
212
|
+
| { px: number }
|
|
213
|
+
| { vw: number }
|
|
214
|
+
| { vh: number };
|
|
215
|
+
|
|
216
|
+
/** Viewport rectangle defined via responsive anchors (CSS px, vw, vh). */
|
|
217
|
+
export interface ViewportRect {
|
|
218
|
+
anchorX?: AnchorX;
|
|
219
|
+
anchorY?: AnchorY;
|
|
220
|
+
offsetX?: UnitValue;
|
|
221
|
+
offsetY?: UnitValue;
|
|
222
|
+
width: UnitValue;
|
|
223
|
+
height: UnitValue;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Filter pass applied after a Realm renders to its Target. */
|
|
227
|
+
export type InvocationFilter =
|
|
228
|
+
| "sepia"
|
|
229
|
+
| "grayscale"
|
|
230
|
+
| "invert"
|
|
231
|
+
| "vignette"
|
|
232
|
+
| "tonemapAces"
|
|
233
|
+
| "chromaticAberration"
|
|
234
|
+
| "filmGrain"
|
|
235
|
+
| "edgeOutline"
|
|
236
|
+
| "posterize"
|
|
237
|
+
| "blur"
|
|
238
|
+
| "sharpen"
|
|
239
|
+
| "fxaa"
|
|
240
|
+
| "smaa"
|
|
241
|
+
| "taa"
|
|
242
|
+
| "ssaaDownsample"
|
|
243
|
+
| { custom: { shaderId: number; textures?: number[]; samplerIndex?: number } };
|
|
244
|
+
|
|
245
|
+
/** Anti-aliasing mode: none, fxaa, smaa, taa, ssaa2x, ssaa4x, msaa2x, msaa4x, msaa8x, msaa16x. */
|
|
246
|
+
export type AntiAliasingMode = "none" | "fxaa" | "smaa" | "taa" | "ssaa2x" | "ssaa4x" | "msaa2x" | "msaa4x" | "msaa8x" | "msaa16x";
|
|
247
|
+
|
|
248
|
+
/** Descriptor linking a Realm to a Target with optional viewport and filters. */
|
|
249
|
+
export interface InvocationDesc {
|
|
250
|
+
realmId: number;
|
|
251
|
+
targetId: number;
|
|
252
|
+
cameraSlot?: number;
|
|
253
|
+
viewport?: ViewportRect;
|
|
254
|
+
filters?: InvocationFilter[];
|
|
255
|
+
zIndex?: number;
|
|
256
|
+
enabled?: boolean;
|
|
257
|
+
clearColor?: [number, number, number, number];
|
|
258
|
+
antiAliasing?: AntiAliasingMode;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** Binds an output Target texture to a Realm input slot. */
|
|
262
|
+
export interface TargetTextureBinding {
|
|
263
|
+
sourceTargetId: number;
|
|
264
|
+
realmId: number;
|
|
265
|
+
slot: string;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/** Resolved step in the Multiverse frame schedule. */
|
|
269
|
+
export interface ResolvedInvocationStep {
|
|
270
|
+
invocationId: number;
|
|
271
|
+
realmId: number;
|
|
272
|
+
cameraSlot?: number;
|
|
273
|
+
resolvedViewport: [number, number, number, number];
|
|
274
|
+
zIndex: number;
|
|
275
|
+
clearColor?: [number, number, number, number];
|
|
276
|
+
filters: InvocationFilter[];
|
|
277
|
+
antiAliasing?: AntiAliasingMode;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/** Group of ordered invocations targeting a single render target. */
|
|
281
|
+
export interface TargetExecutionBlock {
|
|
282
|
+
targetId: number;
|
|
283
|
+
invocations: ResolvedInvocationStep[];
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/** Complete execution graph schedule resolved for a frame. */
|
|
287
|
+
export interface MultiverseSchedule {
|
|
288
|
+
targetBlocks: TargetExecutionBlock[];
|
|
289
|
+
softCutEdges?: ([number, number])[];
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/** Normalized pixel format for GPU textures. The format is the single source of truth for texture color space: *Srgb formats decode RGB to linear light when sampled. */
|
|
293
|
+
export type NormalizedTextureFormat = "r8Unorm" | "rg8Unorm" | "rgba8Unorm" | "rgba8UnormSrgb" | "bgra8Unorm" | "bgra8UnormSrgb" | "r16Float" | "rg16Float" | "rgba16Float" | "r32Float" | "rg32Float" | "rgba32Float" | "depth32Float" | "depth24Plus" | "depth24PlusStencil8";
|
|
294
|
+
|
|
295
|
+
/** Dimensionality of a GPU texture. */
|
|
296
|
+
export type TextureDimension = "d1" | "d2" | "d3";
|
|
297
|
+
|
|
298
|
+
/** GPU texture usage flags. */
|
|
299
|
+
export interface TextureUsageFlags {
|
|
300
|
+
copySrc?: boolean;
|
|
301
|
+
copyDst?: boolean;
|
|
302
|
+
textureBinding?: boolean;
|
|
303
|
+
storageBinding?: boolean;
|
|
304
|
+
renderAttachment?: boolean;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
/** Descriptor for creating or allocating a GPU texture. */
|
|
308
|
+
export interface GpuTextureDesc {
|
|
309
|
+
label?: string;
|
|
310
|
+
width: number;
|
|
311
|
+
height: number;
|
|
312
|
+
depthOrLayers?: number;
|
|
313
|
+
mipLevels?: number;
|
|
314
|
+
sampleCount?: number;
|
|
315
|
+
dimension?: TextureDimension;
|
|
316
|
+
/** Pixel format and texture color-space contract. Use an *Srgb format for sRGB-encoded pixels; all other formats are linear. */
|
|
317
|
+
format: NormalizedTextureFormat;
|
|
318
|
+
usages?: TextureUsageFlags;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/** Sub-rectangle destination coordinates for updating a texture region. */
|
|
322
|
+
export interface TextureUpdateDesc {
|
|
323
|
+
x: number;
|
|
324
|
+
y: number;
|
|
325
|
+
width: number;
|
|
326
|
+
height: number;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/** GPU buffer usage flags. */
|
|
330
|
+
export interface BufferUsageFlags {
|
|
331
|
+
vertex?: boolean;
|
|
332
|
+
index?: boolean;
|
|
333
|
+
uniform?: boolean;
|
|
334
|
+
storage?: boolean;
|
|
335
|
+
copySrc?: boolean;
|
|
336
|
+
copyDst?: boolean;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/** Descriptor for creating a shared GPU buffer. */
|
|
340
|
+
export interface BufferDesc {
|
|
341
|
+
label?: string;
|
|
342
|
+
usages: BufferUsageFlags;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/** Shared sampler preset selected independently for each 3D material texture slot. */
|
|
346
|
+
export type TextureSampler3D = "linearRepeat" | "linearClamp" | "nearestRepeat" | "nearestClamp";
|
|
347
|
+
|
|
348
|
+
/** An optional sampler override for one material texture slot. */
|
|
349
|
+
export type TextureSamplerSelection3D = TextureSampler3D | null;
|
|
350
|
+
|
|
351
|
+
/** Canonical vertex texture-coordinate set selected for a 3D material texture slot. */
|
|
352
|
+
export type TextureUvSet3D = "uv0" | "uv1";
|
|
353
|
+
|
|
354
|
+
/** Triangle faces rendered by a 3D material. */
|
|
355
|
+
export type MaterialSide3D = "front" | "back" | "double";
|
|
356
|
+
|
|
357
|
+
/** World-space target and preferred up direction used to derive a 3D camera view. */
|
|
358
|
+
export interface CameraLookAt3DDesc {
|
|
359
|
+
target: [number, number, number];
|
|
360
|
+
up?: [number, number, number];
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/** Current optional look-at configuration of a 3D camera. */
|
|
364
|
+
export interface CameraLookAt3DStateDesc {
|
|
365
|
+
enabled: boolean;
|
|
366
|
+
target?: [number, number, number];
|
|
367
|
+
up?: [number, number, number];
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
/** 3D spatial transform containing position, rotation quaternion, and scale. */
|
|
371
|
+
export interface Transform3DDesc {
|
|
372
|
+
position?: [number, number, number];
|
|
373
|
+
rotation?: [number, number, number, number];
|
|
374
|
+
scale?: [number, number, number];
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
/** 3D Camera configuration supporting perspective and orthographic projection with Reverse-Z. */
|
|
378
|
+
export interface Camera3DDesc {
|
|
379
|
+
kind?: "perspective" | "orthographic";
|
|
380
|
+
fovY?: number;
|
|
381
|
+
near?: number;
|
|
382
|
+
far?: number;
|
|
383
|
+
orthoScale?: number;
|
|
384
|
+
cameraSlot?: number;
|
|
385
|
+
lookAt?: CameraLookAt3DDesc;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/** PBR 3D material properties and surface configuration. */
|
|
389
|
+
export interface Material3DDesc {
|
|
390
|
+
surfaceType?: "opaque" | "transparent" | "masked" | "additive" | "refractive" | "mirror" | "portal";
|
|
391
|
+
/** Alpha threshold for masked surfaces. Defaults to 0.5. */
|
|
392
|
+
alphaCutoff?: number;
|
|
393
|
+
/** Triangle faces to render. Defaults to front. */
|
|
394
|
+
side?: MaterialSide3D;
|
|
395
|
+
/** sRGB base-color factor. Realm3D converts RGB to linear light before GPU upload. */
|
|
396
|
+
baseColor?: [number, number, number, number];
|
|
397
|
+
/** sRGB emissive factor. Realm3D converts RGB to linear light before GPU upload. */
|
|
398
|
+
emissiveColor?: [number, number, number, number];
|
|
399
|
+
roughness?: number;
|
|
400
|
+
metallic?: number;
|
|
401
|
+
reflectance?: number;
|
|
402
|
+
refractionIndex?: number;
|
|
403
|
+
refractionDistortion?: number;
|
|
404
|
+
/** Base-color texture. Its resource format alone determines whether it is sampled as sRGB or linear. */
|
|
405
|
+
albedoTextureId?: number;
|
|
406
|
+
/** Tangent-space normal texture. Its resource format alone determines its sampled color space. */
|
|
407
|
+
normalTextureId?: number;
|
|
408
|
+
/** Tangent-space normal map strength. Defaults to 1.0. */
|
|
409
|
+
normalScale?: number;
|
|
410
|
+
/** Metallic-roughness texture. Its resource format alone determines its sampled color space. */
|
|
411
|
+
metallicRoughnessTextureId?: number;
|
|
412
|
+
/** Ambient-occlusion texture. Its resource format alone determines its sampled color space. */
|
|
413
|
+
occlusionTextureId?: number;
|
|
414
|
+
/** Ambient occlusion texture influence from 0.0 to 1.0. Defaults to 1.0. */
|
|
415
|
+
occlusionStrength?: number;
|
|
416
|
+
/** Emissive texture. Its resource format alone determines whether it is sampled as sRGB or linear. */
|
|
417
|
+
emissiveTextureId?: number;
|
|
418
|
+
/** Canonical texture slots. Each binding inherits color space from its linked texture resource format. */
|
|
419
|
+
textureSlots?: number[];
|
|
420
|
+
/** Per-slot sampler presets. Omitted or null slots use linearRepeat. */
|
|
421
|
+
textureSamplers?: TextureSamplerSelection3D[];
|
|
422
|
+
/** Per-slot canonical UV sets. Omitted entries use uv0. */
|
|
423
|
+
textureUvSets?: TextureUvSet3D[];
|
|
424
|
+
shaderEffect?: string;
|
|
425
|
+
customParams?: ([number, number, number, number])[];
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/** 3D model instance binding a geometry and material. */
|
|
429
|
+
export interface Model3DDesc {
|
|
430
|
+
geometryId: number;
|
|
431
|
+
materialId: number;
|
|
432
|
+
castShadow?: boolean;
|
|
433
|
+
receiveShadow?: boolean;
|
|
434
|
+
castOutline?: boolean;
|
|
435
|
+
/** sRGB outline color; RGB is converted to linear light before GPU upload. */
|
|
436
|
+
outlineColor?: [number, number, number, number];
|
|
437
|
+
boneOffset?: number;
|
|
438
|
+
boneCount?: number;
|
|
439
|
+
active?: boolean;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
/** 3D dynamic light source (directional, point, or spot). */
|
|
443
|
+
export interface Light3DDesc {
|
|
444
|
+
kind?: "directional" | "point" | "spot";
|
|
445
|
+
/** sRGB light color; RGB is converted to linear light before GPU upload. */
|
|
446
|
+
color?: [number, number, number];
|
|
447
|
+
intensity?: number;
|
|
448
|
+
range?: number;
|
|
449
|
+
spotInnerAngleRad?: number;
|
|
450
|
+
spotOuterAngleRad?: number;
|
|
451
|
+
castShadow?: boolean;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
/** Atmospheric procedural skybox gradient and sun parameters. */
|
|
455
|
+
export interface SkyboxConfig3DDesc {
|
|
456
|
+
mode?: "none" | "procedural" | "cubemap";
|
|
457
|
+
/** sRGB sky color; RGB is converted to linear light before GPU upload. */
|
|
458
|
+
skyColor?: [number, number, number, number];
|
|
459
|
+
/** sRGB horizon color; RGB is converted to linear light before GPU upload. */
|
|
460
|
+
horizonColor?: [number, number, number, number];
|
|
461
|
+
/** sRGB ground color; RGB is converted to linear light before GPU upload. */
|
|
462
|
+
groundColor?: [number, number, number, number];
|
|
463
|
+
sunDirection?: [number, number, number, number];
|
|
464
|
+
/** sRGB sun color; RGB is converted to linear light before GPU upload. The alpha component is linear intensity. */
|
|
465
|
+
sunColor?: [number, number, number, number];
|
|
466
|
+
intensity?: number;
|
|
467
|
+
sunSize?: number;
|
|
468
|
+
rotation?: number;
|
|
469
|
+
textureId?: number;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/** Screen-space silhouette outline dilation settings for Realm 3D. */
|
|
473
|
+
export interface OutlineConfig3DDesc {
|
|
474
|
+
enabled?: boolean;
|
|
475
|
+
width?: number;
|
|
476
|
+
threshold?: number;
|
|
477
|
+
strength?: number;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
/** Screen-space ambient occlusion (SSAO) configuration parameters. */
|
|
481
|
+
export interface SsaoConfig3DDesc {
|
|
482
|
+
enabled?: boolean;
|
|
483
|
+
radius?: number;
|
|
484
|
+
bias?: number;
|
|
485
|
+
power?: number;
|
|
486
|
+
intensity?: number;
|
|
487
|
+
blurRadius?: number;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/** Global atmospheric, fog, and ambient lighting parameters for Realm 3D. */
|
|
491
|
+
export interface EnvironmentRealm3DDesc {
|
|
492
|
+
/** sRGB ambient color; RGB is converted to linear light before GPU upload. */
|
|
493
|
+
ambientColor?: [number, number, number, number];
|
|
494
|
+
/** sRGB clear color. */
|
|
495
|
+
clearColor?: [number, number, number, number];
|
|
496
|
+
/** sRGB fog color; RGB is converted to linear light before GPU upload. */
|
|
497
|
+
fogColor?: [number, number, number, number];
|
|
498
|
+
fogMode?: "none" | "linear" | "exponential";
|
|
499
|
+
fogStart?: number;
|
|
500
|
+
fogEnd?: number;
|
|
501
|
+
fogDensity?: number;
|
|
502
|
+
exposure?: number;
|
|
503
|
+
skybox?: SkyboxConfig3DDesc;
|
|
504
|
+
outline?: OutlineConfig3DDesc;
|
|
505
|
+
ssao?: SsaoConfig3DDesc;
|
|
506
|
+
bloom?: BloomConfig3DDesc;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/** Screen-space multi-scale Bloom HDR glow parameters. */
|
|
510
|
+
export interface BloomConfig3DDesc {
|
|
511
|
+
enabled?: boolean;
|
|
512
|
+
threshold?: number;
|
|
513
|
+
knee?: number;
|
|
514
|
+
intensity?: number;
|
|
515
|
+
scatter?: number;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
/** 3D particle emission shape (point, sphere, box, cone, cylinder). */
|
|
519
|
+
export interface EmissionShape3DDesc {
|
|
520
|
+
type: "point" | "sphere" | "box" | "cone" | "cylinder";
|
|
521
|
+
radius?: number;
|
|
522
|
+
extents?: [number, number, number];
|
|
523
|
+
angleRad?: number;
|
|
524
|
+
height?: number;
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/** Planar mirror or optical portal gateway configuration. */
|
|
528
|
+
export interface Portal3DDesc {
|
|
529
|
+
/** Entrance model ID defining portal surface and spatial transform. */
|
|
530
|
+
modelId: number;
|
|
531
|
+
/** Optional destination transform. If omitted, operates as a planar mirror. */
|
|
532
|
+
exitTransform?: Transform3DDesc;
|
|
533
|
+
/** Whether the mirror/portal is active. */
|
|
534
|
+
active?: boolean;
|
|
535
|
+
/** Offscreen buffer resolution scale factor (default 1.0). */
|
|
536
|
+
resolutionScale?: number;
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
/** 3D particle emitter configuration (rates, lifetime, speed, colors, sizes, gravity, drag). */
|
|
540
|
+
export interface ParticleEmitter3DDesc {
|
|
541
|
+
label?: string;
|
|
542
|
+
materialId?: number;
|
|
543
|
+
maxParticles?: number;
|
|
544
|
+
spawnRate?: number;
|
|
545
|
+
lifetimeRange?: [number, number];
|
|
546
|
+
speedRange?: [number, number];
|
|
547
|
+
direction?: [number, number, number];
|
|
548
|
+
spreadAngleRad?: number;
|
|
549
|
+
gravity?: [number, number, number];
|
|
550
|
+
drag?: number;
|
|
551
|
+
startSizeRange?: [number, number];
|
|
552
|
+
endSizeRange?: [number, number];
|
|
553
|
+
/** sRGB particle start color; RGB is converted to linear light before GPU upload. */
|
|
554
|
+
startColor?: [number, number, number, number];
|
|
555
|
+
/** sRGB particle end color; RGB is converted to linear light before GPU upload. */
|
|
556
|
+
endColor?: [number, number, number, number];
|
|
557
|
+
rotationSpeedRange?: [number, number];
|
|
558
|
+
uvRect?: [number, number, number, number];
|
|
559
|
+
emissionShape?: EmissionShape3DDesc;
|
|
560
|
+
active?: boolean;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/** Instanced 3D model configuration linking a geometry and material to an instanced GPU collection. */
|
|
564
|
+
export interface InstancedModel3DDesc {
|
|
565
|
+
geometryId: number;
|
|
566
|
+
materialId: number;
|
|
567
|
+
capacity?: number;
|
|
568
|
+
castShadow?: boolean;
|
|
569
|
+
receiveShadow?: boolean;
|
|
570
|
+
active?: boolean;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
/** A shaped cluster. Byte offsets index the normalized UTF-8 chunk; transform is in SVG viewport coordinates. */
|
|
574
|
+
export interface SvgTextCluster {
|
|
575
|
+
chunkIndex: number;
|
|
576
|
+
byteStart: number;
|
|
577
|
+
byteEnd: number;
|
|
578
|
+
transform: [number, number, number, number, number, number];
|
|
579
|
+
advance: number;
|
|
580
|
+
ascent: number;
|
|
581
|
+
descent: number;
|
|
582
|
+
rightToLeft: boolean;
|
|
583
|
+
}
|
|
584
|
+
|
|
585
|
+
export interface SvgTextLayout {
|
|
586
|
+
chunks: string[];
|
|
587
|
+
clusters: SvgTextCluster[];
|
|
588
|
+
viewportWidth: number;
|
|
589
|
+
viewportHeight: number;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
export interface SvgTextLayoutResult {
|
|
593
|
+
layout?: SvgTextLayout;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/** Geometric bounds in SVG viewport coordinates. */
|
|
597
|
+
export interface SvgElementRect {
|
|
598
|
+
x: number;
|
|
599
|
+
y: number;
|
|
600
|
+
width: number;
|
|
601
|
+
height: number;
|
|
602
|
+
viewportWidth: number;
|
|
603
|
+
viewportHeight: number;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
export interface SvgElementRectResult {
|
|
607
|
+
rect?: SvgElementRect;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
/** 2D spatial transform containing position, rotation angle (radians), scale, and z-layer order. */
|
|
611
|
+
export interface Transform2DDesc {
|
|
612
|
+
position: [number, number];
|
|
613
|
+
rotation?: number;
|
|
614
|
+
scale?: [number, number];
|
|
615
|
+
zLayer?: number;
|
|
616
|
+
drawOrder?: number;
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
/** 2D orthographic camera with Reverse-Z depth mapping. */
|
|
620
|
+
export interface Camera2DDesc {
|
|
621
|
+
orthoScale: number;
|
|
622
|
+
near?: number;
|
|
623
|
+
far?: number;
|
|
624
|
+
layerMask?: number;
|
|
625
|
+
order?: number;
|
|
626
|
+
cameraSlot?: number;
|
|
627
|
+
active?: boolean;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
/** 2D material properties with surface classification, texture ID, and optional WGSL surface effect. */
|
|
631
|
+
export interface Material2DDesc {
|
|
632
|
+
baseColor?: [number, number, number, number];
|
|
633
|
+
surfaceType?: "opaque" | "transparent" | "masked" | "additive";
|
|
634
|
+
textureId?: number;
|
|
635
|
+
normalTextureId?: number;
|
|
636
|
+
emissiveTextureId?: number;
|
|
637
|
+
textureSlots?: number[];
|
|
638
|
+
samplerIndex?: number;
|
|
639
|
+
alphaCutoff?: number;
|
|
640
|
+
shaderEffect?: string;
|
|
641
|
+
customParams?: ([number, number, number, number])[];
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
/** 2D instanced sprite quad with texture mapping, UV rects, and shadow occlusion. */
|
|
645
|
+
export interface Sprite2DDesc {
|
|
646
|
+
dimensions: [number, number];
|
|
647
|
+
pivot?: [number, number];
|
|
648
|
+
uvRect?: [number, number, number, number];
|
|
649
|
+
materialId?: number;
|
|
650
|
+
castShadow?: boolean;
|
|
651
|
+
receiveShadow?: boolean;
|
|
652
|
+
occluderOnly?: boolean;
|
|
653
|
+
shadowHeight?: number;
|
|
654
|
+
shadowLayerMask?: number;
|
|
655
|
+
heightRange?: [number, number];
|
|
656
|
+
drawOrder?: number;
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/** 2D vector shape (Rectangle, Circle, or N-gon Polygon) with procedural SDF shading and silhouette shadows. */
|
|
660
|
+
export interface Shape2DDesc {
|
|
661
|
+
kind: "rectangle" | "circle" | "polygon";
|
|
662
|
+
size?: [number, number];
|
|
663
|
+
radius?: number;
|
|
664
|
+
segments?: number;
|
|
665
|
+
vertices?: ([number, number])[];
|
|
666
|
+
materialId?: number;
|
|
667
|
+
castShadow?: boolean;
|
|
668
|
+
receiveShadow?: boolean;
|
|
669
|
+
occluderOnly?: boolean;
|
|
670
|
+
shadowHeight?: number;
|
|
671
|
+
shadowLayerMask?: number;
|
|
672
|
+
heightRange?: [number, number];
|
|
673
|
+
drawOrder?: number;
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
/** 2D point light with radial attenuation, penumbra softening, and shadow casting. */
|
|
677
|
+
export interface Light2DDesc {
|
|
678
|
+
position?: [number, number];
|
|
679
|
+
z?: number;
|
|
680
|
+
color: [number, number, number];
|
|
681
|
+
intensity: number;
|
|
682
|
+
range: number;
|
|
683
|
+
lightRadius?: number;
|
|
684
|
+
shadowLayerMask?: number;
|
|
685
|
+
castShadow?: boolean;
|
|
686
|
+
active?: boolean;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
/** Global 2D polar shadow map tuning parameters. */
|
|
690
|
+
export interface Shadow2DConfigDesc {
|
|
691
|
+
shadowContactOffset?: number;
|
|
692
|
+
ambient?: number;
|
|
693
|
+
lightRadius?: number;
|
|
694
|
+
angularResolution?: number;
|
|
695
|
+
}
|
|
696
|
+
|
|
697
|
+
/** 2D particle emission shape (point, circle, rectangle, line). */
|
|
698
|
+
export interface EmissionShape2DDesc {
|
|
699
|
+
type: "point" | "circle" | "rectangle" | "line";
|
|
700
|
+
radius?: number;
|
|
701
|
+
extents?: [number, number];
|
|
702
|
+
direction?: [number, number];
|
|
703
|
+
length?: number;
|
|
704
|
+
}
|
|
705
|
+
|
|
706
|
+
/** 2D particle emitter configuration (rates, lifetime, speed, colors, sizes, gravity, drag). */
|
|
707
|
+
export interface ParticleEmitter2DDesc {
|
|
708
|
+
materialId?: number;
|
|
709
|
+
maxParticles?: number;
|
|
710
|
+
spawnRate?: number;
|
|
711
|
+
lifetimeRange?: [number, number];
|
|
712
|
+
speedRange?: [number, number];
|
|
713
|
+
direction?: [number, number];
|
|
714
|
+
spreadAngleRad?: number;
|
|
715
|
+
gravity?: [number, number];
|
|
716
|
+
drag?: number;
|
|
717
|
+
startSizeRange?: [number, number];
|
|
718
|
+
endSizeRange?: [number, number];
|
|
719
|
+
startColor?: [number, number, number, number];
|
|
720
|
+
endColor?: [number, number, number, number];
|
|
721
|
+
rotationSpeedRange?: [number, number];
|
|
722
|
+
uvRect?: [number, number, number, number];
|
|
723
|
+
emissionShape?: EmissionShape2DDesc;
|
|
724
|
+
zLayer?: number;
|
|
725
|
+
castShadow?: boolean;
|
|
726
|
+
receiveShadow?: boolean;
|
|
727
|
+
active?: boolean;
|
|
728
|
+
}
|
|
729
|
+
|
|
730
|
+
/** 2D SVG vector entity with mutable DOM and GPU rasterization synchronization. */
|
|
731
|
+
export interface Svg2DDesc {
|
|
732
|
+
label?: string;
|
|
733
|
+
source: string;
|
|
734
|
+
dimensions?: [number, number];
|
|
735
|
+
scaleFactor?: number;
|
|
736
|
+
materialId?: number;
|
|
737
|
+
castShadow?: boolean;
|
|
738
|
+
receiveShadow?: boolean;
|
|
739
|
+
shadowHeight?: number;
|
|
740
|
+
shadowLayerMask?: number;
|
|
741
|
+
heightRange?: [number, number];
|
|
742
|
+
occluderOnly?: boolean;
|
|
743
|
+
drawOrder?: number;
|
|
744
|
+
}
|
|
745
|
+
|
|
746
|
+
/** Repetition behavior for animation transitions. */
|
|
747
|
+
export type LoopMode = "once" | "loop" | "pingPong";
|
|
748
|
+
|
|
749
|
+
/** Execution status of an active animation transition. */
|
|
750
|
+
export type TransitionStatus = "idle" | "delay" | "running" | "completed";
|
|
751
|
+
|
|
752
|
+
/** Lifecycle event classification emitted during transition playback. */
|
|
753
|
+
export type AnimationEventType = "started" | "completed" | "looped";
|
|
754
|
+
|
|
755
|
+
/** Mathematical easing curve or spring profile for property transitions. */
|
|
756
|
+
export type Easing = "linear" | "easeInQuad" | "easeOutQuad" | "easeInOutQuad" | "easeInCubic" | "easeOutCubic" | "easeInOutCubic" | "easeInQuart" | "easeOutQuart" | "easeInOutQuart" | "easeInQuint" | "easeOutQuint" | "easeInOutQuint" | "easeInSine" | "easeOutSine" | "easeInOutSine" | "easeInExpo" | "easeOutExpo" | "easeInOutExpo" | "easeInCirc" | "easeOutCirc" | "easeInOutCirc" | "easeInBack" | "easeOutBack" | "easeInOutBack" | "easeInElastic" | "easeOutElastic" | "easeInOutElastic" | "easeInBounce" | "easeOutBounce" | "easeInOutBounce";
|
|
757
|
+
|
|
758
|
+
/** Polymorphic value for animatable properties. */
|
|
759
|
+
export type AnimValue =
|
|
760
|
+
| { type: "scalar"; value: number }
|
|
761
|
+
| { type: "vec2"; value: [number, number] }
|
|
762
|
+
| { type: "vec3"; value: [number, number, number] }
|
|
763
|
+
| { type: "vec4"; value: [number, number, number, number] }
|
|
764
|
+
| { type: "quat"; value: [number, number, number, number] }
|
|
765
|
+
| { type: "transform3D"; value: [number, number, number, number, number, number, number, number, number, number] }
|
|
766
|
+
| { type: "transform2D"; value: [number, number, number, number, number, number] };
|
|
767
|
+
|
|
768
|
+
/** Identifies the destination property animated by a transition. */
|
|
769
|
+
export type AnimationTarget =
|
|
770
|
+
| { kind: "modelTransform3D"; realmId: number; modelId: number }
|
|
771
|
+
| { kind: "camera3DTransform"; realmId: number; cameraId: number }
|
|
772
|
+
| { kind: "camera3DLookAt"; realmId: number; cameraId: number }
|
|
773
|
+
| { kind: "material3DBaseColor"; realmId: number; materialId: number }
|
|
774
|
+
| { kind: "light3DColor"; realmId: number; lightId: number }
|
|
775
|
+
| { kind: "light3DTransform"; realmId: number; lightId: number }
|
|
776
|
+
| { kind: "spriteTransform2D"; realmId: number; spriteId: number }
|
|
777
|
+
| { kind: "camera2DTransform"; realmId: number; cameraId: number }
|
|
778
|
+
| { kind: "material2DColor"; realmId: number; materialId: number }
|
|
779
|
+
| { kind: "shapeTransform2D"; realmId: number; shapeId: number }
|
|
780
|
+
| { kind: "svgTransform2D"; realmId: number; svgId: number }
|
|
781
|
+
| { kind: "svgOpacity"; realmId: number; svgId: number }
|
|
782
|
+
| { kind: "svgAttributeColor"; realmId: number; svgId: number; elementId: string; attribute: string }
|
|
783
|
+
| { kind: "svgAttributeScalar"; realmId: number; svgId: number; elementId: string; attribute: string }
|
|
784
|
+
| { kind: "svgAttributeVec2"; realmId: number; svgId: number; elementId: string; attribute: string }
|
|
785
|
+
| { kind: "invocationClearColor"; invocationId: number }
|
|
786
|
+
| { kind: "invocationZIndex"; invocationId: number }
|
|
787
|
+
| { kind: "customChannel"; channelId: number };
|
|
788
|
+
|
|
789
|
+
/** Configuration specifying duration, delay, curve, and repetition for a transition. */
|
|
790
|
+
export interface TransitionConfig {
|
|
791
|
+
duration: number;
|
|
792
|
+
delay?: number;
|
|
793
|
+
easing?: Easing;
|
|
794
|
+
loopMode?: LoopMode;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
/** Snapshot query state of an active transition. */
|
|
798
|
+
export interface TransitionState {
|
|
799
|
+
status: TransitionStatus;
|
|
800
|
+
progress: number;
|
|
801
|
+
elapsed: number;
|
|
802
|
+
remainingDelay: number;
|
|
803
|
+
currentValue: AnimValue;
|
|
804
|
+
startValue: AnimValue;
|
|
805
|
+
targetValue: AnimValue;
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
/** Lifecycle event emitted during transition execution. */
|
|
809
|
+
export interface AnimationEvent {
|
|
810
|
+
transitionId: number;
|
|
811
|
+
eventType: AnimationEventType;
|
|
812
|
+
target?: AnimationTarget;
|
|
813
|
+
value: AnimValue;
|
|
814
|
+
elapsed: number;
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
/** Target evaluated animation value format produced by the path follower. */
|
|
818
|
+
export type PathValueType = "transform3D" | "position3D" | "transform2D" | "position2D";
|
|
819
|
+
|
|
820
|
+
/** Declarative SVG-like path motion commands with individual duration and easing. */
|
|
821
|
+
export type PathCommand =
|
|
822
|
+
| { type: "moveTo"; to: number[] }
|
|
823
|
+
| { type: "lineTo"; to: number[]; duration?: number; easing?: Easing }
|
|
824
|
+
| { type: "quadTo"; control: number[]; to: number[]; duration?: number; easing?: Easing }
|
|
825
|
+
| { type: "cubicTo"; control1: number[]; control2: number[]; to: number[]; duration?: number; easing?: Easing }
|
|
826
|
+
| { type: "smoothTo"; to: number[]; duration?: number; easing?: Easing }
|
|
827
|
+
| { type: "pause"; duration: number }
|
|
828
|
+
| { type: "close"; duration?: number; easing?: Easing };
|
|
829
|
+
|
|
830
|
+
/** Configuration for path follow traversal. */
|
|
831
|
+
export interface PathFollowConfig {
|
|
832
|
+
duration?: number;
|
|
833
|
+
delay?: number;
|
|
834
|
+
easing?: Easing;
|
|
835
|
+
loopMode?: LoopMode;
|
|
836
|
+
orientToPath?: boolean;
|
|
837
|
+
valueType?: PathValueType;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
/** Snapshot query state of an active path follower. */
|
|
841
|
+
export interface PathFollowState {
|
|
842
|
+
status: TransitionStatus;
|
|
843
|
+
progress: number;
|
|
844
|
+
elapsed: number;
|
|
845
|
+
remainingDelay: number;
|
|
846
|
+
currentValue: AnimValue;
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
/** Ergonomic helper factories for ViewportRect responsive descriptors. */
|
|
850
|
+
export const ViewportRect = {
|
|
851
|
+
full(): ViewportRect {
|
|
852
|
+
return {
|
|
853
|
+
width: { vw: 100 },
|
|
854
|
+
height: { vh: 100 }
|
|
855
|
+
};
|
|
856
|
+
},
|
|
857
|
+
px(x: number, y: number, width: number, height: number): ViewportRect {
|
|
858
|
+
return {
|
|
859
|
+
offsetX: { px: x },
|
|
860
|
+
offsetY: { px: y },
|
|
861
|
+
width: { px: width },
|
|
862
|
+
height: { px: height }
|
|
863
|
+
};
|
|
864
|
+
},
|
|
865
|
+
pip(
|
|
866
|
+
anchorX: AnchorX = 'right',
|
|
867
|
+
anchorY: AnchorY = 'bottom',
|
|
868
|
+
widthVw = 30,
|
|
869
|
+
heightVh = 30,
|
|
870
|
+
marginPx = 20
|
|
871
|
+
): ViewportRect {
|
|
872
|
+
return {
|
|
873
|
+
anchorX,
|
|
874
|
+
anchorY,
|
|
875
|
+
offsetX: { px: marginPx },
|
|
876
|
+
offsetY: { px: marginPx },
|
|
877
|
+
width: { vw: widthVw },
|
|
878
|
+
height: { vh: heightVh }
|
|
879
|
+
};
|
|
880
|
+
}
|
|
881
|
+
};
|
|
882
|
+
|
|
883
|
+
/** Native interface signature exposed by Galfus Engine (Node-API / Bun). */
|
|
884
|
+
export interface GalfusEngine {
|
|
885
|
+
/** Initializes the global platform coordinator. */
|
|
886
|
+
platformInit(): void;
|
|
887
|
+
/** Initializes the global platform coordinator in headless mode. */
|
|
888
|
+
platformInitHeadless(): void;
|
|
889
|
+
/** Shuts down and cleans up the platform coordinator. */
|
|
890
|
+
platformShutdown(): void;
|
|
891
|
+
/** Retrieves the last recorded error message. */
|
|
892
|
+
getLastError(): string;
|
|
893
|
+
/** Retrieves platform environment capabilities as structured data. */
|
|
894
|
+
platformGetCapabilities(): PlatformCapabilities;
|
|
895
|
+
/** Creates a new window or binds a surface from a configuration. */
|
|
896
|
+
windowCreate(config: WindowConfig | string): number;
|
|
897
|
+
/** Closes and destroys a window by its logical ID. */
|
|
898
|
+
windowClose(windowId: number): void;
|
|
899
|
+
/** Updates the title bar of a window. */
|
|
900
|
+
windowSetTitle(windowId: number, title: string): void;
|
|
901
|
+
/** Requests keyboard focus for a window input surface. */
|
|
902
|
+
windowRequestInputFocus(windowId: number): void;
|
|
903
|
+
/** Configures whether a focused browser window captures Tab key navigation. */
|
|
904
|
+
windowSetTabCapture(windowId: number, enabled: number): void;
|
|
905
|
+
/** Enables or disables input method composition for a window. */
|
|
906
|
+
windowSetImeAllowed(windowId: number, allowed: number): void;
|
|
907
|
+
/** Sets the input method candidate area in physical window pixels. */
|
|
908
|
+
windowSetImeCursorArea(windowId: number, x: number, y: number, width: number, height: number): void;
|
|
909
|
+
/** Updates the cursor grab mode (0: None, 1: Confined, 2: Locked). */
|
|
910
|
+
windowSetCursorGrab(windowId: number, mode: number): void;
|
|
911
|
+
/** Updates the visual appearance icon of the cursor. */
|
|
912
|
+
windowSetCursorIcon(windowId: number, icon: number): void;
|
|
913
|
+
/** Sets the visual application icon of a window using raw encoded image bytes (ICO, PNG, WebP, JPEG). */
|
|
914
|
+
windowSetIcon(windowId: number, data: any, dataLen: number): void;
|
|
915
|
+
/** Pumps platform input events into a fixed-layout batch; its pointers expire on release or shutdown. */
|
|
916
|
+
platformPumpEvents(): PlatformEvent[];
|
|
917
|
+
/** Releases an event batch and invalidates its native pointer ranges. */
|
|
918
|
+
platformReleaseEventBatch(batchId: number): void;
|
|
919
|
+
/** Retrieves all currently connected gamepads and their capabilities. */
|
|
920
|
+
gamepadGetConnected(): GamepadInfo[];
|
|
921
|
+
/** Triggers rumble vibration on a connected gamepad. */
|
|
922
|
+
gamepadSetRumble(gamepadId: number, strongMagnitude: number, weakMagnitude: number, durationMs: number): void;
|
|
923
|
+
/** Loads raw audio data bytes (WAV, MP3, OGG, FLAC) from memory under a host logical ID. */
|
|
924
|
+
audioLoadSound(soundId: number, data: any, dataLen: number): void;
|
|
925
|
+
/** Plays a registered sound resource and returns its controllable voice ID. */
|
|
926
|
+
audioPlaySound(soundId: number, volume: number, panning: number, speed: number, looping: boolean): number;
|
|
927
|
+
/** Plays a spatial sound and returns its controllable voice ID. */
|
|
928
|
+
audioPlaySoundSpatial(soundId: number, spatial: SpatialAudio): number;
|
|
929
|
+
/** Updates spatial positioning of an active sound voice relative to a listener ear. */
|
|
930
|
+
audioUpdateSoundSpatial(voiceId: number, spatial: SpatialAudio): void;
|
|
931
|
+
/** Pauses a playing sound voice. */
|
|
932
|
+
audioPauseSound(voiceId: number): void;
|
|
933
|
+
/** Resumes a paused sound voice. */
|
|
934
|
+
audioResumeSound(voiceId: number): void;
|
|
935
|
+
/** Stops a playing or paused sound voice. */
|
|
936
|
+
audioStopSound(voiceId: number): void;
|
|
937
|
+
/** Updates the volume of an active sound voice. */
|
|
938
|
+
audioSetVolume(voiceId: number, volume: number): void;
|
|
939
|
+
/** Updates the panning of an active sound voice. */
|
|
940
|
+
audioSetPanning(voiceId: number, panning: number): void;
|
|
941
|
+
/** Unloads a registered sound resource from memory. */
|
|
942
|
+
audioUnloadSound(soundId: number): void;
|
|
943
|
+
/** Reads the physical inner size (width, height) of a Platform window into two uint32 out pointers. */
|
|
944
|
+
platformGetWindowSizeRaw(windowId: number, outWidth: any, outHeight: any): void;
|
|
945
|
+
/** Attaches a platform window to the Multiverse context for surface rendering. */
|
|
946
|
+
multiverseAttachWindow(windowId: number): void | Promise<void>;
|
|
947
|
+
/** Registers a new Target in the Multiverse using a TargetDesc descriptor. */
|
|
948
|
+
multiverseCreateTarget(targetId: number, desc: TargetDesc | string): void;
|
|
949
|
+
/** Destroys a Target in the Multiverse. */
|
|
950
|
+
multiverseDestroyTarget(targetId: number): void;
|
|
951
|
+
/** Registers a solid color test Realm in the Multiverse. */
|
|
952
|
+
multiverseRegisterColorRealm(realmId: number, r: number, g: number, b: number, a: number): void;
|
|
953
|
+
/** Unregisters a Realm from the Multiverse. */
|
|
954
|
+
multiverseUnregisterRealm(realmId: number): void;
|
|
955
|
+
/** Registers a custom WGSL post-processing shader with an ID. */
|
|
956
|
+
multiverseRegisterShader(shaderId: number, source: string): void;
|
|
957
|
+
/** Creates an Invocation in the Multiverse linking a Realm to a Target. */
|
|
958
|
+
multiverseCreateInvocation(invocationId: number, desc: InvocationDesc | string): void;
|
|
959
|
+
/** Destroys an Invocation in the Multiverse. */
|
|
960
|
+
multiverseDestroyInvocation(invocationId: number): void;
|
|
961
|
+
/** Enables or disables an Invocation in the Multiverse. */
|
|
962
|
+
multiverseSetInvocationEnabled(invocationId: number, enabled: boolean): void;
|
|
963
|
+
/** Updates the presentation order of an Invocation. */
|
|
964
|
+
multiverseSetInvocationZIndex(invocationId: number, zIndex: number): void;
|
|
965
|
+
/** Updates the viewport rectangle of an existing Invocation. */
|
|
966
|
+
multiverseSetInvocationViewport(invocationId: number, viewport: ViewportRect | string): void;
|
|
967
|
+
/** Updates the post-process filter chain for an Invocation. */
|
|
968
|
+
multiverseSetInvocationFilters(invocationId: number, filters: InvocationFilter[] | string): void;
|
|
969
|
+
/** Updates the clear color of an Invocation. */
|
|
970
|
+
multiverseSetInvocationClearColor(invocationId: number, r: number, g: number, b: number, a: number, hasClear: boolean): void;
|
|
971
|
+
/** Updates the camera slot bound to an existing Invocation. */
|
|
972
|
+
multiverseSetInvocationCameraSlot(invocationId: number, cameraSlot: number, hasSlot: boolean): void;
|
|
973
|
+
/** Binds a Target output texture to a Realm input slot. */
|
|
974
|
+
multiverseBindTargetTexture(binding: TargetTextureBinding | string): void;
|
|
975
|
+
/** Unbinds a Target texture from a Realm input slot. */
|
|
976
|
+
multiverseUnbindTargetTexture(realmId: number, slot: string): void;
|
|
977
|
+
/** Updates the size of a window Target (e.g. on window resize). */
|
|
978
|
+
multiverseUpdateWindowSize(windowId: number, width: number, height: number): void;
|
|
979
|
+
/** Resolves and returns the Multiverse execution schedule as structured data. */
|
|
980
|
+
multiverseResolve(): MultiverseSchedule;
|
|
981
|
+
/** Dispatches the Multiverse schedule for a frame. */
|
|
982
|
+
multiverseDispatch(frameId: number, deltaTime: number): void;
|
|
983
|
+
/** Clears all entities, materials, and scene resources in a Realm without unregistering it. */
|
|
984
|
+
realmClear(realmId: number): void;
|
|
985
|
+
/** Destroys a Realm, frees all internal GPU resources, and unregisters it from the Multiverse. */
|
|
986
|
+
realmDestroy(realmId: number): void;
|
|
987
|
+
/** Reads the resolved size (width, height) of a Multiverse Target into two uint32 out pointers. */
|
|
988
|
+
multiverseGetTargetSizeRaw(targetId: number, outWidth: any, outHeight: any): void;
|
|
989
|
+
/** Sets the global Anti-Aliasing mode for the Multiverse. */
|
|
990
|
+
multiverseSetAntiAliasing(mode: string): void;
|
|
991
|
+
/** Gets the current global Anti-Aliasing mode of the Multiverse. */
|
|
992
|
+
multiverseGetAntiAliasing(): string;
|
|
993
|
+
/** Allocates and initializes a shared GPU texture under a host logical ID with raw pixel bytes. */
|
|
994
|
+
resourceCreateTexture(textureId: number, desc: GpuTextureDesc | string, data: any, dataLen: number): void;
|
|
995
|
+
/** Updates a sub-rectangle of an existing logical texture with raw pixel bytes. */
|
|
996
|
+
resourceUpdateTexture(textureId: number, rect: TextureUpdateDesc | string, data: any, dataLen: number): void;
|
|
997
|
+
/** Disposes a shared logical texture from GPU memory. */
|
|
998
|
+
resourceDisposeTexture(textureId: number): void;
|
|
999
|
+
/** Allocates and initializes a shared GPU buffer under a host logical ID with raw byte contents. */
|
|
1000
|
+
resourceCreateBuffer(bufferId: number, desc: BufferDesc | string, data: any, dataLen: number): void;
|
|
1001
|
+
/** Updates byte contents of an existing logical buffer at a given offset with raw byte contents. */
|
|
1002
|
+
resourceUpdateBuffer(bufferId: number, offset: number, data: any, dataLen: number): void;
|
|
1003
|
+
/** Disposes a shared logical buffer from GPU memory. */
|
|
1004
|
+
resourceDisposeBuffer(bufferId: number): void;
|
|
1005
|
+
/** Creates and registers a new 3D Realm in the Multiverse. */
|
|
1006
|
+
realm3dCreate(realmId: number): void;
|
|
1007
|
+
/** Destroys and unregisters a 3D Realm from the Multiverse. */
|
|
1008
|
+
realm3dDestroy(realmId: number): void;
|
|
1009
|
+
/** Registers or updates a 3D Camera with its spatial Transform in the 3D Realm. */
|
|
1010
|
+
realm3dCreateCamera(realmId: number, cameraId: number, camera: Camera3DDesc | string, transform: Transform3DDesc | string): void;
|
|
1011
|
+
/** Updates the transform of an existing Camera in the 3D Realm. */
|
|
1012
|
+
realm3dSetCameraTransform(realmId: number, cameraId: number, transform: Transform3D): void;
|
|
1013
|
+
/** Sets the optional world-space look-at point and up direction of an existing 3D Camera. */
|
|
1014
|
+
realm3dSetCameraLookAt(realmId: number, cameraId: number, lookAt: CameraLookAt3D): void;
|
|
1015
|
+
/** Gets the current optional look-at configuration of an existing 3D Camera. */
|
|
1016
|
+
realm3dGetCameraLookAt(realmId: number, cameraId: number): CameraLookAt3DStateDesc;
|
|
1017
|
+
/** Clears the optional look-at configuration of an existing 3D Camera. */
|
|
1018
|
+
realm3dClearCameraLookAt(realmId: number, cameraId: number): void;
|
|
1019
|
+
/** Registers or updates 3D geometry from canonical binary vertex and index buffers. */
|
|
1020
|
+
realm3dCreateGeometry(realmId: number, geometryId: number, topology: number, vertexData: Uint8Array, vertexDataLen: number, indices: Uint32Array, indexCount: number): void;
|
|
1021
|
+
/** Uploads target-major packed MorphVertex3D records (48 bytes each) for an existing geometry. */
|
|
1022
|
+
realm3dSetGeometryMorphTargets(realmId: number, geometryId: number, targetData: Uint8Array, targetDataLen: number, targetCount: number): void;
|
|
1023
|
+
/** Creates a cube primitive centered at the origin. */
|
|
1024
|
+
realm3dCreateCube(realmId: number, geometryId: number, size: number): void;
|
|
1025
|
+
/** Creates a horizontal plane primitive centered at the origin. */
|
|
1026
|
+
realm3dCreatePlane(realmId: number, geometryId: number, width: number, depth: number): void;
|
|
1027
|
+
/** Creates a vertical quad primitive centered at the origin and facing +Z. */
|
|
1028
|
+
realm3dCreateQuad(realmId: number, geometryId: number, width: number, height: number): void;
|
|
1029
|
+
/** Creates a UV sphere primitive centered at the origin. */
|
|
1030
|
+
realm3dCreateSphere(realmId: number, geometryId: number, radius: number, rings: number, sectors: number): void;
|
|
1031
|
+
/** Creates a cylinder primitive centered at the origin along the Y axis. */
|
|
1032
|
+
realm3dCreateCylinder(realmId: number, geometryId: number, radius: number, height: number, sectors: number): void;
|
|
1033
|
+
/** Creates a capsule primitive centered at the origin along the Y axis. */
|
|
1034
|
+
realm3dCreateCapsule(realmId: number, geometryId: number, radius: number, cylinderHeight: number, rings: number, sectors: number): void;
|
|
1035
|
+
/** Creates a pyramid primitive centered at the origin with its apex on +Y. */
|
|
1036
|
+
realm3dCreatePyramid(realmId: number, geometryId: number, width: number, depth: number, height: number): void;
|
|
1037
|
+
/** Creates a torus primitive centered at the origin in the XZ plane. */
|
|
1038
|
+
realm3dCreateTorus(realmId: number, geometryId: number, majorRadius: number, minorRadius: number, majorSegments: number, minorSegments: number): void;
|
|
1039
|
+
/** Registers or updates a 3D Material in the 3D Realm. */
|
|
1040
|
+
realm3dCreateMaterial(realmId: number, materialId: number, material: Material3DDesc | string): void;
|
|
1041
|
+
/** Registers or updates a 3D Model instance in the 3D Realm. */
|
|
1042
|
+
realm3dCreateModel(realmId: number, modelId: number, model: Model3DDesc | string, transform: Transform3DDesc | string): void;
|
|
1043
|
+
/** Updates the transform of an existing Model instance in the 3D Realm. */
|
|
1044
|
+
realm3dSetModelTransform(realmId: number, modelId: number, transform: Transform3D): void;
|
|
1045
|
+
/** Registers or updates an Instanced 3D Model in the 3D Realm. */
|
|
1046
|
+
realm3dCreateInstancedModel(realmId: number, instancedModelId: number, model: InstancedModel3DDesc | string): void;
|
|
1047
|
+
/** Uploads packed instance data: 32 f32 values per instance. */
|
|
1048
|
+
realm3dSetInstancedModelData(realmId: number, instancedModelId: number, data: Float32Array, floatCount: number): void;
|
|
1049
|
+
/** Uploads the current f32 blend weights for an existing model. */
|
|
1050
|
+
realm3dSetModelMorphWeights(realmId: number, modelId: number, weights: Float32Array, weightCount: number): void;
|
|
1051
|
+
/** Uploads the f32 blend weights shared by every instance in an instanced model batch. */
|
|
1052
|
+
realm3dSetInstancedModelMorphWeights(realmId: number, instancedModelId: number, weights: Float32Array, weightCount: number): void;
|
|
1053
|
+
/** Registers or updates a 3D Light in the 3D Realm. */
|
|
1054
|
+
realm3dCreateLight(realmId: number, lightId: number, light: Light3DDesc | string, transform: Transform3DDesc | string): void;
|
|
1055
|
+
/** Updates the transform of an existing Light in the 3D Realm. */
|
|
1056
|
+
realm3dSetLightTransform(realmId: number, lightId: number, transform: Transform3D): void;
|
|
1057
|
+
/** Sets global atmospheric environment properties for the 3D Realm. */
|
|
1058
|
+
realm3dSetEnvironment(realmId: number, environment: EnvironmentRealm3DDesc | string): void;
|
|
1059
|
+
/** Uploads packed 4x4 bone matrices for a model in the 3D Realm. */
|
|
1060
|
+
realm3dUpdateBones(realmId: number, modelId: number, data: Float32Array, floatCount: number): void;
|
|
1061
|
+
/** Queues a 3D debug line segment between start and end with an RGBA color. */
|
|
1062
|
+
realm3dDrawLine(realmId: number, x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, r: number, g: number, b: number, a: number): void;
|
|
1063
|
+
/** Queues a 3D debug Axis-Aligned Bounding Box (AABB) wireframe. */
|
|
1064
|
+
realm3dDrawAabb(realmId: number, minX: number, minY: number, minZ: number, maxX: number, maxY: number, maxZ: number, r: number, g: number, b: number, a: number): void;
|
|
1065
|
+
/** Clears any queued debug gizmos in the 3D Realm. */
|
|
1066
|
+
realm3dClearGizmos(realmId: number): void;
|
|
1067
|
+
/** Creates or updates a 3D particle emitter entity with an initial transform. */
|
|
1068
|
+
realm3dCreateParticleEmitter(realmId: number, emitterId: number, emitter: ParticleEmitter3DDesc | string, transform: Transform3DDesc | string): void;
|
|
1069
|
+
/** Updates the spatial transform of an existing 3D particle emitter. */
|
|
1070
|
+
realm3dSetParticleEmitterTransform(realmId: number, emitterId: number, transform: Transform3D): void;
|
|
1071
|
+
/** Triggers an immediate burst of particles from an existing 3D emitter. */
|
|
1072
|
+
realm3dParticleEmitterBurst(realmId: number, emitterId: number, count: number): void;
|
|
1073
|
+
/** Destroys an existing 3D particle emitter entity. */
|
|
1074
|
+
realm3dDestroyParticleEmitter(realmId: number, emitterId: number): void;
|
|
1075
|
+
/** Registers or updates a 3D optical portal or planar mirror. */
|
|
1076
|
+
realm3dCreatePortal(realmId: number, portalId: number, portal: Portal3DDesc | string): void;
|
|
1077
|
+
/** Sets whether an existing 3D portal or mirror is active. */
|
|
1078
|
+
realm3dSetPortalActive(realmId: number, portalId: number, active: boolean): void;
|
|
1079
|
+
/** Destroys an existing 3D portal or mirror. */
|
|
1080
|
+
realm3dDestroyPortal(realmId: number, portalId: number): void;
|
|
1081
|
+
/** Destroys an existing 3D camera entity. */
|
|
1082
|
+
realm3dDestroyCamera(realmId: number, cameraId: number): void;
|
|
1083
|
+
/** Destroys an existing 3D material entity. */
|
|
1084
|
+
realm3dDestroyMaterial(realmId: number, materialId: number): void;
|
|
1085
|
+
/** Destroys an existing 3D geometry entity. */
|
|
1086
|
+
realm3dDestroyGeometry(realmId: number, geometryId: number): void;
|
|
1087
|
+
/** Destroys an existing 3D model entity. */
|
|
1088
|
+
realm3dDestroyModel(realmId: number, modelId: number): void;
|
|
1089
|
+
/** Destroys an existing 3D instanced model entity. */
|
|
1090
|
+
realm3dDestroyInstancedModel(realmId: number, instancedModelId: number): void;
|
|
1091
|
+
/** Destroys an existing 3D light entity. */
|
|
1092
|
+
realm3dDestroyLight(realmId: number, lightId: number): void;
|
|
1093
|
+
/** Reads the transform of an existing Model instance. */
|
|
1094
|
+
realm3dGetModelTransform(realmId: number, modelId: number): Transform3D;
|
|
1095
|
+
/** Reads the transform of an existing Camera instance. */
|
|
1096
|
+
realm3dGetCameraTransform(realmId: number, cameraId: number): Transform3D;
|
|
1097
|
+
/** Reads the world-space bounding box (min, max) of a 3D model into two 3-float out buffers. */
|
|
1098
|
+
realm3dGetModelAabbRaw(realmId: number, modelId: number, outMin: any, outMax: any): void;
|
|
1099
|
+
/** Creates and registers a new 2D Realm in the Multiverse. */
|
|
1100
|
+
realm2dCreate(realmId: number): void;
|
|
1101
|
+
/** Destroys and unregisters a 2D Realm from the Multiverse. */
|
|
1102
|
+
realm2dDestroy(realmId: number): void;
|
|
1103
|
+
/** Creates or updates a 2D camera with an initial transform. */
|
|
1104
|
+
realm2dCreateCamera(realmId: number, cameraId: number, camera: Camera2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1105
|
+
/** Updates the spatial transform of an existing 2D camera. */
|
|
1106
|
+
realm2dSetCameraTransform(realmId: number, cameraId: number, transform: Transform2D): void;
|
|
1107
|
+
/** Creates or updates a 2D material definition. */
|
|
1108
|
+
realm2dCreateMaterial(realmId: number, materialId: number, material: Material2DDesc | string): void;
|
|
1109
|
+
/** Creates or updates a 2D instanced sprite with an initial transform. */
|
|
1110
|
+
realm2dCreateSprite(realmId: number, spriteId: number, sprite: Sprite2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1111
|
+
/** Updates the spatial transform of an existing 2D sprite. */
|
|
1112
|
+
realm2dSetSpriteTransform(realmId: number, spriteId: number, transform: Transform2D): void;
|
|
1113
|
+
/** Creates or updates a 2D vector shape (Rectangle, Circle, Polygon) with an initial transform. */
|
|
1114
|
+
realm2dCreateShape(realmId: number, shapeId: number, shape: Shape2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1115
|
+
/** Updates the spatial transform of an existing 2D shape. */
|
|
1116
|
+
realm2dSetShapeTransform(realmId: number, shapeId: number, transform: Transform2D): void;
|
|
1117
|
+
/** Creates or updates a 2D point light with an initial transform. */
|
|
1118
|
+
realm2dCreateLight(realmId: number, lightId: number, light: Light2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1119
|
+
/** Updates the spatial transform of an existing 2D light. */
|
|
1120
|
+
realm2dSetLightTransform(realmId: number, lightId: number, transform: Transform2D): void;
|
|
1121
|
+
/** Updates global 2D polar shadow parameters. */
|
|
1122
|
+
realm2dSetShadowConfig(realmId: number, config: Shadow2DConfigDesc | string): void;
|
|
1123
|
+
/** Creates or updates a 2D particle emitter entity with an initial transform. */
|
|
1124
|
+
realm2dCreateParticleEmitter(realmId: number, emitterId: number, emitter: ParticleEmitter2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1125
|
+
/** Updates the spatial transform of an existing 2D particle emitter. */
|
|
1126
|
+
realm2dSetParticleEmitterTransform(realmId: number, emitterId: number, transform: Transform2D): void;
|
|
1127
|
+
/** Triggers an immediate burst of particles from an existing 2D emitter. */
|
|
1128
|
+
realm2dParticleEmitterBurst(realmId: number, emitterId: number, count: number): void;
|
|
1129
|
+
/** Destroys an existing 2D particle emitter entity. */
|
|
1130
|
+
realm2dDestroyParticleEmitter(realmId: number, emitterId: number): void;
|
|
1131
|
+
/** Destroys an existing 2D camera entity. */
|
|
1132
|
+
realm2dDestroyCamera(realmId: number, cameraId: number): void;
|
|
1133
|
+
/** Destroys an existing 2D material entity. */
|
|
1134
|
+
realm2dDestroyMaterial(realmId: number, materialId: number): void;
|
|
1135
|
+
/** Destroys an existing 2D sprite entity. */
|
|
1136
|
+
realm2dDestroySprite(realmId: number, spriteId: number): void;
|
|
1137
|
+
/** Destroys an existing 2D shape entity. */
|
|
1138
|
+
realm2dDestroyShape(realmId: number, shapeId: number): void;
|
|
1139
|
+
/** Destroys an existing 2D light entity. */
|
|
1140
|
+
realm2dDestroyLight(realmId: number, lightId: number): void;
|
|
1141
|
+
/** Reads the transform of an existing Sprite instance. */
|
|
1142
|
+
realm2dGetSpriteTransform(realmId: number, spriteId: number): Transform2D;
|
|
1143
|
+
/** Reads the transform of an existing Camera instance. */
|
|
1144
|
+
realm2dGetCameraTransform(realmId: number, cameraId: number): Transform2D;
|
|
1145
|
+
/** Creates or updates a 2D SVG vector entity with an initial transform. */
|
|
1146
|
+
realm2dCreateSvg(realmId: number, svgId: number, svg: Svg2DDesc | string, transform: Transform2DDesc | string): void;
|
|
1147
|
+
/** Reads the geometric bounds of an SVG element. */
|
|
1148
|
+
realm2dGetSvgElementRect(realmId: number, svgId: number, elementId: string): SvgElementRectResult;
|
|
1149
|
+
/** Reads the shaped text clusters of an SVG text element. */
|
|
1150
|
+
realm2dGetSvgTextLayout(realmId: number, svgId: number, elementId: string): SvgTextLayoutResult;
|
|
1151
|
+
/** Replaces the complete source XML markup string of an existing SVG entity. */
|
|
1152
|
+
realm2dSetSvgSource(realmId: number, svgId: number, source: string): void;
|
|
1153
|
+
/** Sets or overwrites an XML attribute on the matching element ID in the SVG. */
|
|
1154
|
+
realm2dSetSvgAttribute(realmId: number, svgId: number, elementId: string, name: string, value: string): void;
|
|
1155
|
+
/** Removes an XML attribute from the matching element ID in the SVG. */
|
|
1156
|
+
realm2dRemoveSvgAttribute(realmId: number, svgId: number, elementId: string, name: string): void;
|
|
1157
|
+
/** Updates the inner text content of the matching element ID in the SVG. */
|
|
1158
|
+
realm2dSetSvgText(realmId: number, svgId: number, elementId: string, text: string): void;
|
|
1159
|
+
/** Updates the spatial transform of an existing SVG entity. */
|
|
1160
|
+
realm2dSetSvgTransform(realmId: number, svgId: number, transform: Transform2D): void;
|
|
1161
|
+
/** Reads the transform of an existing SVG entity. */
|
|
1162
|
+
realm2dGetSvgTransform(realmId: number, svgId: number): Transform2D;
|
|
1163
|
+
/** Destroys an existing 2D SVG entity. */
|
|
1164
|
+
realm2dDestroySvg(realmId: number, svgId: number): void;
|
|
1165
|
+
/** Registers raw TTF/OTF font binary data from memory (zero filesystem access). Returns the detected font family name. */
|
|
1166
|
+
realm2dLoadFontData(realmId: number, data: any, dataLen: number): string;
|
|
1167
|
+
/** Creates a new property transition with an initial value and timing configuration. */
|
|
1168
|
+
animationCreateTransition(transitionId: number, initialValue: AnimValue | string, config: TransitionConfig | string): void;
|
|
1169
|
+
/** Binds an existing transition to a realm entity or multiverse property target. */
|
|
1170
|
+
animationBindTarget(transitionId: number, target: AnimationTarget | string): void;
|
|
1171
|
+
/** Unbinds a target from a transition and releases its property lock. */
|
|
1172
|
+
animationUnbindTarget(transitionId: number): void;
|
|
1173
|
+
/** Triggers a smooth transition from the live value towards a new target value. */
|
|
1174
|
+
animationTransitionTo(transitionId: number, targetValue: AnimValue | string, config: TransitionConfig | string): void;
|
|
1175
|
+
/** Fast-path helper creating a scalar transition. */
|
|
1176
|
+
animationCreateScalarTransition(transitionId: number, initialScalar: number, duration: number, delay: number, easingId: number): void;
|
|
1177
|
+
/** Fast-path helper smoothly transitioning a scalar property. */
|
|
1178
|
+
animationTransitionToScalar(transitionId: number, targetScalar: number, duration: number, delay: number, easingId: number): void;
|
|
1179
|
+
/** Fast-path transitioning a 3D Transform from 10 raw floats (pos, quat, scale). */
|
|
1180
|
+
animationTransitionToTransform3d(transitionId: number, floats: any, duration: number, delay: number, easingId: number): void;
|
|
1181
|
+
/** Fast-path transitioning a 2D Transform from 6 raw floats (pos, rot, scale, z_layer). */
|
|
1182
|
+
animationTransitionToTransform2d(transitionId: number, floats: any, duration: number, delay: number, easingId: number): void;
|
|
1183
|
+
/** Queries the current playback status and progress of a transition. */
|
|
1184
|
+
animationGetState(transitionId: number): TransitionState;
|
|
1185
|
+
/** Queries the current evaluated value of a transition. */
|
|
1186
|
+
animationGetValue(transitionId: number): AnimValue;
|
|
1187
|
+
/** Destroys an animation transition by ID. */
|
|
1188
|
+
animationDestroyTransition(transitionId: number): void;
|
|
1189
|
+
/** Advances all active animation transitions by dt seconds and applies updates to Multiverse. */
|
|
1190
|
+
animationStep(dt: number): void;
|
|
1191
|
+
/** Drains and returns all queued animation lifecycle events. */
|
|
1192
|
+
animationPumpEvents(): AnimationEvent[];
|
|
1193
|
+
/** Writes directly to a custom animation channel. */
|
|
1194
|
+
animationSetCustomChannel(channelId: number, value: AnimValue | string): void;
|
|
1195
|
+
/** Reads directly from a custom animation channel. */
|
|
1196
|
+
animationGetCustomChannel(channelId: number): AnimValue;
|
|
1197
|
+
/** Creates a new path follower traversing a declarative SVG-like path. */
|
|
1198
|
+
animationCreatePathFollow(pathId: number, commands: PathCommand[] | string, config: PathFollowConfig | string): void;
|
|
1199
|
+
/** Binds a path follower to an entity property target with conflict locking. */
|
|
1200
|
+
animationBindPathFollowTarget(pathId: number, target: AnimationTarget | string): void;
|
|
1201
|
+
/** Unbinds a target from a path follower and releases its property lock. */
|
|
1202
|
+
animationUnbindPathFollowTarget(pathId: number): void;
|
|
1203
|
+
/** Destroys a path follower by ID. */
|
|
1204
|
+
animationDestroyPathFollow(pathId: number): void;
|
|
1205
|
+
/** Queries the current playback status and progress of a path follower. */
|
|
1206
|
+
animationGetPathFollowState(pathId: number): PathFollowState;
|
|
1207
|
+
/** Reads the resolved physical size [width, height] of a Multiverse Target. */
|
|
1208
|
+
multiverseGetTargetSize?(targetId: number): [number, number];
|
|
1209
|
+
/** Reads the inner physical size [width, height] of a Platform window. */
|
|
1210
|
+
platformGetWindowSize?(windowId: number): [number, number];
|
|
1211
|
+
/** Reads the world-space bounding box { min: [x,y,z], max: [x,y,z] } of a 3D model. */
|
|
1212
|
+
realm3dGetModelAabb?(realmId: number, modelId: number): { min: [number, number, number]; max: [number, number, number] };
|
|
1213
|
+
}
|