pelican-engine 0.3.7 → 0.3.8

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.
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "format": "pelican.api-index",
3
3
  "version": 1,
4
- "engineVersion": "0.3.7",
4
+ "engineVersion": "0.3.8",
5
5
  "entry": "pelican-engine",
6
6
  "source": "packages/sdk/src/index.ts",
7
7
  "symbols": [
8
8
  {
9
9
  "name": "SDK_VERSION",
10
10
  "kind": "constant",
11
- "signature": "SDK_VERSION = \"0.3.7\"",
11
+ "signature": "SDK_VERSION = \"0.3.8\"",
12
12
  "line": 2
13
13
  },
14
14
  {
@@ -202,11 +202,21 @@
202
202
  "y"
203
203
  ]
204
204
  },
205
+ {
206
+ "name": "NavigationObstacleUpdate",
207
+ "kind": "InterfaceDeclaration",
208
+ "signature": "export interface NavigationObstacleUpdate { readonly cell: NavigationCell; readonly blocked: boolean }",
209
+ "line": 125,
210
+ "fields": [
211
+ "cell",
212
+ "blocked"
213
+ ]
214
+ },
205
215
  {
206
216
  "name": "NavigationGrid",
207
217
  "kind": "InterfaceDeclaration",
208
218
  "signature": "export interface NavigationGrid {\n readonly id: string;\n readonly owner: string;\n readonly width: number;\n readonly height: number;\n readonly blocked?: readonly NavigationCell[];\n /** Maximum distinct search cells, including endpoints; defaults to 65536. Raising it increases memory and CPU use. */\n readonly searchCellBudget?: number;\n}",
209
- "line": 124,
219
+ "line": 126,
210
220
  "fields": [
211
221
  "id",
212
222
  "owner",
@@ -219,13 +229,14 @@
219
229
  {
220
230
  "name": "NavigationService",
221
231
  "kind": "InterfaceDeclaration",
222
- "signature": "export interface NavigationService {\n createGrid(grid: NavigationGrid): void;\n /** Returns a detached description, including the current blocked cells. */\n getGrid(id: string): NavigationGrid;\n isBlocked(id: string, cell: NavigationCell): boolean;\n setBlocked(id: string, cell: NavigationCell, blocked: boolean): void;\n findPath(id: string, start: NavigationCell, end: NavigationCell): readonly NavigationCell[];\n destroyGrid(id: string): void;\n destroyOwner(owner: string): void;\n}",
223
- "line": 133,
232
+ "signature": "export interface NavigationService {\n createGrid(grid: NavigationGrid): void;\n /** Returns a detached description, including the current blocked cells. */\n getGrid(id: string): NavigationGrid;\n isBlocked(id: string, cell: NavigationCell): boolean;\n setBlocked(id: string, cell: NavigationCell, blocked: boolean): void;\n /** Validates the entire batch before committing; the last change for a repeated cell wins. */\n setBlockedBatch(id: string, updates: readonly NavigationObstacleUpdate[]): void;\n findPath(id: string, start: NavigationCell, end: NavigationCell): readonly NavigationCell[];\n destroyGrid(id: string): void;\n destroyOwner(owner: string): void;\n}",
233
+ "line": 135,
224
234
  "fields": [
225
235
  "createGrid",
226
236
  "getGrid",
227
237
  "isBlocked",
228
238
  "setBlocked",
239
+ "setBlockedBatch",
229
240
  "findPath",
230
241
  "destroyGrid",
231
242
  "destroyOwner"
@@ -235,13 +246,13 @@
235
246
  "name": "RenderMode",
236
247
  "kind": "TypeAliasDeclaration",
237
248
  "signature": "export type RenderMode = \"raster\" | \"hybrid\" | \"path\";",
238
- "line": 143
249
+ "line": 147
239
250
  },
240
251
  {
241
252
  "name": "RenderCapabilities",
242
253
  "kind": "InterfaceDeclaration",
243
254
  "signature": "export interface RenderCapabilities {\n backend: \"webgpu\" | \"webgl2\" | \"uninitialized\";\n compute: boolean;\n availableModes: readonly RenderMode[];\n}",
244
- "line": 144,
255
+ "line": 148,
245
256
  "fields": [
246
257
  "backend",
247
258
  "compute",
@@ -252,7 +263,7 @@
252
263
  "name": "RenderSettings",
253
264
  "kind": "InterfaceDeclaration",
254
265
  "signature": "export interface RenderSettings {\n mode: RenderMode;\n samplesPerFrame: number;\n maxBounces: number;\n denoise: boolean;\n denoiseIterations: number;\n exposure: number;\n directLighting: boolean;\n indirectLighting: boolean;\n debug: \"beauty\" | \"albedo\" | \"normal\" | \"depth\" | \"samples\";\n}",
255
- "line": 149,
266
+ "line": 153,
256
267
  "fields": [
257
268
  "mode",
258
269
  "samplesPerFrame",
@@ -269,7 +280,7 @@
269
280
  "name": "RenderService",
270
281
  "kind": "InterfaceDeclaration",
271
282
  "signature": "export interface RenderService {\n configure(settings: Partial<RenderSettings>): void;\n state(): Readonly<RenderSettings>;\n capabilities(): Readonly<RenderCapabilities>;\n setMaterialParameter(material: string, name: string, value: GraphValue): void;\n materialParameters(material: string): Readonly<Record<string, GraphValue>>;\n readonly effects: PostProcessService;\n readonly buffers: RenderBufferBindings;\n readonly textures: RenderTextureBindings;\n}",
272
- "line": 160,
283
+ "line": 164,
273
284
  "fields": [
274
285
  "configure",
275
286
  "state",
@@ -285,7 +296,7 @@
285
296
  "name": "MaterialBufferInput",
286
297
  "kind": "InterfaceDeclaration",
287
298
  "signature": "export interface MaterialBufferInput {\n /** Shared slot declaration for material and postprocess graphs. */\n name: string;\n type: GraphType;\n /** Optional initial logical compute-buffer ID. */\n buffer?: string;\n /** Optional exact element count required by this slot. */\n count?: number;\n}",
288
- "line": 170,
299
+ "line": 174,
289
300
  "fields": [
290
301
  "name",
291
302
  "type",
@@ -297,7 +308,7 @@
297
308
  "name": "RenderBufferReference",
298
309
  "kind": "InterfaceDeclaration",
299
310
  "signature": "export interface RenderBufferReference {\n id: string;\n type: GraphType;\n count: number;\n}",
300
- "line": 179,
311
+ "line": 183,
301
312
  "fields": [
302
313
  "id",
303
314
  "type",
@@ -308,7 +319,7 @@
308
319
  "name": "RenderBufferBindings",
309
320
  "kind": "InterfaceDeclaration",
310
321
  "signature": "export interface RenderBufferBindings {\n bind(target: string, name: string, buffer: ComputeBufferHandle): void;\n unbind(target: string, name: string): void;\n state(target: string): Readonly<Record<string, RenderBufferReference>>;\n}",
311
- "line": 184,
322
+ "line": 188,
312
323
  "fields": [
313
324
  "bind",
314
325
  "unbind",
@@ -319,7 +330,7 @@
319
330
  "name": "MaterialTextureInput",
320
331
  "kind": "InterfaceDeclaration",
321
332
  "signature": "export interface MaterialTextureInput extends ComputeTextureBinding {\n /** Initial managed texture ID; asset import uses computeTextures/createTexture. */\n texture?: string;\n width?: number;\n height?: number;\n}",
322
- "line": 189,
333
+ "line": 193,
323
334
  "fields": [
324
335
  "texture",
325
336
  "width",
@@ -330,7 +341,7 @@
330
341
  "name": "RenderTextureReference",
331
342
  "kind": "InterfaceDeclaration",
332
343
  "signature": "export interface RenderTextureReference extends ComputeTextureSize {\n id: string;\n format: \"rgba32float\";\n}",
333
- "line": 195,
344
+ "line": 199,
334
345
  "fields": [
335
346
  "id",
336
347
  "format"
@@ -340,7 +351,7 @@
340
351
  "name": "RenderTextureBindings",
341
352
  "kind": "InterfaceDeclaration",
342
353
  "signature": "export interface RenderTextureBindings {\n bind(target: string, name: string, texture: ComputeTextureHandle): void;\n unbind(target: string, name: string): void;\n state(target: string): Readonly<Record<string, RenderTextureReference>>;\n}",
343
- "line": 199,
354
+ "line": 203,
344
355
  "fields": [
345
356
  "bind",
346
357
  "unbind",
@@ -351,7 +362,7 @@
351
362
  "name": "PostProcessState",
352
363
  "kind": "InterfaceDeclaration",
353
364
  "signature": "export interface PostProcessState {\n id: string;\n enabled: boolean;\n parameters: Readonly<Record<string, GraphValue>>;\n}",
354
- "line": 204,
365
+ "line": 208,
355
366
  "fields": [
356
367
  "id",
357
368
  "enabled",
@@ -362,7 +373,7 @@
362
373
  "name": "PostProcessService",
363
374
  "kind": "InterfaceDeclaration",
364
375
  "signature": "export interface PostProcessService {\n /** Compute-buffer slots declared by definePostProcess, addressed by pass ID. */\n readonly buffers: RenderBufferBindings;\n readonly textures: RenderTextureBindings;\n configure(id: string, settings: { enabled: boolean }): void;\n state(id: string): Readonly<PostProcessState>;\n setParameter(id: string, name: string, value: GraphValue): void;\n /** Clears temporal effect images; it does not modify game or trace accumulation state. */\n resetHistory(id?: string): void;\n}",
365
- "line": 209,
376
+ "line": 213,
366
377
  "fields": [
367
378
  "buffers",
368
379
  "textures",
@@ -376,7 +387,7 @@
376
387
  "name": "ComputeBufferHandle",
377
388
  "kind": "InterfaceDeclaration",
378
389
  "signature": "export interface ComputeBufferHandle {\n readonly owner: number;\n readonly index: number;\n readonly generation: number;\n}",
379
- "line": 219,
390
+ "line": 223,
380
391
  "fields": [
381
392
  "owner",
382
393
  "index",
@@ -387,7 +398,7 @@
387
398
  "name": "ComputeTaskHandle",
388
399
  "kind": "InterfaceDeclaration",
389
400
  "signature": "export interface ComputeTaskHandle {\n readonly owner: number;\n readonly id: number;\n}",
390
- "line": 224,
401
+ "line": 228,
391
402
  "fields": [
392
403
  "owner",
393
404
  "id"
@@ -397,7 +408,7 @@
397
408
  "name": "ComputeBufferInput",
398
409
  "kind": "InterfaceDeclaration",
399
410
  "signature": "export interface ComputeBufferInput {\n id: string;\n type: GraphType;\n count: number;\n data?: readonly GraphValue[];\n}",
400
- "line": 228,
411
+ "line": 232,
401
412
  "fields": [
402
413
  "id",
403
414
  "type",
@@ -409,7 +420,7 @@
409
420
  "name": "ComputeTextureHandle",
410
421
  "kind": "InterfaceDeclaration",
411
422
  "signature": "export interface ComputeTextureHandle {\n readonly owner: number;\n readonly index: number;\n readonly generation: number;\n readonly kind: \"texture\";\n}",
412
- "line": 234,
423
+ "line": 238,
413
424
  "fields": [
414
425
  "owner",
415
426
  "index",
@@ -421,7 +432,7 @@
421
432
  "name": "ComputeTextureSize",
422
433
  "kind": "InterfaceDeclaration",
423
434
  "signature": "export interface ComputeTextureSize {\n width: number;\n height: number;\n}",
424
- "line": 240,
435
+ "line": 244,
425
436
  "fields": [
426
437
  "width",
427
438
  "height"
@@ -431,7 +442,7 @@
431
442
  "name": "ComputeTextureDataInput",
432
443
  "kind": "InterfaceDeclaration",
433
444
  "signature": "export interface ComputeTextureDataInput extends ComputeTextureSize {\n id: string;\n /** Linear rgba32float texels in row-major order, without color-space conversion. */\n data?: readonly Vec4[];\n asset?: never;\n}",
434
- "line": 244,
445
+ "line": 248,
435
446
  "fields": [
436
447
  "id",
437
448
  "data",
@@ -442,7 +453,7 @@
442
453
  "name": "ComputeTextureAssetInput",
443
454
  "kind": "InterfaceDeclaration",
444
455
  "signature": "export interface ComputeTextureAssetInput {\n id: string;\n asset: AssetDefinition | string;\n width?: never;\n height?: never;\n data?: never;\n}",
445
- "line": 250,
456
+ "line": 254,
446
457
  "fields": [
447
458
  "id",
448
459
  "asset",
@@ -455,13 +466,13 @@
455
466
  "name": "ComputeTextureInput",
456
467
  "kind": "TypeAliasDeclaration",
457
468
  "signature": "export type ComputeTextureInput = ComputeTextureDataInput | ComputeTextureAssetInput;",
458
- "line": 257
469
+ "line": 261
459
470
  },
460
471
  {
461
472
  "name": "ComputeTextureBinding",
462
473
  "kind": "InterfaceDeclaration",
463
474
  "signature": "export interface ComputeTextureBinding {\n name: string;\n filter?: \"nearest\" | \"linear\";\n wrapU?: \"clamp\" | \"repeat\" | \"mirror\";\n wrapV?: \"clamp\" | \"repeat\" | \"mirror\";\n}",
464
- "line": 258,
475
+ "line": 262,
465
476
  "fields": [
466
477
  "name",
467
478
  "filter",
@@ -473,7 +484,7 @@
473
484
  "name": "ComputeDispatchInput",
474
485
  "kind": "InterfaceDeclaration",
475
486
  "signature": "export interface ComputeDispatchInput {\n output: ComputeBufferHandle | ComputeTextureHandle;\n /** Handles capture dispatch-time data; task bindings consume that exact successful output revision. */\n bindings?: Readonly<Record<string, ComputeBufferHandle | { task: ComputeTaskHandle }>>;\n /** Named sampled rgba32float textures; task bindings capture that exact texture result. */\n textures?: Readonly<Record<string, ComputeTextureHandle | { task: ComputeTaskHandle }>>;\n /** Ordering only. It never silently refreshes ordinary handle bindings. */\n after?: readonly ComputeTaskHandle[];\n parameters?: Readonly<Record<string, GraphValue>>;\n /** Fixed simulation time by default, not wall-clock time. */\n time?: number;\n}",
476
- "line": 264,
487
+ "line": 268,
477
488
  "fields": [
478
489
  "output",
479
490
  "bindings",
@@ -487,7 +498,7 @@
487
498
  "name": "ComputeTaskState",
488
499
  "kind": "InterfaceDeclaration",
489
500
  "signature": "export interface ComputeTaskState {\n status: \"queued\" | \"running\" | \"succeeded\" | \"failed\" | \"cancelled\";\n error?: { code: string; message: string; remediation: string };\n}",
490
- "line": 276,
501
+ "line": 280,
491
502
  "fields": [
492
503
  "status",
493
504
  "error"
@@ -497,7 +508,7 @@
497
508
  "name": "ComputeService",
498
509
  "kind": "InterfaceDeclaration",
499
510
  "signature": "export interface ComputeService {\n createTexture(input: ComputeTextureInput): ComputeTextureHandle;\n resolveTexture(id: string): ComputeTextureHandle;\n describeTexture(texture: ComputeTextureHandle): Readonly<ComputeTextureSize & { id: string; format: \"rgba32float\"; revision: number }>;\n readTexture(texture: ComputeTextureHandle): readonly Vec4[];\n writeTexture(texture: ComputeTextureHandle, data: readonly Vec4[], region?: ComputeTextureSize & { x: number; y: number }): void;\n releaseTexture(texture: ComputeTextureHandle): void;\n createBuffer(input: ComputeBufferInput): ComputeBufferHandle;\n resolve(id: string): ComputeBufferHandle;\n describeBuffer(buffer: ComputeBufferHandle): Readonly<{ id: string; type: GraphType; count: number; revision: number }>;\n /** Last committed GPU result; detached CPU data, never a GPU object. */\n readBuffer(buffer: ComputeBufferHandle): readonly GraphValue[];\n writeBuffer(buffer: ComputeBufferHandle, values: readonly GraphValue[], offset?: number): void;\n releaseBuffer(buffer: ComputeBufferHandle): void;\n dispatch(kernel: ComputeDefinition | string, input: ComputeDispatchInput): ComputeTaskHandle;\n task(task: ComputeTaskHandle): Readonly<ComputeTaskState>;\n tasks(): readonly { handle: ComputeTaskHandle; state: ComputeTaskState }[];\n cancel(task: ComputeTaskHandle): void;\n releaseTask(task: ComputeTaskHandle): void;\n}",
500
- "line": 280,
511
+ "line": 284,
501
512
  "fields": [
502
513
  "createTexture",
503
514
  "resolveTexture",
@@ -522,7 +533,7 @@
522
533
  "name": "InputService",
523
534
  "kind": "InterfaceDeclaration",
524
535
  "signature": "export interface InputService {\n held(action: string): boolean;\n pressed(action: string): boolean;\n released(action: string): boolean;\n axis(negative: string, positive: string): number;\n}",
525
- "line": 300,
536
+ "line": 304,
526
537
  "fields": [
527
538
  "held",
528
539
  "pressed",
@@ -534,7 +545,7 @@
534
545
  "name": "PhysicsService",
535
546
  "kind": "InterfaceDeclaration",
536
547
  "signature": "export interface PhysicsService {\n moveCharacter(entity: string, displacement: Vec3): void;\n grounded(entity: string): boolean;\n velocity(entity: string): Vec3;\n setVelocity(entity: string, velocity: Vec3): void;\n impulse(entity: string, impulse: Vec3): void;\n /** Angular velocity in world-space radians per second. */\n angularVelocity(entity: string): Vec3;\n setAngularVelocity(entity: string, velocity: Vec3): void;\n /** Instantaneous world-space angular impulse, in angular-momentum units. */\n torqueImpulse(entity: string, impulse: Vec3): void;\n /** Apply world-space impulse at a world-space point, changing linear and angular motion. */\n impulseAtPoint(entity: string, impulse: Vec3, point: Vec3): void;\n raycast(\n origin: Vec3,\n direction: Vec3,\n maxDistance: number,\n options?: { exclude?: readonly string[]; includeTriggers?: boolean },\n ): { entity: string; distance: number; point: Vec3; normal: Vec3 } | null;\n}",
537
- "line": 306,
548
+ "line": 310,
538
549
  "fields": [
539
550
  "moveCharacter",
540
551
  "grounded",
@@ -552,7 +563,7 @@
552
563
  "name": "AnimationService",
553
564
  "kind": "InterfaceDeclaration",
554
565
  "signature": "export interface AnimationService {\n play(\n entity: string,\n clip: string,\n options?: { fade?: number; speed?: number; loop?: boolean },\n ): void;\n state(entity: string): {\n clip: string | null;\n time: number;\n playing: boolean;\n };\n}",
555
- "line": 326,
566
+ "line": 330,
556
567
  "fields": [
557
568
  "play",
558
569
  "state"
@@ -562,7 +573,7 @@
562
573
  "name": "CameraService",
563
574
  "kind": "InterfaceDeclaration",
564
575
  "signature": "export interface CameraService {\n follow(\n entity: string,\n options?: {\n distance?: number;\n height?: number;\n lookHeight?: number;\n yaw?: number;\n smoothing?: number;\n },\n ): void;\n orbit(yaw: number): void;\n}",
565
- "line": 338,
576
+ "line": 342,
566
577
  "fields": [
567
578
  "follow",
568
579
  "orbit"
@@ -572,7 +583,7 @@
572
583
  "name": "UIService",
573
584
  "kind": "InterfaceDeclaration",
574
585
  "signature": "export interface UIService {\n setText(id: string, text: string): void;\n setProgress(id: string, value: number): void;\n setVisible(id: string, visible: boolean): void;\n}",
575
- "line": 351,
586
+ "line": 355,
576
587
  "fields": [
577
588
  "setText",
578
589
  "setProgress",
@@ -583,7 +594,7 @@
583
594
  "name": "AudioService",
584
595
  "kind": "InterfaceDeclaration",
585
596
  "signature": "export interface AudioService {\n play(\n id: string,\n options?: { volume?: number; loop?: boolean; entity?: string; bus?: string; priority?: number },\n ): string;\n stop(voice: string): void;\n /** Pause/resume are idempotent; an unknown valid voice id is a no-op. Playback time follows fixed simulation ticks, even while audio is locked. */\n pause(voice: string): void;\n resume(voice: string): void;\n volume(value: number): void;\n /** Set a declared bus gain, independently of master and voice gain. */\n busVolume(id: string, value: number): void;\n /** Fade a declared bus over fixed-tick seconds; busVolume or another fade replaces it. */\n fadeBus(id: string, target: number, duration: number): void;\n}",
586
- "line": 356,
597
+ "line": 360,
587
598
  "fields": [
588
599
  "play",
589
600
  "stop",
@@ -598,7 +609,7 @@
598
609
  "name": "StorageService",
599
610
  "kind": "InterfaceDeclaration",
600
611
  "signature": "export interface StorageService {\n save(slot: string): void;\n load(slot: string): void;\n status(): {\n state: \"idle\" | \"saving\" | \"loading\" | \"saved\" | \"loaded\" | \"failed\";\n slot: string | null;\n error: string | null;\n };\n}",
601
- "line": 371,
612
+ "line": 375,
602
613
  "fields": [
603
614
  "save",
604
615
  "load",
@@ -609,7 +620,7 @@
609
620
  "name": "SceneService",
610
621
  "kind": "InterfaceDeclaration",
611
622
  "signature": "export interface SceneService {\n current(): string;\n load(id: string): void;\n}",
612
- "line": 380,
623
+ "line": 384,
613
624
  "fields": [
614
625
  "current",
615
626
  "load"
@@ -619,7 +630,7 @@
619
630
  "name": "ModelDefinition",
620
631
  "kind": "InterfaceDeclaration",
621
632
  "signature": "export interface ModelDefinition {\n /** Optional whole-model material override; omitted keeps the asset's original materials. */\n material?: MaterialDefinition | string;\n /** Replace all asset material slots with the given exact material name. Mutually exclusive with material. */\n materialSlots?: Record<string, MaterialDefinition | string>;\n castShadow?: boolean;\n receiveShadow?: boolean;\n asset: AssetDefinition | string;\n scale?: number;\n offset?: Vec3;\n rotation?: Vec3;\n animation?: { clip: string; speed?: number; loop?: boolean };\n}",
622
- "line": 384,
633
+ "line": 388,
623
634
  "fields": [
624
635
  "material",
625
636
  "materialSlots",
@@ -636,7 +647,7 @@
636
647
  "name": "RigidBodyDefinition",
637
648
  "kind": "InterfaceDeclaration",
638
649
  "signature": "export interface RigidBodyDefinition {\n type: \"fixed\" | \"dynamic\" | \"kinematic\";\n collider: {\n shape: \"box\" | \"sphere\" | \"capsule\";\n size?: Vec3;\n radius?: number;\n halfHeight?: number;\n offset?: Vec3;\n };\n mass?: number;\n friction?: number;\n restitution?: number;\n trigger?: boolean;\n}",
639
- "line": 397,
650
+ "line": 401,
640
651
  "fields": [
641
652
  "type",
642
653
  "collider",
@@ -650,7 +661,7 @@
650
661
  "name": "CharacterDefinition",
651
662
  "kind": "InterfaceDeclaration",
652
663
  "signature": "export interface CharacterDefinition {\n radius: number;\n height: number;\n speed: number;\n jumpSpeed?: number;\n /** Downward acceleration magnitude in world units/s^2; defaults to 9.81. Scene.gravity is a signed vector. */\n gravity?: number;\n}",
653
- "line": 411,
664
+ "line": 415,
654
665
  "fields": [
655
666
  "radius",
656
667
  "height",
@@ -663,7 +674,7 @@
663
674
  "name": "UIElementDefinition",
664
675
  "kind": "InterfaceDeclaration",
665
676
  "signature": "export interface UIElementDefinition {\n id: string;\n kind: \"text\" | \"bar\" | \"button\" | \"input\";\n text?: string;\n value?: number;\n visible?: boolean;\n anchor?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"center\";\n x?: number;\n y?: number;\n width?: number;\n color?: string;\n world?: { entity: string; offset?: Vec3; occlude?: boolean };\n}",
666
- "line": 419,
677
+ "line": 423,
667
678
  "fields": [
668
679
  "id",
669
680
  "kind",
@@ -682,7 +693,7 @@
682
693
  "name": "SoundDefinition",
683
694
  "kind": "InterfaceDeclaration",
684
695
  "signature": "export interface SoundDefinition {\n id: string;\n asset: AssetDefinition | string;\n volume?: number;\n loop?: boolean;\n bus?: string;\n}",
685
- "line": 432,
696
+ "line": 436,
686
697
  "fields": [
687
698
  "id",
688
699
  "asset",
@@ -695,7 +706,7 @@
695
706
  "name": "AudioBusDefinition",
696
707
  "kind": "InterfaceDeclaration",
697
708
  "signature": "export interface AudioBusDefinition {\n id: string;\n volume?: number;\n}",
698
- "line": 439,
709
+ "line": 443,
699
710
  "fields": [
700
711
  "id",
701
712
  "volume"
@@ -705,43 +716,43 @@
705
716
  "name": "SYSTEM_PHASES",
706
717
  "kind": "constant",
707
718
  "signature": "SYSTEM_PHASES = [\n \"input\",\n \"prePhysics\",\n \"physics\",\n \"postPhysics\",\n \"update\",\n \"presentation\",\n] as const",
708
- "line": 443
719
+ "line": 447
709
720
  },
710
721
  {
711
722
  "name": "SystemPhase",
712
723
  "kind": "TypeAliasDeclaration",
713
724
  "signature": "export type SystemPhase = (typeof SYSTEM_PHASES)[number];",
714
- "line": 451
725
+ "line": 455
715
726
  },
716
727
  {
717
728
  "name": "Geometry",
718
729
  "kind": "TypeAliasDeclaration",
719
730
  "signature": "export type Geometry =\n | { kind: \"box\"; size?: Vec3 }\n | { kind: \"sphere\"; radius?: number; segments?: number }\n | { kind: \"plane\"; size?: readonly [number, number] };",
720
- "line": 452
731
+ "line": 456
721
732
  },
722
733
  {
723
734
  "name": "GRAPH_TYPES",
724
735
  "kind": "constant",
725
736
  "signature": "GRAPH_TYPES = [\"float\", \"vec2\", \"vec3\", \"vec4\", \"bool\"] as const",
726
- "line": 456
737
+ "line": 460
727
738
  },
728
739
  {
729
740
  "name": "GraphType",
730
741
  "kind": "TypeAliasDeclaration",
731
742
  "signature": "export type GraphType = typeof GRAPH_TYPES[number];",
732
- "line": 457
743
+ "line": 461
733
744
  },
734
745
  {
735
746
  "name": "GraphValue",
736
747
  "kind": "TypeAliasDeclaration",
737
748
  "signature": "export type GraphValue = number | boolean | Vec2 | Vec3 | Vec4;",
738
- "line": 458
749
+ "line": 462
739
750
  },
740
751
  {
741
752
  "name": "GraphParameter",
742
753
  "kind": "InterfaceDeclaration",
743
754
  "signature": "export interface GraphParameter {\n name: string;\n type: GraphType;\n default: GraphValue;\n}",
744
- "line": 459,
755
+ "line": 463,
745
756
  "fields": [
746
757
  "name",
747
758
  "type",
@@ -752,31 +763,31 @@
752
763
  "name": "GRAPH_INPUT_TYPES",
753
764
  "kind": "constant",
754
765
  "signature": "GRAPH_INPUT_TYPES = {\n uv: \"vec2\", uv1: \"vec2\", positionWorld: \"vec3\", normalWorld: \"vec3\",\n viewDirectionWorld: \"vec3\", vertexColor: \"vec4\", index: \"float\",\n screenSize: \"vec2\", texelSize: \"vec2\",\n pixelCoord: \"vec2\", outputSize: \"vec2\",\n positionLocal: \"vec3\", normalLocal: \"vec3\", vertexIndex: \"float\", instanceIndex: \"float\",\n} as const",
755
- "line": 464
766
+ "line": 468
756
767
  },
757
768
  {
758
769
  "name": "GraphInputName",
759
770
  "kind": "TypeAliasDeclaration",
760
771
  "signature": "export type GraphInputName = keyof typeof GRAPH_INPUT_TYPES;",
761
- "line": 471
772
+ "line": 475
762
773
  },
763
774
  {
764
775
  "name": "GRAPH_OPERATIONS",
765
776
  "kind": "constant",
766
777
  "signature": "GRAPH_OPERATIONS = {\n unary: [\"sin\", \"cos\", \"abs\", \"floor\", \"ceil\", \"fract\", \"negate\", \"saturate\", \"normalize\", \"length\", \"safeSqrt\"] as const,\n binary: [\"add\", \"subtract\", \"multiply\", \"safeDivide\", \"min\", \"max\", \"dot\", \"cross\", \"step\", \"lessThan\", \"lessEqual\", \"greaterThan\", \"greaterEqual\", \"equal\", \"and\", \"or\"] as const,\n ternary: [\"mix\", \"clamp\", \"smoothstep\", \"select\"] as const,\n} as const",
767
- "line": 472
778
+ "line": 476
768
779
  },
769
780
  {
770
781
  "name": "GraphNode",
771
782
  "kind": "TypeAliasDeclaration",
772
783
  "signature": "export type GraphNode =\n | { id: string; op: \"float\"; value: number }\n | { id: string; op: \"bool\"; value: boolean }\n | { id: string; op: \"vec2\"; value: Vec2 }\n | { id: string; op: \"vec3\"; value: Vec3 }\n | { id: string; op: \"vec4\"; value: Vec4 }\n | { id: string; op: \"time\" }\n | { id: string; op: \"input\"; name: GraphInputName }\n | { id: string; op: \"parameter\"; name: string }\n | { id: string; op: typeof GRAPH_OPERATIONS.unary[number] | \"not\"; inputs: readonly [string] }\n | { id: string; op: typeof GRAPH_OPERATIONS.binary[number]; inputs: readonly [string, string] }\n | { id: string; op: typeof GRAPH_OPERATIONS.ternary[number]; inputs: readonly [string, string, string] }\n | { id: string; op: \"compose2\"; inputs: readonly [string, string] }\n | { id: string; op: \"compose3\"; inputs: readonly [string, string, string] }\n | { id: string; op: \"compose4\"; inputs: readonly [string, string, string, string] }\n | { id: string; op: \"swizzle\"; inputs: readonly [string]; components: string }\n | { id: string; op: \"sampleTexture\"; inputs: readonly [string]; texture: AssetDefinition | string }\n | { id: string; op: \"readBuffer\"; inputs: readonly [string]; buffer: string }\n | { id: string; op: \"sampleFrame\"; inputs: readonly [string]; channel: string }\n | { id: string; op: \"sampleHistory\"; inputs: readonly [string]; channel: string };",
773
- "line": 477
784
+ "line": 481
774
785
  },
775
786
  {
776
787
  "name": "Graph",
777
788
  "kind": "InterfaceDeclaration",
778
789
  "signature": "export interface Graph {\n nodes: readonly GraphNode[];\n output: string;\n parameters?: readonly GraphParameter[];\n}",
779
- "line": 497,
790
+ "line": 501,
780
791
  "fields": [
781
792
  "nodes",
782
793
  "output",
@@ -787,7 +798,7 @@
787
798
  "name": "MaterialGraphs",
788
799
  "kind": "InterfaceDeclaration",
789
800
  "signature": "export interface MaterialGraphs {\n baseColor?: Graph;\n emissive?: Graph;\n roughness?: Graph;\n metalness?: Graph;\n opacity?: Graph;\n /** Absolute, unsided world-space normal; engine applies material boundary orientation. */\n normalWorld?: Graph;\n}",
790
- "line": 502,
801
+ "line": 506,
791
802
  "fields": [
792
803
  "baseColor",
793
804
  "emissive",
@@ -801,7 +812,7 @@
801
812
  "name": "VertexGraphs",
802
813
  "kind": "InterfaceDeclaration",
803
814
  "signature": "export interface VertexGraphs {\n /** Absolute object-local position after built-in morph, skin and instance transforms. */\n position?: Graph;\n /** Unsided object-local normal in the same domain; zero keeps the normalized input normal. */\n normal?: Graph;\n}",
804
- "line": 511,
815
+ "line": 515,
805
816
  "fields": [
806
817
  "position",
807
818
  "normal"
@@ -811,7 +822,7 @@
811
822
  "name": "MaterialInput",
812
823
  "kind": "InterfaceDeclaration",
813
824
  "signature": "export interface MaterialInput {\n id: string;\n color?: string;\n roughness?: number;\n metalness?: number;\n texture?: AssetDefinition | string;\n graph?: Graph;\n graphs?: MaterialGraphs;\n vertex?: VertexGraphs;\n buffers?: readonly MaterialBufferInput[];\n textures?: readonly MaterialTextureInput[];\n emissive?: string;\n emissiveIntensity?: number;\n opacity?: number;\n alphaTest?: number;\n side?: \"front\" | \"back\" | \"double\";\n /** Closed-volume dielectric fraction; opacity remains independent stochastic coverage. */\n transmission?: number;\n ior?: number;\n /** Nontransmissive dielectric specular strength in [0,1]. Defaults to 1. */\n specularIntensity?: number;\n /** Nontransmissive dielectric specular color, a hex or named sRGB color. Defaults to white. */\n specularColor?: string;\n attenuationColor?: string;\n /** World-space distance for Beer absorption; omitted means no absorption. */\n attenuationDistance?: number;\n}",
814
- "line": 517,
825
+ "line": 521,
815
826
  "fields": [
816
827
  "id",
817
828
  "color",
@@ -840,7 +851,7 @@
840
851
  "name": "MaterialDefinition",
841
852
  "kind": "InterfaceDeclaration",
842
853
  "signature": "export interface MaterialDefinition extends MaterialInput {\n readonly kind: \"material\";\n}",
843
- "line": 544,
854
+ "line": 548,
844
855
  "fields": [
845
856
  "kind"
846
857
  ]
@@ -849,7 +860,7 @@
849
860
  "name": "PostProcessInput",
850
861
  "kind": "InterfaceDeclaration",
851
862
  "signature": "export interface PostProcessInput {\n id: string;\n buffers?: readonly MaterialBufferInput[];\n textures?: readonly MaterialTextureInput[];\n /** Linear HDR vec4 output. Frame channels: scene.color, scene.normal, scene.depth, or an earlier pass ID. */\n graph: Graph;\n enabled?: boolean;\n}",
852
- "line": 547,
863
+ "line": 551,
853
864
  "fields": [
854
865
  "id",
855
866
  "buffers",
@@ -862,7 +873,7 @@
862
873
  "name": "PostProcessDefinition",
863
874
  "kind": "InterfaceDeclaration",
864
875
  "signature": "export interface PostProcessDefinition extends PostProcessInput {\n readonly kind: \"postprocess\";\n}",
865
- "line": 555,
876
+ "line": 559,
866
877
  "fields": [
867
878
  "kind"
868
879
  ]
@@ -871,7 +882,7 @@
871
882
  "name": "ComputeInput",
872
883
  "kind": "InterfaceDeclaration",
873
884
  "signature": "export interface ComputeInput {\n id: string;\n graph: Graph;\n outputType: GraphType;\n count: number;\n workgroupSize?: number;\n buffers?: readonly { name: string; type: GraphType }[];\n textures?: readonly ComputeTextureBinding[];\n}",
874
- "line": 558,
885
+ "line": 562,
875
886
  "fields": [
876
887
  "id",
877
888
  "graph",
@@ -886,7 +897,7 @@
886
897
  "name": "ComputeDefinition",
887
898
  "kind": "InterfaceDeclaration",
888
899
  "signature": "export interface ComputeDefinition extends ComputeInput {\n readonly kind: \"compute\";\n}",
889
- "line": 567,
900
+ "line": 571,
890
901
  "fields": [
891
902
  "kind"
892
903
  ]
@@ -895,7 +906,7 @@
895
906
  "name": "AssetInput",
896
907
  "kind": "InterfaceDeclaration",
897
908
  "signature": "export interface AssetInput {\n id: string;\n path: string;\n type: \"texture\" | \"binary\" | \"model\" | \"audio\";\n source?: string;\n license?: string;\n attribution?: string;\n /** Texture imports only; defaults to sRGB color. Data/normal/ORM textures use linear. */\n colorSpace?: \"srgb\" | \"linear\";\n}",
898
- "line": 570,
909
+ "line": 574,
899
910
  "fields": [
900
911
  "id",
901
912
  "path",
@@ -910,7 +921,7 @@
910
921
  "name": "AssetDefinition",
911
922
  "kind": "InterfaceDeclaration",
912
923
  "signature": "export interface AssetDefinition extends AssetInput {\n readonly kind: \"asset\";\n}",
913
- "line": 580,
924
+ "line": 584,
914
925
  "fields": [
915
926
  "kind"
916
927
  ]
@@ -919,7 +930,7 @@
919
930
  "name": "MeshDefinition",
920
931
  "kind": "InterfaceDeclaration",
921
932
  "signature": "export interface MeshDefinition {\n geometry: Geometry;\n material: MaterialDefinition | string;\n castShadow?: boolean;\n receiveShadow?: boolean;\n}",
922
- "line": 583,
933
+ "line": 587,
923
934
  "fields": [
924
935
  "geometry",
925
936
  "material",
@@ -931,7 +942,7 @@
931
942
  "name": "LightDefinition",
932
943
  "kind": "InterfaceDeclaration",
933
944
  "signature": "export interface LightDefinition {\n kind: \"directional\" | \"point\";\n color?: string;\n intensity?: number;\n castShadow?: boolean;\n target?: Vec3;\n shadow?: {\n mapSize?: number;\n extent?: number;\n bias?: number;\n normalBias?: number;\n near?: number;\n far?: number;\n };\n}",
934
- "line": 589,
945
+ "line": 593,
935
946
  "fields": [
936
947
  "kind",
937
948
  "color",
@@ -945,7 +956,7 @@
945
956
  "name": "EntityInput",
946
957
  "kind": "InterfaceDeclaration",
947
958
  "signature": "export interface EntityInput {\n id: string;\n prefab?: PrefabDefinition | string;\n parent?: string;\n transform?: TransformPatch;\n mesh?: MeshDefinition;\n light?: LightDefinition;\n model?: ModelDefinition;\n rigidBody?: RigidBodyDefinition;\n character?: CharacterDefinition;\n components?: readonly ComponentInstance[];\n}",
948
- "line": 604,
959
+ "line": 608,
949
960
  "fields": [
950
961
  "id",
951
962
  "prefab",
@@ -963,7 +974,7 @@
963
974
  "name": "PrefabInput",
964
975
  "kind": "InterfaceDeclaration",
965
976
  "signature": "export interface PrefabInput extends Omit<EntityInput, \"prefab\" | \"parent\"> {\n extends?: PrefabDefinition | string;\n}",
966
- "line": 616,
977
+ "line": 620,
967
978
  "fields": [
968
979
  "extends"
969
980
  ]
@@ -972,7 +983,7 @@
972
983
  "name": "PrefabDefinition",
973
984
  "kind": "InterfaceDeclaration",
974
985
  "signature": "export interface PrefabDefinition extends PrefabInput {\n readonly kind: \"prefab\";\n}",
975
- "line": 619,
986
+ "line": 623,
976
987
  "fields": [
977
988
  "kind"
978
989
  ]
@@ -981,7 +992,7 @@
981
992
  "name": "SceneInput",
982
993
  "kind": "InterfaceDeclaration",
983
994
  "signature": "export interface SceneInput {\n id: string;\n camera?: {\n position: Vec3;\n target: Vec3;\n fov?: number;\n near?: number;\n far?: number;\n };\n environment?: {\n background?: string;\n ambientIntensity?: number;\n lighting?: \"none\" | \"studio\";\n };\n follow?: {\n entity: string;\n distance?: number;\n height?: number;\n lookHeight?: number;\n yaw?: number;\n smoothing?: number;\n };\n gravity?: Vec3;\n entities: readonly EntityInput[];\n}",
984
- "line": 622,
995
+ "line": 626,
985
996
  "fields": [
986
997
  "id",
987
998
  "camera",
@@ -995,7 +1006,7 @@
995
1006
  "name": "SceneDefinition",
996
1007
  "kind": "InterfaceDeclaration",
997
1008
  "signature": "export interface SceneDefinition extends SceneInput {\n readonly kind: \"scene\";\n}",
998
- "line": 647,
1009
+ "line": 651,
999
1010
  "fields": [
1000
1011
  "kind"
1001
1012
  ]
@@ -1004,7 +1015,7 @@
1004
1015
  "name": "SystemInput",
1005
1016
  "kind": "InterfaceDeclaration",
1006
1017
  "signature": "export interface SystemInput {\n id: string;\n phase?: SystemPhase;\n before?: readonly string[];\n after?: readonly string[];\n reads?: readonly string[];\n writes?: readonly string[];\n structural?: boolean;\n run: (engine: SystemContext, dt: number) => void;\n}",
1007
- "line": 650,
1018
+ "line": 654,
1008
1019
  "fields": [
1009
1020
  "id",
1010
1021
  "phase",
@@ -1020,7 +1031,7 @@
1020
1031
  "name": "SystemDefinition",
1021
1032
  "kind": "InterfaceDeclaration",
1022
1033
  "signature": "export interface SystemDefinition extends SystemInput {\n readonly kind: \"system\";\n}",
1023
- "line": 660,
1034
+ "line": 664,
1024
1035
  "fields": [
1025
1036
  "kind"
1026
1037
  ]
@@ -1029,7 +1040,7 @@
1029
1040
  "name": "GameInput",
1030
1041
  "kind": "InterfaceDeclaration",
1031
1042
  "signature": "export interface GameInput {\n id: string;\n scene: SceneDefinition;\n systems?: readonly SystemDefinition[];\n components?: readonly ComponentDefinition[];\n prefabs?: readonly PrefabDefinition[];\n materials?: readonly MaterialDefinition[];\n computes?: readonly ComputeDefinition[];\n computeBuffers?: readonly ComputeBufferInput[];\n computeTextures?: readonly ComputeTextureInput[];\n assets?: readonly AssetDefinition[];\n scenes?: readonly SceneDefinition[];\n input?: Readonly<Record<string, readonly string[]>>;\n ui?: readonly UIElementDefinition[];\n sounds?: readonly SoundDefinition[];\n audioBuses?: readonly AudioBusDefinition[];\n render?: Partial<RenderSettings>;\n postProcesses?: readonly PostProcessDefinition[];\n}",
1032
- "line": 663,
1043
+ "line": 667,
1033
1044
  "fields": [
1034
1045
  "id",
1035
1046
  "scene",
@@ -1054,7 +1065,7 @@
1054
1065
  "name": "GameDefinition",
1055
1066
  "kind": "InterfaceDeclaration",
1056
1067
  "signature": "export interface GameDefinition extends GameInput {\n readonly kind: \"game\";\n}",
1057
- "line": 682,
1068
+ "line": 686,
1058
1069
  "fields": [
1059
1070
  "kind"
1060
1071
  ]
@@ -1063,7 +1074,7 @@
1063
1074
  "name": "GameInstance",
1064
1075
  "kind": "InterfaceDeclaration",
1065
1076
  "signature": "export interface GameInstance {\n update(dt: number): void;\n dispose(): void;\n}",
1066
- "line": 685,
1077
+ "line": 689,
1067
1078
  "fields": [
1068
1079
  "update",
1069
1080
  "dispose"
@@ -1073,61 +1084,61 @@
1073
1084
  "name": "defineComponent",
1074
1085
  "kind": "FunctionDeclaration",
1075
1086
  "signature": "export function defineComponent<const S extends ComponentSchema>(input: {\n id: string;\n schema: S;\n}): ComponentDefinition<S>;",
1076
- "line": 689
1087
+ "line": 693
1077
1088
  },
1078
1089
  {
1079
1090
  "name": "defineMaterial",
1080
1091
  "kind": "FunctionDeclaration",
1081
1092
  "signature": "export function defineMaterial(input: MaterialInput): MaterialDefinition;",
1082
- "line": 695
1093
+ "line": 699
1083
1094
  },
1084
1095
  {
1085
1096
  "name": "definePostProcess",
1086
1097
  "kind": "FunctionDeclaration",
1087
1098
  "signature": "export function definePostProcess(input: PostProcessInput): PostProcessDefinition;",
1088
- "line": 698
1099
+ "line": 702
1089
1100
  },
1090
1101
  {
1091
1102
  "name": "defineCompute",
1092
1103
  "kind": "FunctionDeclaration",
1093
1104
  "signature": "export function defineCompute(input: ComputeInput): ComputeDefinition;",
1094
- "line": 701
1105
+ "line": 705
1095
1106
  },
1096
1107
  {
1097
1108
  "name": "defineAsset",
1098
1109
  "kind": "FunctionDeclaration",
1099
1110
  "signature": "export function defineAsset(input: AssetInput): AssetDefinition;",
1100
- "line": 704
1111
+ "line": 708
1101
1112
  },
1102
1113
  {
1103
1114
  "name": "definePrefab",
1104
1115
  "kind": "FunctionDeclaration",
1105
1116
  "signature": "export function definePrefab(input: PrefabInput): PrefabDefinition;",
1106
- "line": 707
1117
+ "line": 711
1107
1118
  },
1108
1119
  {
1109
1120
  "name": "defineScene",
1110
1121
  "kind": "FunctionDeclaration",
1111
1122
  "signature": "export function defineScene(input: SceneInput): SceneDefinition;",
1112
- "line": 710
1123
+ "line": 714
1113
1124
  },
1114
1125
  {
1115
1126
  "name": "defineSystem",
1116
1127
  "kind": "FunctionDeclaration",
1117
1128
  "signature": "export function defineSystem(input: SystemInput): SystemDefinition;",
1118
- "line": 713
1129
+ "line": 717
1119
1130
  },
1120
1131
  {
1121
1132
  "name": "defineGame",
1122
1133
  "kind": "FunctionDeclaration",
1123
1134
  "signature": "export function defineGame(input: GameInput): GameDefinition;",
1124
- "line": 716
1135
+ "line": 720
1125
1136
  },
1126
1137
  {
1127
1138
  "name": "instantiateGame",
1128
1139
  "kind": "FunctionDeclaration",
1129
1140
  "signature": "export function instantiateGame(\n game: GameDefinition,\n engine: EngineFacade,\n): GameInstance;",
1130
- "line": 720
1141
+ "line": 724
1131
1142
  }
1132
1143
  ],
1133
1144
  "installedDeclarations": "lib/sdk/index.d.ts",