pelican-engine 0.3.17 → 0.3.19

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.17",
4
+ "engineVersion": "0.3.19",
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.17\"",
11
+ "signature": "SDK_VERSION = \"0.3.19\"",
12
12
  "line": 2
13
13
  },
14
14
  {
@@ -171,7 +171,7 @@
171
171
  {
172
172
  "name": "SystemContext",
173
173
  "kind": "InterfaceDeclaration",
174
- "signature": "export interface SystemContext extends EngineFacade {\n readonly time: {\n readonly tick: number;\n readonly elapsed: number;\n readonly fixedDt: number;\n };\n readonly entities: EntityCommands;\n random(): number;\n emit(type: string, payload: unknown): void;\n events(type?: string): readonly GameEvent[];\n readonly input: InputService;\n readonly physics: PhysicsService;\n readonly animation: AnimationService;\n readonly camera: CameraService;\n readonly ui: UIService;\n readonly audio: AudioService;\n readonly storage: StorageService;\n readonly scenes: SceneService;\n readonly render: RenderService;\n readonly compute: ComputeService;\n readonly navigation: NavigationService;\n readonly ropes: RopeService;\n}",
174
+ "signature": "export interface SystemContext extends EngineFacade {\n readonly time: {\n readonly tick: number;\n readonly elapsed: number;\n readonly fixedDt: number;\n };\n readonly entities: EntityCommands;\n random(): number;\n emit(type: string, payload: unknown): void;\n events(type?: string): readonly GameEvent[];\n readonly input: InputService;\n readonly physics: PhysicsService;\n readonly animation: AnimationService;\n readonly camera: CameraService;\n readonly ui: UIService;\n readonly audio: AudioService;\n readonly storage: StorageService;\n readonly scenes: SceneService;\n readonly render: RenderService;\n readonly compute: ComputeService;\n readonly navigation: NavigationService;\n readonly ropes: RopeService;\n readonly cloth: ClothService;\n}",
175
175
  "line": 98,
176
176
  "fields": [
177
177
  "time",
@@ -190,20 +190,21 @@
190
190
  "render",
191
191
  "compute",
192
192
  "navigation",
193
- "ropes"
193
+ "ropes",
194
+ "cloth"
194
195
  ]
195
196
  },
196
197
  {
197
198
  "name": "RopeCollider",
198
199
  "kind": "TypeAliasDeclaration",
199
200
  "signature": "export type RopeCollider =\n | { kind: \"sphere\"; id: string; center: Vec3; radius: number }\n | { kind: \"plane\"; id: string; normal: Vec3; offset: number };",
200
- "line": 123
201
+ "line": 124
201
202
  },
202
203
  {
203
204
  "name": "RopeBodyCollider",
204
205
  "kind": "InterfaceDeclaration",
205
206
  "signature": "export interface RopeBodyCollider { readonly id: string; readonly entity: string }",
206
- "line": 127,
207
+ "line": 128,
207
208
  "fields": [
208
209
  "id",
209
210
  "entity"
@@ -213,7 +214,7 @@
213
214
  "name": "RopeVisualOptions",
214
215
  "kind": "InterfaceDeclaration",
215
216
  "signature": "export interface RopeVisualOptions {\n material: string;\n radius?: number;\n radialSegments?: number;\n castShadow?: boolean;\n receiveShadow?: boolean;\n}",
216
- "line": 129,
217
+ "line": 130,
217
218
  "fields": [
218
219
  "material",
219
220
  "radius",
@@ -226,7 +227,7 @@
226
227
  "name": "RopeVisualState",
227
228
  "kind": "InterfaceDeclaration",
228
229
  "signature": "export interface RopeVisualState {\n id: string;\n material: string;\n radius: number;\n radialSegments: number;\n castShadow: boolean;\n receiveShadow: boolean;\n positions: Vec3[];\n}",
229
- "line": 137,
230
+ "line": 138,
230
231
  "fields": [
231
232
  "id",
232
233
  "material",
@@ -241,7 +242,7 @@
241
242
  "name": "RopeDefinition",
242
243
  "kind": "InterfaceDeclaration",
243
244
  "signature": "export interface RopeDefinition {\n id: string;\n points: readonly Vec3[];\n /** Kilograms per particle, positive and at most 1e6. */\n mass: number;\n radius?: number;\n /** Defaults to the host interval; an explicit value must exactly match it. */\n fixedDt?: number;\n /** When true, step once after each physics phase; defaults to false (manual stepping). */\n autoStep?: boolean;\n /** Automatically sample and react to existing dynamic, non-trigger sphere bodies. Requires autoStep. */\n bodyColliders?: readonly RopeBodyCollider[];\n /** Resolve sphere contacts on segment interiors; defaults to true for new ropes. */\n segmentCollisions?: boolean;\n /** Resolve discrete non-adjacent segment self contacts; defaults to true for new ropes. */\n selfCollisions?: boolean;\n /** Optional segmented presentation using an already-declared material id. */\n visual?: RopeVisualOptions;\n substeps?: number;\n iterations?: number;\n damping?: number;\n gravity?: Vec3;\n anchors?: readonly { index: number; position: Vec3 }[];\n}",
244
- "line": 146,
245
+ "line": 147,
245
246
  "fields": [
246
247
  "id",
247
248
  "points",
@@ -264,7 +265,7 @@
264
265
  "name": "RopeContact",
265
266
  "kind": "InterfaceDeclaration",
266
267
  "signature": "export interface RopeContact {\n tick: number; particle: number; colliderId: string; penetration: number;\n /** Opposite of particle contact impulses, N·s; absent in older snapshots. */\n reactionImpulse?: Vec3;\n /** Angular impulse about the world origin; absent in older snapshots. */\n reactionAngularImpulse?: Vec3;\n}",
267
- "line": 171,
268
+ "line": 172,
268
269
  "fields": [
269
270
  "tick",
270
271
  "particle",
@@ -278,7 +279,7 @@
278
279
  "name": "RopeSegmentContact",
279
280
  "kind": "InterfaceDeclaration",
280
281
  "signature": "export interface RopeSegmentContact {\n tick: number;\n /** Zero-based index of the first endpoint; the second is segment + 1. */\n segment: number;\n colliderId: string;\n /** Last closest-point fraction from the first endpoint toward the second. */\n fraction: number;\n penetration: number;\n reactionImpulse?: Vec3;\n reactionAngularImpulse?: Vec3;\n}",
281
- "line": 179,
282
+ "line": 180,
282
283
  "fields": [
283
284
  "tick",
284
285
  "segment",
@@ -293,7 +294,7 @@
293
294
  "name": "RopeSelfContact",
294
295
  "kind": "InterfaceDeclaration",
295
296
  "signature": "export interface RopeSelfContact {\n tick: number;\n /** Zero-based first endpoint of each non-adjacent segment, ordered ascending. */\n firstSegment: number; secondSegment: number;\n /** Last closest-point fractions along the respective segments. */\n firstFraction: number; secondFraction: number;\n /** Maximum observed overlap in metres during this tick. */\n penetration: number;\n}",
296
- "line": 191,
297
+ "line": 192,
297
298
  "fields": [
298
299
  "tick",
299
300
  "firstSegment",
@@ -307,7 +308,7 @@
307
308
  "name": "RopeState",
308
309
  "kind": "InterfaceDeclaration",
309
310
  "signature": "export interface RopeState {\n tick: number; simulatedSeconds: number; disposed: boolean;\n segmentCollisions: boolean;\n selfCollisions: boolean;\n positions: Vec3[]; velocities: Vec3[];\n anchors: { index: number; position: Vec3 }[];\n contacts: RopeContact[];\n segmentContacts: RopeSegmentContact[];\n selfContacts: RopeSelfContact[];\n maxDistanceError: number;\n resources: { particles: number; constraints: number; anchors: number; colliders: number };\n}",
310
- "line": 200,
311
+ "line": 201,
311
312
  "fields": [
312
313
  "tick",
313
314
  "simulatedSeconds",
@@ -328,7 +329,131 @@
328
329
  "name": "RopeService",
329
330
  "kind": "InterfaceDeclaration",
330
331
  "signature": "export interface RopeService {\n create(definition: RopeDefinition): void;\n /** Explicit ticks for manual ropes only. Auto-stepped ropes reject this call. A failed batch leaves the rope unchanged. */\n step(id: string, ticks?: number): RopeState;\n inspect(id: string): RopeState;\n /** Detached visual descriptions, sorted by rope id; empty when no visuals are requested. */\n visuals(): readonly RopeVisualState[];\n setColliders(id: string, colliders: readonly RopeCollider[]): void;\n setAnchor(id: string, index: number, position: Vec3): void;\n releaseAnchor(id: string, index: number): void;\n applyForce(id: string, index: number, force: Vec3): void;\n applyImpulse(id: string, index: number, impulse: Vec3): void;\n destroy(id: string): void;\n}",
331
- "line": 212,
332
+ "line": 213,
333
+ "fields": [
334
+ "create",
335
+ "step",
336
+ "inspect",
337
+ "visuals",
338
+ "setColliders",
339
+ "setAnchor",
340
+ "releaseAnchor",
341
+ "applyForce",
342
+ "applyImpulse",
343
+ "destroy"
344
+ ]
345
+ },
346
+ {
347
+ "name": "ClothCollider",
348
+ "kind": "TypeAliasDeclaration",
349
+ "signature": "export type ClothCollider = RopeCollider;",
350
+ "line": 228
351
+ },
352
+ {
353
+ "name": "ClothTriangle",
354
+ "kind": "TypeAliasDeclaration",
355
+ "signature": "export type ClothTriangle = readonly [number, number, number];",
356
+ "line": 229
357
+ },
358
+ {
359
+ "name": "ClothVisualOptions",
360
+ "kind": "InterfaceDeclaration",
361
+ "signature": "export interface ClothVisualOptions {\n material: string;\n /** Optional per-particle UV coordinates; defaults to a planar projection. */\n uvs?: readonly Vec2[];\n castShadow?: boolean;\n receiveShadow?: boolean;\n}",
362
+ "line": 230,
363
+ "fields": [
364
+ "material",
365
+ "uvs",
366
+ "castShadow",
367
+ "receiveShadow"
368
+ ]
369
+ },
370
+ {
371
+ "name": "ClothDefinition",
372
+ "kind": "InterfaceDeclaration",
373
+ "signature": "export interface ClothDefinition {\n id: string;\n points: readonly Vec3[];\n triangles: readonly ClothTriangle[];\n /** Kilograms per movable particle. */\n mass: number;\n radius?: number;\n fixedDt?: number;\n autoStep?: boolean;\n substeps?: number;\n iterations?: number;\n damping?: number;\n gravity?: Vec3;\n /** Distance-based bending approximation across shared triangle edges; defaults to true. */\n bending?: boolean;\n anchors?: readonly { index: number; position: Vec3 }[];\n visual?: ClothVisualOptions;\n /** Discrete non-adjacent particle self-contact; defaults to true for new cloth. */\n selfCollisions?: boolean;\n}",
374
+ "line": 237,
375
+ "fields": [
376
+ "id",
377
+ "points",
378
+ "triangles",
379
+ "mass",
380
+ "radius",
381
+ "fixedDt",
382
+ "autoStep",
383
+ "substeps",
384
+ "iterations",
385
+ "damping",
386
+ "gravity",
387
+ "bending",
388
+ "anchors",
389
+ "visual",
390
+ "selfCollisions"
391
+ ]
392
+ },
393
+ {
394
+ "name": "ClothContact",
395
+ "kind": "InterfaceDeclaration",
396
+ "signature": "export interface ClothContact { tick: number; particle: number; colliderId: string; penetration: number }",
397
+ "line": 257,
398
+ "fields": [
399
+ "tick",
400
+ "particle",
401
+ "colliderId",
402
+ "penetration"
403
+ ]
404
+ },
405
+ {
406
+ "name": "ClothSelfContact",
407
+ "kind": "InterfaceDeclaration",
408
+ "signature": "export interface ClothSelfContact { tick: number; firstParticle: number; secondParticle: number; penetration: number }",
409
+ "line": 258,
410
+ "fields": [
411
+ "tick",
412
+ "firstParticle",
413
+ "secondParticle",
414
+ "penetration"
415
+ ]
416
+ },
417
+ {
418
+ "name": "ClothState",
419
+ "kind": "InterfaceDeclaration",
420
+ "signature": "export interface ClothState {\n tick: number; simulatedSeconds: number; disposed: boolean; selfCollisions: boolean;\n positions: Vec3[]; velocities: Vec3[]; triangles: ClothTriangle[];\n anchors: { index: number; position: Vec3 }[];\n contacts: ClothContact[]; selfContacts: ClothSelfContact[];\n maxDistanceError: number;\n resources: { particles: number; triangles: number; constraints: number; anchors: number; colliders: number };\n}",
421
+ "line": 259,
422
+ "fields": [
423
+ "tick",
424
+ "simulatedSeconds",
425
+ "disposed",
426
+ "selfCollisions",
427
+ "positions",
428
+ "velocities",
429
+ "triangles",
430
+ "anchors",
431
+ "contacts",
432
+ "selfContacts",
433
+ "maxDistanceError",
434
+ "resources"
435
+ ]
436
+ },
437
+ {
438
+ "name": "ClothVisualState",
439
+ "kind": "InterfaceDeclaration",
440
+ "signature": "export interface ClothVisualState {\n id: string; material: string; positions: Vec3[]; triangles: ClothTriangle[];\n uvs: Vec2[]; castShadow: boolean; receiveShadow: boolean;\n}",
441
+ "line": 267,
442
+ "fields": [
443
+ "id",
444
+ "material",
445
+ "positions",
446
+ "triangles",
447
+ "uvs",
448
+ "castShadow",
449
+ "receiveShadow"
450
+ ]
451
+ },
452
+ {
453
+ "name": "ClothService",
454
+ "kind": "InterfaceDeclaration",
455
+ "signature": "export interface ClothService {\n create(definition: ClothDefinition): void;\n /** Explicit ticks for manual cloth only; automatic cloth rejects this call. */\n step(id: string, ticks?: number): ClothState;\n inspect(id: string): ClothState;\n visuals(): readonly ClothVisualState[];\n setColliders(id: string, colliders: readonly ClothCollider[]): void;\n setAnchor(id: string, index: number, position: Vec3): void;\n releaseAnchor(id: string, index: number): void;\n applyForce(id: string, index: number, force: Vec3): void;\n applyImpulse(id: string, index: number, impulse: Vec3): void;\n destroy(id: string): void;\n}",
456
+ "line": 271,
332
457
  "fields": [
333
458
  "create",
334
459
  "step",
@@ -346,7 +471,7 @@
346
471
  "name": "NavigationCell",
347
472
  "kind": "InterfaceDeclaration",
348
473
  "signature": "export interface NavigationCell { readonly x: number; readonly y: number }",
349
- "line": 229,
474
+ "line": 287,
350
475
  "fields": [
351
476
  "x",
352
477
  "y"
@@ -356,7 +481,7 @@
356
481
  "name": "NavigationObstacleUpdate",
357
482
  "kind": "InterfaceDeclaration",
358
483
  "signature": "export interface NavigationObstacleUpdate { readonly cell: NavigationCell; readonly blocked: boolean }",
359
- "line": 231,
484
+ "line": 289,
360
485
  "fields": [
361
486
  "cell",
362
487
  "blocked"
@@ -366,7 +491,7 @@
366
491
  "name": "NavigationGrid",
367
492
  "kind": "InterfaceDeclaration",
368
493
  "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}",
369
- "line": 232,
494
+ "line": 290,
370
495
  "fields": [
371
496
  "id",
372
497
  "owner",
@@ -380,7 +505,7 @@
380
505
  "name": "NavigationService",
381
506
  "kind": "InterfaceDeclaration",
382
507
  "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}",
383
- "line": 241,
508
+ "line": 299,
384
509
  "fields": [
385
510
  "createGrid",
386
511
  "getGrid",
@@ -396,13 +521,13 @@
396
521
  "name": "RenderMode",
397
522
  "kind": "TypeAliasDeclaration",
398
523
  "signature": "export type RenderMode = \"raster\" | \"hybrid\" | \"path\";",
399
- "line": 253
524
+ "line": 311
400
525
  },
401
526
  {
402
527
  "name": "RenderCapabilities",
403
528
  "kind": "InterfaceDeclaration",
404
529
  "signature": "export interface RenderCapabilities {\n backend: \"webgpu\" | \"webgl2\" | \"uninitialized\";\n compute: boolean;\n availableModes: readonly RenderMode[];\n}",
405
- "line": 254,
530
+ "line": 312,
406
531
  "fields": [
407
532
  "backend",
408
533
  "compute",
@@ -413,7 +538,7 @@
413
538
  "name": "RenderSettings",
414
539
  "kind": "InterfaceDeclaration",
415
540
  "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}",
416
- "line": 259,
541
+ "line": 317,
417
542
  "fields": [
418
543
  "mode",
419
544
  "samplesPerFrame",
@@ -430,7 +555,7 @@
430
555
  "name": "RenderService",
431
556
  "kind": "InterfaceDeclaration",
432
557
  "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}",
433
- "line": 270,
558
+ "line": 328,
434
559
  "fields": [
435
560
  "configure",
436
561
  "state",
@@ -446,7 +571,7 @@
446
571
  "name": "MaterialBufferInput",
447
572
  "kind": "InterfaceDeclaration",
448
573
  "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}",
449
- "line": 280,
574
+ "line": 338,
450
575
  "fields": [
451
576
  "name",
452
577
  "type",
@@ -458,7 +583,7 @@
458
583
  "name": "RenderBufferReference",
459
584
  "kind": "InterfaceDeclaration",
460
585
  "signature": "export interface RenderBufferReference {\n id: string;\n type: GraphType;\n count: number;\n}",
461
- "line": 289,
586
+ "line": 347,
462
587
  "fields": [
463
588
  "id",
464
589
  "type",
@@ -469,7 +594,7 @@
469
594
  "name": "RenderBufferBindings",
470
595
  "kind": "InterfaceDeclaration",
471
596
  "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}",
472
- "line": 294,
597
+ "line": 352,
473
598
  "fields": [
474
599
  "bind",
475
600
  "unbind",
@@ -480,7 +605,7 @@
480
605
  "name": "MaterialTextureInput",
481
606
  "kind": "InterfaceDeclaration",
482
607
  "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}",
483
- "line": 299,
608
+ "line": 357,
484
609
  "fields": [
485
610
  "texture",
486
611
  "width",
@@ -491,7 +616,7 @@
491
616
  "name": "RenderTextureReference",
492
617
  "kind": "InterfaceDeclaration",
493
618
  "signature": "export interface RenderTextureReference extends ComputeTextureSize {\n id: string;\n format: \"rgba32float\";\n}",
494
- "line": 305,
619
+ "line": 363,
495
620
  "fields": [
496
621
  "id",
497
622
  "format"
@@ -501,7 +626,7 @@
501
626
  "name": "RenderTextureBindings",
502
627
  "kind": "InterfaceDeclaration",
503
628
  "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}",
504
- "line": 309,
629
+ "line": 367,
505
630
  "fields": [
506
631
  "bind",
507
632
  "unbind",
@@ -512,7 +637,7 @@
512
637
  "name": "PostProcessState",
513
638
  "kind": "InterfaceDeclaration",
514
639
  "signature": "export interface PostProcessState {\n id: string;\n enabled: boolean;\n parameters: Readonly<Record<string, GraphValue>>;\n}",
515
- "line": 314,
640
+ "line": 372,
516
641
  "fields": [
517
642
  "id",
518
643
  "enabled",
@@ -523,7 +648,7 @@
523
648
  "name": "PostProcessService",
524
649
  "kind": "InterfaceDeclaration",
525
650
  "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}",
526
- "line": 319,
651
+ "line": 377,
527
652
  "fields": [
528
653
  "buffers",
529
654
  "textures",
@@ -537,7 +662,7 @@
537
662
  "name": "ComputeBufferHandle",
538
663
  "kind": "InterfaceDeclaration",
539
664
  "signature": "export interface ComputeBufferHandle {\n readonly owner: number;\n readonly index: number;\n readonly generation: number;\n}",
540
- "line": 329,
665
+ "line": 387,
541
666
  "fields": [
542
667
  "owner",
543
668
  "index",
@@ -548,7 +673,7 @@
548
673
  "name": "ComputeTaskHandle",
549
674
  "kind": "InterfaceDeclaration",
550
675
  "signature": "export interface ComputeTaskHandle {\n readonly owner: number;\n readonly id: number;\n}",
551
- "line": 334,
676
+ "line": 392,
552
677
  "fields": [
553
678
  "owner",
554
679
  "id"
@@ -558,7 +683,7 @@
558
683
  "name": "ComputeBufferInput",
559
684
  "kind": "InterfaceDeclaration",
560
685
  "signature": "export interface ComputeBufferInput {\n id: string;\n type: GraphType;\n count: number;\n data?: readonly GraphValue[];\n}",
561
- "line": 338,
686
+ "line": 396,
562
687
  "fields": [
563
688
  "id",
564
689
  "type",
@@ -570,7 +695,7 @@
570
695
  "name": "ComputeTextureHandle",
571
696
  "kind": "InterfaceDeclaration",
572
697
  "signature": "export interface ComputeTextureHandle {\n readonly owner: number;\n readonly index: number;\n readonly generation: number;\n readonly kind: \"texture\";\n}",
573
- "line": 344,
698
+ "line": 402,
574
699
  "fields": [
575
700
  "owner",
576
701
  "index",
@@ -582,7 +707,7 @@
582
707
  "name": "ComputeTextureSize",
583
708
  "kind": "InterfaceDeclaration",
584
709
  "signature": "export interface ComputeTextureSize {\n width: number;\n height: number;\n}",
585
- "line": 350,
710
+ "line": 408,
586
711
  "fields": [
587
712
  "width",
588
713
  "height"
@@ -592,7 +717,7 @@
592
717
  "name": "ComputeTextureDataInput",
593
718
  "kind": "InterfaceDeclaration",
594
719
  "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}",
595
- "line": 354,
720
+ "line": 412,
596
721
  "fields": [
597
722
  "id",
598
723
  "data",
@@ -603,7 +728,7 @@
603
728
  "name": "ComputeTextureAssetInput",
604
729
  "kind": "InterfaceDeclaration",
605
730
  "signature": "export interface ComputeTextureAssetInput {\n id: string;\n asset: AssetDefinition | string;\n width?: never;\n height?: never;\n data?: never;\n}",
606
- "line": 360,
731
+ "line": 418,
607
732
  "fields": [
608
733
  "id",
609
734
  "asset",
@@ -616,13 +741,13 @@
616
741
  "name": "ComputeTextureInput",
617
742
  "kind": "TypeAliasDeclaration",
618
743
  "signature": "export type ComputeTextureInput = ComputeTextureDataInput | ComputeTextureAssetInput;",
619
- "line": 367
744
+ "line": 425
620
745
  },
621
746
  {
622
747
  "name": "ComputeTextureBinding",
623
748
  "kind": "InterfaceDeclaration",
624
749
  "signature": "export interface ComputeTextureBinding {\n name: string;\n filter?: \"nearest\" | \"linear\";\n wrapU?: \"clamp\" | \"repeat\" | \"mirror\";\n wrapV?: \"clamp\" | \"repeat\" | \"mirror\";\n}",
625
- "line": 368,
750
+ "line": 426,
626
751
  "fields": [
627
752
  "name",
628
753
  "filter",
@@ -634,7 +759,7 @@
634
759
  "name": "ComputeDispatchInput",
635
760
  "kind": "InterfaceDeclaration",
636
761
  "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}",
637
- "line": 374,
762
+ "line": 432,
638
763
  "fields": [
639
764
  "output",
640
765
  "bindings",
@@ -648,7 +773,7 @@
648
773
  "name": "ComputeTaskState",
649
774
  "kind": "InterfaceDeclaration",
650
775
  "signature": "export interface ComputeTaskState {\n status: \"queued\" | \"running\" | \"succeeded\" | \"failed\" | \"cancelled\";\n error?: { code: string; message: string; remediation: string };\n}",
651
- "line": 386,
776
+ "line": 444,
652
777
  "fields": [
653
778
  "status",
654
779
  "error"
@@ -658,7 +783,7 @@
658
783
  "name": "ComputeService",
659
784
  "kind": "InterfaceDeclaration",
660
785
  "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}",
661
- "line": 390,
786
+ "line": 448,
662
787
  "fields": [
663
788
  "createTexture",
664
789
  "resolveTexture",
@@ -683,7 +808,7 @@
683
808
  "name": "InputService",
684
809
  "kind": "InterfaceDeclaration",
685
810
  "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}",
686
- "line": 410,
811
+ "line": 468,
687
812
  "fields": [
688
813
  "held",
689
814
  "pressed",
@@ -695,7 +820,7 @@
695
820
  "name": "PhysicsService",
696
821
  "kind": "InterfaceDeclaration",
697
822
  "signature": "export interface PhysicsService {\n moveCharacter(entity: string, displacement: Vec3): void;\n grounded(entity: string): boolean;\n velocity(entity: string): Vec3;\n /** World-space rigid-body center of mass, including collider offsets. */\n centerOfMass(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}",
698
- "line": 416,
823
+ "line": 474,
699
824
  "fields": [
700
825
  "moveCharacter",
701
826
  "grounded",
@@ -714,7 +839,7 @@
714
839
  "name": "AnimationService",
715
840
  "kind": "InterfaceDeclaration",
716
841
  "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}",
717
- "line": 438,
842
+ "line": 496,
718
843
  "fields": [
719
844
  "play",
720
845
  "state"
@@ -724,7 +849,7 @@
724
849
  "name": "CameraService",
725
850
  "kind": "InterfaceDeclaration",
726
851
  "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}",
727
- "line": 450,
852
+ "line": 508,
728
853
  "fields": [
729
854
  "follow",
730
855
  "orbit"
@@ -734,7 +859,7 @@
734
859
  "name": "UIService",
735
860
  "kind": "InterfaceDeclaration",
736
861
  "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}",
737
- "line": 463,
862
+ "line": 521,
738
863
  "fields": [
739
864
  "setText",
740
865
  "setProgress",
@@ -745,7 +870,7 @@
745
870
  "name": "AudioService",
746
871
  "kind": "InterfaceDeclaration",
747
872
  "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}",
748
- "line": 468,
873
+ "line": 526,
749
874
  "fields": [
750
875
  "play",
751
876
  "stop",
@@ -760,7 +885,7 @@
760
885
  "name": "StorageService",
761
886
  "kind": "InterfaceDeclaration",
762
887
  "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}",
763
- "line": 483,
888
+ "line": 541,
764
889
  "fields": [
765
890
  "save",
766
891
  "load",
@@ -771,7 +896,7 @@
771
896
  "name": "SceneService",
772
897
  "kind": "InterfaceDeclaration",
773
898
  "signature": "export interface SceneService {\n current(): string;\n load(id: string): void;\n}",
774
- "line": 492,
899
+ "line": 550,
775
900
  "fields": [
776
901
  "current",
777
902
  "load"
@@ -781,7 +906,7 @@
781
906
  "name": "ModelDefinition",
782
907
  "kind": "InterfaceDeclaration",
783
908
  "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}",
784
- "line": 496,
909
+ "line": 554,
785
910
  "fields": [
786
911
  "material",
787
912
  "materialSlots",
@@ -798,7 +923,7 @@
798
923
  "name": "RigidBodyDefinition",
799
924
  "kind": "InterfaceDeclaration",
800
925
  "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}",
801
- "line": 509,
926
+ "line": 567,
802
927
  "fields": [
803
928
  "type",
804
929
  "collider",
@@ -812,7 +937,7 @@
812
937
  "name": "CharacterDefinition",
813
938
  "kind": "InterfaceDeclaration",
814
939
  "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}",
815
- "line": 523,
940
+ "line": 581,
816
941
  "fields": [
817
942
  "radius",
818
943
  "height",
@@ -825,7 +950,7 @@
825
950
  "name": "UIElementDefinition",
826
951
  "kind": "InterfaceDeclaration",
827
952
  "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}",
828
- "line": 531,
953
+ "line": 589,
829
954
  "fields": [
830
955
  "id",
831
956
  "kind",
@@ -844,7 +969,7 @@
844
969
  "name": "SoundDefinition",
845
970
  "kind": "InterfaceDeclaration",
846
971
  "signature": "export interface SoundDefinition {\n id: string;\n asset: AssetDefinition | string;\n volume?: number;\n loop?: boolean;\n bus?: string;\n}",
847
- "line": 544,
972
+ "line": 602,
848
973
  "fields": [
849
974
  "id",
850
975
  "asset",
@@ -857,7 +982,7 @@
857
982
  "name": "AudioBusDefinition",
858
983
  "kind": "InterfaceDeclaration",
859
984
  "signature": "export interface AudioBusDefinition {\n id: string;\n volume?: number;\n}",
860
- "line": 551,
985
+ "line": 609,
861
986
  "fields": [
862
987
  "id",
863
988
  "volume"
@@ -867,43 +992,43 @@
867
992
  "name": "SYSTEM_PHASES",
868
993
  "kind": "constant",
869
994
  "signature": "SYSTEM_PHASES = [\n \"input\",\n \"prePhysics\",\n \"physics\",\n \"postPhysics\",\n \"update\",\n \"presentation\",\n] as const",
870
- "line": 555
995
+ "line": 613
871
996
  },
872
997
  {
873
998
  "name": "SystemPhase",
874
999
  "kind": "TypeAliasDeclaration",
875
1000
  "signature": "export type SystemPhase = (typeof SYSTEM_PHASES)[number];",
876
- "line": 563
1001
+ "line": 621
877
1002
  },
878
1003
  {
879
1004
  "name": "Geometry",
880
1005
  "kind": "TypeAliasDeclaration",
881
1006
  "signature": "export type Geometry =\n | { kind: \"box\"; size?: Vec3 }\n | { kind: \"sphere\"; radius?: number; segments?: number }\n | { kind: \"plane\"; size?: readonly [number, number] };",
882
- "line": 564
1007
+ "line": 622
883
1008
  },
884
1009
  {
885
1010
  "name": "GRAPH_TYPES",
886
1011
  "kind": "constant",
887
1012
  "signature": "GRAPH_TYPES = [\"float\", \"vec2\", \"vec3\", \"vec4\", \"bool\"] as const",
888
- "line": 568
1013
+ "line": 626
889
1014
  },
890
1015
  {
891
1016
  "name": "GraphType",
892
1017
  "kind": "TypeAliasDeclaration",
893
1018
  "signature": "export type GraphType = typeof GRAPH_TYPES[number];",
894
- "line": 569
1019
+ "line": 627
895
1020
  },
896
1021
  {
897
1022
  "name": "GraphValue",
898
1023
  "kind": "TypeAliasDeclaration",
899
1024
  "signature": "export type GraphValue = number | boolean | Vec2 | Vec3 | Vec4;",
900
- "line": 570
1025
+ "line": 628
901
1026
  },
902
1027
  {
903
1028
  "name": "GraphParameter",
904
1029
  "kind": "InterfaceDeclaration",
905
1030
  "signature": "export interface GraphParameter {\n name: string;\n type: GraphType;\n default: GraphValue;\n}",
906
- "line": 571,
1031
+ "line": 629,
907
1032
  "fields": [
908
1033
  "name",
909
1034
  "type",
@@ -914,31 +1039,31 @@
914
1039
  "name": "GRAPH_INPUT_TYPES",
915
1040
  "kind": "constant",
916
1041
  "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",
917
- "line": 576
1042
+ "line": 634
918
1043
  },
919
1044
  {
920
1045
  "name": "GraphInputName",
921
1046
  "kind": "TypeAliasDeclaration",
922
1047
  "signature": "export type GraphInputName = keyof typeof GRAPH_INPUT_TYPES;",
923
- "line": 583
1048
+ "line": 641
924
1049
  },
925
1050
  {
926
1051
  "name": "GRAPH_OPERATIONS",
927
1052
  "kind": "constant",
928
1053
  "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",
929
- "line": 584
1054
+ "line": 642
930
1055
  },
931
1056
  {
932
1057
  "name": "GraphNode",
933
1058
  "kind": "TypeAliasDeclaration",
934
1059
  "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 };",
935
- "line": 589
1060
+ "line": 647
936
1061
  },
937
1062
  {
938
1063
  "name": "Graph",
939
1064
  "kind": "InterfaceDeclaration",
940
1065
  "signature": "export interface Graph {\n nodes: readonly GraphNode[];\n output: string;\n parameters?: readonly GraphParameter[];\n}",
941
- "line": 609,
1066
+ "line": 667,
942
1067
  "fields": [
943
1068
  "nodes",
944
1069
  "output",
@@ -949,7 +1074,7 @@
949
1074
  "name": "MaterialGraphs",
950
1075
  "kind": "InterfaceDeclaration",
951
1076
  "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}",
952
- "line": 614,
1077
+ "line": 672,
953
1078
  "fields": [
954
1079
  "baseColor",
955
1080
  "emissive",
@@ -963,7 +1088,7 @@
963
1088
  "name": "VertexGraphs",
964
1089
  "kind": "InterfaceDeclaration",
965
1090
  "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}",
966
- "line": 623,
1091
+ "line": 681,
967
1092
  "fields": [
968
1093
  "position",
969
1094
  "normal"
@@ -973,7 +1098,7 @@
973
1098
  "name": "MaterialInput",
974
1099
  "kind": "InterfaceDeclaration",
975
1100
  "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}",
976
- "line": 629,
1101
+ "line": 687,
977
1102
  "fields": [
978
1103
  "id",
979
1104
  "color",
@@ -1002,7 +1127,7 @@
1002
1127
  "name": "MaterialDefinition",
1003
1128
  "kind": "InterfaceDeclaration",
1004
1129
  "signature": "export interface MaterialDefinition extends MaterialInput {\n readonly kind: \"material\";\n}",
1005
- "line": 656,
1130
+ "line": 714,
1006
1131
  "fields": [
1007
1132
  "kind"
1008
1133
  ]
@@ -1011,7 +1136,7 @@
1011
1136
  "name": "PostProcessInput",
1012
1137
  "kind": "InterfaceDeclaration",
1013
1138
  "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}",
1014
- "line": 659,
1139
+ "line": 717,
1015
1140
  "fields": [
1016
1141
  "id",
1017
1142
  "buffers",
@@ -1024,7 +1149,7 @@
1024
1149
  "name": "PostProcessDefinition",
1025
1150
  "kind": "InterfaceDeclaration",
1026
1151
  "signature": "export interface PostProcessDefinition extends PostProcessInput {\n readonly kind: \"postprocess\";\n}",
1027
- "line": 667,
1152
+ "line": 725,
1028
1153
  "fields": [
1029
1154
  "kind"
1030
1155
  ]
@@ -1033,7 +1158,7 @@
1033
1158
  "name": "ComputeInput",
1034
1159
  "kind": "InterfaceDeclaration",
1035
1160
  "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}",
1036
- "line": 670,
1161
+ "line": 728,
1037
1162
  "fields": [
1038
1163
  "id",
1039
1164
  "graph",
@@ -1048,7 +1173,7 @@
1048
1173
  "name": "ComputeDefinition",
1049
1174
  "kind": "InterfaceDeclaration",
1050
1175
  "signature": "export interface ComputeDefinition extends ComputeInput {\n readonly kind: \"compute\";\n}",
1051
- "line": 679,
1176
+ "line": 737,
1052
1177
  "fields": [
1053
1178
  "kind"
1054
1179
  ]
@@ -1057,7 +1182,7 @@
1057
1182
  "name": "AssetInput",
1058
1183
  "kind": "InterfaceDeclaration",
1059
1184
  "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}",
1060
- "line": 682,
1185
+ "line": 740,
1061
1186
  "fields": [
1062
1187
  "id",
1063
1188
  "path",
@@ -1072,7 +1197,7 @@
1072
1197
  "name": "AssetDefinition",
1073
1198
  "kind": "InterfaceDeclaration",
1074
1199
  "signature": "export interface AssetDefinition extends AssetInput {\n readonly kind: \"asset\";\n}",
1075
- "line": 692,
1200
+ "line": 750,
1076
1201
  "fields": [
1077
1202
  "kind"
1078
1203
  ]
@@ -1081,7 +1206,7 @@
1081
1206
  "name": "MeshDefinition",
1082
1207
  "kind": "InterfaceDeclaration",
1083
1208
  "signature": "export interface MeshDefinition {\n geometry: Geometry;\n material: MaterialDefinition | string;\n castShadow?: boolean;\n receiveShadow?: boolean;\n}",
1084
- "line": 695,
1209
+ "line": 753,
1085
1210
  "fields": [
1086
1211
  "geometry",
1087
1212
  "material",
@@ -1093,7 +1218,7 @@
1093
1218
  "name": "LightDefinition",
1094
1219
  "kind": "InterfaceDeclaration",
1095
1220
  "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}",
1096
- "line": 701,
1221
+ "line": 759,
1097
1222
  "fields": [
1098
1223
  "kind",
1099
1224
  "color",
@@ -1107,7 +1232,7 @@
1107
1232
  "name": "EntityInput",
1108
1233
  "kind": "InterfaceDeclaration",
1109
1234
  "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}",
1110
- "line": 716,
1235
+ "line": 774,
1111
1236
  "fields": [
1112
1237
  "id",
1113
1238
  "prefab",
@@ -1125,7 +1250,7 @@
1125
1250
  "name": "PrefabInput",
1126
1251
  "kind": "InterfaceDeclaration",
1127
1252
  "signature": "export interface PrefabInput extends Omit<EntityInput, \"prefab\" | \"parent\"> {\n extends?: PrefabDefinition | string;\n}",
1128
- "line": 728,
1253
+ "line": 786,
1129
1254
  "fields": [
1130
1255
  "extends"
1131
1256
  ]
@@ -1134,7 +1259,7 @@
1134
1259
  "name": "PrefabDefinition",
1135
1260
  "kind": "InterfaceDeclaration",
1136
1261
  "signature": "export interface PrefabDefinition extends PrefabInput {\n readonly kind: \"prefab\";\n}",
1137
- "line": 731,
1262
+ "line": 789,
1138
1263
  "fields": [
1139
1264
  "kind"
1140
1265
  ]
@@ -1143,7 +1268,7 @@
1143
1268
  "name": "SceneInput",
1144
1269
  "kind": "InterfaceDeclaration",
1145
1270
  "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}",
1146
- "line": 734,
1271
+ "line": 792,
1147
1272
  "fields": [
1148
1273
  "id",
1149
1274
  "camera",
@@ -1157,7 +1282,7 @@
1157
1282
  "name": "SceneDefinition",
1158
1283
  "kind": "InterfaceDeclaration",
1159
1284
  "signature": "export interface SceneDefinition extends SceneInput {\n readonly kind: \"scene\";\n}",
1160
- "line": 759,
1285
+ "line": 817,
1161
1286
  "fields": [
1162
1287
  "kind"
1163
1288
  ]
@@ -1166,7 +1291,7 @@
1166
1291
  "name": "SystemInput",
1167
1292
  "kind": "InterfaceDeclaration",
1168
1293
  "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}",
1169
- "line": 762,
1294
+ "line": 820,
1170
1295
  "fields": [
1171
1296
  "id",
1172
1297
  "phase",
@@ -1182,7 +1307,7 @@
1182
1307
  "name": "SystemDefinition",
1183
1308
  "kind": "InterfaceDeclaration",
1184
1309
  "signature": "export interface SystemDefinition extends SystemInput {\n readonly kind: \"system\";\n}",
1185
- "line": 772,
1310
+ "line": 830,
1186
1311
  "fields": [
1187
1312
  "kind"
1188
1313
  ]
@@ -1191,7 +1316,7 @@
1191
1316
  "name": "GameInput",
1192
1317
  "kind": "InterfaceDeclaration",
1193
1318
  "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}",
1194
- "line": 775,
1319
+ "line": 833,
1195
1320
  "fields": [
1196
1321
  "id",
1197
1322
  "scene",
@@ -1216,7 +1341,7 @@
1216
1341
  "name": "GameDefinition",
1217
1342
  "kind": "InterfaceDeclaration",
1218
1343
  "signature": "export interface GameDefinition extends GameInput {\n readonly kind: \"game\";\n}",
1219
- "line": 794,
1344
+ "line": 852,
1220
1345
  "fields": [
1221
1346
  "kind"
1222
1347
  ]
@@ -1225,7 +1350,7 @@
1225
1350
  "name": "GameInstance",
1226
1351
  "kind": "InterfaceDeclaration",
1227
1352
  "signature": "export interface GameInstance {\n update(dt: number): void;\n dispose(): void;\n}",
1228
- "line": 797,
1353
+ "line": 855,
1229
1354
  "fields": [
1230
1355
  "update",
1231
1356
  "dispose"
@@ -1235,61 +1360,61 @@
1235
1360
  "name": "defineComponent",
1236
1361
  "kind": "FunctionDeclaration",
1237
1362
  "signature": "export function defineComponent<const S extends ComponentSchema>(input: {\n id: string;\n schema: S;\n}): ComponentDefinition<S>;",
1238
- "line": 801
1363
+ "line": 859
1239
1364
  },
1240
1365
  {
1241
1366
  "name": "defineMaterial",
1242
1367
  "kind": "FunctionDeclaration",
1243
1368
  "signature": "export function defineMaterial(input: MaterialInput): MaterialDefinition;",
1244
- "line": 807
1369
+ "line": 865
1245
1370
  },
1246
1371
  {
1247
1372
  "name": "definePostProcess",
1248
1373
  "kind": "FunctionDeclaration",
1249
1374
  "signature": "export function definePostProcess(input: PostProcessInput): PostProcessDefinition;",
1250
- "line": 810
1375
+ "line": 868
1251
1376
  },
1252
1377
  {
1253
1378
  "name": "defineCompute",
1254
1379
  "kind": "FunctionDeclaration",
1255
1380
  "signature": "export function defineCompute(input: ComputeInput): ComputeDefinition;",
1256
- "line": 813
1381
+ "line": 871
1257
1382
  },
1258
1383
  {
1259
1384
  "name": "defineAsset",
1260
1385
  "kind": "FunctionDeclaration",
1261
1386
  "signature": "export function defineAsset(input: AssetInput): AssetDefinition;",
1262
- "line": 816
1387
+ "line": 874
1263
1388
  },
1264
1389
  {
1265
1390
  "name": "definePrefab",
1266
1391
  "kind": "FunctionDeclaration",
1267
1392
  "signature": "export function definePrefab(input: PrefabInput): PrefabDefinition;",
1268
- "line": 819
1393
+ "line": 877
1269
1394
  },
1270
1395
  {
1271
1396
  "name": "defineScene",
1272
1397
  "kind": "FunctionDeclaration",
1273
1398
  "signature": "export function defineScene(input: SceneInput): SceneDefinition;",
1274
- "line": 822
1399
+ "line": 880
1275
1400
  },
1276
1401
  {
1277
1402
  "name": "defineSystem",
1278
1403
  "kind": "FunctionDeclaration",
1279
1404
  "signature": "export function defineSystem(input: SystemInput): SystemDefinition;",
1280
- "line": 825
1405
+ "line": 883
1281
1406
  },
1282
1407
  {
1283
1408
  "name": "defineGame",
1284
1409
  "kind": "FunctionDeclaration",
1285
1410
  "signature": "export function defineGame(input: GameInput): GameDefinition;",
1286
- "line": 828
1411
+ "line": 886
1287
1412
  },
1288
1413
  {
1289
1414
  "name": "instantiateGame",
1290
1415
  "kind": "FunctionDeclaration",
1291
1416
  "signature": "export function instantiateGame(\n game: GameDefinition,\n engine: EngineFacade,\n): GameInstance;",
1292
- "line": 832
1417
+ "line": 890
1293
1418
  }
1294
1419
  ],
1295
1420
  "installedDeclarations": "lib/sdk/index.d.ts",