@flighthq/scene3d-resources 0.3.0-next.906.07cea63 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/anisotropyPbrScene3DMaterialTextures.d.ts +3 -0
  2. package/dist/anisotropyPbrScene3DMaterialTextures.d.ts.map +1 -0
  3. package/dist/anisotropyPbrScene3DMaterialTextures.js +10 -0
  4. package/dist/anisotropyPbrScene3DMaterialTextures.js.map +1 -0
  5. package/dist/awd2Load.d.ts.map +1 -1
  6. package/dist/awd2Load.js +3 -2
  7. package/dist/awd2Load.js.map +1 -1
  8. package/dist/clearcoatPbrScene3DMaterialTextures.d.ts +3 -0
  9. package/dist/clearcoatPbrScene3DMaterialTextures.d.ts.map +1 -0
  10. package/dist/clearcoatPbrScene3DMaterialTextures.js +14 -0
  11. package/dist/clearcoatPbrScene3DMaterialTextures.js.map +1 -0
  12. package/dist/contract.d.ts +10 -1
  13. package/dist/contract.d.ts.map +1 -1
  14. package/dist/contract.js +10 -1
  15. package/dist/contract.js.map +1 -1
  16. package/dist/enableScene3DResourceFailureGuards.d.ts.map +1 -1
  17. package/dist/enableScene3DResourceFailureGuards.js +2 -2
  18. package/dist/enableScene3DResourceFailureGuards.js.map +1 -1
  19. package/dist/explainScene3DResourceCoverage.d.ts +4 -0
  20. package/dist/explainScene3DResourceCoverage.d.ts.map +1 -0
  21. package/dist/explainScene3DResourceCoverage.js +42 -0
  22. package/dist/explainScene3DResourceCoverage.js.map +1 -0
  23. package/dist/getScene3DResourceTextures.d.ts +3 -2
  24. package/dist/getScene3DResourceTextures.d.ts.map +1 -1
  25. package/dist/getScene3DResourceTextures.js +23 -27
  26. package/dist/getScene3DResourceTextures.js.map +1 -1
  27. package/dist/imageResourceFetch.d.ts +2 -2
  28. package/dist/imageResourceFetch.d.ts.map +1 -1
  29. package/dist/index.d.ts +1 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -1
  32. package/dist/index.js.map +1 -1
  33. package/dist/iridescencePbrScene3DMaterialTextures.d.ts +3 -0
  34. package/dist/iridescencePbrScene3DMaterialTextures.d.ts.map +1 -0
  35. package/dist/iridescencePbrScene3DMaterialTextures.js +12 -0
  36. package/dist/iridescencePbrScene3DMaterialTextures.js.map +1 -0
  37. package/dist/loadScene3DResources.d.ts +4 -0
  38. package/dist/loadScene3DResources.d.ts.map +1 -0
  39. package/dist/{resolveScene3DResourcesAndWait.js → loadScene3DResources.js} +11 -21
  40. package/dist/loadScene3DResources.js.map +1 -0
  41. package/dist/resolveScene3DResources.d.ts +4 -3
  42. package/dist/resolveScene3DResources.d.ts.map +1 -1
  43. package/dist/resolveScene3DResources.js +49 -26
  44. package/dist/resolveScene3DResources.js.map +1 -1
  45. package/dist/revealScene3DResourcesOnResolve.d.ts +2 -2
  46. package/dist/revealScene3DResourcesOnResolve.d.ts.map +1 -1
  47. package/dist/revealScene3DResourcesOnResolve.js +9 -6
  48. package/dist/revealScene3DResourcesOnResolve.js.map +1 -1
  49. package/dist/sceneMaterialTextureRegistry.d.ts +6 -2
  50. package/dist/sceneMaterialTextureRegistry.d.ts.map +1 -1
  51. package/dist/sceneMaterialTextureRegistry.js +31 -8
  52. package/dist/sceneMaterialTextureRegistry.js.map +1 -1
  53. package/dist/sceneResourceRecovery.d.ts +2 -4
  54. package/dist/sceneResourceRecovery.d.ts.map +1 -1
  55. package/dist/sceneResourceRecovery.js +9 -28
  56. package/dist/sceneResourceRecovery.js.map +1 -1
  57. package/dist/sceneResourceResolver.d.ts.map +1 -1
  58. package/dist/sceneResourceResolver.js +6 -2
  59. package/dist/sceneResourceResolver.js.map +1 -1
  60. package/dist/shadedScene3DMaterialTextures.d.ts +3 -0
  61. package/dist/shadedScene3DMaterialTextures.d.ts.map +1 -0
  62. package/dist/shadedScene3DMaterialTextures.js +30 -0
  63. package/dist/shadedScene3DMaterialTextures.js.map +1 -0
  64. package/dist/sheenPbrScene3DMaterialTextures.d.ts +3 -0
  65. package/dist/sheenPbrScene3DMaterialTextures.d.ts.map +1 -0
  66. package/dist/sheenPbrScene3DMaterialTextures.js +12 -0
  67. package/dist/sheenPbrScene3DMaterialTextures.js.map +1 -0
  68. package/dist/specularPbrScene3DMaterialTextures.d.ts +3 -0
  69. package/dist/specularPbrScene3DMaterialTextures.d.ts.map +1 -0
  70. package/dist/specularPbrScene3DMaterialTextures.js +12 -0
  71. package/dist/specularPbrScene3DMaterialTextures.js.map +1 -0
  72. package/dist/transmissionVolumePbrScene3DMaterialTextures.d.ts +3 -0
  73. package/dist/transmissionVolumePbrScene3DMaterialTextures.d.ts.map +1 -0
  74. package/dist/transmissionVolumePbrScene3DMaterialTextures.js +12 -0
  75. package/dist/transmissionVolumePbrScene3DMaterialTextures.js.map +1 -0
  76. package/dist/wrappedDiffusePbrScene3DMaterialTextures.d.ts +3 -0
  77. package/dist/wrappedDiffusePbrScene3DMaterialTextures.d.ts.map +1 -0
  78. package/dist/wrappedDiffusePbrScene3DMaterialTextures.js +12 -0
  79. package/dist/wrappedDiffusePbrScene3DMaterialTextures.js.map +1 -0
  80. package/package.json +16 -13
  81. package/src/anisotropyPbrScene3DMaterialTextures.test.ts +26 -0
  82. package/src/awd2Load.test.ts +2 -2
  83. package/src/clearcoatPbrScene3DMaterialTextures.test.ts +36 -0
  84. package/src/enableScene3DResourceFailureGuards.test.ts +9 -8
  85. package/src/explainScene3DResourceCoverage.test.ts +115 -0
  86. package/src/getScene3DResourceTextures.test.ts +65 -38
  87. package/src/gltfLoad.test.ts +2 -2
  88. package/src/imageResourceFetch.test.ts +3 -3
  89. package/src/iridescencePbrScene3DMaterialTextures.test.ts +34 -0
  90. package/src/{resolveScene3DResourcesAndWait.test.ts → loadScene3DResources.test.ts} +40 -18
  91. package/src/md2Load.test.ts +2 -2
  92. package/src/md5Load.test.ts +2 -2
  93. package/src/objLoad.test.ts +2 -2
  94. package/src/resolveScene3DResources.test.ts +136 -53
  95. package/src/revealScene3DResourcesOnResolve.test.ts +39 -21
  96. package/src/sceneMaterialTextureRegistry.test.ts +118 -26
  97. package/src/sceneResourceRecovery.test.ts +13 -47
  98. package/src/sceneResourceResolver.test.ts +14 -11
  99. package/src/sceneResourceResolverTreeShaking.test.ts +1 -1
  100. package/src/shadedScene3DMaterialTextures.test.ts +52 -0
  101. package/src/sheenPbrScene3DMaterialTextures.test.ts +29 -0
  102. package/src/specularPbrScene3DMaterialTextures.test.ts +29 -0
  103. package/src/threeDsLoad.test.ts +2 -2
  104. package/src/transmissionVolumePbrScene3DMaterialTextures.test.ts +34 -0
  105. package/src/wrappedDiffusePbrScene3DMaterialTextures.test.ts +34 -0
  106. package/dist/resolveScene3DResourcesAndWait.d.ts +0 -4
  107. package/dist/resolveScene3DResourcesAndWait.d.ts.map +0 -1
  108. package/dist/resolveScene3DResourcesAndWait.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import type { Scene3DMaterialTextureRegistry } from '@flighthq/types/contract';
2
+ export declare function registerAnisotropyPbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
3
+ //# sourceMappingURL=anisotropyPbrScene3DMaterialTextures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anisotropyPbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/anisotropyPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA0B,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAKvG,wBAAgB,4CAA4C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAK3G"}
@@ -0,0 +1,10 @@
1
+ import { AnisotropyPbrExtensionKind } from '@flighthq/types/contract';
2
+ import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
3
+ export function registerAnisotropyPbrScene3DMaterialTextures(registry) {
4
+ registerScene3DPbrExtensionTextures(registry, AnisotropyPbrExtensionKind, (extension, out) => {
5
+ const anisotropy = extension;
6
+ if (anisotropy.anisotropyMap !== null)
7
+ out.push(anisotropy.anisotropyMap);
8
+ });
9
+ }
10
+ //# sourceMappingURL=anisotropyPbrScene3DMaterialTextures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anisotropyPbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/anisotropyPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,4CAA4C,CAAC,QAAwC;IACnG,mCAAmC,CAAC,QAAQ,EAAE,0BAA0B,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QACjG,MAAM,UAAU,GAAG,SAA6C,CAAC;QACjE,IAAI,UAAU,CAAC,aAAa,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"awd2Load.d.ts","sourceRoot":"","sources":["../src/awd2Load.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAQ5F,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAMjC"}
1
+ {"version":3,"file":"awd2Load.d.ts","sourceRoot":"","sources":["../src/awd2Load.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAS5F,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,QAAQ,CAAC,0BAA0B,CAAC,GAC7C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAMjC"}
package/dist/awd2Load.js CHANGED
@@ -2,8 +2,9 @@ import { parseAwd2 } from '@flighthq/scene3d-formats/contract';
2
2
  import { loadScene3DDocumentBytesFromUrl, setScene3DDocumentResourceBasePathFromUrl } from './sceneDocumentSource';
3
3
  // Fetches an Away3D AWD file from a URL and parses it into a format-neutral Scene3DDocument (geometry, skins,
4
4
  // and its skeleton animation). Fetches only the FILE — the document's texture refs stay unresolved; assemble
5
- // with createScene3DFromDocument and resolve on your own schedule with resolveScene3DResources. On a fetch
6
- // failure returns null; it never creates a renderer or GPU resource.
5
+ // with createScene3DFromDocument and acquire on your own schedule with loadScene3DResources or
6
+ // updateScene3DResourceStreaming. On a fetch failure returns null; it never creates a renderer or GPU
7
+ // resource.
7
8
  export async function loadScene3DDocumentFromAwd2Url(url, options) {
8
9
  const bytes = await loadScene3DDocumentBytesFromUrl(url, options);
9
10
  if (bytes === null)
@@ -1 +1 @@
1
- {"version":3,"file":"awd2Load.js","sourceRoot":"","sources":["../src/awd2Load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,+BAA+B,EAAE,yCAAyC,EAAE,MAAM,uBAAuB,CAAC;AAEnH,8GAA8G;AAC9G,6GAA6G;AAC7G,2GAA2G;AAC3G,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,GAAW,EACX,OAA8C;IAE9C,MAAM,KAAK,GAAG,MAAM,+BAA+B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,yCAAyC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"awd2Load.js","sourceRoot":"","sources":["../src/awd2Load.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,EAAE,+BAA+B,EAAE,yCAAyC,EAAE,MAAM,uBAAuB,CAAC;AAEnH,8GAA8G;AAC9G,6GAA6G;AAC7G,+FAA+F;AAC/F,sGAAsG;AACtG,YAAY;AACZ,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAClD,GAAW,EACX,OAA8C;IAE9C,MAAM,KAAK,GAAG,MAAM,+BAA+B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAClE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,yCAAyC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Scene3DMaterialTextureRegistry } from '@flighthq/types/contract';
2
+ export declare function registerClearcoatPbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
3
+ //# sourceMappingURL=clearcoatPbrScene3DMaterialTextures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearcoatPbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/clearcoatPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAyB,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAKtG,wBAAgB,2CAA2C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAO1G"}
@@ -0,0 +1,14 @@
1
+ import { ClearcoatPbrExtensionKind } from '@flighthq/types/contract';
2
+ import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
3
+ export function registerClearcoatPbrScene3DMaterialTextures(registry) {
4
+ registerScene3DPbrExtensionTextures(registry, ClearcoatPbrExtensionKind, (extension, out) => {
5
+ const clearcoat = extension;
6
+ if (clearcoat.clearcoatMap !== null)
7
+ out.push(clearcoat.clearcoatMap);
8
+ if (clearcoat.clearcoatNormalMap !== null)
9
+ out.push(clearcoat.clearcoatNormalMap);
10
+ if (clearcoat.clearcoatRoughnessMap !== null)
11
+ out.push(clearcoat.clearcoatRoughnessMap);
12
+ });
13
+ }
14
+ //# sourceMappingURL=clearcoatPbrScene3DMaterialTextures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clearcoatPbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/clearcoatPbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,2CAA2C,CAAC,QAAwC;IAClG,mCAAmC,CAAC,QAAQ,EAAE,yBAAyB,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QAChG,MAAM,SAAS,GAAG,SAA4C,CAAC;QAC/D,IAAI,SAAS,CAAC,YAAY,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACtE,IAAI,SAAS,CAAC,kBAAkB,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAClF,IAAI,SAAS,CAAC,qBAAqB,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from './explainScene3DResourceCoverage';
1
2
  export * from './getScene3DResourceTextures';
2
3
  export * from './threeDsLoad';
3
4
  export * from './gltfLoad';
@@ -7,12 +8,20 @@ export * from './objLoad';
7
8
  export * from './sceneDocumentSource';
8
9
  export * from './awd2Load';
9
10
  export * from './resolveScene3DResources';
10
- export * from './resolveScene3DResourcesAndWait';
11
+ export * from './loadScene3DResources';
11
12
  export * from './revealScene3DResourcesOnResolve';
12
13
  export * from './sceneMaterialTextureRegistry';
13
14
  export * from './sceneResourceRecovery';
14
15
  export * from './imageResourceFetch';
16
+ export * from './iridescencePbrScene3DMaterialTextures';
15
17
  export * from './sceneResourceResolver';
16
18
  export * from './sceneResourceSignals';
19
+ export * from './shadedScene3DMaterialTextures';
20
+ export * from './sheenPbrScene3DMaterialTextures';
21
+ export * from './specularPbrScene3DMaterialTextures';
22
+ export * from './transmissionVolumePbrScene3DMaterialTextures';
23
+ export * from './wrappedDiffusePbrScene3DMaterialTextures';
17
24
  export * from './enableScene3DResourceFailureGuards';
25
+ export * from './anisotropyPbrScene3DMaterialTextures';
26
+ export * from './clearcoatPbrScene3DMaterialTextures';
18
27
  //# sourceMappingURL=contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC"}
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC"}
package/dist/contract.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './explainScene3DResourceCoverage';
1
2
  export * from './getScene3DResourceTextures';
2
3
  export * from './threeDsLoad';
3
4
  export * from './gltfLoad';
@@ -7,12 +8,20 @@ export * from './objLoad';
7
8
  export * from './sceneDocumentSource';
8
9
  export * from './awd2Load';
9
10
  export * from './resolveScene3DResources';
10
- export * from './resolveScene3DResourcesAndWait';
11
+ export * from './loadScene3DResources';
11
12
  export * from './revealScene3DResourcesOnResolve';
12
13
  export * from './sceneMaterialTextureRegistry';
13
14
  export * from './sceneResourceRecovery';
14
15
  export * from './imageResourceFetch';
16
+ export * from './iridescencePbrScene3DMaterialTextures';
15
17
  export * from './sceneResourceResolver';
16
18
  export * from './sceneResourceSignals';
19
+ export * from './shadedScene3DMaterialTextures';
20
+ export * from './sheenPbrScene3DMaterialTextures';
21
+ export * from './specularPbrScene3DMaterialTextures';
22
+ export * from './transmissionVolumePbrScene3DMaterialTextures';
23
+ export * from './wrappedDiffusePbrScene3DMaterialTextures';
17
24
  export * from './enableScene3DResourceFailureGuards';
25
+ export * from './anisotropyPbrScene3DMaterialTextures';
26
+ export * from './clearcoatPbrScene3DMaterialTextures';
18
27
  //# sourceMappingURL=contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sCAAsC,CAAC"}
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAC;AACjD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yCAAyC,CAAC;AACxD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gDAAgD,CAAC;AAC/D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,sCAAsC,CAAC;AACrD,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"enableScene3DResourceFailureGuards.d.ts","sourceRoot":"","sources":["../src/enableScene3DResourceFailureGuards.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwB,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAO9F,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAE3G;AAGD,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAO3F;AAMD,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI,CA6BhG"}
1
+ {"version":3,"file":"enableScene3DResourceFailureGuards.d.ts","sourceRoot":"","sources":["../src/enableScene3DResourceFailureGuards.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAwB,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAM9F,wBAAgB,sCAAsC,CAAC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAE3G;AAGD,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,IAAI,CAO3F;AAMD,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,uBAAuB,GAAG,MAAM,IAAI,CA4BhG"}
@@ -1,7 +1,7 @@
1
+ import { explainImageResourceReferenceResolution } from '@flighthq/image/contract';
1
2
  import { logOnce } from '@flighthq/log/contract';
2
3
  import { connectSignal, disconnectSignal } from '@flighthq/signals/contract';
3
4
  import { LogLevel } from '@flighthq/types/contract';
4
- import { explainImageResourceReferenceResolution } from './sceneResourceRecovery';
5
5
  import { enableScene3DResourceSignals } from './sceneResourceSignals';
6
6
  // Returns whether the failure guard is installed on `resolver`.
7
7
  export function areScene3DResourceFailureGuardsEnabled(resolver) {
@@ -35,7 +35,7 @@ export function enableScene3DResourceFailureGuards(resolver) {
35
35
  failureKind: explanation.failure?.kind ?? null,
36
36
  failureName: explanation.failure?.name ?? null,
37
37
  failureMessage: explanation.failure?.message ?? null,
38
- message: 'resolveScene3DResources: image resource resolution failed — call retryFailedScene3DResources to request it again',
38
+ message: 'Scene3D resource acquisition failed — call retryFailedScene3DResources to request it again',
39
39
  resourceKind: explanation.kind,
40
40
  }, 'scene-resources');
41
41
  };
@@ -1 +1 @@
1
- {"version":3,"file":"enableScene3DResourceFailureGuards.js","sourceRoot":"","sources":["../src/enableScene3DResourceFailureGuards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE7E,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAE,uCAAuC,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AAEtE,gEAAgE;AAChE,MAAM,UAAU,sCAAsC,CAAC,QAA2C;IAChG,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,mCAAmC,CAAC,QAAiC;IACnF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,MAAM,OAAO,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvD,gBAAgB,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,gBAAgB,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,gGAAgG;AAChG,kGAAkG;AAClG,qGAAqG;AACrG,sGAAsG;AACtG,MAAM,UAAU,kCAAkC,CAAC,QAAiC;IAClF,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,mCAAmC,CAAC,QAAQ,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,OAAO,EAAuE,CAAC;IAClG,MAAM,OAAO,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,CAAC,KAAqC,EAAQ,EAAE;QAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACjF,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,uCAAuC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvE,OAAO,CACL,oDAAoD,EAAE,UAAU,EAAE,EAClE,QAAQ,CAAC,IAAI,EACb;YACE,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI;YAC9C,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,IAAI,IAAI,IAAI;YAC9C,cAAc,EAAE,WAAW,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI;YACpD,OAAO,EACL,kHAAkH;YACpH,YAAY,EAAE,WAAW,CAAC,IAAI;SAC/B,EACD,iBAAiB,CAClB,CAAC;IACJ,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,KAAqC,EAAQ,EAAE;QAC/D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC,CAAC;IACF,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAChD,aAAa,CAAC,OAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5C,OAAO,GAAG,EAAE,CAAC,mCAAmC,CAAC,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAOD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAkE,CAAC;AAC9F,IAAI,UAAU,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"enableScene3DResourceFailureGuards.js","sourceRoot":"","sources":["../src/enableScene3DResourceFailureGuards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SceneCoverageEntry, Scene3DKindUsage, Scene3DResourceResolver } from '@flighthq/types/contract';
2
+ export declare function explainScene3DResourceCoverage(out: SceneCoverageEntry[], resolver: Readonly<Scene3DResourceResolver>, usage: Readonly<Scene3DKindUsage>): void;
3
+ export declare function hasScene3DResourceCoverage(resolver: Readonly<Scene3DResourceResolver>, usage: Readonly<Scene3DKindUsage>): boolean;
4
+ //# sourceMappingURL=explainScene3DResourceCoverage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainScene3DResourceCoverage.d.ts","sourceRoot":"","sources":["../src/explainScene3DResourceCoverage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAkB9G,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,kBAAkB,EAAE,EACzB,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAC3C,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,IAAI,CAGN;AAID,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAC3C,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,OAAO,CAET"}
@@ -0,0 +1,42 @@
1
+ import { RenderRegistry, SceneCoverage } from '@flighthq/types/contract';
2
+ import { hasScene3DMaterialTextureLister } from './sceneMaterialTextureRegistry';
3
+ // Clears `out`, then reports EVERY material kind in `usage` with how well this resolver describes it —
4
+ // satisfied ones included, so one call is a complete manifest rather than only a list of complaints. The resource
5
+ // layer's half of the scene↔consumer seam: @flighthq/scene3d says what a document uses, each holder of a
6
+ // registry answers for its own. It reads the registry rather than a table of names, so it cannot go
7
+ // stale against a registrar rename.
8
+ //
9
+ // Ask it after parsing and before loading, while the answer is still actionable.
10
+ //
11
+ // A gap here is always Missing, never Fallback: the registry has no default lister, so an unlisted kind
12
+ // contributes nothing rather than something approximate. Note this no longer affects which images get
13
+ // fetched — getScene3DResourceTextures reads the resource back-edge and is registry-free — so the cost
14
+ // of a gap is confined to consumers that need mesh→texture ownership, chiefly the reveal-on-resolve
15
+ // recipe, whose meshes would wait for an event that never names them.
16
+ export function explainScene3DResourceCoverage(out, resolver, usage) {
17
+ out.length = 0;
18
+ collectScene3DResourceCoverageGaps(out, resolver, usage, false);
19
+ }
20
+ // Whether this resolver can describe every material kind `usage` names. Stops at the first gap and
21
+ // never allocates, so it is cheap enough to call per load. Use the explain form to find out WHICH kind.
22
+ export function hasScene3DResourceCoverage(resolver, usage) {
23
+ return !collectScene3DResourceCoverageGaps(null, resolver, usage, true);
24
+ }
25
+ // The single implementation both tiers read, so the boolean can never disagree with the explanation.
26
+ // `found` counts only real shortfalls, so appending satisfied entries to `out` never flips the predicate.
27
+ function collectScene3DResourceCoverageGaps(out, resolver, usage, stopAtFirst) {
28
+ let found = false;
29
+ for (let i = 0; i < usage.materialKinds.length; i++) {
30
+ const kind = usage.materialKinds[i];
31
+ if (hasScene3DMaterialTextureLister(resolver.registry, kind)) {
32
+ out?.push({ coverage: SceneCoverage.Satisfied, kind, registry: RenderRegistry.MaterialTextureLister });
33
+ continue;
34
+ }
35
+ found = true;
36
+ if (stopAtFirst)
37
+ return true;
38
+ out?.push({ coverage: SceneCoverage.Missing, kind, registry: RenderRegistry.MaterialTextureLister });
39
+ }
40
+ return found;
41
+ }
42
+ //# sourceMappingURL=explainScene3DResourceCoverage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explainScene3DResourceCoverage.js","sourceRoot":"","sources":["../src/explainScene3DResourceCoverage.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,uGAAuG;AACvG,kHAAkH;AAClH,yGAAyG;AACzG,oGAAoG;AACpG,oCAAoC;AACpC,EAAE;AACF,iFAAiF;AACjF,EAAE;AACF,wGAAwG;AACxG,sGAAsG;AACtG,uGAAuG;AACvG,oGAAoG;AACpG,sEAAsE;AACtE,MAAM,UAAU,8BAA8B,CAC5C,GAAyB,EACzB,QAA2C,EAC3C,KAAiC;IAEjC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,kCAAkC,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,mGAAmG;AACnG,wGAAwG;AACxG,MAAM,UAAU,0BAA0B,CACxC,QAA2C,EAC3C,KAAiC;IAEjC,OAAO,CAAC,kCAAkC,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1E,CAAC;AAED,qGAAqG;AACrG,0GAA0G;AAC1G,SAAS,kCAAkC,CACzC,GAAgC,EAChC,QAA2C,EAC3C,KAAiC,EACjC,WAAoB;IAEpB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,+BAA+B,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YAC7D,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,qBAAqB,EAAE,CAAC,CAAC;YACvG,SAAS;QACX,CAAC;QACD,KAAK,GAAG,IAAI,CAAC;QACb,IAAI,WAAW;YAAE,OAAO,IAAI,CAAC;QAC7B,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,3 +1,4 @@
1
- import type { Scene3DMaterialTextureRegistry, Node3D, Texture } from '@flighthq/types/contract';
2
- export declare function getScene3DResourceTextures(scene: Readonly<Node3D>, registry: Readonly<Scene3DMaterialTextureRegistry>, out: Texture[]): void;
1
+ import type { ImageResourceReference, Scene3D, Texture } from '@flighthq/types/contract';
2
+ export declare function getScene3DResourceTextures(out: Texture[], scene: Readonly<Scene3D>): void;
3
+ export declare function getScene3DTextureResourceReference(scene: Readonly<Scene3D>, texture: Readonly<Texture>): ImageResourceReference | null;
3
4
  //# sourceMappingURL=getScene3DResourceTextures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getScene3DResourceTextures.d.ts","sourceRoot":"","sources":["../src/getScene3DResourceTextures.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,8BAA8B,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAS1G,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,QAAQ,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAClD,GAAG,EAAE,OAAO,EAAE,GACb,IAAI,CAUN"}
1
+ {"version":3,"file":"getScene3DResourceTextures.d.ts","sourceRoot":"","sources":["../src/getScene3DResourceTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAezF,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAUzF;AAED,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GACzB,sBAAsB,GAAG,IAAI,CAK/B"}
@@ -1,37 +1,33 @@
1
- import { forEachNodeDescendant } from '@flighthq/node/contract';
2
- import { isMesh } from '@flighthq/scene3d/contract';
3
- import { getScene3DMaterialTextures } from './sceneMaterialTextureRegistry';
4
1
  // Clears `out`, then fills it with the unique Textures reachable through `scene` whose `resource` is
5
- // non-null. Walks the root node and every descendant; for each
6
- // Mesh node it enumerates each non-null material's texture slots through the registry. Shared
7
- // Textures (a parser memoizes one Texture object across meshes) are deduped by identity, so a
8
- // resolver requests each pending image at most once.
9
- export function getScene3DResourceTextures(scene, registry, out) {
2
+ // non-null. Shared Textures (a parser memoizes one Texture object across meshes) are deduped by
3
+ // identity, so a resolver requests each pending image at most once.
4
+ //
5
+ // A document's resources already name their consuming textures — a parser binds the back-edge when it
6
+ // constructs the Texture — so that set alone is the complete answer, and no material registry is
7
+ // consulted to produce it. This used to walk the graph through a per-kind lister registry to NARROW the
8
+ // set, dropping textures whose material hung off no mesh; that narrowing was an optimization that
9
+ // silently disabled itself for any material kind the registry could not describe (including every
10
+ // custom one), and it made discovery depend on a registration the caller had no way to know it needed.
11
+ //
12
+ // Set iteration is insertion order, which is resource order then per-resource texture order — stable
13
+ // across runs, so a caller's request order does not drift.
14
+ export function getScene3DResourceTextures(out, scene) {
10
15
  out.length = 0;
11
16
  const seen = new Set();
12
- const slots = [];
13
- collectNodeResourceTextures(scene, registry, out, seen, slots);
14
- // forEachNodeDescendant yields Node<Node3DTraits>; the intersection Node3D is re-narrowed by
15
- // isMesh inside the collector, so the cast only restores the trait fields the walk generic drops.
16
- forEachNodeDescendant(scene, (node) => collectNodeResourceTextures(node, registry, out, seen, slots));
17
- }
18
- function collectNodeResourceTextures(node, registry, out, seen, slots) {
19
- if (!isMesh(node))
20
- return;
21
- const materials = node.materials;
22
- for (let i = 0; i < materials.length; i++) {
23
- const material = materials[i];
24
- if (material === null)
25
- continue;
26
- slots.length = 0;
27
- getScene3DMaterialTextures(registry, material, slots);
28
- for (let j = 0; j < slots.length; j++) {
29
- const texture = slots[j];
30
- if (texture.resource == null || seen.has(texture))
17
+ for (const resource of scene.resources) {
18
+ for (const texture of resource.textures ?? []) {
19
+ if (seen.has(texture))
31
20
  continue;
32
21
  seen.add(texture);
33
22
  out.push(texture);
34
23
  }
35
24
  }
36
25
  }
26
+ export function getScene3DTextureResourceReference(scene, texture) {
27
+ for (const resource of scene.resources) {
28
+ if (resource.textures?.includes(texture) === true)
29
+ return resource;
30
+ }
31
+ return null;
32
+ }
37
33
  //# sourceMappingURL=getScene3DResourceTextures.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getScene3DResourceTextures.js","sourceRoot":"","sources":["../src/getScene3DResourceTextures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,qGAAqG;AACrG,+DAA+D;AAC/D,8FAA8F;AAC9F,8FAA8F;AAC9F,qDAAqD;AACrD,MAAM,UAAU,0BAA0B,CACxC,KAAuB,EACvB,QAAkD,EAClD,GAAc;IAEd,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,2BAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/D,6FAA6F;IAC7F,kGAAkG;IAClG,qBAAqB,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CACpC,2BAA2B,CAAC,IAAwB,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,IAAsB,EACtB,QAAkD,EAClD,GAAc,EACd,IAAkB,EAClB,KAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAoB,CAAC;QACjD,IAAI,QAAQ,KAAK,IAAI;YAAE,SAAS;QAChC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACjB,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,OAAO,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YAC5D,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"getScene3DResourceTextures.js","sourceRoot":"","sources":["../src/getScene3DResourceTextures.ts"],"names":[],"mappings":"AAEA,qGAAqG;AACrG,gGAAgG;AAChG,oEAAoE;AACpE,EAAE;AACF,sGAAsG;AACtG,iGAAiG;AACjG,wGAAwG;AACxG,kGAAkG;AAClG,kGAAkG;AAClG,uGAAuG;AACvG,EAAE;AACF,qGAAqG;AACrG,2DAA2D;AAC3D,MAAM,UAAU,0BAA0B,CAAC,GAAc,EAAE,KAAwB;IACjF,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC9C,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAAwB,EACxB,OAA0B;IAE1B,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACvC,IAAI,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAkB,CAAC,KAAK,IAAI;YAAE,OAAO,QAAQ,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ExternalImageResourceReference, ImageResource } from '@flighthq/types/contract';
2
- export declare function fetchWebImageResource(ref: Readonly<ExternalImageResourceReference>, signal: AbortSignal): Promise<ImageResource | null>;
1
+ import type { ExternalImageResourceReference, Image } from '@flighthq/types/contract';
2
+ export declare function fetchWebImageResource(ref: Readonly<ExternalImageResourceReference>, signal: AbortSignal): Promise<Image | null>;
3
3
  export declare function resolveImageResourceUri(uri: string, basePath: string | null): string;
4
4
  //# sourceMappingURL=imageResourceFetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imageResourceFetch.d.ts","sourceRoot":"","sources":["../src/imageResourceFetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9F,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAC7C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAQ/B;AAKD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIpF"}
1
+ {"version":3,"file":"imageResourceFetch.d.ts","sourceRoot":"","sources":["../src/imageResourceFetch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAKtF,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,QAAQ,CAAC,8BAA8B,CAAC,EAC7C,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAQvB;AAKD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAIpF"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export { areScene3DResourceFailureGuardsEnabled, createBuiltInScene3DResourceResolver, createScene3DMaterialTextureRegistry, createScene3DResourceResolver, disableScene3DResourceFailureGuards, disposeScene3DResourceResolver, enableScene3DResourceFailureGuards, enableScene3DResourceSignals, explainImageResourceReferenceResolution, fetchWebImageResource, getScene3DDocumentBasePathFromUrl, getScene3DMaterialTextures, getScene3DResourceSignals, getScene3DResourceTextures, loadScene3DDocumentBytesFromUrl, loadScene3DDocumentFrom3dsUrl, loadScene3DDocumentFromAwd2Url, loadScene3DDocumentFromGlbUrl, loadScene3DDocumentFromGltfUrl, loadScene3DDocumentFromMd2Url, loadScene3DDocumentFromMd5MeshUrl, loadScene3DDocumentFromObjUrl, loadScene3DDocumentTextFromUrl, loadScene3DResources, registerBuiltInScene3DMaterialTextures, registerScene3DMaterialTextures, resetFailedImageResourceReference, resolveImageResourceUri, resolveOneScene3DResourceTexture, resolveScene3DResources, retryFailedScene3DResources, revealScene3DResourcesOnResolve, setScene3DDocumentResourceBasePathFromUrl, waitForScene3DResourceResolver, } from './contract';
1
+ export { areScene3DResourceFailureGuardsEnabled, createBuiltInScene3DResourceResolver, createScene3DResourceResolver, disableScene3DResourceFailureGuards, disposeScene3DResourceResolver, enableScene3DResourceFailureGuards, enableScene3DResourceSignals, fetchWebImageResource, getScene3DDocumentBasePathFromUrl, getScene3DResourceSignals, getScene3DResourceTextures, loadScene3DDocumentBytesFromUrl, loadScene3DDocumentFrom3dsUrl, loadScene3DDocumentFromAwd2Url, loadScene3DDocumentFromGlbUrl, loadScene3DDocumentFromGltfUrl, loadScene3DDocumentFromMd2Url, loadScene3DDocumentFromMd5MeshUrl, loadScene3DDocumentFromObjUrl, loadScene3DDocumentTextFromUrl, loadScene3DResources, resolveImageResourceUri, resolveOneScene3DResourceTexture, resolveScene3DResources, retryFailedScene3DResources, revealScene3DResourcesOnResolve, setScene3DDocumentResourceBasePathFromUrl, updateScene3DResourceStreaming, waitForScene3DResourceResolver, } from './contract';
2
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,oCAAoC,EACpC,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,4BAA4B,EAC5B,uCAAuC,EACvC,qBAAqB,EACrB,iCAAiC,EACjC,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,sCAAsC,EACtC,+BAA+B,EAC/B,iCAAiC,EACjC,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,yCAAyC,EACzC,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,EACrB,iCAAiC,EACjC,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { areScene3DResourceFailureGuardsEnabled, createBuiltInScene3DResourceResolver, createScene3DMaterialTextureRegistry, createScene3DResourceResolver, disableScene3DResourceFailureGuards, disposeScene3DResourceResolver, enableScene3DResourceFailureGuards, enableScene3DResourceSignals, explainImageResourceReferenceResolution, fetchWebImageResource, getScene3DDocumentBasePathFromUrl, getScene3DMaterialTextures, getScene3DResourceSignals, getScene3DResourceTextures, loadScene3DDocumentBytesFromUrl, loadScene3DDocumentFrom3dsUrl, loadScene3DDocumentFromAwd2Url, loadScene3DDocumentFromGlbUrl, loadScene3DDocumentFromGltfUrl, loadScene3DDocumentFromMd2Url, loadScene3DDocumentFromMd5MeshUrl, loadScene3DDocumentFromObjUrl, loadScene3DDocumentTextFromUrl, loadScene3DResources, registerBuiltInScene3DMaterialTextures, registerScene3DMaterialTextures, resetFailedImageResourceReference, resolveImageResourceUri, resolveOneScene3DResourceTexture, resolveScene3DResources, retryFailedScene3DResources, revealScene3DResourcesOnResolve, setScene3DDocumentResourceBasePathFromUrl, waitForScene3DResourceResolver, } from './contract';
1
+ export { areScene3DResourceFailureGuardsEnabled, createBuiltInScene3DResourceResolver, createScene3DResourceResolver, disableScene3DResourceFailureGuards, disposeScene3DResourceResolver, enableScene3DResourceFailureGuards, enableScene3DResourceSignals, fetchWebImageResource, getScene3DDocumentBasePathFromUrl, getScene3DResourceSignals, getScene3DResourceTextures, loadScene3DDocumentBytesFromUrl, loadScene3DDocumentFrom3dsUrl, loadScene3DDocumentFromAwd2Url, loadScene3DDocumentFromGlbUrl, loadScene3DDocumentFromGltfUrl, loadScene3DDocumentFromMd2Url, loadScene3DDocumentFromMd5MeshUrl, loadScene3DDocumentFromObjUrl, loadScene3DDocumentTextFromUrl, loadScene3DResources, resolveImageResourceUri, resolveOneScene3DResourceTexture, resolveScene3DResources, retryFailedScene3DResources, revealScene3DResourcesOnResolve, setScene3DDocumentResourceBasePathFromUrl, updateScene3DResourceStreaming, waitForScene3DResourceResolver, } from './contract';
2
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,oCAAoC,EACpC,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,4BAA4B,EAC5B,uCAAuC,EACvC,qBAAqB,EACrB,iCAAiC,EACjC,0BAA0B,EAC1B,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,sCAAsC,EACtC,+BAA+B,EAC/B,iCAAiC,EACjC,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,yCAAyC,EACzC,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sCAAsC,EACtC,oCAAoC,EACpC,6BAA6B,EAC7B,mCAAmC,EACnC,8BAA8B,EAC9B,kCAAkC,EAClC,4BAA4B,EAC5B,qBAAqB,EACrB,iCAAiC,EACjC,yBAAyB,EACzB,0BAA0B,EAC1B,+BAA+B,EAC/B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,8BAA8B,EAC9B,6BAA6B,EAC7B,iCAAiC,EACjC,6BAA6B,EAC7B,8BAA8B,EAC9B,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,EAChC,uBAAuB,EACvB,2BAA2B,EAC3B,+BAA+B,EAC/B,yCAAyC,EACzC,8BAA8B,EAC9B,8BAA8B,GAC/B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Scene3DMaterialTextureRegistry } from '@flighthq/types/contract';
2
+ export declare function registerIridescencePbrScene3DMaterialTextures(registry: Scene3DMaterialTextureRegistry): void;
3
+ //# sourceMappingURL=iridescencePbrScene3DMaterialTextures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iridescencePbrScene3DMaterialTextures.d.ts","sourceRoot":"","sources":["../src/iridescencePbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,8BAA8B,EAAE,MAAM,0BAA0B,CAAC;AAKxG,wBAAgB,6CAA6C,CAAC,QAAQ,EAAE,8BAA8B,GAAG,IAAI,CAM5G"}
@@ -0,0 +1,12 @@
1
+ import { IridescencePbrExtensionKind } from '@flighthq/types/contract';
2
+ import { registerScene3DPbrExtensionTextures } from './sceneMaterialTextureRegistry';
3
+ export function registerIridescencePbrScene3DMaterialTextures(registry) {
4
+ registerScene3DPbrExtensionTextures(registry, IridescencePbrExtensionKind, (extension, out) => {
5
+ const iridescence = extension;
6
+ if (iridescence.iridescenceMap !== null)
7
+ out.push(iridescence.iridescenceMap);
8
+ if (iridescence.iridescenceThicknessMap !== null)
9
+ out.push(iridescence.iridescenceThicknessMap);
10
+ });
11
+ }
12
+ //# sourceMappingURL=iridescencePbrScene3DMaterialTextures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iridescencePbrScene3DMaterialTextures.js","sourceRoot":"","sources":["../src/iridescencePbrScene3DMaterialTextures.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAEvE,OAAO,EAAE,mCAAmC,EAAE,MAAM,gCAAgC,CAAC;AAErF,MAAM,UAAU,6CAA6C,CAAC,QAAwC;IACpG,mCAAmC,CAAC,QAAQ,EAAE,2BAA2B,EAAE,CAAC,SAAS,EAAE,GAAG,EAAQ,EAAE;QAClG,MAAM,WAAW,GAAG,SAA8C,CAAC;QACnE,IAAI,WAAW,CAAC,cAAc,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC9E,IAAI,WAAW,CAAC,uBAAuB,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LoadScene3DResourcesOptions, Scene3D, Scene3DResourceResolver } from '@flighthq/types/contract';
2
+ export declare function loadScene3DResources(scene: Readonly<Scene3D>, resolver: Scene3DResourceResolver, options?: Readonly<LoadScene3DResourcesOptions>): Promise<void>;
3
+ export declare function waitForScene3DResourceResolver(resolver: Readonly<Scene3DResourceResolver>): Promise<void>;
4
+ //# sourceMappingURL=loadScene3DResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadScene3DResources.d.ts","sourceRoot":"","sources":["../src/loadScene3DResources.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,2BAA2B,EAC3B,OAAO,EACP,uBAAuB,EACxB,MAAM,0BAA0B,CAAC;AAUlC,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,2BAA2B,CAAC,GAC9C,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAID,wBAAsB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/G"}
@@ -1,15 +1,17 @@
1
1
  import { emitSignal } from '@flighthq/signals/contract';
2
2
  import { ResourceResolutionState } from '@flighthq/types/contract';
3
3
  import { Scene3DResourceResolverRuntimeKey } from '@flighthq/types/contract';
4
- import { getScene3DResourceTextures } from './getScene3DResourceTextures';
5
- import { resolveScene3DResources } from './resolveScene3DResources';
6
- // Eager/deterministic asynchronous load: runs one resolveScene3DResources pass, then awaits every in-flight
7
- // load it started so the scene is fully resolved (or each ref settled to Failed) on return. The
8
- // deterministic sibling of the fire-and-forget resolveScene3DResources — for loads, tests, and capture
9
- // that need the finished scene rather than progressive availability.
4
+ import { updateScene3DResourceStreaming } from './resolveScene3DResources';
5
+ // Eager/deterministic asynchronous load: reconciles the selected working set, starts its acquisitions,
6
+ // then awaits every in-flight load it started so each reference has settled to Resolved or Failed on
7
+ // return. Progressive callers use updateScene3DResourceStreaming instead.
10
8
  export async function loadScene3DResources(scene, resolver, options) {
11
- const refs = getSelectedScene3DResourceReferences(scene, resolver, options);
12
- resolveScene3DResources(scene, resolver, options);
9
+ const resources = updateScene3DResourceStreaming(scene, resolver, options);
10
+ const refs = new Set();
11
+ for (let i = 0; i < resources.resolved.length; i++)
12
+ refs.add(resources.resolved[i].ref);
13
+ for (let i = 0; i < resources.unresolved.length; i++)
14
+ refs.add(resources.unresolved[i].ref);
13
15
  const runtime = resolver[Scene3DResourceResolverRuntimeKey];
14
16
  const total = refs.size;
15
17
  let loaded = 0;
@@ -42,16 +44,4 @@ export async function waitForScene3DResourceResolver(resolver) {
42
44
  promises.push(entry.promise);
43
45
  await Promise.allSettled(promises);
44
46
  }
45
- function getSelectedScene3DResourceReferences(scene, resolver, options) {
46
- const textures = [];
47
- const refs = new Set();
48
- getScene3DResourceTextures(scene, resolver.registry, textures);
49
- for (const texture of textures) {
50
- const ref = texture.resource;
51
- if (ref !== null && ref !== undefined && (options?.select === undefined || options.select(texture, ref))) {
52
- refs.add(ref);
53
- }
54
- }
55
- return refs;
56
- }
57
- //# sourceMappingURL=resolveScene3DResourcesAndWait.js.map
47
+ //# sourceMappingURL=loadScene3DResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadScene3DResources.js","sourceRoot":"","sources":["../src/loadScene3DResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAOxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAE3E,uGAAuG;AACvG,qGAAqG;AACrG,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAwB,EACxB,QAAiC,EACjC,OAA+C;IAE/C,MAAM,SAAS,GAAG,8BAA8B,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3E,MAAM,IAAI,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAI,QAA+C,CAAC,iCAAiC,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;IACxB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,CAAC,KAAK,KAAK,uBAAuB,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,uBAAuB,CAAC,MAAM,EAAE,CAAC;YACnG,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QAClC,OAAO,CAAC,IAAI,CACV,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,EAAE,CAAC;YACT,IAAI,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS;QAAE,UAAU,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,iGAAiG;AACjG,oGAAoG;AACpG,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,QAA2C;IAC9F,MAAM,OAAO,GAAI,QAA+C,CAAC,iCAAiC,CAAC,CAAC;IACpG,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { ImageResource, Node3D, ImageResourceReference, ResolveScene3DResourcesOptions, Scene3DResourceResolver } from '@flighthq/types/contract';
2
- export declare function resolveOneScene3DResourceTexture(resolver: Readonly<Scene3DResourceResolver>, ref: Readonly<ImageResourceReference>, signal: AbortSignal): Promise<ImageResource | null>;
3
- export declare function resolveScene3DResources(scene: Readonly<Node3D>, resolver: Scene3DResourceResolver, options?: Readonly<ResolveScene3DResourcesOptions>): void;
1
+ import type { Image, Scene3D, ImageResourceReference, ResolveScene3DResourcesOptions, Scene3DResources, Scene3DResourceResolver, UpdateScene3DResourceStreamingOptions } from '@flighthq/types/contract';
2
+ export declare function resolveOneScene3DResourceTexture(resolver: Readonly<Scene3DResourceResolver>, ref: Readonly<ImageResourceReference>, signal: AbortSignal): Promise<Image | null>;
3
+ export declare function resolveScene3DResources(scene: Readonly<Scene3D>, resolver: Scene3DResourceResolver, options?: Readonly<ResolveScene3DResourcesOptions>): Scene3DResources;
4
+ export declare function updateScene3DResourceStreaming(scene: Readonly<Scene3D>, resolver: Scene3DResourceResolver, options?: Readonly<UpdateScene3DResourceStreamingOptions>): Scene3DResources;
4
5
  //# sourceMappingURL=resolveScene3DResources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveScene3DResources.d.ts","sourceRoot":"","sources":["../src/resolveScene3DResources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAEb,MAAM,EACN,sBAAsB,EACtB,8BAA8B,EAC9B,uBAAuB,EAExB,MAAM,0BAA0B,CAAC;AAclC,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EACrC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAK/B;AAYD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,EACvB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,8BAA8B,CAAC,GACjD,IAAI,CA0BN"}
1
+ {"version":3,"file":"resolveScene3DResources.d.ts","sourceRoot":"","sources":["../src/resolveScene3DResources.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,KAAK,EACL,OAAO,EACP,sBAAsB,EACtB,8BAA8B,EAC9B,gBAAgB,EAChB,uBAAuB,EAGvB,qCAAqC,EACtC,MAAM,0BAA0B,CAAC;AAelC,wBAAgB,gCAAgC,CAC9C,QAAQ,EAAE,QAAQ,CAAC,uBAAuB,CAAC,EAC3C,GAAG,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EACrC,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAKvB;AAMD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,8BAA8B,CAAC,GACjD,gBAAgB,CA0ClB;AAID,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EACxB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,CAAC,EAAE,QAAQ,CAAC,qCAAqC,CAAC,GACxD,gBAAgB,CAQlB"}