@carbonenginejs/runtime 0.1.0-alpha.4 → 0.1.0-alpha.5

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 (384) hide show
  1. package/dist/global/blue/BlueClasses.js +200 -0
  2. package/dist/global/blue/BlueClasses.js.map +1 -0
  3. package/dist/global/blue/IBlueClasses.js +79 -0
  4. package/dist/global/blue/IBlueClasses.js.map +1 -0
  5. package/dist/global/blue/IBlueDynamicResourceConstructor.js +16 -0
  6. package/dist/global/blue/IBlueDynamicResourceConstructor.js.map +1 -1
  7. package/dist/global/blue/blue.js +8 -2
  8. package/dist/global/blue/blue.js.map +1 -1
  9. package/dist/global/blue/index.js +2 -0
  10. package/dist/global/blue/index.js.map +1 -1
  11. package/dist/global/consts/index.js +0 -1
  12. package/dist/global/consts/index.js.map +1 -1
  13. package/dist/global/consts/renderContext/formats.js +26 -25
  14. package/dist/global/consts/renderContext/formats.js.map +1 -1
  15. package/dist/{trinityal/Tr2BitmapDimensions.js → global/imageio/BitmapDimensions.js} +19 -15
  16. package/dist/global/imageio/BitmapDimensions.js.map +1 -0
  17. package/dist/global/imageio/Cutout.js +28 -0
  18. package/dist/global/imageio/Cutout.js.map +1 -0
  19. package/dist/global/imageio/HostBitmap.js +1106 -0
  20. package/dist/global/imageio/HostBitmap.js.map +1 -0
  21. package/dist/global/imageio/ImageIOResult.js +99 -0
  22. package/dist/global/imageio/ImageIOResult.js.map +1 -0
  23. package/dist/global/imageio/ImageUtility.js +205 -0
  24. package/dist/global/imageio/ImageUtility.js.map +1 -0
  25. package/dist/global/imageio/LoadParameters.js +86 -0
  26. package/dist/global/imageio/LoadParameters.js.map +1 -0
  27. package/dist/global/imageio/Metadata.js +22 -0
  28. package/dist/global/imageio/Metadata.js.map +1 -0
  29. package/dist/global/imageio/index.js +8 -0
  30. package/dist/global/{consts/webgpu → imageio}/index.js.map +1 -1
  31. package/dist/global/index.js +2 -1
  32. package/dist/global/index.js.map +1 -1
  33. package/dist/global/math/color.js +1 -1
  34. package/dist/global/math/color.js.map +1 -1
  35. package/dist/global/schema/CjsSchema.js +8 -0
  36. package/dist/global/schema/CjsSchema.js.map +1 -1
  37. package/dist/index.js +12 -4
  38. package/dist/index.js.map +1 -1
  39. package/dist/resource/CjsResMan.js +47 -7
  40. package/dist/resource/CjsResMan.js.map +1 -1
  41. package/dist/resource/Tr2LightProfileRes.js +37 -0
  42. package/dist/resource/Tr2LightProfileRes.js.map +1 -1
  43. package/dist/resource/format/CjsByteWriter.js +46 -46
  44. package/dist/resource/format/CjsByteWriter.js.map +1 -1
  45. package/dist/resource/format/CjsFormat.js +7 -8
  46. package/dist/resource/format/CjsFormat.js.map +1 -1
  47. package/dist/resource/format/CjsFormatStore.js +8 -8
  48. package/dist/resource/format/CjsFormatStore.js.map +1 -1
  49. package/dist/resource/format/CjsGeometryFormat.js +114 -0
  50. package/dist/resource/format/CjsGeometryFormat.js.map +1 -0
  51. package/dist/resource/format/CjsImageFormat.js +282 -0
  52. package/dist/resource/format/CjsImageFormat.js.map +1 -0
  53. package/dist/resource/format/CjsResourceProbe.js +12 -48
  54. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  55. package/dist/resource/format/CjsStringTable.js +37 -37
  56. package/dist/resource/format/CjsStringTable.js.map +1 -1
  57. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js +10 -10
  58. package/dist/resource/format/carbonEffect/CjsCarbonEffectReader.js.map +1 -1
  59. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js +37 -37
  60. package/dist/resource/format/carbonEffect/CjsCarbonEffectWriter.js.map +1 -1
  61. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js +35 -7
  62. package/dist/resource/format/carbonEffect/carbonEffectBackendBlock.js.map +1 -1
  63. package/dist/resource/format/index.js +3 -1
  64. package/dist/resource/format/index.js.map +1 -1
  65. package/dist/resource/formats/black/CjsBlackFormat.js +130 -137
  66. package/dist/resource/formats/black/CjsBlackFormat.js.map +1 -1
  67. package/dist/resource/formats/bnk/CjsBnkFormat.js +12 -19
  68. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  69. package/dist/resource/formats/bnk/core/helpers.js +1 -3
  70. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  71. package/dist/resource/formats/cmf/CjsCmfFormat.js +19 -82
  72. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  73. package/dist/resource/formats/cmf/core/constants.js +1 -2
  74. package/dist/resource/formats/cmf/core/constants.js.map +1 -1
  75. package/dist/resource/formats/{stl/core/targets.js → cmf/core/flatShared.js} +9 -8
  76. package/dist/resource/formats/cmf/core/flatShared.js.map +1 -0
  77. package/dist/resource/formats/cmf/core/helpers.js +13 -13
  78. package/dist/resource/formats/cmf/core/helpers.js.map +1 -1
  79. package/dist/resource/formats/cmf/core/writer.js +24 -24
  80. package/dist/resource/formats/cmf/core/writer.js.map +1 -1
  81. package/dist/resource/formats/dds/CjsDdsFormat.js +134 -17
  82. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  83. package/dist/resource/formats/dds/core/helpers.js +125 -40
  84. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  85. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +14 -16
  86. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  87. package/dist/resource/formats/dxbc/core/{container.js → DxbcContainer.js} +2 -2
  88. package/dist/resource/formats/dxbc/core/DxbcContainer.js.map +1 -0
  89. package/dist/resource/formats/dxbc/core/{errors.js → DxbcReadError.js} +1 -1
  90. package/dist/resource/formats/dxbc/core/DxbcReadError.js.map +1 -0
  91. package/dist/resource/formats/dxbc/core/DxbcReader.js +1 -1
  92. package/dist/resource/formats/dxbc/core/DxbcReader.js.map +1 -1
  93. package/dist/resource/formats/dxbc/core/{program.js → DxbcShaderProgram.js} +2 -2
  94. package/dist/resource/formats/dxbc/core/DxbcShaderProgram.js.map +1 -0
  95. package/dist/resource/formats/dxbc/core/{signature.js → DxbcSignatureChunk.js} +2 -2
  96. package/dist/resource/formats/dxbc/core/DxbcSignatureChunk.js.map +1 -0
  97. package/dist/resource/formats/dxbc/core/decoder.js +2 -2
  98. package/dist/resource/formats/dxbc/core/decoder.js.map +1 -1
  99. package/dist/resource/formats/dxbc/core/helpers.js +3 -3
  100. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  101. package/dist/resource/formats/fbx/CjsFbxFormat.js +18 -20
  102. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  103. package/dist/resource/formats/flac/CjsFlacFormat.js +7 -13
  104. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  105. package/dist/resource/formats/fsd/32/CjsFsd32Format.js +29 -29
  106. package/dist/resource/formats/fsd/32/CjsFsd32Format.js.map +1 -1
  107. package/dist/resource/formats/fsd/64/CjsFsd64Format.js +3 -3
  108. package/dist/resource/formats/fsd/64/CjsFsd64Format.js.map +1 -1
  109. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js +23 -23
  110. package/dist/resource/formats/fsd/64/core/CjsFsd64Binary.js.map +1 -1
  111. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js +8 -8
  112. package/dist/resource/formats/fsd/64/core/CjsFsd64Reader.js.map +1 -1
  113. package/dist/resource/formats/fsd/CjsFsdFormat.js +23 -23
  114. package/dist/resource/formats/fsd/CjsFsdFormat.js.map +1 -1
  115. package/dist/resource/formats/gif/CjsGifFormat.js +24 -15
  116. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  117. package/dist/resource/formats/gltf/CjsGltfFormat.js +33 -98
  118. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  119. package/dist/resource/formats/gltf/core/helpers.js +3 -12
  120. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  121. package/dist/resource/formats/gr2/CjsGr2Format.js +27 -91
  122. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  123. package/dist/resource/formats/hlsl/CjsHlslFormat.js +22 -25
  124. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  125. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js +1 -1
  126. package/dist/resource/formats/hlsl/core/carbonDescriptionToRuntime.js.map +1 -1
  127. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js +3 -3
  128. package/dist/resource/formats/hlsl/core/tr2/shader/HlslEffectStageInput.js.map +1 -1
  129. package/dist/resource/formats/ies/CjsIESFormat.js +29 -29
  130. package/dist/resource/formats/ies/CjsIESFormat.js.map +1 -1
  131. package/dist/resource/formats/jpeg/CjsJpegFormat.js +24 -15
  132. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  133. package/dist/resource/formats/jpeg/core/helpers.js +3 -5
  134. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  135. package/dist/resource/formats/jpeg/core/jpeg.js +58 -58
  136. package/dist/resource/formats/jpeg/core/jpeg.js.map +1 -1
  137. package/dist/resource/formats/jsonl/CjsJsonlFormat.js +3 -3
  138. package/dist/resource/formats/jsonl/CjsJsonlFormat.js.map +1 -1
  139. package/dist/resource/formats/mp3/CjsMp3Format.js +7 -14
  140. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  141. package/dist/resource/formats/mp3/core/helpers.js +3 -5
  142. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  143. package/dist/resource/formats/mp4/CjsMp4Format.js +7 -13
  144. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  145. package/dist/resource/formats/mp4/core/helpers.js +3 -5
  146. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  147. package/dist/resource/formats/obj/CjsObjFormat.js +92 -157
  148. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  149. package/dist/resource/formats/obj/core/helpers.js +5 -113
  150. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  151. package/dist/resource/formats/ogg/CjsOggFormat.js +7 -14
  152. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  153. package/dist/resource/formats/pickle/CjsPickleFormat.js +7 -12
  154. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  155. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js +7 -7
  156. package/dist/resource/formats/pickle/core/CjsPickleProtocol0Reader.js.map +1 -1
  157. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js +7 -7
  158. package/dist/resource/formats/pickle/core/CjsPickleProtocol4Reader.js.map +1 -1
  159. package/dist/resource/formats/png/CjsPngFormat.js +40 -15
  160. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  161. package/dist/resource/formats/png/core/helpers.js +4 -6
  162. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  163. package/dist/resource/formats/red/CjsRedFormat.js +22 -28
  164. package/dist/resource/formats/red/CjsRedFormat.js.map +1 -1
  165. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js +3 -7
  166. package/dist/resource/formats/schemabound/CjsSchemaBoundFormat.js.map +1 -1
  167. package/dist/resource/formats/schemabound/core/schemaBoundValues.js +5 -0
  168. package/dist/resource/formats/schemabound/core/schemaBoundValues.js.map +1 -1
  169. package/dist/resource/formats/sqlite/CjsSqliteFormat.js +4 -9
  170. package/dist/resource/formats/sqlite/CjsSqliteFormat.js.map +1 -1
  171. package/dist/resource/formats/static/CjsStaticFormat.js +4 -4
  172. package/dist/resource/formats/static/CjsStaticFormat.js.map +1 -1
  173. package/dist/resource/formats/stl/CjsStlFormat.js +39 -104
  174. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  175. package/dist/resource/formats/stl/core/helpers.js +5 -19
  176. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/tga/CjsTgaFormat.js +26 -15
  178. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  179. package/dist/resource/formats/tga/core/helpers.js +3 -5
  180. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  181. package/dist/resource/formats/vta/CjsVtaFormat.js +8 -15
  182. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  183. package/dist/resource/formats/wav/CjsWavFormat.js +7 -14
  184. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  185. package/dist/resource/formats/wav/core/helpers.js +3 -5
  186. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  187. package/dist/resource/formats/webgl/CjsWebglFormat.js +103 -105
  188. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  189. package/dist/resource/formats/webgl/core/{errors.js → WebglReadError.js} +1 -1
  190. package/dist/resource/formats/webgl/core/WebglReadError.js.map +1 -0
  191. package/dist/resource/formats/webgl/core/effectPackage.js +1 -1
  192. package/dist/resource/formats/webgl/core/effectPackage.js.map +1 -1
  193. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +3 -3
  194. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  195. package/dist/resource/formats/webgl/core/glsl/{DxbcGlslHelpers.js → DxbcGlslHelperRegistry.js} +2 -2
  196. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelperRegistry.js.map +1 -0
  197. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js +1 -1
  198. package/dist/resource/formats/webgl/core/glsl/DxbcGlslOperandFormatter.js.map +1 -1
  199. package/dist/resource/formats/webgl/core/glslBackendBlock.js +1 -1
  200. package/dist/resource/formats/webgl/core/glslBackendBlock.js.map +1 -1
  201. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  202. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +28 -29
  203. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  204. package/dist/resource/formats/webgpu/core/{errors.js → WebgpuReadError.js} +1 -1
  205. package/dist/resource/formats/webgpu/core/WebgpuReadError.js.map +1 -0
  206. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js +1 -1
  207. package/dist/resource/formats/webgpu/core/carbonWebgpu/validateContainer.js.map +1 -1
  208. package/dist/resource/formats/webgpu/core/helpers.js +1 -1
  209. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  210. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js +1 -1
  211. package/dist/resource/formats/webgpu/core/ir/lowerDxbcToIr.js.map +1 -1
  212. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js +18 -6
  213. package/dist/resource/formats/webgpu/core/wgsl/buildWgslSet.js.map +1 -1
  214. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js +39 -13
  215. package/dist/resource/formats/webgpu/core/wgsl/lowerBindingLayout.js.map +1 -1
  216. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js +16 -14
  217. package/dist/resource/formats/webgpu/core/wgsl/lowerCreateHistogramsComputeProgram.js.map +1 -1
  218. package/dist/resource/formats/webm/CjsWebmFormat.js +8 -13
  219. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  220. package/dist/resource/formats/webm/core/helpers.js +3 -5
  221. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  222. package/dist/resource/formats/webp/CjsWebpFormat.js +8 -12
  223. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  224. package/dist/resource/formats/wem/CjsWemFormat.js +9 -17
  225. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  226. package/dist/resource/formats/wem/core/bitStream.js +35 -35
  227. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  228. package/dist/resource/formats/wem/core/helpers.js +1 -3
  229. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  230. package/dist/resource/formats/yaml/CjsYamlFormat.js +28 -37
  231. package/dist/resource/formats/yaml/CjsYamlFormat.js.map +1 -1
  232. package/dist/resource/imageio/ImageIO.js +142 -0
  233. package/dist/resource/imageio/ImageIO.js.map +1 -0
  234. package/dist/resource/imageio/index.js +17 -0
  235. package/dist/resource/imageio/index.js.map +1 -0
  236. package/dist/resource/index.js +7 -0
  237. package/dist/resource/index.js.map +1 -1
  238. package/dist/resource/shader/reflection/Tr2EffectResource.js +24 -2
  239. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  240. package/dist/resource/shader/reflection/Tr2Pass.js +76 -5
  241. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  242. package/dist/resource/texture/CjsTextureArrayConstructor.js +97 -0
  243. package/dist/resource/texture/CjsTextureArrayConstructor.js.map +1 -0
  244. package/dist/resource/texture/CjsTexturePackConstructor.js +160 -0
  245. package/dist/resource/texture/CjsTexturePackConstructor.js.map +1 -0
  246. package/dist/resource/texture/CjsTexturePipelineStepArray.js +72 -0
  247. package/dist/resource/texture/CjsTexturePipelineStepArray.js.map +1 -0
  248. package/dist/resource/texture/CjsTexturePipelineStepConvert.js +73 -0
  249. package/dist/resource/texture/CjsTexturePipelineStepConvert.js.map +1 -0
  250. package/dist/resource/texture/CjsTexturePipelineStepPack.js +71 -0
  251. package/dist/resource/texture/CjsTexturePipelineStepPack.js.map +1 -0
  252. package/dist/resource/texture/CjsTexturePipelineStepResize.js +123 -0
  253. package/dist/resource/texture/CjsTexturePipelineStepResize.js.map +1 -0
  254. package/dist/resource/texture/SolidColorTextureConstructor.js +11 -1
  255. package/dist/resource/texture/SolidColorTextureConstructor.js.map +1 -1
  256. package/dist/resource/texture/Tr2ImageRes.js +100 -68
  257. package/dist/resource/texture/Tr2ImageRes.js.map +1 -1
  258. package/dist/resource/texture/Tr2TexturePipeline.js +45 -25
  259. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  260. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +34 -1
  261. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  262. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +30 -3
  263. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  264. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +81 -1
  265. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  266. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +36 -1
  267. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  268. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +146 -24
  269. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  270. package/dist/resource/texture/TriTextureRes.js +151 -29
  271. package/dist/resource/texture/TriTextureRes.js.map +1 -1
  272. package/dist/resource/texture/index.js +7 -0
  273. package/dist/resource/texture/index.js.map +1 -1
  274. package/dist/resource/texture/registerTextureResources.js +83 -0
  275. package/dist/resource/texture/registerTextureResources.js.map +1 -0
  276. package/dist/resource/texture/solidColorTexture.js +10 -19
  277. package/dist/resource/texture/solidColorTexture.js.map +1 -1
  278. package/dist/sof/EveSOF.js +39 -7
  279. package/dist/sof/EveSOF.js.map +1 -1
  280. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js +2 -2
  281. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -1
  282. package/dist/trinity/core/Tr2ImageIOHelpers.js +80 -17
  283. package/dist/trinity/core/Tr2ImageIOHelpers.js.map +1 -1
  284. package/dist/trinity/core/Tr2RenderUtils.js +1 -1
  285. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js +49 -62
  286. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -1
  287. package/dist/trinity/core/Tr2TextureReference.js +114 -0
  288. package/dist/trinity/core/Tr2TextureReference.js.map +1 -0
  289. package/dist/trinity/core/device/Tr2DepthStencil.js +2 -2
  290. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  291. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js +1 -1
  292. package/dist/trinity/core/index.js +1 -0
  293. package/dist/trinity/core/index.js.map +1 -1
  294. package/dist/trinity/core/lighting/Tr2LightManager.js +5 -4
  295. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  296. package/dist/trinity/core/procedural/GradientTextureConstructor.js +5 -4
  297. package/dist/trinity/core/procedural/GradientTextureConstructor.js.map +1 -1
  298. package/dist/trinity/core/procedural/gradientTexture.js +10 -13
  299. package/dist/trinity/core/procedural/gradientTexture.js.map +1 -1
  300. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +1 -1
  301. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  302. package/dist/trinity/eve/EveImpactOverlay.js +102 -50
  303. package/dist/trinity/eve/EveImpactOverlay.js.map +1 -1
  304. package/dist/trinity/eve/EveModularObjectModifier.js +9 -18
  305. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  306. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +175 -157
  307. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  308. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js +100 -83
  309. package/dist/trinity/eve/attachment/turrets/EveTurretTarget.js.map +1 -1
  310. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +26 -20
  311. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -1
  312. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js +368 -179
  313. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -1
  314. package/dist/trinity/eve/child/EveChildMesh.js +242 -234
  315. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  316. package/dist/trinity/eve/child/EveChildTurret.js +57 -16
  317. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  318. package/dist/trinity/eve/child/EveSpaceObjectChild.js +28 -1
  319. package/dist/trinity/eve/child/EveSpaceObjectChild.js.map +1 -1
  320. package/dist/trinity/eve/index.js +2 -2
  321. package/dist/trinity/eve/overlays/EveDamageOverlay.js +5 -1
  322. package/dist/trinity/eve/overlays/EveDamageOverlay.js.map +1 -1
  323. package/dist/trinity/eve/scene/EveSpaceScene.js +234 -233
  324. package/dist/trinity/eve/scene/EveSpaceScene.js.map +1 -1
  325. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js +2 -0
  326. package/dist/trinity/eve/scene/EveSpaceSceneRenderDriver.js.map +1 -1
  327. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +492 -437
  328. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  329. package/dist/trinity/generated/index.js +0 -1
  330. package/dist/trinity/generated/index.js.map +1 -1
  331. package/dist/trinity/generated/trinityCore/index.js +0 -1
  332. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  333. package/dist/trinity/index.js +3 -3
  334. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +10 -1
  335. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  336. package/dist/trinity/shader/Tr2DataTextureManager.js +152 -66
  337. package/dist/trinity/shader/Tr2DataTextureManager.js.map +1 -1
  338. package/dist/trinity/shader/Tr2Material.js +1 -1
  339. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js +5 -5
  340. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -1
  341. package/dist/trinityal/index.js +1 -1
  342. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js +2 -2
  343. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -1
  344. package/dist/trinityal/stub/Tr2SwapChainALStub.js +45 -45
  345. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  346. package/dist/trinityal/stub/Tr2TextureALStub.js +170 -170
  347. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  348. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +234 -164
  349. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  350. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +7 -0
  351. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  352. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +78 -14
  353. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  354. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js +94 -0
  355. package/dist/trinityal/webgpu/core/CjsWebgpuUtils.js.map +1 -0
  356. package/dist/trinityal/webgpu/internal.js +1 -0
  357. package/dist/trinityal/webgpu/internal.js.map +1 -1
  358. package/docs/global/reference/classes/README.md +90 -0
  359. package/docs/resource/concepts/format-capabilities.md +3 -3
  360. package/docs/resource/formats/README.md +1 -1
  361. package/docs/resource/reference/classes/core.md +31 -1
  362. package/docs/resource/reference/classes/formats.md +7 -7
  363. package/docs/resource/reference/classes/resources.md +76 -16
  364. package/docs/trinity/reference/classes/generated.md +0 -10
  365. package/docs/trinity/reference/classes/trinity-core.md +1692 -1682
  366. package/docs/trinityal/reference/classes/README.md +0 -10
  367. package/docs/trinityal/webgpu/reference/classes/README.md +276 -266
  368. package/package.json +4 -3
  369. package/dist/global/consts/webgpu/index.js +0 -2
  370. package/dist/global/consts/webgpu/textureFormats.js +0 -180
  371. package/dist/global/consts/webgpu/textureFormats.js.map +0 -1
  372. package/dist/resource/formats/dxbc/core/container.js.map +0 -1
  373. package/dist/resource/formats/dxbc/core/errors.js.map +0 -1
  374. package/dist/resource/formats/dxbc/core/program.js.map +0 -1
  375. package/dist/resource/formats/dxbc/core/signature.js.map +0 -1
  376. package/dist/resource/formats/stl/core/targets.js.map +0 -1
  377. package/dist/resource/formats/webgl/core/errors.js.map +0 -1
  378. package/dist/resource/formats/webgl/core/glsl/DxbcGlslHelpers.js.map +0 -1
  379. package/dist/resource/formats/webgpu/core/errors.js.map +0 -1
  380. package/dist/resource/texture/texturePipelineBehavior.js +0 -332
  381. package/dist/resource/texture/texturePipelineBehavior.js.map +0 -1
  382. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js +0 -40
  383. package/dist/trinity/generated/trinityCore/Tr2TextureReference.js.map +0 -1
  384. package/dist/trinityal/Tr2BitmapDimensions.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CjsGifFormat.js","sources":["../../../../../src/resource/formats/gif/CjsGifFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isGIF,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGifFormat\";\n\n/**\n * GIF format profile that inspects header and frame metadata and reads GIF\n * bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.\n */\nexport class CjsGifFormat extends CjsFormat\n{\n #values = DEFAULT_VALUES;\n\n /** Creates a CjsGifFormat with caller-provided reader configuration. */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Applies caller-provided options after normalizing supported fields for the\n * GIF format configuration.\n */\n SetValues(options = {})\n {\n this.#values = normalizeValues(this.#values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Returns a snapshot of the normalized reader options for the GIF format\n * configuration.\n */\n GetValues(options = {})\n {\n return normalizeValues(this.#values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Reads the primary public payload representation from the supplied input\n * for the GIF format configuration.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Reads the primary public payload representation asynchronously for the GIF\n * format configuration.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Returns structural metadata without materializing the decoded payload for\n * the GIF format configuration.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Converts the current decoded payload into a JSON-safe representation for\n * the GIF format configuration.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Provides the one-shot GIF payload reader entry point. */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Provides the asynchronous one-shot GIF payload reader entry point. */\n static async readAsync(input, options = {})\n {\n return CjsGifFormat.read(input, options);\n }\n\n /** Provides the one-shot GIF metadata inspection entry point. */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Checks one input against the GIF decoder capability contract. */\n\n /** Provides the one-shot GIF JSON conversion entry point. */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Checks whether caller-provided bytes carry the expected GIF signature. */\n static isGIF(input)\n {\n try\n {\n return isGIF(asUint8Array(input, \"GIF input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n IMAGE: OUTPUT_IMAGE,\n RGBA: OUTPUT_RGBA,\n RAW: OUTPUT_RAW,\n JSON: OUTPUT_JSON\n });\n static OUTPUT_GIF_JSON = \"gifJson\";\n static id = \"gif\";\n static mediaTypes = Object.freeze([ \"image\" ]);\n static outputs = CjsFormat.defineOutputs({\n image: { decoded: true, probes: [ \"image\", \"rgba\" ] },\n rgba: { decoded: true },\n gifJson: { role: \"debug\", probes: [ \"gifJson\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n static extensions = Object.freeze([ \".gif\" ]);\n}\n\nexport default CjsGifFormat;\n"],"names":["FORMAT_NAME","CjsGifFormat","CjsFormat","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","toJSON","isGIF","asUint8Array","Output","Object","freeze","IMAGE","OUTPUT_IMAGE","RGBA","OUTPUT_RGBA","RAW","OUTPUT_RAW","JSON","OUTPUT_JSON","OUTPUT_GIF_JSON","id","mediaTypes","outputs","defineOutputs","image","decoded","probes","rgba","gifJson","role","raw","default","passthrough","extensions"],"mappings":"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"}
1
+ {"version":3,"file":"CjsGifFormat.js","sources":["../../../../../src/resource/formats/gif/CjsGifFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsImageFormat } from \"../../format/CjsImageFormat.js\";\nimport {\n DEFAULT_VALUES,\n OUTPUT_IMAGE,\n OUTPUT_JSON,\n OUTPUT_RAW,\n OUTPUT_RGBA,\n inspectWithValues,\n isGIF,\n probeSupportWithValues,\n normalizeValues,\n readWithValues,\n toJsonValue\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGifFormat\";\n\n/**\n * GIF format profile that inspects header and frame metadata and reads GIF\n * bytes into raw, debug JSON, or LZW-decoded RGBA frame payloads.\n */\nexport class CjsGifFormat extends CjsImageFormat\n{\n _values = DEFAULT_VALUES;\n\n /** Creates a CjsGifFormat with caller-provided reader configuration. */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Applies caller-provided options after normalizing supported fields for the\n * GIF format configuration.\n */\n SetValues(options = {})\n {\n this._values = normalizeValues(this._values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n return this;\n }\n\n /**\n * Returns a snapshot of the normalized reader options for the GIF format\n * configuration.\n */\n GetValues(options = {})\n {\n return normalizeValues(this._values, { inputType: \"gif\", ...options }, FORMAT_NAME);\n }\n\n /**\n * Reads the primary public payload representation from the supplied input\n * for the GIF format configuration.\n */\n Read(input, options = {})\n {\n return readWithValues(input, this.GetValues(options));\n }\n\n /**\n * Reads the primary public payload representation asynchronously for the GIF\n * format configuration.\n */\n async ReadAsync(input, options = {})\n {\n return this.Read(input, options);\n }\n\n /**\n * Returns structural metadata without materializing the decoded payload for\n * the GIF format configuration.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Converts the current decoded payload into a JSON-safe representation for\n * the GIF format configuration.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Provides the one-shot GIF payload reader entry point. */\n static read(input, options = {})\n {\n return readWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Provides the asynchronous one-shot GIF payload reader entry point. */\n static async readAsync(input, options = {})\n {\n return CjsGifFormat.read(input, options);\n }\n\n /** Provides the one-shot GIF metadata inspection entry point. */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, { inputType: \"gif\", ...options }, FORMAT_NAME));\n }\n\n /** Checks one input against the GIF decoder capability contract. */\n\n /** Provides the one-shot GIF JSON conversion entry point. */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /** Checks whether caller-provided bytes carry the expected GIF signature. */\n static isGIF(input)\n {\n try\n {\n return isGIF(asUint8Array(input, \"GIF input\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static id = \"CjsGifFormat\";\n static mediaTypes = [ \"image\" ];\n static outputs = CjsFormat.defineOutputs({\n image: { decoded: true, probes: [ \"image\", \"rgba\" ] },\n rgba: { decoded: true },\n gifJson: { role: \"debug\", probes: [ \"gifJson\", \"raw\" ] },\n raw: { role: \"debug\", default: true, passthrough: true }\n });\n /**\n * Fill a HostBitmap through this format's RGBA8 output, for Carbon's ImageIO\n * registry (`CjsGifFormat.carbon`). See CjsImageFormat.readImageFromRgbaPayload.\n *\n * @param {Uint8Array|ArrayBuffer} input Image bytes.\n * @param {object} _loadParameters Load parameters; a single-mip image skips nothing.\n * @param {object} bitmap Destination HostBitmap.\n * @param {object|null} [metadata] Optional Metadata out.\n * @returns {object} ImageIOResult.\n */\n static readImageNative(input, _loadParameters, bitmap, metadata = null)\n {\n return this.readImageFromRgbaPayload(this.read(input, { emit: \"rgba\" }), bitmap, metadata);\n }\n\n static extensions = [ \".gif\" ];\n}\n\nexport default CjsGifFormat;\n"],"names":["FORMAT_NAME","CjsGifFormat","CjsImageFormat","_values","DEFAULT_VALUES","constructor","options","SetValues","normalizeValues","inputType","GetValues","Read","input","readWithValues","ReadAsync","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","readAsync","inspect","toJSON","isGIF","asUint8Array","id","mediaTypes","outputs","CjsFormat","defineOutputs","image","decoded","probes","rgba","gifJson","role","raw","default","passthrough","readImageNative","_loadParameters","bitmap","metadata","readImageFromRgbaPayload","emit","extensions"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { asUint8Array } from '#utils/bytes';
2
2
  import { CjsFormat } from '../../format/CjsFormat.js';
3
- import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, inspectWithValues, OUTPUT_CMF, OUTPUT_GR2, OUTPUT_SHARED, OUTPUT_GLTF_JSON, OUTPUT_JSON, CLASS_KEYS } from './core/helpers.js';
3
+ import { CjsGeometryFormat } from '../../format/CjsGeometryFormat.js';
4
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, inspectWithValues, CLASS_KEYS } from './core/helpers.js';
4
5
  import { toJsonWithArrayValues } from '../../format/jsonPolicies.js';
5
6
  import { isGlb } from './core/parser.js';
6
7
 
@@ -16,16 +17,16 @@ const FORMAT_NAME = "CjsGltfFormat";
16
17
  * CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit
17
18
  * debug/output projection rather than an intermediate format contract.
18
19
  */
19
- class CjsGltfFormat extends CjsFormat {
20
- #emit = DEFAULT_VALUES.emit;
21
- #source = DEFAULT_VALUES.source;
22
- #buffers = DEFAULT_VALUES.buffers;
23
- #packTangents = DEFAULT_VALUES.packTangents;
24
- #uvHandedness = DEFAULT_VALUES.uvHandedness;
25
- #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
26
- #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
27
- #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
28
- #classes = DEFAULT_VALUES.classes;
20
+ class CjsGltfFormat extends CjsGeometryFormat {
21
+ _emit = DEFAULT_VALUES.emit;
22
+ _source = DEFAULT_VALUES.source;
23
+ _buffers = DEFAULT_VALUES.buffers;
24
+ _packTangents = DEFAULT_VALUES.packTangents;
25
+ _uvHandedness = DEFAULT_VALUES.uvHandedness;
26
+ _rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
27
+ _rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
28
+ _rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
29
+ _classes = DEFAULT_VALUES.classes;
29
30
 
30
31
  /**
31
32
  * Create a reusable format profile.
@@ -45,15 +46,15 @@ class CjsGltfFormat extends CjsFormat {
45
46
  */
46
47
  SetValues(options = {}) {
47
48
  const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);
48
- this.#emit = values.emit;
49
- this.#source = values.source;
50
- this.#buffers = values.buffers;
51
- this.#packTangents = values.packTangents;
52
- this.#uvHandedness = values.uvHandedness;
53
- this.#rebuildMissingNormals = values.rebuildMissingNormals;
54
- this.#rebuildMissingTangents = values.rebuildMissingTangents;
55
- this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;
56
- this.#classes = values.classes;
49
+ this._emit = values.emit;
50
+ this._source = values.source;
51
+ this._buffers = values.buffers;
52
+ this._packTangents = values.packTangents;
53
+ this._uvHandedness = values.uvHandedness;
54
+ this._rebuildMissingNormals = values.rebuildMissingNormals;
55
+ this._rebuildMissingTangents = values.rebuildMissingTangents;
56
+ this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;
57
+ this._classes = values.classes;
57
58
  return this;
58
59
  }
59
60
 
@@ -65,76 +66,18 @@ class CjsGltfFormat extends CjsFormat {
65
66
  */
66
67
  GetValues(options = {}) {
67
68
  return normalizeValues({
68
- emit: this.#emit,
69
- source: this.#source,
70
- buffers: this.#buffers,
71
- packTangents: this.#packTangents,
72
- uvHandedness: this.#uvHandedness,
73
- rebuildMissingNormals: this.#rebuildMissingNormals,
74
- rebuildMissingTangents: this.#rebuildMissingTangents,
75
- rebuildMissingBiNormals: this.#rebuildMissingBiNormals,
76
- classes: this.#classes
69
+ emit: this._emit,
70
+ source: this._source,
71
+ buffers: this._buffers,
72
+ packTangents: this._packTangents,
73
+ uvHandedness: this._uvHandedness,
74
+ rebuildMissingNormals: this._rebuildMissingNormals,
75
+ rebuildMissingTangents: this._rebuildMissingTangents,
76
+ rebuildMissingBiNormals: this._rebuildMissingBiNormals,
77
+ classes: this._classes
77
78
  }, options, FORMAT_NAME);
78
79
  }
79
80
 
80
- /**
81
- * Set multiple node-class constructors for this profile.
82
- *
83
- * @param {object} [classes] Map of node class keys to constructors.
84
- * @returns {CjsGltfFormat} This format profile.
85
- */
86
- SetClasses(classes = {}) {
87
- return this.SetValues({
88
- classes
89
- });
90
- }
91
-
92
- /**
93
- * Set one node-class constructor for this profile.
94
- *
95
- * @param {string} type Node class key.
96
- * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
97
- * @returns {CjsGltfFormat} This format profile.
98
- */
99
- SetClass(type, Class) {
100
- if (Class === null || Class === undefined) {
101
- validateClassKey(type, FORMAT_NAME);
102
- const classes = {
103
- ...this.#classes
104
- };
105
- delete classes[type];
106
- this.#classes = classes;
107
- return this;
108
- }
109
- validateClass(type, Class, FORMAT_NAME);
110
- return this.SetValues({
111
- classes: {
112
- [type]: Class
113
- }
114
- });
115
- }
116
-
117
- /**
118
- * Get a configured node-class constructor.
119
- *
120
- * @param {string} type Node class key.
121
- * @returns {Function|undefined} The registered constructor, if any.
122
- */
123
- GetClass(type) {
124
- validateClassKey(type, FORMAT_NAME);
125
- return this.#classes[type];
126
- }
127
-
128
- /**
129
- * Whether this format profile has a constructor registered for a node key.
130
- *
131
- * @param {string} type Node class key.
132
- * @returns {boolean} True when a constructor is registered.
133
- */
134
- HasClass(type) {
135
- return !!this.GetClass(type);
136
- }
137
-
138
81
  /**
139
82
  * Read glTF/GLB data with this profile's values.
140
83
  *
@@ -232,16 +175,8 @@ class CjsGltfFormat extends CjsFormat {
232
175
  /**
233
176
  * Emit targets for this format (canonical frozen enum).
234
177
  */
235
- static Output = Object.freeze({
236
- JSON: OUTPUT_JSON,
237
- GLTF_JSON: OUTPUT_GLTF_JSON,
238
- SHARED: OUTPUT_SHARED,
239
- GR2: OUTPUT_GR2,
240
- CMF: OUTPUT_CMF
241
- });
242
- static CLASS_KEYS = CLASS_KEYS;
243
- static id = "gltf";
244
- static mediaTypes = Object.freeze(["geometry"]);
178
+ static classKeys = CLASS_KEYS;
179
+ static id = "CjsGltfFormat";
245
180
  static outputs = CjsFormat.defineOutputs({
246
181
  shared: {
247
182
  default: true,
@@ -262,7 +197,7 @@ class CjsGltfFormat extends CjsFormat {
262
197
  decoded: true
263
198
  }
264
199
  });
265
- static extensions = Object.freeze([".gltf", ".glb"]);
200
+ static extensions = [".gltf", ".glb"];
266
201
  }
267
202
 
268
203
  export { CjsGltfFormat, CjsGltfFormat as default };
@@ -1 +1 @@
1
- {"version":3,"file":"CjsGltfFormat.js","sources":["../../../../../src/resource/formats/gltf/CjsGltfFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\n/**\n * Exposed CarbonEngineJS-facing glTF/GLB format class.\n *\n * Keep this file small and reviewable: glTF parsing, accessor decoding,\n * mesh conversion, skin conversion, animation conversion, and geometry helper\n * glue live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GLTF_JSON,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_SHARED,\n inspectWithValues,\n isGlb,\n normalizeValues,\n readWithValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGltfFormat\";\n\n/**\n * glTF/GLB format class that parses documents, decodes accessors, and converts\n * meshes, skins, and animations into shared-mesh, GR2, or CMF output plus debug\n * JSON.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * glTF is the import source; the default public read contract is the shared\n * CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit\n * debug/output projection rather than an intermediate format contract.\n */\nexport class CjsGltfFormat extends CjsFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #source = DEFAULT_VALUES.source;\n #buffers = DEFAULT_VALUES.buffers;\n #packTangents = DEFAULT_VALUES.packTangents;\n #uvHandedness = DEFAULT_VALUES.uvHandedness;\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n #classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this.#emit = values.emit;\n this.#source = values.source;\n this.#buffers = values.buffers;\n this.#packTangents = values.packTangents;\n this.#uvHandedness = values.uvHandedness;\n this.#rebuildMissingNormals = values.rebuildMissingNormals;\n this.#rebuildMissingTangents = values.rebuildMissingTangents;\n this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this.#classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this.#emit,\n source: this.#source,\n buffers: this.#buffers,\n packTangents: this.#packTangents,\n uvHandedness: this.#uvHandedness,\n rebuildMissingNormals: this.#rebuildMissingNormals,\n rebuildMissingTangents: this.#rebuildMissingTangents,\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\n classes: this.#classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Set multiple node-class constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set one node-class constructor for this profile.\n *\n * @param {string} type Node class key.\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetClass(type, Class)\n {\n if (Class === null || Class === undefined)\n {\n validateClassKey(type, FORMAT_NAME);\n const classes = { ...this.#classes };\n delete classes[type];\n this.#classes = classes;\n return this;\n }\n\n validateClass(type, Class, FORMAT_NAME);\n return this.SetValues({ classes: { [type]: Class } });\n }\n\n /**\n * Get a configured node-class constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined} The registered constructor, if any.\n */\n GetClass(type)\n {\n validateClassKey(type, FORMAT_NAME);\n return this.#classes[type];\n }\n\n /**\n * Whether this format profile has a constructor registered for a node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean} True when a constructor is registered.\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Read glTF/GLB data with this profile's values.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Inspect glTF/GLB data without hydrating classes.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsGltfFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Cheap payload sniff for GLB bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload starts with GLB magic.\n */\n static isGlb(input)\n {\n return isGlb(input);\n }\n\n /**\n * Cheap object/text/bytes sniff for glTF-like assets.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input Candidate glTF data.\n * @returns {boolean} True when the input looks like glTF 2.x or GLB.\n */\n static isGltf(input)\n {\n try\n {\n if (isGlb(input)) return true;\n if (input && typeof input === \"object\" && !ArrayBuffer.isView(input) && !(input instanceof ArrayBuffer))\n {\n return !!(input.asset && String(input.asset.version || \"\").startsWith(\"2\"));\n }\n const text = typeof input === \"string\" ? input : new TextDecoder().decode(asUint8Array(input, \"CjsGltfFormat input\"));\n const json = JSON.parse(text);\n return !!(json.asset && String(json.asset.version || \"\").startsWith(\"2\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static Output = Object.freeze({\n JSON: OUTPUT_JSON,\n GLTF_JSON: OUTPUT_GLTF_JSON,\n SHARED: OUTPUT_SHARED,\n GR2: OUTPUT_GR2,\n CMF: OUTPUT_CMF\n });\n static CLASS_KEYS = CLASS_KEYS;\n static id = \"gltf\";\n static mediaTypes = Object.freeze([ \"geometry\" ]);\n static outputs = CjsFormat.defineOutputs({\n shared: { default: true, decoded: true },\n gr2: { decoded: true },\n cmf: { decoded: true },\n json: { role: \"debug\", decoded: true },\n gltfJson: { role: \"debug\", decoded: true }\n });\n static extensions = Object.freeze([ \".gltf\", \".glb\" ]);\n\n}\n\nexport default CjsGltfFormat;\n"],"names":["FORMAT_NAME","CjsGltfFormat","CjsFormat","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","constructor","options","SetValues","values","normalizeValues","GetValues","SetClasses","SetClass","type","Class","undefined","validateClassKey","validateClass","GetClass","HasClass","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","isGlb","isGltf","ArrayBuffer","isView","asset","String","version","startsWith","text","TextDecoder","decode","asUint8Array","json","JSON","parse","Output","Object","freeze","OUTPUT_JSON","GLTF_JSON","OUTPUT_GLTF_JSON","SHARED","OUTPUT_SHARED","GR2","OUTPUT_GR2","CMF","OUTPUT_CMF","CLASS_KEYS","id","mediaTypes","outputs","defineOutputs","shared","default","decoded","gr2","cmf","role","gltfJson","extensions"],"mappings":";;;;;;AA2BA,MAAMA,WAAW,GAAG,eAAe;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,aAAa,SAASC,SAAS,CAC5C;AAEI,EAAA,KAAK,GAAGC,cAAc,CAACC,IAAI;AAC3B,EAAA,OAAO,GAAGD,cAAc,CAACE,MAAM;AAC/B,EAAA,QAAQ,GAAGF,cAAc,CAACG,OAAO;AACjC,EAAA,aAAa,GAAGH,cAAc,CAACI,YAAY;AAC3C,EAAA,aAAa,GAAGJ,cAAc,CAACK,YAAY;AAC3C,EAAA,sBAAsB,GAAGL,cAAc,CAACM,qBAAqB;AAC7D,EAAA,uBAAuB,GAAGN,cAAc,CAACO,sBAAsB;AAC/D,EAAA,wBAAwB,GAAGP,cAAc,CAACQ,uBAAuB;AACjE,EAAA,QAAQ,GAAGR,cAAc,CAACS,OAAO;;AAEjC;AACJ;AACA;AACA;AACA;AACIC,EAAAA,WAAWA,CAACC,OAAO,GAAG,EAAE,EACxB;AACI,IAAA,KAAK,EAAE;AACP,IAAA,IAAI,CAACC,SAAS,CAACD,OAAO,CAAC;AAC3B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIC,EAAAA,SAASA,CAACD,OAAO,GAAG,EAAE,EACtB;AACI,IAAA,MAAME,MAAM,GAAGC,eAAe,CAAC,IAAI,CAACC,SAAS,EAAE,EAAEJ,OAAO,EAAEd,WAAW,CAAC;AAEtE,IAAA,IAAI,CAAC,KAAK,GAAGgB,MAAM,CAACZ,IAAI;AACxB,IAAA,IAAI,CAAC,OAAO,GAAGY,MAAM,CAACX,MAAM;AAC5B,IAAA,IAAI,CAAC,QAAQ,GAAGW,MAAM,CAACV,OAAO;AAC9B,IAAA,IAAI,CAAC,aAAa,GAAGU,MAAM,CAACT,YAAY;AACxC,IAAA,IAAI,CAAC,aAAa,GAAGS,MAAM,CAACR,YAAY;AACxC,IAAA,IAAI,CAAC,sBAAsB,GAAGQ,MAAM,CAACP,qBAAqB;AAC1D,IAAA,IAAI,CAAC,uBAAuB,GAAGO,MAAM,CAACN,sBAAsB;AAC5D,IAAA,IAAI,CAAC,wBAAwB,GAAGM,MAAM,CAACL,uBAAuB;AAC9D,IAAA,IAAI,CAAC,QAAQ,GAAGK,MAAM,CAACJ,OAAO;AAE9B,IAAA,OAAO,IAAI;AACf,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACIM,EAAAA,SAASA,CAACJ,OAAO,GAAG,EAAE,EACtB;AACI,IAAA,OAAOG,eAAe,CAAC;AACnBb,MAAAA,IAAI,EAAE,IAAI,CAAC,KAAK;AAChBC,MAAAA,MAAM,EAAE,IAAI,CAAC,OAAO;AACpBC,MAAAA,OAAO,EAAE,IAAI,CAAC,QAAQ;AACtBC,MAAAA,YAAY,EAAE,IAAI,CAAC,aAAa;AAChCC,MAAAA,YAAY,EAAE,IAAI,CAAC,aAAa;AAChCC,MAAAA,qBAAqB,EAAE,IAAI,CAAC,sBAAsB;AAClDC,MAAAA,sBAAsB,EAAE,IAAI,CAAC,uBAAuB;AACpDC,MAAAA,uBAAuB,EAAE,IAAI,CAAC,wBAAwB;MACtDC,OAAO,EAAE,IAAI,CAAC;AAClB,KAAC,EAAEE,OAAO,EAAEd,WAAW,CAAC;AAC5B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACImB,EAAAA,UAAUA,CAACP,OAAO,GAAG,EAAE,EACvB;IACI,OAAO,IAAI,CAACG,SAAS,CAAC;AAAEH,MAAAA;AAAQ,KAAC,CAAC;AACtC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIQ,EAAAA,QAAQA,CAACC,IAAI,EAAEC,KAAK,EACpB;AACI,IAAA,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKC,SAAS,EACzC;AACIC,MAAAA,gBAAgB,CAACH,IAAI,EAAErB,WAAW,CAAC;AACnC,MAAA,MAAMY,OAAO,GAAG;QAAE,GAAG,IAAI,CAAC;OAAU;MACpC,OAAOA,OAAO,CAACS,IAAI,CAAC;AACpB,MAAA,IAAI,CAAC,QAAQ,GAAGT,OAAO;AACvB,MAAA,OAAO,IAAI;AACf,IAAA;AAEAa,IAAAA,aAAa,CAACJ,IAAI,EAAEC,KAAK,EAAEtB,WAAW,CAAC;IACvC,OAAO,IAAI,CAACe,SAAS,CAAC;AAAEH,MAAAA,OAAO,EAAE;AAAE,QAAA,CAACS,IAAI,GAAGC;AAAM;AAAE,KAAC,CAAC;AACzD,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACII,QAAQA,CAACL,IAAI,EACb;AACIG,IAAAA,gBAAgB,CAACH,IAAI,EAAErB,WAAW,CAAC;AACnC,IAAA,OAAO,IAAI,CAAC,QAAQ,CAACqB,IAAI,CAAC;AAC9B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACIM,QAAQA,CAACN,IAAI,EACb;AACI,IAAA,OAAO,CAAC,CAAC,IAAI,CAACK,QAAQ,CAACL,IAAI,CAAC;AAChC,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIO,EAAAA,IAAIA,CAACC,KAAK,EAAEf,OAAO,GAAG,EAAE,EACxB;AACI,IAAA,OAAOgB,cAAc,CAAC,IAAI,EAAED,KAAK,EAAE,IAAI,CAACX,SAAS,CAACJ,OAAO,CAAC,CAAC;AAC/D,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACIiB,EAAAA,OAAOA,CAACF,KAAK,EAAEf,OAAO,GAAG,EAAE,EAC3B;IACI,OAAOkB,iBAAiB,CAACH,KAAK,EAAE,IAAI,CAACX,SAAS,CAACJ,OAAO,CAAC,CAAC;AAC5D,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACImB,MAAMA,CAACC,KAAK,EACZ;IACI,OAAOC,qBAAW,CAACD,KAAK,CAAC;AAC7B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,OAAOE,IAAIA,CAACP,KAAK,EAAEf,OAAO,GAAG,EAAE,EAC/B;AACI,IAAA,OAAOgB,cAAc,CAAC7B,aAAa,EAAE4B,KAAK,EAAEZ,eAAe,CAACd,cAAc,EAAEW,OAAO,EAAEd,WAAW,CAAC,CAAC;AACtG,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,OAAOqC,OAAOA,CAACR,KAAK,EAAEf,OAAO,GAAG,EAAE,EAClC;AACI,IAAA,OAAOkB,iBAAiB,CAACH,KAAK,EAAEZ,eAAe,CAACd,cAAc,EAAEW,OAAO,EAAEd,WAAW,CAAC,CAAC;AAC1F,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOsC,MAAMA,CAACJ,KAAK,EACnB;IACI,OAAOC,qBAAW,CAACD,KAAK,CAAC;AAC7B,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOK,KAAKA,CAACV,KAAK,EAClB;IACI,OAAOU,KAAK,CAACV,KAAK,CAAC;AACvB,EAAA;;AAEA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOW,MAAMA,CAACX,KAAK,EACnB;IACI,IACA;AACI,MAAA,IAAIU,KAAK,CAACV,KAAK,CAAC,EAAE,OAAO,IAAI;MAC7B,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAACY,WAAW,CAACC,MAAM,CAACb,KAAK,CAAC,IAAI,EAAEA,KAAK,YAAYY,WAAW,CAAC,EACvG;QACI,OAAO,CAAC,EAAEZ,KAAK,CAACc,KAAK,IAAIC,MAAM,CAACf,KAAK,CAACc,KAAK,CAACE,OAAO,IAAI,EAAE,CAAC,CAACC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC/E,MAAA;MACA,MAAMC,IAAI,GAAG,OAAOlB,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAG,IAAImB,WAAW,EAAE,CAACC,MAAM,CAACC,YAAY,CAACrB,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACrH,MAAA,MAAMsB,IAAI,GAAGC,IAAI,CAACC,KAAK,CAACN,IAAI,CAAC;MAC7B,OAAO,CAAC,EAAEI,IAAI,CAACR,KAAK,IAAIC,MAAM,CAACO,IAAI,CAACR,KAAK,CAACE,OAAO,IAAI,EAAE,CAAC,CAACC,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7E,IAAA,CAAC,CACD,MACA;AACI,MAAA,OAAO,KAAK;AAChB,IAAA;AACJ,EAAA;;AAEA;AACJ;AACA;AACI,EAAA,OAAOQ,MAAM,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC1BJ,IAAAA,IAAI,EAAEK,WAAW;AACjBC,IAAAA,SAAS,EAAEC,gBAAgB;AAC3BC,IAAAA,MAAM,EAAEC,aAAa;AACrBC,IAAAA,GAAG,EAAEC,UAAU;AACfC,IAAAA,GAAG,EAAEC;AACT,GAAC,CAAC;EACF,OAAOC,UAAU,GAAGA,UAAU;EAC9B,OAAOC,EAAE,GAAG,MAAM;EAClB,OAAOC,UAAU,GAAGb,MAAM,CAACC,MAAM,CAAC,CAAE,UAAU,CAAE,CAAC;AACjD,EAAA,OAAOa,OAAO,GAAGnE,SAAS,CAACoE,aAAa,CAAC;AACrCC,IAAAA,MAAM,EAAE;AAAEC,MAAAA,OAAO,EAAE,IAAI;AAAEC,MAAAA,OAAO,EAAE;KAAM;AACxCC,IAAAA,GAAG,EAAE;AAAED,MAAAA,OAAO,EAAE;KAAM;AACtBE,IAAAA,GAAG,EAAE;AAAEF,MAAAA,OAAO,EAAE;KAAM;AACtBtB,IAAAA,IAAI,EAAE;AAAEyB,MAAAA,IAAI,EAAE,OAAO;AAAEH,MAAAA,OAAO,EAAE;KAAM;AACtCI,IAAAA,QAAQ,EAAE;AAAED,MAAAA,IAAI,EAAE,OAAO;AAAEH,MAAAA,OAAO,EAAE;AAAK;AAC7C,GAAC,CAAC;EACF,OAAOK,UAAU,GAAGvB,MAAM,CAACC,MAAM,CAAC,CAAE,OAAO,EAAE,MAAM,CAAE,CAAC;AAE1D;;;;"}
1
+ {"version":3,"file":"CjsGltfFormat.js","sources":["../../../../../src/resource/formats/gltf/CjsGltfFormat.js"],"sourcesContent":["import { asUint8Array } from \"#utils/bytes\";\nimport { CjsFormat } from \"../../format/CjsFormat.js\";\nimport { CjsGeometryFormat } from \"../../format/CjsGeometryFormat.js\";\n/**\n * Exposed CarbonEngineJS-facing glTF/GLB format class.\n *\n * Keep this file small and reviewable: glTF parsing, accessor decoding,\n * mesh conversion, skin conversion, animation conversion, and geometry helper\n * glue live under src/core.\n */\n\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GLTF_JSON,\n OUTPUT_GR2,\n OUTPUT_JSON,\n OUTPUT_SHARED,\n inspectWithValues,\n isGlb,\n normalizeValues,\n readWithValues,\n toJsonValue,\n} from \"./core/helpers.js\";\n\nconst FORMAT_NAME = \"CjsGltfFormat\";\n\n/**\n * glTF/GLB format class that parses documents, decodes accessors, and converts\n * meshes, skins, and animations into shared-mesh, GR2, or CMF output plus debug\n * JSON.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary.\n * glTF is the import source; the default public read contract is the shared\n * CarbonEngineJS mesh, skeleton, and animation graph. JSON is an explicit\n * debug/output projection rather than an intermediate format contract.\n */\nexport class CjsGltfFormat extends CjsGeometryFormat\n{\n\n _emit = DEFAULT_VALUES.emit;\n _source = DEFAULT_VALUES.source;\n _buffers = DEFAULT_VALUES.buffers;\n _packTangents = DEFAULT_VALUES.packTangents;\n _uvHandedness = DEFAULT_VALUES.uvHandedness;\n _rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n _rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n _rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n _classes = DEFAULT_VALUES.classes;\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format values.\n */\n constructor(options = {})\n {\n super();\n this.SetValues(options);\n }\n\n /**\n * Set format values for this reusable profile.\n *\n * @param {object} [options] Values to merge into the profile.\n * @returns {CjsGltfFormat} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options, FORMAT_NAME);\n\n this._emit = values.emit;\n this._source = values.source;\n this._buffers = values.buffers;\n this._packTangents = values.packTangents;\n this._uvHandedness = values.uvHandedness;\n this._rebuildMissingNormals = values.rebuildMissingNormals;\n this._rebuildMissingTangents = values.rebuildMissingTangents;\n this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;\n this._classes = values.classes;\n\n return this;\n }\n\n /**\n * Get this profile's current values, optionally with per-call overrides.\n *\n * @param {object} [options] Optional values to merge into a copy.\n * @returns {object} A copy of the effective values.\n */\n GetValues(options = {})\n {\n return normalizeValues({\n emit: this._emit,\n source: this._source,\n buffers: this._buffers,\n packTangents: this._packTangents,\n uvHandedness: this._uvHandedness,\n rebuildMissingNormals: this._rebuildMissingNormals,\n rebuildMissingTangents: this._rebuildMissingTangents,\n rebuildMissingBiNormals: this._rebuildMissingBiNormals,\n classes: this._classes\n }, options, FORMAT_NAME);\n }\n\n /**\n * Read glTF/GLB data with this profile's values.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Inspect glTF/GLB data without hydrating classes.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Per-call value overrides.\n * @returns {object} Plain summary data.\n */\n Inspect(input, options = {})\n {\n return inspectWithValues(input, this.GetValues(options));\n }\n\n /**\n * Convert format output to JSON-compatible data.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n ToJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Static one-shot read. Static methods use camelCase by convention.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} The shared CarbonEngineJS JSON geometry schema.\n */\n static read(input, options = {})\n {\n return readWithValues(CjsGltfFormat, input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input glTF object, JSON text/bytes, or GLB bytes.\n * @param {object} [options] Format values.\n * @returns {object} Plain summary data.\n */\n static inspect(input, options = {})\n {\n return inspectWithValues(input, normalizeValues(DEFAULT_VALUES, options, FORMAT_NAME));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {any} value Format output to convert.\n * @returns {any} Plain JSON-compatible data.\n */\n static toJSON(value)\n {\n return toJsonValue(value);\n }\n\n /**\n * Cheap payload sniff for GLB bytes.\n *\n * @param {Uint8Array|ArrayBuffer|DataView} input Candidate bytes.\n * @returns {boolean} True when the payload starts with GLB magic.\n */\n static isGlb(input)\n {\n return isGlb(input);\n }\n\n /**\n * Cheap object/text/bytes sniff for glTF-like assets.\n *\n * @param {object|string|Uint8Array|ArrayBuffer|DataView} input Candidate glTF data.\n * @returns {boolean} True when the input looks like glTF 2.x or GLB.\n */\n static isGltf(input)\n {\n try\n {\n if (isGlb(input)) return true;\n if (input && typeof input === \"object\" && !ArrayBuffer.isView(input) && !(input instanceof ArrayBuffer))\n {\n return !!(input.asset && String(input.asset.version || \"\").startsWith(\"2\"));\n }\n const text = typeof input === \"string\" ? input : new TextDecoder().decode(asUint8Array(input, \"CjsGltfFormat input\"));\n const json = JSON.parse(text);\n return !!(json.asset && String(json.asset.version || \"\").startsWith(\"2\"));\n }\n catch\n {\n return false;\n }\n }\n\n /**\n * Emit targets for this format (canonical frozen enum).\n */\n static classKeys = CLASS_KEYS;\n static id = \"CjsGltfFormat\";\n static outputs = CjsFormat.defineOutputs({\n shared: { default: true, decoded: true },\n gr2: { decoded: true },\n cmf: { decoded: true },\n json: { role: \"debug\", decoded: true },\n gltfJson: { role: \"debug\", decoded: true }\n });\n static extensions = [ \".gltf\", \".glb\" ];\n\n}\n\nexport default CjsGltfFormat;\n"],"names":["FORMAT_NAME","CjsGltfFormat","CjsGeometryFormat","_emit","DEFAULT_VALUES","emit","_source","source","_buffers","buffers","_packTangents","packTangents","_uvHandedness","uvHandedness","_rebuildMissingNormals","rebuildMissingNormals","_rebuildMissingTangents","rebuildMissingTangents","_rebuildMissingBiNormals","rebuildMissingBiNormals","_classes","classes","constructor","options","SetValues","values","normalizeValues","GetValues","Read","input","readWithValues","Inspect","inspectWithValues","ToJSON","value","toJsonValue","read","inspect","toJSON","isGlb","isGltf","ArrayBuffer","isView","asset","String","version","startsWith","text","TextDecoder","decode","asUint8Array","json","JSON","parse","classKeys","CLASS_KEYS","id","outputs","CjsFormat","defineOutputs","shared","default","decoded","gr2","cmf","role","gltfJson","extensions"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { CjsGeometryFormat } from '../../../format/CjsGeometryFormat.js';
1
2
  import { toJsonWithArrayValues } from '../../../format/jsonPolicies.js';
2
3
  import { CLASS_KEYS as CLASS_KEYS$1, hydrateShared } from './json.js';
3
4
  import { buildCmfFromShared } from '../../cmf/core/shared.js';
@@ -32,19 +33,9 @@ const DEFAULT_VALUES = Object.freeze({
32
33
  });
33
34
  const OPTION_KEYS = new Set(["emit", "source", "buffers", "packTangents", "uvHandedness", "rebuildMissingNormals", "rebuildMissingTangents", "rebuildMissingBiNormals", "classes"]);
34
35
 
35
- /** Validates a requested runtime class key for the glTF format reader. */
36
- function validateClassKey(key, readerName = "CjsGltfFormat") {
37
- if (!CLASS_KEYS.includes(key)) {
38
- throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(", ")}`);
39
- }
40
- }
41
-
42
36
  /** Validates a resolved runtime class constructor for the glTF format reader. */
43
37
  function validateClass(key, Class, readerName = "CjsGltfFormat") {
44
- validateClassKey(key, readerName);
45
- if (typeof Class !== "function") {
46
- throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);
47
- }
38
+ CjsGeometryFormat.validateClass(key, Class, CLASS_KEYS, readerName);
48
39
  }
49
40
  function mergeClasses(base, classes, readerName) {
50
41
  if (!classes || typeof classes !== "object") {
@@ -283,5 +274,5 @@ function inspectWithValues(input, values) {
283
274
  });
284
275
  }
285
276
 
286
- export { CLASS_KEYS, DEFAULT_VALUES, OUTPUT_CMF, OUTPUT_GLTF_JSON, OUTPUT_GR2, OUTPUT_JSON, OUTPUT_SHARED, inspectWithValues, normalizeValues, readWithValues, toJsonWithArrayValues as toJsonValue, validateClass, validateClassKey };
277
+ export { CLASS_KEYS, DEFAULT_VALUES, OUTPUT_CMF, OUTPUT_GLTF_JSON, OUTPUT_GR2, OUTPUT_JSON, OUTPUT_SHARED, inspectWithValues, normalizeValues, readWithValues, toJsonWithArrayValues as toJsonValue, validateClass };
287
278
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateShared } from \"./json.js\";\nimport { buildCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { CMF_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport {\n inspectGltf,\n isGlb,\n parseGltfToShared,\n parseInput\n} from \"./parser.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport {\n cross,\n normalize\n} from \"#math/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_SHARED,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/** Validates a requested runtime class key for the glTF format reader. */\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`${readerName}: unknown class key ${JSON.stringify(key)}; expected one of ${CLASS_KEYS.join(\", \")}`);\n }\n}\n\n/** Validates a resolved runtime class constructor for the glTF format reader. */\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n validateClassKey(key, readerName);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`${readerName}: class ${JSON.stringify(key)} must be a constructor`);\n }\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Normalizes reader options against their supported defaults for the glTF format\n * reader.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_SHARED;\n if (emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED ||\n emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMeshData(format, root, mesh, meshIndex, lodIndex, values)\n{\n const\n common = { options: values, raw: null, shared: root, mesh, meshIndex, lodIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n}\n\nfunction rebuildMissingMeshData(format, shared, values)\n{\n for (let meshIndex = 0; meshIndex < shared.meshes.length; meshIndex++)\n {\n const mesh = shared.meshes[meshIndex];\n const lods = mesh.lods?.length ? mesh.lods : [ mesh ];\n for (let lodIndex = 0; lodIndex < lods.length; lodIndex++)\n {\n rebuildMeshData(format, shared, lods[lodIndex], meshIndex, lodIndex, values);\n }\n if (mesh.lods?.length)\n {\n mesh.vertex = mesh.lods[0].vertex;\n mesh.indices = mesh.lods[0].indices;\n }\n }\n}\n\n/** Reads input using normalized format options for the glTF format reader. */\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const shared = parseGltfToShared(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, shared, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromShared(shared),\n values.classes,\n { source: values.source },\n \"CjsGltfFormat CMF\"\n );\n }\n if (values.emit === OUTPUT_JSON || values.emit === OUTPUT_GLTF_JSON)\n {\n return toJsonValue(shared);\n }\n return hydrateShared(shared, { classes: values.classes, source: values.source });\n}\n\n/** Inspects input using normalized format options for the glTF format reader. */\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\n/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClassKey","key","readerName","includes","Error","JSON","stringify","join","validateClass","Class","TypeError","mergeClasses","base","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMeshData","root","lodIndex","common","raw","shared","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","rebuildMissingMeshData","meshes","lods","readWithValues","input","parsed","parseInput","parseGltfToShared","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","toJsonValue","hydrateShared","inspectWithValues","inspectGltf"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gltf/core/helpers.js"],"sourcesContent":["/**\n * Internal read-pipeline glue for CjsGltfFormat.\n */\n\nimport { CjsGeometryFormat } from \"../../../format/CjsGeometryFormat.js\";\nimport { toJsonWithArrayValues as toJsonValue } from \"../../../format/jsonPolicies.js\";\nimport { CLASS_KEYS as GR2_CLASS_KEYS, hydrateShared } from \"./json.js\";\nimport { buildCmfFromShared } from \"../../cmf/core/shared.js\";\nimport { CMF_CLASS_KEYS } from \"../../cmf/core/constants.js\";\nimport {\n inspectGltf,\n isGlb,\n parseGltfToShared,\n parseInput\n} from \"./parser.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\nimport {\n generateBiNormals,\n generateNormals,\n generateTangents\n} from \"#math/mesh\";\nimport {\n packTangentFrames\n} from \"#math/tangent\";\nimport {\n cross,\n normalize\n} from \"#math/vec3\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport { isGlb };\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GLTF_JSON = \"gltfJson\";\nexport const OUTPUT_SHARED = \"shared\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_CMF = \"cmf\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_SHARED,\n source: \"memory\",\n buffers: null,\n packTangents: false,\n uvHandedness: \"right\",\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"source\",\n \"buffers\",\n \"packTangents\",\n \"uvHandedness\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"classes\"\n]);\n\n/** Validates a requested runtime class key for the glTF format reader. */\nexport function validateClassKey(key, readerName = \"CjsGltfFormat\")\n{\n CjsGeometryFormat.validateClassKey(key, CLASS_KEYS, readerName);\n}\n\n/** Validates a resolved runtime class constructor for the glTF format reader. */\nexport function validateClass(key, Class, readerName = \"CjsGltfFormat\")\n{\n CjsGeometryFormat.validateClass(key, Class, CLASS_KEYS, readerName);\n}\n\nfunction mergeClasses(base, classes, readerName)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(`${readerName}: classes option must be an object`);\n }\n\n const next = { ...base };\n for (const [ key, Class ] of Object.entries(classes))\n {\n if (Class === null || Class === undefined)\n {\n delete next[key];\n continue;\n }\n validateClass(key, Class, readerName);\n next[key] = Class;\n }\n return next;\n}\n\nfunction validateRule(name, value, readerName)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`${readerName}: ${name} must be true, false, or a function`);\n}\n\nfunction normalizeUvHandedness(value, readerName)\n{\n if (value === undefined || value === null) return DEFAULT_VALUES.uvHandedness;\n if (value === \"right\" || value === 1 || value === \"positive\") return \"right\";\n if (value === \"left\" || value === -1 || value === \"negative\") return \"left\";\n throw new TypeError(`${readerName}: uvHandedness must be \"right\" or \"left\"`);\n}\n\n/**\n * Normalizes reader options against their supported defaults for the glTF format\n * reader.\n */\nexport function normalizeValues(base, options = {}, readerName = \"CjsGltfFormat\")\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(`${readerName}: options must be an object`);\n }\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`${readerName}: unknown option ${JSON.stringify(key)}`);\n }\n }\n\n const values = { ...base, ...options };\n const emit = normalizeEmit(values.emit, readerName);\n const classes = Object.prototype.hasOwnProperty.call(options, \"classes\")\n ? mergeClasses(base.classes || {}, options.classes, readerName)\n : { ...(base.classes || {}) };\n if ((emit === OUTPUT_GR2 || emit === OUTPUT_CMF) && !hasClasses(classes))\n {\n throw new TypeError(`${readerName}: emit \"${emit}\" requires explicit classes`);\n }\n if (typeof values.source !== \"string\" || !values.source)\n {\n values.source = DEFAULT_VALUES.source;\n }\n\n return {\n emit,\n source: values.source,\n buffers: values.buffers || null,\n packTangents: validateRule(\"packTangents\", values.packTangents, readerName),\n uvHandedness: normalizeUvHandedness(values.uvHandedness, readerName),\n rebuildMissingNormals: validateRule(\"rebuildMissingNormals\", values.rebuildMissingNormals, readerName),\n rebuildMissingTangents: validateRule(\"rebuildMissingTangents\", values.rebuildMissingTangents, readerName),\n rebuildMissingBiNormals: validateRule(\"rebuildMissingBiNormals\", values.rebuildMissingBiNormals, readerName),\n classes\n };\n}\n\nfunction normalizeEmit(emit, readerName)\n{\n if (emit === undefined || emit === null) return OUTPUT_SHARED;\n if (emit === OUTPUT_JSON || emit === OUTPUT_GLTF_JSON || emit === OUTPUT_SHARED ||\n emit === OUTPUT_GR2 || emit === OUTPUT_CMF) return emit;\n throw new TypeError(`${readerName}: emit must be \"${OUTPUT_SHARED}\", \"${OUTPUT_GLTF_JSON}\", \"${OUTPUT_GR2}\", or \"${OUTPUT_CMF}\", got ${JSON.stringify(emit)}`);\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = mesh && mesh.vertex && mesh.vertex[channel];\n if (!value || value.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires mesh.vertex.${channel} for mesh ${name}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n if (group && group.faces) faces.push(...group.faces);\n }\n if (faces.length === 0)\n {\n const name = mesh && mesh.name ? JSON.stringify(mesh.name) : `#${meshIndex}`;\n throw new Error(`CjsGltfFormat: ${feature} requires triangle indices for mesh ${name}`);\n }\n return faces;\n}\n\nfunction shouldApplyMeshRule(format, rule, context)\n{\n if (typeof rule === \"function\")\n {\n const result = rule({ format, reader: format, ...context });\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGltfFormat: ${context.feature} rule must return true or false`);\n }\n return result;\n }\n return rule;\n}\n\nfunction vertexCount(mesh)\n{\n return mesh.vertex.position.length / 3;\n}\n\nfunction tangentXyz(mesh)\n{\n const\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"tangent conversion\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3) return tangent.slice();\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n out[o] = tangent[i];\n out[o + 1] = tangent[i + 1];\n out[o + 2] = tangent[i + 2];\n }\n return out;\n}\n\nfunction generatedBiNormalsForMesh(mesh, values)\n{\n const\n normals = requireVertexChannel(mesh, 0, \"normal\", \"binormal generation\"),\n tangent = requireVertexChannel(mesh, 0, \"tangent\", \"binormal generation\"),\n count = vertexCount(mesh),\n width = tangent.length / count;\n\n if (width === 3)\n {\n return generateBiNormals(normals, tangent, { uvHandedness: values.uvHandedness });\n }\n\n if (width !== 4) throw new Error(\"CjsGltfFormat: tangent channel must have 3 or 4 components per vertex\");\n\n const out = new Array(count * 3);\n for (let i = 0, o = 0; i < tangent.length; i += 4, o += 3)\n {\n const b = normalize(\n [ 0, 0, 0 ],\n cross(\n [ 0, 0, 0 ],\n [ normals[o], normals[o + 1], normals[o + 2] ],\n [ tangent[i], tangent[i + 1], tangent[i + 2] ]\n )\n );\n const sign = tangent[i + 3] < 0 ? -1 : 1;\n out[o] = b[0] * sign;\n out[o + 1] = b[1] * sign;\n out[o + 2] = b[2] * sign;\n }\n return out;\n}\n\nfunction rebuildMeshData(format, root, mesh, meshIndex, lodIndex, values)\n{\n const\n common = { options: values, raw: null, shared: root, mesh, meshIndex, lodIndex },\n shouldPackTangents = shouldApplyMeshRule(\n format,\n values.packTangents,\n { ...common, feature: \"packTangents\", channel: \"tangent\" }\n );\n\n if (!hasVertexChannel(mesh, \"normal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingNormals,\n { ...common, feature: \"rebuildMissingNormals\", channel: \"normal\" }) || shouldPackTangents))\n {\n mesh.vertex.normal = generateNormals(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingTangents,\n { ...common, feature: \"rebuildMissingTangents\", channel: \"tangent\" }) || shouldPackTangents))\n {\n mesh.vertex.tangent = generateTangents(\n requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\")\n );\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && (shouldApplyMeshRule(\n format,\n values.rebuildMissingBiNormals,\n { ...common, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }) || shouldPackTangents))\n {\n mesh.vertex.binormal = generatedBiNormalsForMesh(mesh, values);\n }\n\n if (shouldPackTangents)\n {\n mesh.vertex.tangent = packTangentFrames(\n requireVertexChannel(mesh, meshIndex, \"normal\", \"packTangents\"),\n tangentXyz(mesh),\n requireVertexChannel(mesh, meshIndex, \"binormal\", \"packTangents\")\n );\n mesh.vertex.normal = [];\n mesh.vertex.binormal = [];\n }\n}\n\nfunction rebuildMissingMeshData(format, shared, values)\n{\n for (let meshIndex = 0; meshIndex < shared.meshes.length; meshIndex++)\n {\n const mesh = shared.meshes[meshIndex];\n const lods = mesh.lods?.length ? mesh.lods : [ mesh ];\n for (let lodIndex = 0; lodIndex < lods.length; lodIndex++)\n {\n rebuildMeshData(format, shared, lods[lodIndex], meshIndex, lodIndex, values);\n }\n if (mesh.lods?.length)\n {\n mesh.vertex = mesh.lods[0].vertex;\n mesh.indices = mesh.lods[0].indices;\n }\n }\n}\n\n/** Reads input using normalized format options for the glTF format reader. */\nexport function readWithValues(format, input, values)\n{\n const parsed = parseInput(input);\n const shared = parseGltfToShared(parsed.gltf, {\n binaryChunk: parsed.binaryChunk,\n source: values.source,\n buffers: values.buffers\n });\n rebuildMissingMeshData(format, shared, values);\n if (values.emit === OUTPUT_CMF)\n {\n return hydrateCmf(\n buildCmfFromShared(shared),\n values.classes,\n { source: values.source },\n \"CjsGltfFormat CMF\"\n );\n }\n if (values.emit === OUTPUT_JSON || values.emit === OUTPUT_GLTF_JSON)\n {\n return toJsonValue(shared);\n }\n return hydrateShared(shared, { classes: values.classes, source: values.source });\n}\n\n/** Inspects input using normalized format options for the glTF format reader. */\nexport function inspectWithValues(input, values)\n{\n const parsed = parseInput(input);\n return inspectGltf(parsed.gltf, { format: parsed.format, source: values.source });\n}\n\n/** Converts a parsed payload into a JSON-safe value for the glTF format reader. */\n/** The shared JSON policy for this reader, under the name its callers use. */\nexport { toJsonValue };\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GLTF_JSON","OUTPUT_SHARED","OUTPUT_GR2","OUTPUT_CMF","DEFAULT_VALUES","emit","source","buffers","packTangents","uvHandedness","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","classes","OPTION_KEYS","validateClass","key","Class","readerName","CjsGeometryFormat","mergeClasses","base","TypeError","next","entries","undefined","validateRule","name","value","normalizeUvHandedness","normalizeValues","options","keys","has","JSON","stringify","values","normalizeEmit","prototype","hasOwnProperty","call","hasClasses","some","hasVertexChannel","mesh","channel","vertex","length","requireVertexChannel","meshIndex","feature","Error","triangleFaces","faces","group","indices","push","shouldApplyMeshRule","format","rule","context","result","reader","vertexCount","position","tangentXyz","tangent","count","width","slice","out","i","o","generatedBiNormalsForMesh","normals","generateBiNormals","b","normalize","cross","sign","rebuildMeshData","root","lodIndex","common","raw","shared","shouldPackTangents","normal","generateNormals","generateTangents","binormal","packTangentFrames","rebuildMissingMeshData","meshes","lods","readWithValues","input","parsed","parseInput","parseGltfToShared","gltf","binaryChunk","hydrateCmf","buildCmfFromShared","toJsonValue","hydrateShared","inspectWithValues","inspectGltf"],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import { CjsFormat } from '../../format/CjsFormat.js';
2
+ import { CjsGeometryFormat } from '../../format/CjsGeometryFormat.js';
2
3
  import { curves } from './core/curves.js';
3
4
  import { GR2_MAGICS, bytesToHex } from './core/reader.js';
4
5
  import { tangents } from './core/tangents.js';
5
6
  import { isGsfRaw, projectGsf, inspectGsfRaw } from './core/gsf.js';
6
7
  import { writeGr2, writeSharedGr2 } from './core/writer.js';
7
- import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readWithValues, readRawInput, inspectRawGr2Result, toJsonValue, OUTPUT_JSON, OUTPUT_GR2, OUTPUT_GR2_JSON, OUTPUT_CMF, OUTPUT_RAW, CLASS_KEYS } from './core/helpers.js';
8
+ import { DEFAULT_VALUES, normalizeValues, readWithValues, readRawInput, inspectRawGr2Result, toJsonValue, CLASS_KEYS } from './core/helpers.js';
8
9
 
9
10
  /**
10
11
  * CarbonEngineJS-facing GR2/GSF reader and CMF-first GR2 geometry writer.
@@ -15,14 +16,14 @@ import { DEFAULT_VALUES, normalizeValues, validateClassKey, validateClass, readW
15
16
  * writes pure-JavaScript GR2 geometry from CMF without pretending those
16
17
  * classes are the engine runtime itself.
17
18
  */
18
- class CjsGr2Format extends CjsFormat {
19
- #emit = DEFAULT_VALUES.emit;
20
- #decompressCurves = DEFAULT_VALUES.decompressCurves;
21
- #unpackTangents = DEFAULT_VALUES.unpackTangents;
22
- #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
23
- #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
24
- #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
25
- #classes = {};
19
+ class CjsGr2Format extends CjsGeometryFormat {
20
+ _emit = DEFAULT_VALUES.emit;
21
+ _decompressCurves = DEFAULT_VALUES.decompressCurves;
22
+ _unpackTangents = DEFAULT_VALUES.unpackTangents;
23
+ _rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;
24
+ _rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;
25
+ _rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;
26
+ _classes = {};
26
27
 
27
28
  /**
28
29
  * Create a reusable format profile.
@@ -42,13 +43,13 @@ class CjsGr2Format extends CjsFormat {
42
43
  */
43
44
  SetValues(options = {}) {
44
45
  const values = normalizeValues(this.GetValues(), options);
45
- this.#emit = values.emit;
46
- this.#decompressCurves = values.decompressCurves;
47
- this.#unpackTangents = values.unpackTangents;
48
- this.#rebuildMissingNormals = values.rebuildMissingNormals;
49
- this.#rebuildMissingTangents = values.rebuildMissingTangents;
50
- this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;
51
- this.#classes = values.classes;
46
+ this._emit = values.emit;
47
+ this._decompressCurves = values.decompressCurves;
48
+ this._unpackTangents = values.unpackTangents;
49
+ this._rebuildMissingNormals = values.rebuildMissingNormals;
50
+ this._rebuildMissingTangents = values.rebuildMissingTangents;
51
+ this._rebuildMissingBiNormals = values.rebuildMissingBiNormals;
52
+ this._classes = values.classes;
52
53
  return this;
53
54
  }
54
55
 
@@ -60,70 +61,16 @@ class CjsGr2Format extends CjsFormat {
60
61
  */
61
62
  GetValues(options = {}) {
62
63
  return normalizeValues({
63
- emit: this.#emit,
64
- decompressCurves: this.#decompressCurves,
65
- unpackTangents: this.#unpackTangents,
66
- rebuildMissingNormals: this.#rebuildMissingNormals,
67
- rebuildMissingTangents: this.#rebuildMissingTangents,
68
- rebuildMissingBiNormals: this.#rebuildMissingBiNormals,
69
- classes: this.#classes
64
+ emit: this._emit,
65
+ decompressCurves: this._decompressCurves,
66
+ unpackTangents: this._unpackTangents,
67
+ rebuildMissingNormals: this._rebuildMissingNormals,
68
+ rebuildMissingTangents: this._rebuildMissingTangents,
69
+ rebuildMissingBiNormals: this._rebuildMissingBiNormals,
70
+ classes: this._classes
70
71
  }, options);
71
72
  }
72
73
 
73
- /**
74
- * Set multiple GR2 JSON node constructors for this profile.
75
- *
76
- * @param {object} [classes] Map of node class keys to constructors.
77
- * @returns {CjsGr2Format} This format profile.
78
- */
79
- SetClasses(classes = {}) {
80
- return this.SetValues({
81
- classes
82
- });
83
- }
84
-
85
- /**
86
- * Set a GR2 JSON node constructor for this profile.
87
- *
88
- * @param {string} type Node class key.
89
- * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.
90
- * @returns {CjsGr2Format} This format profile.
91
- */
92
- SetClass(type, Class) {
93
- validateClassKey(type);
94
- if (Class === null || Class === undefined) {
95
- delete this.#classes[type];
96
- return this;
97
- }
98
- validateClass(type, Class);
99
- this.#classes = {
100
- ...this.#classes,
101
- [type]: Class
102
- };
103
- return this;
104
- }
105
-
106
- /**
107
- * Get a configured GR2 JSON node constructor.
108
- *
109
- * @param {string} type Node class key.
110
- * @returns {Function|undefined}
111
- */
112
- GetClass(type) {
113
- validateClassKey(type);
114
- return this.#classes[type];
115
- }
116
-
117
- /**
118
- * Whether this reader has a constructor for a GR2 JSON node key.
119
- *
120
- * @param {string} type Node class key.
121
- * @returns {boolean}
122
- */
123
- HasClass(type) {
124
- return !!this.GetClass(type);
125
- }
126
-
127
74
  /**
128
75
  * Parse a .gr2 buffer and return JSON by default, classes when configured,
129
76
  * or raw reflection data when `emit` is "raw".
@@ -291,14 +238,8 @@ class CjsGr2Format extends CjsFormat {
291
238
  static toJSON(value) {
292
239
  return toJsonValue(value);
293
240
  }
294
- static OUTPUT_JSON = OUTPUT_JSON;
295
- static OUTPUT_GR2 = OUTPUT_GR2;
296
- static OUTPUT_GR2_JSON = OUTPUT_GR2_JSON;
297
- static OUTPUT_CMF = OUTPUT_CMF;
298
- static OUTPUT_RAW = OUTPUT_RAW;
299
- static CLASS_KEYS = CLASS_KEYS;
300
- static id = "gr2";
301
- static mediaTypes = Object.freeze(["geometry"]);
241
+ static classKeys = CLASS_KEYS;
242
+ static id = "CjsGr2Format";
302
243
  // Same shape as the other geometry writers: a native CMF v1 graph is the
303
244
  // default input, and `writeShared` adapts a shared or GR2-shaped root.
304
245
  static inputs = CjsFormat.defineInputs({
@@ -333,14 +274,9 @@ class CjsGr2Format extends CjsFormat {
333
274
  decoded: true
334
275
  }
335
276
  });
336
- static extensions = Object.freeze([".gr2", ".gsf"]);
277
+ static extensions = [".gr2", ".gsf"];
337
278
  static curves = curves;
338
279
  static tangents = tangents;
339
- static gsf = Object.freeze({
340
- isRaw: isGsfRaw,
341
- project: projectGsf,
342
- inspectRaw: inspectGsfRaw
343
- });
344
280
 
345
281
  /**
346
282
  * Cheap magic probe for GR2/GSF byte streams.