@carbonenginejs/runtime 0.1.0-alpha.0 → 0.1.0-alpha.1

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 (929) hide show
  1. package/README.md +58 -125
  2. package/dist/audio/index.js +8 -1
  3. package/dist/audio/index.js.map +1 -1
  4. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js +84 -0
  5. package/dist/audio/trinity/audio/AudActionLog/AudActionLogCB.js.map +1 -0
  6. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js +14 -0
  7. package/dist/audio/trinity/audio/AudActionLog/AudActionRecord.js.map +1 -0
  8. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js +26 -0
  9. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordExecuteActionOnPlayingID.js.map +1 -0
  10. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js +27 -0
  11. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordPostEvent.js.map +1 -0
  12. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js +27 -0
  13. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetRTPC.js.map +1 -0
  14. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js +25 -0
  15. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetState.js.map +1 -0
  16. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js +26 -0
  17. package/dist/audio/trinity/audio/AudActionLog/AudActionRecordSetSwitch.js.map +1 -0
  18. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js +58 -0
  19. package/dist/audio/trinity/audio/AudActionLog/IAudActionLog.js.map +1 -0
  20. package/dist/audio/trinity/audio/AudManager.js +1 -1
  21. package/dist/audio/trinity/audio/AudManager.js.map +1 -1
  22. package/dist/audio/trinity/audio/{AudObstructionOcclusion.js → AudObstructionOcclusion/AudObstructionOcclusion.js} +8 -52
  23. package/dist/audio/trinity/audio/AudObstructionOcclusion/AudObstructionOcclusion.js.map +1 -0
  24. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js +17 -0
  25. package/dist/audio/trinity/audio/AudObstructionOcclusion/EmitterState.js.map +1 -0
  26. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js +46 -0
  27. package/dist/audio/trinity/audio/AudObstructionOcclusion/FadingValue.js.map +1 -0
  28. package/dist/audio/trinity/index.js +8 -1
  29. package/dist/audio/trinity/index.js.map +1 -1
  30. package/dist/character/CjsCharacterAppearanceConstruction.js +5 -0
  31. package/dist/character/CjsCharacterAppearanceConstruction.js.map +1 -1
  32. package/dist/character/CjsCharacterAppearanceManager.js +14 -0
  33. package/dist/character/CjsCharacterAppearanceManager.js.map +1 -1
  34. package/dist/character/CjsCharacterFoundationConstruction.js +5 -0
  35. package/dist/character/CjsCharacterFoundationConstruction.js.map +1 -1
  36. package/dist/character/CjsCharacterTexturePolicy.js +5 -0
  37. package/dist/character/CjsCharacterTexturePolicy.js.map +1 -1
  38. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js +17 -0
  39. package/dist/character/gles/CjsCharacterGlesAppearanceAL.js.map +1 -1
  40. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js +2 -0
  41. package/dist/character/gles/CjsCharacterGlesAtlasRenderer.js.map +1 -1
  42. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js +5 -0
  43. package/dist/character/gles/CjsCharacterGlesFoundationTranslator.js.map +1 -1
  44. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js +5 -0
  45. package/dist/character/gles/CjsCharacterGlesLegacyConstructionTranslator.js.map +1 -1
  46. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js +2 -0
  47. package/dist/character/gles/CjsCharacterGlesMorphDeformation.js.map +1 -1
  48. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js +5 -0
  49. package/dist/character/gles/CjsCharacterGlesPaletteCompatibility.js.map +1 -1
  50. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js +5 -0
  51. package/dist/character/gles/CjsCharacterGlesTriangleCoverage.js.map +1 -1
  52. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js +9 -0
  53. package/dist/character/webgl2/CjsCharacterWebgl2EffectRouter.js.map +1 -1
  54. package/dist/global/blue/CjsScriptCallback.js +142 -0
  55. package/dist/global/blue/CjsScriptCallback.js.map +1 -0
  56. package/dist/global/blue/index.js +2 -0
  57. package/dist/global/blue/index.js.map +1 -0
  58. package/dist/global/consts/renderContext/formats.js +51 -1
  59. package/dist/global/consts/renderContext/formats.js.map +1 -1
  60. package/dist/global/consts/renderContext/index.js +2 -2
  61. package/dist/global/consts/renderContext/renderStates.js +16 -1
  62. package/dist/global/consts/renderContext/renderStates.js.map +1 -1
  63. package/dist/global/contracts/index.js +0 -1
  64. package/dist/global/contracts/index.js.map +1 -1
  65. package/dist/global/index.js +4 -3
  66. package/dist/global/index.js.map +1 -1
  67. package/dist/global/math/index.js +2 -0
  68. package/dist/global/math/index.js.map +1 -1
  69. package/dist/global/math/mesh.js +70 -16
  70. package/dist/global/math/mesh.js.map +1 -1
  71. package/dist/global/math/noise.js +47 -68
  72. package/dist/global/math/noise.js.map +1 -1
  73. package/dist/global/math/pool.js +18 -3
  74. package/dist/global/math/pool.js.map +1 -1
  75. package/dist/global/math/random.js +52 -0
  76. package/dist/global/math/random.js.map +1 -0
  77. package/dist/global/math/tri3.js +18 -4
  78. package/dist/global/math/tri3.js.map +1 -1
  79. package/dist/global/utils/bytes.js +22 -4
  80. package/dist/global/utils/bytes.js.map +1 -1
  81. package/dist/global/utils/checksum.js +80 -0
  82. package/dist/global/utils/checksum.js.map +1 -0
  83. package/dist/global/utils/errors/CjsCancellationError.js +36 -0
  84. package/dist/global/utils/errors/CjsCancellationError.js.map +1 -0
  85. package/dist/global/utils/errors/CjsError.js +21 -52
  86. package/dist/global/utils/errors/CjsError.js.map +1 -1
  87. package/dist/global/utils/errors/abort.js +1 -1
  88. package/dist/global/utils/errors/abort.js.map +1 -1
  89. package/dist/global/utils/errors/index.js +2 -1
  90. package/dist/global/utils/errors/index.js.map +1 -1
  91. package/dist/global/utils/index.js +4 -2
  92. package/dist/global/utils/index.js.map +1 -1
  93. package/dist/index.js +95 -35
  94. package/dist/index.js.map +1 -1
  95. package/dist/input/Tr2MainWindow.js +7 -9
  96. package/dist/input/Tr2MainWindow.js.map +1 -1
  97. package/dist/resource/CjsResMan.js +33 -39
  98. package/dist/resource/CjsResMan.js.map +1 -1
  99. package/dist/resource/CjsResource.js +19 -5
  100. package/dist/resource/CjsResource.js.map +1 -1
  101. package/dist/resource/audio/AudioGeometryResData.js +22 -27
  102. package/dist/resource/audio/AudioGeometryResData.js.map +1 -1
  103. package/dist/resource/audio/CjsAudioRes.js +4 -5
  104. package/dist/resource/audio/CjsAudioRes.js.map +1 -1
  105. package/dist/resource/format/CjsBitReader.js +263 -0
  106. package/dist/resource/format/CjsBitReader.js.map +1 -0
  107. package/dist/resource/format/CjsByteReader.js +130 -125
  108. package/dist/resource/format/CjsByteReader.js.map +1 -1
  109. package/dist/resource/format/CjsFormat.js +11 -4
  110. package/dist/resource/format/CjsFormat.js.map +1 -1
  111. package/dist/resource/format/CjsFormatError.js +37 -1
  112. package/dist/resource/format/CjsFormatError.js.map +1 -1
  113. package/dist/resource/format/CjsResourceProbe.js +41 -37
  114. package/dist/resource/format/CjsResourceProbe.js.map +1 -1
  115. package/dist/resource/format/carbonRecordGuard.js +33 -0
  116. package/dist/resource/format/carbonRecordGuard.js.map +1 -0
  117. package/dist/resource/format/imageSignatures.js +202 -0
  118. package/dist/resource/format/imageSignatures.js.map +1 -0
  119. package/dist/resource/format/index.js +2 -1
  120. package/dist/resource/format/index.js.map +1 -1
  121. package/dist/resource/format/jsonPolicies.js +180 -0
  122. package/dist/resource/format/jsonPolicies.js.map +1 -0
  123. package/dist/resource/formats/black/core/helpers.js +18 -29
  124. package/dist/resource/formats/black/core/helpers.js.map +1 -1
  125. package/dist/resource/formats/bnk/CjsBnkFormat.js +4 -3
  126. package/dist/resource/formats/bnk/CjsBnkFormat.js.map +1 -1
  127. package/dist/resource/formats/bnk/core/WwiseCursor.js +218 -0
  128. package/dist/resource/formats/bnk/core/WwiseCursor.js.map +1 -0
  129. package/dist/resource/formats/bnk/core/busNodes.js +2 -1
  130. package/dist/resource/formats/bnk/core/busNodes.js.map +1 -1
  131. package/dist/resource/formats/bnk/core/effectNodes.js +2 -1
  132. package/dist/resource/formats/bnk/core/effectNodes.js.map +1 -1
  133. package/dist/resource/formats/bnk/core/eventAction.js +15 -93
  134. package/dist/resource/formats/bnk/core/eventAction.js.map +1 -1
  135. package/dist/resource/formats/bnk/core/globalSettings.js +19 -94
  136. package/dist/resource/formats/bnk/core/globalSettings.js.map +1 -1
  137. package/dist/resource/formats/bnk/core/helpers.js +2 -48
  138. package/dist/resource/formats/bnk/core/helpers.js.map +1 -1
  139. package/dist/resource/formats/bnk/core/musicNodes.js +42 -134
  140. package/dist/resource/formats/bnk/core/musicNodes.js.map +1 -1
  141. package/dist/resource/formats/bnk/core/nodeBase.js +20 -111
  142. package/dist/resource/formats/bnk/core/nodeBase.js.map +1 -1
  143. package/dist/resource/formats/bnk/core/sfxNodes.js +2 -1
  144. package/dist/resource/formats/bnk/core/sfxNodes.js.map +1 -1
  145. package/dist/resource/formats/cmf/CjsCmfFormat.js +242 -228
  146. package/dist/resource/formats/cmf/CjsCmfFormat.js.map +1 -1
  147. package/dist/resource/formats/cmf/core/binary.js +54 -60
  148. package/dist/resource/formats/cmf/core/binary.js.map +1 -1
  149. package/dist/resource/formats/dds/CjsDdsFormat.js +5 -3
  150. package/dist/resource/formats/dds/CjsDdsFormat.js.map +1 -1
  151. package/dist/resource/formats/dds/core/bc6h.js +16 -18
  152. package/dist/resource/formats/dds/core/bc6h.js.map +1 -1
  153. package/dist/resource/formats/dds/core/bc7.js +28 -24
  154. package/dist/resource/formats/dds/core/bc7.js.map +1 -1
  155. package/dist/resource/formats/dds/core/helpers.js +7 -133
  156. package/dist/resource/formats/dds/core/helpers.js.map +1 -1
  157. package/dist/resource/formats/dxbc/CjsDxbcFormat.js +3 -2
  158. package/dist/resource/formats/dxbc/CjsDxbcFormat.js.map +1 -1
  159. package/dist/resource/formats/dxbc/core/helpers.js +4 -32
  160. package/dist/resource/formats/dxbc/core/helpers.js.map +1 -1
  161. package/dist/resource/formats/fbx/CjsFbxFormat.js +11 -0
  162. package/dist/resource/formats/fbx/CjsFbxFormat.js.map +1 -1
  163. package/dist/resource/formats/fbx/core/helpers.js +18 -12
  164. package/dist/resource/formats/fbx/core/helpers.js.map +1 -1
  165. package/dist/resource/formats/flac/CjsFlacFormat.js +4 -9
  166. package/dist/resource/formats/flac/CjsFlacFormat.js.map +1 -1
  167. package/dist/resource/formats/flac/core/helpers.js +1 -62
  168. package/dist/resource/formats/flac/core/helpers.js.map +1 -1
  169. package/dist/resource/formats/gif/CjsGifFormat.js +4 -9
  170. package/dist/resource/formats/gif/CjsGifFormat.js.map +1 -1
  171. package/dist/resource/formats/gif/core/helpers.js +1 -63
  172. package/dist/resource/formats/gif/core/helpers.js.map +1 -1
  173. package/dist/resource/formats/gltf/CjsGltfFormat.js +4 -3
  174. package/dist/resource/formats/gltf/CjsGltfFormat.js.map +1 -1
  175. package/dist/resource/formats/gltf/core/helpers.js +3 -19
  176. package/dist/resource/formats/gltf/core/helpers.js.map +1 -1
  177. package/dist/resource/formats/gr2/CjsGr2Format.js +105 -92
  178. package/dist/resource/formats/gr2/CjsGr2Format.js.map +1 -1
  179. package/dist/resource/formats/gr2/core/container.js +1 -10
  180. package/dist/resource/formats/gr2/core/container.js.map +1 -1
  181. package/dist/resource/formats/gr2/core/helpers.js +24 -35
  182. package/dist/resource/formats/gr2/core/helpers.js.map +1 -1
  183. package/dist/resource/formats/gr2/core/shared.js +193 -189
  184. package/dist/resource/formats/gr2/core/shared.js.map +1 -1
  185. package/dist/resource/formats/hlsl/CjsHlslFormat.js +4 -3
  186. package/dist/resource/formats/hlsl/CjsHlslFormat.js.map +1 -1
  187. package/dist/resource/formats/hlsl/core/helpers.js +1 -30
  188. package/dist/resource/formats/hlsl/core/helpers.js.map +1 -1
  189. package/dist/resource/formats/jpeg/CjsJpegFormat.js +5 -3
  190. package/dist/resource/formats/jpeg/CjsJpegFormat.js.map +1 -1
  191. package/dist/resource/formats/jpeg/core/helpers.js +7 -134
  192. package/dist/resource/formats/jpeg/core/helpers.js.map +1 -1
  193. package/dist/resource/formats/mp3/CjsMp3Format.js +4 -9
  194. package/dist/resource/formats/mp3/CjsMp3Format.js.map +1 -1
  195. package/dist/resource/formats/mp3/core/helpers.js +1 -64
  196. package/dist/resource/formats/mp3/core/helpers.js.map +1 -1
  197. package/dist/resource/formats/mp4/CjsMp4Format.js +4 -9
  198. package/dist/resource/formats/mp4/CjsMp4Format.js.map +1 -1
  199. package/dist/resource/formats/mp4/core/helpers.js +1 -73
  200. package/dist/resource/formats/mp4/core/helpers.js.map +1 -1
  201. package/dist/resource/formats/obj/CjsObjFormat.js +4 -3
  202. package/dist/resource/formats/obj/CjsObjFormat.js.map +1 -1
  203. package/dist/resource/formats/obj/core/helpers.js +93 -115
  204. package/dist/resource/formats/obj/core/helpers.js.map +1 -1
  205. package/dist/resource/formats/ogg/CjsOggFormat.js +4 -3
  206. package/dist/resource/formats/ogg/CjsOggFormat.js.map +1 -1
  207. package/dist/resource/formats/ogg/core/helpers.js +1 -15
  208. package/dist/resource/formats/ogg/core/helpers.js.map +1 -1
  209. package/dist/resource/formats/ogg/core/vorbis.js +138 -144
  210. package/dist/resource/formats/ogg/core/vorbis.js.map +1 -1
  211. package/dist/resource/formats/pickle/CjsPickleFormat.js +83 -114
  212. package/dist/resource/formats/pickle/CjsPickleFormat.js.map +1 -1
  213. package/dist/resource/formats/png/CjsPngFormat.js +5 -3
  214. package/dist/resource/formats/png/CjsPngFormat.js.map +1 -1
  215. package/dist/resource/formats/png/core/helpers.js +13 -152
  216. package/dist/resource/formats/png/core/helpers.js.map +1 -1
  217. package/dist/resource/formats/png/core/writer.js +3 -27
  218. package/dist/resource/formats/png/core/writer.js.map +1 -1
  219. package/dist/resource/formats/red/core/helpers.js +19 -29
  220. package/dist/resource/formats/red/core/helpers.js.map +1 -1
  221. package/dist/resource/formats/stl/CjsStlFormat.js +158 -147
  222. package/dist/resource/formats/stl/CjsStlFormat.js.map +1 -1
  223. package/dist/resource/formats/stl/core/helpers.js +44 -66
  224. package/dist/resource/formats/stl/core/helpers.js.map +1 -1
  225. package/dist/resource/formats/tga/CjsTgaFormat.js +5 -3
  226. package/dist/resource/formats/tga/CjsTgaFormat.js.map +1 -1
  227. package/dist/resource/formats/tga/core/helpers.js +7 -153
  228. package/dist/resource/formats/tga/core/helpers.js.map +1 -1
  229. package/dist/resource/formats/vta/CjsVtaFormat.js +4 -3
  230. package/dist/resource/formats/vta/CjsVtaFormat.js.map +1 -1
  231. package/dist/resource/formats/vta/core/helpers.js +1 -17
  232. package/dist/resource/formats/vta/core/helpers.js.map +1 -1
  233. package/dist/resource/formats/wav/CjsWavFormat.js +4 -3
  234. package/dist/resource/formats/wav/CjsWavFormat.js.map +1 -1
  235. package/dist/resource/formats/wav/core/helpers.js +1 -15
  236. package/dist/resource/formats/wav/core/helpers.js.map +1 -1
  237. package/dist/resource/formats/webgl/CjsWebglFormat.js +4 -3
  238. package/dist/resource/formats/webgl/CjsWebglFormat.js.map +1 -1
  239. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js +52 -4
  240. package/dist/resource/formats/webgl/core/glsl/DxbcGlslEmitter.js.map +1 -1
  241. package/dist/resource/formats/webgl/core/helpers.js +39 -68
  242. package/dist/resource/formats/webgl/core/helpers.js.map +1 -1
  243. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js +4 -3
  244. package/dist/resource/formats/webgpu/CjsWebgpuFormat.js.map +1 -1
  245. package/dist/resource/formats/webgpu/core/helpers.js +4 -30
  246. package/dist/resource/formats/webgpu/core/helpers.js.map +1 -1
  247. package/dist/resource/formats/webm/CjsWebmFormat.js +4 -9
  248. package/dist/resource/formats/webm/CjsWebmFormat.js.map +1 -1
  249. package/dist/resource/formats/webm/core/helpers.js +1 -73
  250. package/dist/resource/formats/webm/core/helpers.js.map +1 -1
  251. package/dist/resource/formats/webp/CjsWebpFormat.js +4 -9
  252. package/dist/resource/formats/webp/CjsWebpFormat.js.map +1 -1
  253. package/dist/resource/formats/webp/core/helpers.js +1 -62
  254. package/dist/resource/formats/webp/core/helpers.js.map +1 -1
  255. package/dist/resource/formats/wem/CjsWemFormat.js +4 -3
  256. package/dist/resource/formats/wem/CjsWemFormat.js.map +1 -1
  257. package/dist/resource/formats/wem/core/bitStream.js +83 -106
  258. package/dist/resource/formats/wem/core/bitStream.js.map +1 -1
  259. package/dist/resource/formats/wem/core/codebookLibrary.js +52 -52
  260. package/dist/resource/formats/wem/core/codebookLibrary.js.map +1 -1
  261. package/dist/resource/formats/wem/core/helpers.js +1 -15
  262. package/dist/resource/formats/wem/core/helpers.js.map +1 -1
  263. package/dist/resource/formats/wem/core/wemToOgg.js +67 -67
  264. package/dist/resource/formats/wem/core/wemToOgg.js.map +1 -1
  265. package/dist/resource/geometry/MeshDecalData.js +23 -25
  266. package/dist/resource/geometry/MeshDecalData.js.map +1 -1
  267. package/dist/resource/geometry/MeshDecalLodData.js +14 -23
  268. package/dist/resource/geometry/MeshDecalLodData.js.map +1 -1
  269. package/dist/resource/geometry/TriGeometryRes.js +299 -284
  270. package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
  271. package/dist/resource/geometry/TriGeometryResAreaData.js +30 -31
  272. package/dist/resource/geometry/TriGeometryResAreaData.js.map +1 -1
  273. package/dist/resource/geometry/TriGeometryResJointData.js +16 -24
  274. package/dist/resource/geometry/TriGeometryResJointData.js.map +1 -1
  275. package/dist/resource/geometry/TriGeometryResLodData.js +50 -41
  276. package/dist/resource/geometry/TriGeometryResLodData.js.map +1 -1
  277. package/dist/resource/geometry/TriGeometryResMeshData.js +32 -32
  278. package/dist/resource/geometry/TriGeometryResMeshData.js.map +1 -1
  279. package/dist/resource/geometry/TriGeometryResSkeletonData.js +14 -23
  280. package/dist/resource/geometry/TriGeometryResSkeletonData.js.map +1 -1
  281. package/dist/resource/geometry/TriJointBinding.js +16 -24
  282. package/dist/resource/geometry/TriJointBinding.js.map +1 -1
  283. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js +22 -27
  284. package/dist/resource/geometry/TriMorphTargetGeometryConstants.js.map +1 -1
  285. package/dist/resource/geometry/TriRtGeometryConstants.js +50 -41
  286. package/dist/resource/geometry/TriRtGeometryConstants.js.map +1 -1
  287. package/dist/resource/geometry/granny/GStateBindingCallbackData.js +12 -22
  288. package/dist/resource/geometry/granny/GStateBindingCallbackData.js.map +1 -1
  289. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js +30 -31
  290. package/dist/resource/geometry/granny/Tr2GrannyIntersectionResult.js.map +1 -1
  291. package/dist/resource/index.js +1 -1
  292. package/dist/resource/shader/reflection/Tr2EffectConstant.js +16 -17
  293. package/dist/resource/shader/reflection/Tr2EffectConstant.js.map +1 -1
  294. package/dist/resource/shader/reflection/Tr2EffectDescription.js +26 -28
  295. package/dist/resource/shader/reflection/Tr2EffectDescription.js.map +1 -1
  296. package/dist/resource/shader/reflection/Tr2EffectLibrary.js +24 -25
  297. package/dist/resource/shader/reflection/Tr2EffectLibrary.js.map +1 -1
  298. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +21 -22
  299. package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
  300. package/dist/resource/shader/reflection/Tr2EffectResource.js +25 -26
  301. package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
  302. package/dist/resource/shader/reflection/Tr2EffectStageInput.js +69 -72
  303. package/dist/resource/shader/reflection/Tr2EffectStageInput.js.map +1 -1
  304. package/dist/resource/shader/reflection/Tr2EffectTechnique.js +17 -18
  305. package/dist/resource/shader/reflection/Tr2EffectTechnique.js.map +1 -1
  306. package/dist/resource/shader/reflection/Tr2Pass.js +42 -43
  307. package/dist/resource/shader/reflection/Tr2Pass.js.map +1 -1
  308. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js +26 -5
  309. package/dist/resource/shader/reflection/Tr2RenderStateSetup.js.map +1 -1
  310. package/dist/resource/shader/reflection/carbonRecordFields.js +87 -90
  311. package/dist/resource/shader/reflection/carbonRecordFields.js.map +1 -1
  312. package/dist/resource/shader/sampler/Tr2SamplerSetup.js +32 -34
  313. package/dist/resource/shader/sampler/Tr2SamplerSetup.js.map +1 -1
  314. package/dist/resource/texture/CjsTextureArrayRes.js +1 -6
  315. package/dist/resource/texture/CjsTextureArrayRes.js.map +1 -1
  316. package/dist/resource/texture/Tr2TextureLodManager.js +35 -27
  317. package/dist/resource/texture/Tr2TextureLodManager.js.map +1 -1
  318. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js +16 -24
  319. package/dist/resource/texture/Tr2TextureLodUpdateRequest.js.map +1 -1
  320. package/dist/resource/texture/Tr2TexturePackChannel.js +16 -24
  321. package/dist/resource/texture/Tr2TexturePackChannel.js.map +1 -1
  322. package/dist/resource/texture/Tr2TexturePipeline.js +24 -20
  323. package/dist/resource/texture/Tr2TexturePipeline.js.map +1 -1
  324. package/dist/resource/texture/Tr2TexturePipelineParams.js +14 -23
  325. package/dist/resource/texture/Tr2TexturePipelineParams.js.map +1 -1
  326. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +18 -25
  327. package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
  328. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js +11 -16
  329. package/dist/resource/texture/Tr2TexturePipelineStepGenerateMips.js.map +1 -1
  330. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js +14 -23
  331. package/dist/resource/texture/Tr2TexturePipelineStepLimitSize.js.map +1 -1
  332. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js +12 -22
  333. package/dist/resource/texture/Tr2TexturePipelineStepLoad.js.map +1 -1
  334. package/dist/resource/texture/Tr2TexturePipelineStepPack.js +38 -26
  335. package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
  336. package/dist/resource/worker/CjsResManMainThreadLoader.js +2 -5
  337. package/dist/resource/worker/CjsResManMainThreadLoader.js.map +1 -1
  338. package/dist/resource/worker/CjsResManWorkerLoader.js +6 -7
  339. package/dist/resource/worker/CjsResManWorkerLoader.js.map +1 -1
  340. package/dist/resource/worker/protocol.js +18 -1
  341. package/dist/resource/worker/protocol.js.map +1 -1
  342. package/dist/sof/EveSOF.js +2 -222
  343. package/dist/sof/EveSOF.js.map +1 -1
  344. package/dist/sof/SofDocumentBuilder.js +205 -0
  345. package/dist/sof/SofDocumentBuilder.js.map +1 -0
  346. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js +16 -0
  347. package/dist/sof/faction/ErrSOFFactionColorSetTypeNotFound.js.map +1 -0
  348. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js +16 -0
  349. package/dist/sof/faction/ErrSOFFactionColorSetTypeUnknown.js.map +1 -0
  350. package/dist/sof/faction/EveSOFDataFactionColorSet.js +3 -27
  351. package/dist/sof/faction/EveSOFDataFactionColorSet.js.map +1 -1
  352. package/dist/sof/faction/index.js +3 -1
  353. package/dist/sof/faction/index.js.map +1 -1
  354. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js +18 -0
  355. package/dist/sof/generic/ErrSOFAreaShaderNotFound.js.map +1 -0
  356. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js +18 -0
  357. package/dist/sof/generic/ErrSOFDecalShaderNotFound.js.map +1 -0
  358. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js +21 -0
  359. package/dist/sof/generic/ErrSOFMaterialPrefixNotFound.js.map +1 -0
  360. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js +21 -0
  361. package/dist/sof/generic/ErrSOFPatternMaterialPrefixNotFound.js.map +1 -0
  362. package/dist/sof/generic/EveSOFDataGeneric.js +5 -69
  363. package/dist/sof/generic/EveSOFDataGeneric.js.map +1 -1
  364. package/dist/sof/generic/index.js +5 -1
  365. package/dist/sof/generic/index.js.map +1 -1
  366. package/dist/sof/index.js +23 -7
  367. package/dist/sof/index.js.map +1 -1
  368. package/dist/sof/pattern/ErrSOFProjectionNotFound.js +20 -0
  369. package/dist/sof/pattern/ErrSOFProjectionNotFound.js.map +1 -0
  370. package/dist/sof/pattern/EveSOFDataPattern.js +2 -17
  371. package/dist/sof/pattern/EveSOFDataPattern.js.map +1 -1
  372. package/dist/sof/pattern/index.js +2 -1
  373. package/dist/sof/pattern/index.js.map +1 -1
  374. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js +16 -0
  375. package/dist/sof/shared/ErrSOFAreaTypeNotFound.js.map +1 -0
  376. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js +16 -0
  377. package/dist/sof/shared/ErrSOFLogoSetTypeNotFound.js.map +1 -0
  378. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js +16 -0
  379. package/dist/sof/shared/ErrSOFLogoSetTypeUnknown.js.map +1 -0
  380. package/dist/sof/shared/EveSOFDataArea.js +2 -13
  381. package/dist/sof/shared/EveSOFDataArea.js.map +1 -1
  382. package/dist/sof/shared/EveSOFDataLogoSet.js +3 -27
  383. package/dist/sof/shared/EveSOFDataLogoSet.js.map +1 -1
  384. package/dist/sof/shared/EveSOFDataParameter.js +2 -146
  385. package/dist/sof/shared/EveSOFDataParameter.js.map +1 -1
  386. package/dist/sof/shared/EveSOFDataParameterBool.js +40 -0
  387. package/dist/sof/shared/EveSOFDataParameterBool.js.map +1 -0
  388. package/dist/sof/shared/EveSOFDataParameterColor.js +36 -0
  389. package/dist/sof/shared/EveSOFDataParameterColor.js.map +1 -0
  390. package/dist/sof/shared/EveSOFDataParameterFloat.js +37 -0
  391. package/dist/sof/shared/EveSOFDataParameterFloat.js.map +1 -0
  392. package/dist/sof/shared/EveSOFDataParameterInt.js +37 -0
  393. package/dist/sof/shared/EveSOFDataParameterInt.js.map +1 -0
  394. package/dist/sof/shared/EveSOFDataParameterVector2.js +37 -0
  395. package/dist/sof/shared/EveSOFDataParameterVector2.js.map +1 -0
  396. package/dist/sof/shared/EveSOFDataParameterVector3.js +37 -0
  397. package/dist/sof/shared/EveSOFDataParameterVector3.js.map +1 -0
  398. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js → EveSOFDataSpotLightAttachment.js} +1 -1
  399. package/dist/sof/shared/{EveSOFDataSpotlightAttachment.js.map → EveSOFDataSpotLightAttachment.js.map} +1 -1
  400. package/dist/sof/shared/index.js +13 -4
  401. package/dist/sof/shared/index.js.map +1 -1
  402. package/dist/sof/sofDocumentValues.js +33 -0
  403. package/dist/sof/sofDocumentValues.js.map +1 -0
  404. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js +168 -0
  405. package/dist/trinity/controllers/ITr2Controller/ITr2ActionController.js.map +1 -0
  406. package/dist/trinity/controllers/{ITr2Controller.js → ITr2Controller/ITr2Controller.js} +2 -134
  407. package/dist/trinity/controllers/ITr2Controller/ITr2Controller.js.map +1 -0
  408. package/dist/trinity/controllers/Tr2Controller.js +2 -1
  409. package/dist/trinity/controllers/Tr2Controller.js.map +1 -1
  410. package/dist/trinity/controllers/Tr2ControllerReference.js +2 -1
  411. package/dist/trinity/controllers/Tr2ControllerReference.js.map +1 -1
  412. package/dist/trinity/controllers/action/ITr2ControllerAction.js +2 -1
  413. package/dist/trinity/controllers/action/ITr2ControllerAction.js.map +1 -1
  414. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js +10 -9
  415. package/dist/trinity/controllers/action/Tr2ActionSpawnParticles.js.map +1 -1
  416. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js +26 -0
  417. package/dist/trinity/controllers/expression/CjsControllerExpressionCompileError.js.map +1 -0
  418. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js +24 -0
  419. package/dist/trinity/controllers/expression/CjsControllerExpressionEvaluateError.js.map +1 -0
  420. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js +387 -0
  421. package/dist/trinity/controllers/expression/CjsControllerExpressionParser.js.map +1 -0
  422. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js +4 -1011
  423. package/dist/trinity/controllers/expression/CjsControllerExpressionProgram.js.map +1 -1
  424. package/dist/trinity/controllers/expression/expressionRuntime.js +605 -0
  425. package/dist/trinity/controllers/expression/expressionRuntime.js.map +1 -0
  426. package/dist/trinity/controllers/index.js +5 -2
  427. package/dist/trinity/controllers/index.js.map +1 -1
  428. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js +2 -1
  429. package/dist/trinity/controllers/state/ITr2StateMachineStateFinalizer.js.map +1 -1
  430. package/dist/trinity/controllers/timeline/Tr2TimelineController.js +2 -1
  431. package/dist/trinity/controllers/timeline/Tr2TimelineController.js.map +1 -1
  432. package/dist/trinity/core/ITr2Updateable.js +2 -1
  433. package/dist/trinity/core/ITr2Updateable.js.map +1 -1
  434. package/dist/trinity/core/Tr2Blitter.js +6 -3
  435. package/dist/trinity/core/Tr2Blitter.js.map +1 -1
  436. package/dist/trinity/core/Tr2Denoiser.js +256 -0
  437. package/dist/trinity/core/Tr2Denoiser.js.map +1 -0
  438. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js +115 -0
  439. package/dist/trinity/core/Tr2GpuResourcePool/GpuResourceHandle.js.map +1 -0
  440. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js +79 -0
  441. package/dist/trinity/core/Tr2GpuResourcePool/TextureSize2D.js.map +1 -0
  442. package/dist/trinity/core/{Tr2GpuResourcePool.js → Tr2GpuResourcePool/Tr2GpuResourcePool.js} +63 -151
  443. package/dist/trinity/core/Tr2GpuResourcePool/Tr2GpuResourcePool.js.map +1 -0
  444. package/dist/trinity/core/{Tr2QuadRenderer.js → Tr2QuadRenderer/Tr2QuadRenderer.js} +8 -30
  445. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRenderer.js.map +1 -0
  446. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js +38 -0
  447. package/dist/trinity/core/Tr2QuadRenderer/Tr2QuadRendererEffectRecord.js.map +1 -0
  448. package/dist/trinity/core/Tr2RenderUtils.js +20 -3
  449. package/dist/trinity/core/Tr2RenderUtils.js.map +1 -1
  450. package/dist/trinity/core/Tr2Renderer.js +146 -1
  451. package/dist/trinity/core/Tr2Renderer.js.map +1 -1
  452. package/dist/trinity/core/Tr2ShadowMap.js +135 -14
  453. package/dist/trinity/core/Tr2ShadowMap.js.map +1 -1
  454. package/dist/trinity/core/{Tr2TextureArray.js → Tr2TextureArray/Tr2TextureArray.js} +3 -58
  455. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArray.js.map +1 -0
  456. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js +61 -0
  457. package/dist/trinity/core/Tr2TextureArray/Tr2TextureArrayElement.js.map +1 -0
  458. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js +26 -0
  459. package/dist/trinity/core/batch/TriRenderBatch/DefaultKeyGenerator.js.map +1 -0
  460. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js +29 -0
  461. package/dist/trinity/core/batch/TriRenderBatch/EffectKeyGenerator.js.map +1 -0
  462. package/dist/trinity/core/batch/{ITriRenderBatchAccumulator.js → TriRenderBatch/ITriRenderBatchAccumulator.js} +30 -30
  463. package/dist/trinity/core/batch/TriRenderBatch/ITriRenderBatchAccumulator.js.map +1 -0
  464. package/dist/trinity/core/batch/{Tr2RenderBatch.js → TriRenderBatch/Tr2RenderBatch.js} +81 -154
  465. package/dist/trinity/core/batch/TriRenderBatch/Tr2RenderBatch.js.map +1 -0
  466. package/dist/trinity/core/batch/{TriRenderBatchAccumulator.js → TriRenderBatch/TriRenderBatchAccumulator.js} +7 -38
  467. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAccumulator.js.map +1 -0
  468. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js +61 -0
  469. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlock.js.map +1 -0
  470. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js +40 -0
  471. package/dist/trinity/core/batch/TriRenderBatch/TriRenderBatchAreaBlocksWithSharedMaterial.js.map +1 -0
  472. package/dist/trinity/core/batch/TriRenderBatchMap.js +6 -1
  473. package/dist/trinity/core/batch/TriRenderBatchMap.js.map +1 -1
  474. package/dist/trinity/core/context/Tr2RenderContext.js +75 -57
  475. package/dist/trinity/core/context/Tr2RenderContext.js.map +1 -1
  476. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js +67 -0
  477. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityEvent.js.map +1 -0
  478. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js +50 -0
  479. package/dist/trinity/core/context/Tr2VisibilityResults/Tr2VisibilityResults.js.map +1 -0
  480. package/dist/trinity/core/device/Tr2DepthStencil.js +186 -13
  481. package/dist/trinity/core/device/Tr2DepthStencil.js.map +1 -1
  482. package/dist/trinity/core/device/{Tr2RingBuffer.js → Tr2RingBuffer/Tr2RingBuffer.js} +27 -79
  483. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBuffer.js.map +1 -0
  484. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js +114 -0
  485. package/dist/trinity/core/device/Tr2RingBuffer/Tr2RingBufferOffsets.js.map +1 -0
  486. package/dist/trinity/core/device/{Tr2SuballocatedBuffer.js → Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js} +5 -59
  487. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBuffer.js.map +1 -0
  488. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js +80 -0
  489. package/dist/trinity/core/device/Tr2SuballocatedBuffer/Tr2SuballocatedBufferAllocation.js.map +1 -0
  490. package/dist/trinity/core/index.js +42 -15
  491. package/dist/trinity/core/index.js.map +1 -1
  492. package/dist/trinity/core/lighting/Tr2LightManager.js +6 -1
  493. package/dist/trinity/core/lighting/Tr2LightManager.js.map +1 -1
  494. package/dist/trinity/core/mesh/{ITr2ImpostorSource.js → ITr2ImpostorSource/ITr2ImpostorSource.js} +6 -28
  495. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSource.js.map +1 -0
  496. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js +32 -0
  497. package/dist/trinity/core/mesh/ITr2ImpostorSource/ITr2ImpostorSourceImpostorHash.js.map +1 -0
  498. package/dist/trinity/core/mesh/{ITr2InstanceData.js → ITr2InstanceData/ITr2InstanceData.js} +5 -29
  499. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceData.js.map +1 -0
  500. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js +33 -0
  501. package/dist/trinity/core/mesh/ITr2InstanceData/ITr2InstanceDataInstanceData.js.map +1 -0
  502. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js +2 -1
  503. package/dist/trinity/core/mesh/Tr2DirectInstanceData.js.map +1 -1
  504. package/dist/trinity/core/mesh/Tr2MeshBase.js +7 -1
  505. package/dist/trinity/core/mesh/Tr2MeshBase.js.map +1 -1
  506. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js +2 -1
  507. package/dist/trinity/core/mesh/Tr2RuntimeInstanceData.js.map +1 -1
  508. package/dist/trinity/core/mesh/TriGeometryResAllocations.js +6 -2
  509. package/dist/trinity/core/mesh/TriGeometryResAllocations.js.map +1 -1
  510. package/dist/trinity/core/rawData/CjsConstantLayout.js +196 -0
  511. package/dist/trinity/core/rawData/CjsConstantLayout.js.map +1 -0
  512. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js +8 -3
  513. package/dist/trinity/core/rawData/CjsPerFrameLayouts.js.map +1 -1
  514. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js +40 -732
  515. package/dist/trinity/core/rawData/CjsPerObjectLayouts.js.map +1 -1
  516. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js +34 -0
  517. package/dist/trinity/core/rawData/layouts/CjsEveBasicLayout.js.map +1 -0
  518. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js +69 -0
  519. package/dist/trinity/core/rawData/layouts/CjsEveBoosterSetLayout.js.map +1 -0
  520. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js +59 -0
  521. package/dist/trinity/core/rawData/layouts/CjsEveChildBoosterSetLayout.js.map +1 -0
  522. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js +37 -0
  523. package/dist/trinity/core/rawData/layouts/CjsEveChildBulletStormLayout.js.map +1 -0
  524. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js +44 -0
  525. package/dist/trinity/core/rawData/layouts/CjsEveChildSpherePinLayout.js.map +1 -0
  526. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js +31 -0
  527. package/dist/trinity/core/rawData/layouts/CjsEveLensflareLayout.js.map +1 -0
  528. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js +29 -0
  529. package/dist/trinity/core/rawData/layouts/CjsEveMissileWarheadLayout.js.map +1 -0
  530. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js +39 -0
  531. package/dist/trinity/core/rawData/layouts/CjsEvePerObjectLayout.js.map +1 -0
  532. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js +30 -0
  533. package/dist/trinity/core/rawData/layouts/CjsEveSceneStaticParticlesLayout.js.map +1 -0
  534. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js +78 -0
  535. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectDecalLayout.js.map +1 -0
  536. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js +169 -0
  537. package/dist/trinity/core/rawData/layouts/CjsEveSpaceObjectLayout.js.map +1 -0
  538. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js +107 -0
  539. package/dist/trinity/core/rawData/layouts/CjsEveSpacePerObjectLayout.js.map +1 -0
  540. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js +44 -0
  541. package/dist/trinity/core/rawData/layouts/CjsEveSpherePinLayout.js.map +1 -0
  542. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js +34 -0
  543. package/dist/trinity/core/rawData/layouts/CjsEveStretch2Layout.js.map +1 -0
  544. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js +82 -0
  545. package/dist/trinity/core/rawData/layouts/CjsEveTurretSetLayout.js.map +1 -0
  546. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js +42 -0
  547. package/dist/trinity/core/rawData/layouts/CjsTr2PerObjectLayout.js.map +1 -0
  548. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js +55 -0
  549. package/dist/trinity/core/rawData/perObjectData/EveBasicPerObjectData.js.map +1 -0
  550. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js +59 -0
  551. package/dist/trinity/core/rawData/perObjectData/EveBoosterSetPerObjectData.js.map +1 -0
  552. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js +59 -0
  553. package/dist/trinity/core/rawData/perObjectData/EveChildBoosterSetPerObjectData.js.map +1 -0
  554. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js +55 -0
  555. package/dist/trinity/core/rawData/perObjectData/EveChildBulletStormPerObjectData.js.map +1 -0
  556. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js +55 -0
  557. package/dist/trinity/core/rawData/perObjectData/EveChildSpherePinPerObjectData.js.map +1 -0
  558. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js +59 -0
  559. package/dist/trinity/core/rawData/perObjectData/EveDecalPerObjectData.js.map +1 -0
  560. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js +55 -0
  561. package/dist/trinity/core/rawData/perObjectData/EveLensflarePerObjectData.js.map +1 -0
  562. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js +55 -0
  563. package/dist/trinity/core/rawData/perObjectData/EveMissileWarheadPerObjectData.js.map +1 -0
  564. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js +55 -0
  565. package/dist/trinity/core/rawData/perObjectData/EveSceneStaticParticlesPerObjectData.js.map +1 -0
  566. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js +55 -0
  567. package/dist/trinity/core/rawData/perObjectData/EveSpherePinPerObjectData.js.map +1 -0
  568. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js +59 -0
  569. package/dist/trinity/core/rawData/perObjectData/EveTurretSetPerObjectData.js.map +1 -0
  570. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js +55 -0
  571. package/dist/trinity/core/rawData/perObjectData/StretchPerObjectData.js.map +1 -0
  572. package/dist/trinity/core/rawData/{Tr2PerObjectData.js → perObjectData/Tr2PerObjectData.js} +110 -62
  573. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectData.js.map +1 -0
  574. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js +104 -0
  575. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataPSBuffer.js.map +1 -0
  576. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js +87 -0
  577. package/dist/trinity/core/rawData/perObjectData/Tr2PerObjectDataStandard.js.map +1 -0
  578. package/dist/trinity/core/variable/TriVariable.js +83 -83
  579. package/dist/trinity/core/variable/TriVariable.js.map +1 -1
  580. package/dist/trinity/core/vertex/{Tr2VertexDefinition.js → Tr2VertexDefinition/Tr2VertexDefinition.js} +4 -20
  581. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinition.js.map +1 -0
  582. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js +29 -0
  583. package/dist/trinity/core/vertex/Tr2VertexDefinition/Tr2VertexDefinitionItem.js.map +1 -0
  584. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js +116 -36
  585. package/dist/trinity/core/volumetrics/Tr2VolumetricsRenderer.js.map +1 -1
  586. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js +50 -92
  587. package/dist/trinity/curves/curve/Tr2CurveRandomAxisRotation.js.map +1 -1
  588. package/dist/trinity/eve/EveModularObjectModifier.js +9 -5
  589. package/dist/trinity/eve/EveModularObjectModifier.js.map +1 -1
  590. package/dist/trinity/eve/IEveInheritPropertiesOwner.js +2 -1
  591. package/dist/trinity/eve/IEveInheritPropertiesOwner.js.map +1 -1
  592. package/dist/trinity/eve/IEveSpaceObject2.js +2 -1
  593. package/dist/trinity/eve/IEveSpaceObject2.js.map +1 -1
  594. package/dist/trinity/eve/IEveTransform.js +2 -1
  595. package/dist/trinity/eve/IEveTransform.js.map +1 -1
  596. package/dist/trinity/eve/attachment/banner/EveBannerSet.js +2 -2
  597. package/dist/trinity/eve/attachment/banner/EveBannerSet.js.map +1 -1
  598. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js +109 -133
  599. package/dist/trinity/eve/attachment/booster/EveBoosterSet2.js.map +1 -1
  600. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js +40 -0
  601. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Item.js.map +1 -0
  602. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js +1 -1
  603. package/dist/trinity/eve/attachment/booster/EveBoosterSet2Renderable.js.map +1 -1
  604. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js +2 -14
  605. package/dist/trinity/eve/attachment/decal/DecalMeshCache.js.map +1 -1
  606. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js +18 -0
  607. package/dist/trinity/eve/attachment/decal/DecalMeshCacheMeshBuffers.js.map +1 -0
  608. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js +1 -1
  609. package/dist/trinity/eve/attachment/decal/EveSpaceObjectDecal.js.map +1 -1
  610. package/dist/trinity/eve/attachment/haze/EveHazeSet.js +1 -1
  611. package/dist/trinity/eve/attachment/haze/EveHazeSet.js.map +1 -1
  612. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js +1 -1
  613. package/dist/trinity/eve/attachment/plane/EvePlaneSet.js.map +1 -1
  614. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js +2 -2
  615. package/dist/trinity/eve/attachment/spotlight/EveSpotlightSet.js.map +1 -1
  616. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js +1 -1
  617. package/dist/trinity/eve/attachment/sprite/EveSpriteLineSet.js.map +1 -1
  618. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js +4 -2
  619. package/dist/trinity/eve/attachment/sprite/EveSpriteSet.js.map +1 -1
  620. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js +143 -139
  621. package/dist/trinity/eve/attachment/turrets/EveTurretSet.js.map +1 -1
  622. package/dist/trinity/eve/camera/EveCamera.js +1 -1
  623. package/dist/trinity/eve/camera/EveCamera.js.map +1 -1
  624. package/dist/trinity/eve/child/EveChildBoosterSet.js +12 -1
  625. package/dist/trinity/eve/child/EveChildBoosterSet.js.map +1 -1
  626. package/dist/trinity/eve/child/EveChildCloud2.js +178 -151
  627. package/dist/trinity/eve/child/EveChildCloud2.js.map +1 -1
  628. package/dist/trinity/eve/child/EveChildContainer.js +141 -141
  629. package/dist/trinity/eve/child/EveChildContainer.js.map +1 -1
  630. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js +87 -0
  631. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMesh.js.map +1 -0
  632. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js +46 -0
  633. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshArea.js.map +1 -0
  634. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js +35 -0
  635. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshInstance.js.map +1 -0
  636. package/dist/trinity/eve/child/{EveChildInstancedMeshes.js → EveChildInstancedMeshes/EveChildInstancedMeshes.js} +42 -163
  637. package/dist/trinity/eve/child/EveChildInstancedMeshes/EveChildInstancedMeshes.js.map +1 -0
  638. package/dist/trinity/eve/child/EveChildMesh.js +218 -218
  639. package/dist/trinity/eve/child/EveChildMesh.js.map +1 -1
  640. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js +53 -0
  641. package/dist/trinity/eve/child/EveChildPartData/EveChildPartData.js.map +1 -0
  642. package/dist/trinity/eve/child/{EveChildPartData.js → EveChildPartData/EveChildPartDataPartData.js} +9 -45
  643. package/dist/trinity/eve/child/EveChildPartData/EveChildPartDataPartData.js.map +1 -0
  644. package/dist/trinity/eve/child/EveChildParticleSystem.js +30 -29
  645. package/dist/trinity/eve/child/EveChildParticleSystem.js.map +1 -1
  646. package/dist/trinity/eve/child/EveChildTransform.js +5 -0
  647. package/dist/trinity/eve/child/EveChildTransform.js.map +1 -1
  648. package/dist/trinity/eve/child/EveChildTurret.js +7 -0
  649. package/dist/trinity/eve/child/EveChildTurret.js.map +1 -1
  650. package/dist/trinity/eve/index.js +10 -4
  651. package/dist/trinity/eve/index.js.map +1 -1
  652. package/dist/trinity/eve/lights/Tr2Light.js +5 -0
  653. package/dist/trinity/eve/lights/Tr2Light.js.map +1 -1
  654. package/dist/trinity/eve/overlays/overlayBatches.js +6 -1
  655. package/dist/trinity/eve/overlays/overlayBatches.js.map +1 -1
  656. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js +4 -4
  657. package/dist/trinity/eve/particles/static/EveSceneStaticParticles.js.map +1 -1
  658. package/dist/trinity/eve/renderable/stretch/EveStretch2.js +76 -71
  659. package/dist/trinity/eve/renderable/stretch/EveStretch2.js.map +1 -1
  660. package/dist/trinity/eve/renderable/stretch/EveStretch3.js +1 -1
  661. package/dist/trinity/eve/renderable/stretch/EveStretch3.js.map +1 -1
  662. package/dist/trinity/eve/spaceObject/EveShip2.js +3 -3
  663. package/dist/trinity/eve/spaceObject/EveShip2.js.map +1 -1
  664. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js +408 -407
  665. package/dist/trinity/eve/spaceObject/EveSpaceObject2.js.map +1 -1
  666. package/dist/trinity/eve/ui/EveTacticalOverlay.js +1 -1
  667. package/dist/trinity/eve/ui/EveTacticalOverlay.js.map +1 -1
  668. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js +9 -9
  669. package/dist/trinity/eve/ui/lines/EveCurveLineSet.js.map +1 -1
  670. package/dist/trinity/eve/ui/lines/EveLineSet.js +27 -25
  671. package/dist/trinity/eve/ui/lines/EveLineSet.js.map +1 -1
  672. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js +3 -2
  673. package/dist/trinity/eve/ui/tacticalOverlay/EveTacticalTrails.js.map +1 -1
  674. package/dist/trinity/generated/index.js +0 -1
  675. package/dist/trinity/generated/index.js.map +1 -1
  676. package/dist/trinity/generated/trinityCore/index.js +0 -1
  677. package/dist/trinity/generated/trinityCore/index.js.map +1 -1
  678. package/dist/trinity/index.js +59 -23
  679. package/dist/trinity/index.js.map +1 -1
  680. package/dist/trinity/particle/{ITr2GenericEmitter.js → ITr2GenericEmitter/ITr2GenericEmitter.js} +4 -32
  681. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitter.js.map +1 -0
  682. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js +36 -0
  683. package/dist/trinity/particle/ITr2GenericEmitter/ITr2GenericEmitterUpdateArguments.js.map +1 -0
  684. package/dist/trinity/particle/Tr2ParticleSystem.js +4 -2
  685. package/dist/trinity/particle/Tr2ParticleSystem.js.map +1 -1
  686. package/dist/trinity/particle/element/Tr2ParticleElementData.js +15 -4
  687. package/dist/trinity/particle/element/Tr2ParticleElementData.js.map +1 -1
  688. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js +21 -20
  689. package/dist/trinity/particle/emitter/Tr2DynamicEmitter.js.map +1 -1
  690. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js +23 -22
  691. package/dist/trinity/particle/emitter/Tr2GpuSharedEmitter.js.map +1 -1
  692. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js +14 -13
  693. package/dist/trinity/particle/emitter/Tr2StaticEmitter.js.map +1 -1
  694. package/dist/trinity/particle/index.js +2 -1
  695. package/dist/trinity/particle/index.js.map +1 -1
  696. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js +7 -1
  697. package/dist/trinity/renderJob/step/TriStepPushRenderTarget.js.map +1 -1
  698. package/dist/trinity/shader/Tr2Effect.js +131 -58
  699. package/dist/trinity/shader/Tr2Effect.js.map +1 -1
  700. package/dist/trinity/shader/Tr2EffectStateManager.js +17 -5
  701. package/dist/trinity/shader/Tr2EffectStateManager.js.map +1 -1
  702. package/dist/trinity/shader/Tr2Material.js +21 -4
  703. package/dist/trinity/shader/Tr2Material.js.map +1 -1
  704. package/dist/trinity/shader/material/Tr2EffectPassParameters.js +4 -1
  705. package/dist/trinity/shader/material/Tr2EffectPassParameters.js.map +1 -1
  706. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js +2 -2
  707. package/dist/trinity/shader/parameter/Tr2GeometryBufferParameter.js.map +1 -1
  708. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js +79 -0
  709. package/dist/trinityal/Tr2BufferAL/Tr2BufferDescriptionAL.js.map +1 -0
  710. package/dist/trinityal/{Tr2DeviceResourceAL.js → Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js} +77 -79
  711. package/dist/trinityal/Tr2DeviceResourceAL/Tr2BaseDeviceResourceAL.js.map +1 -0
  712. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js +24 -0
  713. package/dist/trinityal/Tr2DeviceResourceAL/Tr2DeviceResourceAL.js.map +1 -0
  714. package/dist/trinityal/Tr2DrawUPHelper.js +2 -1
  715. package/dist/trinityal/Tr2DrawUPHelper.js.map +1 -1
  716. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js +45 -0
  717. package/dist/trinityal/Tr2HalHelperStructures/Tr2MsaaDesc.js.map +1 -0
  718. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js +154 -0
  719. package/dist/trinityal/Tr2HalHelperStructures/Tr2SamplerDescription.js.map +1 -0
  720. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js +48 -0
  721. package/dist/trinityal/Tr2HalHelperStructures/Tr2SubresourceData.js.map +1 -0
  722. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js +75 -0
  723. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureCoordBox.js.map +1 -0
  724. package/dist/trinityal/{Tr2HalHelperStructures.js → Tr2HalHelperStructures/Tr2TextureSubresource.js} +11 -115
  725. package/dist/trinityal/Tr2HalHelperStructures/Tr2TextureSubresource.js.map +1 -0
  726. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js +51 -0
  727. package/dist/trinityal/Tr2HalHelperStructures/Tr2Viewport.js.map +1 -0
  728. package/dist/trinityal/{Tr2RenderPassAL.js → Tr2RenderPassAL/Tr2ColorAttachment.js} +5 -28
  729. package/dist/trinityal/Tr2RenderPassAL/Tr2ColorAttachment.js.map +1 -0
  730. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js +38 -0
  731. package/dist/trinityal/Tr2RenderPassAL/Tr2DepthAttachment.js.map +1 -0
  732. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js +80 -0
  733. package/dist/trinityal/Tr2ResourceSetAL/Tr2RegisterMapAL.js.map +1 -0
  734. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js +76 -0
  735. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetAL.js.map +1 -0
  736. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js +96 -0
  737. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetALStub.js.map +1 -0
  738. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js +196 -0
  739. package/dist/trinityal/Tr2ResourceSetAL/Tr2ResourceSetDescriptionAL.js.map +1 -0
  740. package/dist/trinityal/index.js +22 -9
  741. package/dist/trinityal/index.js.map +1 -1
  742. package/dist/trinityal/stub/Tr2BufferALStub.js +86 -141
  743. package/dist/trinityal/stub/Tr2BufferALStub.js.map +1 -1
  744. package/dist/trinityal/stub/Tr2CapsALStub.js +17 -0
  745. package/dist/trinityal/stub/Tr2CapsALStub.js.map +1 -1
  746. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js +57 -41
  747. package/dist/trinityal/stub/Tr2ConstantBufferALStub.js.map +1 -1
  748. package/dist/trinityal/stub/Tr2FenceALStub.js +18 -2
  749. package/dist/trinityal/stub/Tr2FenceALStub.js.map +1 -1
  750. package/dist/trinityal/stub/Tr2GpuTimerALStub.js +97 -0
  751. package/dist/trinityal/stub/Tr2GpuTimerALStub.js.map +1 -0
  752. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js +124 -0
  753. package/dist/trinityal/stub/Tr2OcclusionQueryALStub.js.map +1 -0
  754. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js +146 -0
  755. package/dist/trinityal/stub/Tr2PipelineStatsQueryALStub/Tr2PipelineStatsQueryALStub.js.map +1 -0
  756. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js +28 -0
  757. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2BindlessResourcesAL.js.map +1 -0
  758. package/dist/trinityal/stub/{Tr2RenderContextALStub.js → Tr2RenderContextALStub/Tr2RenderContextALStub.js} +70 -75
  759. package/dist/trinityal/stub/Tr2RenderContextALStub/Tr2RenderContextALStub.js.map +1 -0
  760. package/dist/trinityal/stub/Tr2SamplerStateALStub.js +47 -31
  761. package/dist/trinityal/stub/Tr2SamplerStateALStub.js.map +1 -1
  762. package/dist/trinityal/stub/Tr2ShaderALStub.js +61 -45
  763. package/dist/trinityal/stub/Tr2ShaderALStub.js.map +1 -1
  764. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js +51 -33
  765. package/dist/trinityal/stub/Tr2ShaderProgramALStub.js.map +1 -1
  766. package/dist/trinityal/stub/Tr2SwapChainALStub.js +61 -45
  767. package/dist/trinityal/stub/Tr2SwapChainALStub.js.map +1 -1
  768. package/dist/trinityal/stub/Tr2TextureALStub.js +188 -171
  769. package/dist/trinityal/stub/Tr2TextureALStub.js.map +1 -1
  770. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js +43 -27
  771. package/dist/trinityal/stub/Tr2VertexLayoutALStub.js.map +1 -1
  772. package/dist/trinityal/stub/{Tr2VideoAdapterInfoALStub.js → Tr2VideoAdapterInfoStub.js} +16 -1
  773. package/dist/trinityal/stub/Tr2VideoAdapterInfoStub.js.map +1 -0
  774. package/dist/trinityal/stub/index.js +8 -4
  775. package/dist/trinityal/stub/index.js.map +1 -1
  776. package/dist/trinityal/vertexLayoutMatch.js +2 -2
  777. package/dist/trinityal/vertexLayoutMatch.js.map +1 -1
  778. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js +105 -90
  779. package/dist/trinityal/webgpu/CjsWebgpuBufferAL.js.map +1 -1
  780. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js +17 -0
  781. package/dist/trinityal/webgpu/CjsWebgpuCapsAL.js.map +1 -1
  782. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js +15 -0
  783. package/dist/trinityal/webgpu/CjsWebgpuConstantBufferAL.js.map +1 -1
  784. package/dist/trinityal/webgpu/CjsWebgpuDevice.js +2 -2
  785. package/dist/trinityal/webgpu/CjsWebgpuDevice.js.map +1 -1
  786. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js +900 -938
  787. package/dist/trinityal/webgpu/CjsWebgpuRenderContextAL.js.map +1 -1
  788. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js +56 -60
  789. package/dist/trinityal/webgpu/CjsWebgpuResourceSetAL.js.map +1 -1
  790. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js +16 -1
  791. package/dist/trinityal/webgpu/CjsWebgpuSamplerStateAL.js.map +1 -1
  792. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js +100 -379
  793. package/dist/trinityal/webgpu/CjsWebgpuShaderAL.js.map +1 -1
  794. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js +330 -0
  795. package/dist/trinityal/webgpu/CjsWebgpuShaderProgramAL.js.map +1 -0
  796. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js +15 -0
  797. package/dist/trinityal/webgpu/CjsWebgpuTextureAL.js.map +1 -1
  798. package/dist/trinityal/webgpu/core/{constantArena.js → CjsWebgpuConstantArena.js} +1 -1
  799. package/dist/trinityal/webgpu/core/CjsWebgpuConstantArena.js.map +1 -0
  800. package/dist/trinityal/webgpu/core/{batchGroups.js → CjsWebgpuEncodeState.js} +1 -1
  801. package/dist/trinityal/webgpu/core/CjsWebgpuEncodeState.js.map +1 -0
  802. package/dist/trinityal/webgpu/core/{perFrameSource.js → CjsWebgpuPerFrameSource.js} +1 -1
  803. package/dist/trinityal/webgpu/core/CjsWebgpuPerFrameSource.js.map +1 -0
  804. package/dist/trinityal/webgpu/core/{pipelineCache.js → CjsWebgpuPipelineCache.js} +1 -1
  805. package/dist/trinityal/webgpu/core/CjsWebgpuPipelineCache.js.map +1 -0
  806. package/dist/trinityal/webgpu/core/{psoDescription.js → CjsWebgpuPsoDescription.js} +2 -2
  807. package/dist/trinityal/webgpu/core/CjsWebgpuPsoDescription.js.map +1 -0
  808. package/dist/trinityal/webgpu/core/{renderTarget.js → CjsWebgpuRenderTarget.js} +1 -1
  809. package/dist/trinityal/webgpu/core/CjsWebgpuRenderTarget.js.map +1 -0
  810. package/dist/trinityal/webgpu/core/{samplerSource.js → CjsWebgpuSamplerSource.js} +1 -1
  811. package/dist/trinityal/webgpu/core/CjsWebgpuSamplerSource.js.map +1 -0
  812. package/dist/trinityal/webgpu/core/{textureSource.js → CjsWebgpuTextureSource.js} +1 -1
  813. package/dist/trinityal/webgpu/core/CjsWebgpuTextureSource.js.map +1 -0
  814. package/dist/trinityal/webgpu/core/{trinityBatchDispatcher.js → CjsWebgpuTrinityBatchDispatcher.js} +4 -4
  815. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchDispatcher.js.map +1 -0
  816. package/dist/trinityal/webgpu/core/{trinityBatchResolver.js → CjsWebgpuTrinityBatchResolver.js} +81 -81
  817. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityBatchResolver.js.map +1 -0
  818. package/dist/trinityal/webgpu/core/{trinityPassEncoder.js → CjsWebgpuTrinityPassEncoder.js} +2 -2
  819. package/dist/trinityal/webgpu/core/CjsWebgpuTrinityPassEncoder.js.map +1 -0
  820. package/dist/trinityal/webgpu/core/{workQueue.js → CjsWebgpuWorkQueue.js} +1 -1
  821. package/dist/trinityal/webgpu/core/CjsWebgpuWorkQueue.js.map +1 -0
  822. package/dist/trinityal/webgpu/internal.js +12 -11
  823. package/dist/trinityal/webgpu/internal.js.map +1 -1
  824. package/docs/audio/reference/classes/trinity.md +44 -34
  825. package/docs/character/architecture.md +276 -0
  826. package/docs/character/reference/character-appearance-plans.md +30 -66
  827. package/docs/character/reference/prepared-libraries.md +14 -30
  828. package/docs/global/reference/api.md +2 -1
  829. package/docs/global/reference/classes/README.md +53 -71
  830. package/docs/global/reference/classes/dropped.md +16 -0
  831. package/docs/resource/README.md +19 -15
  832. package/docs/resource/architecture.md +9 -2
  833. package/docs/resource/concepts/format-capabilities.md +124 -80
  834. package/docs/resource/concepts/shared-format-helpers.md +94 -0
  835. package/docs/resource/formats/README.md +230 -224
  836. package/docs/resource/formats/bitknit2.md +221 -0
  837. package/docs/resource/formats/carbon-effect-container.md +184 -269
  838. package/docs/resource/formats/gr2.md +6 -1
  839. package/docs/resource/formats/schemabound.md +28 -48
  840. package/docs/resource/formats/static.md +70 -97
  841. package/docs/resource/formats/webgl/carbon-constant-layouts.md +8 -8
  842. package/docs/resource/formats/webgl/decl-io.md +165 -256
  843. package/docs/resource/formats/webgl/memory-structured.md +64 -142
  844. package/docs/resource/formats/webgl/texture-sample.md +109 -138
  845. package/docs/resource/formats/webgpu/formats/carbon-webgpu.md +38 -69
  846. package/docs/resource/formats/webgpu/guides/effect-packaging.md +54 -116
  847. package/docs/resource/formats/webgpu/reference/api.md +64 -67
  848. package/docs/resource/formats/webgpu/reference/wgsl-compatibility.md +104 -260
  849. package/docs/resource/reference/classes/core.md +256 -236
  850. package/docs/resource/reference/classes/formats.md +1668 -1672
  851. package/docs/resource/reference/workers.md +4 -2
  852. package/docs/sof/reference/classes/core.md +1 -1
  853. package/docs/sof/reference/classes/faction.md +2 -2
  854. package/docs/sof/reference/classes/generic.md +4 -4
  855. package/docs/sof/reference/classes/pattern.md +1 -1
  856. package/docs/sof/reference/classes/shared.md +10 -10
  857. package/docs/trinity/architecture.md +55 -44
  858. package/docs/trinity/concepts/generated-class-lifecycle.md +10 -15
  859. package/docs/trinity/reference/classes/curves-and-utilities.md +496 -506
  860. package/docs/trinity/reference/classes/dropped.md +0 -189
  861. package/docs/trinity/reference/classes/eve-runtime.md +8 -8
  862. package/docs/trinity/reference/classes/generated.md +0 -10
  863. package/docs/trinity/reference/classes/particle.md +2 -2
  864. package/docs/trinity/reference/classes/trinity-core.md +1554 -1256
  865. package/docs/trinity/reference/implementation-status.md +50 -75
  866. package/docs/trinity/reference/main-semantic-extraction.md +13 -17
  867. package/docs/trinityal/reference/classes/README.md +77 -27
  868. package/docs/trinityal/reference/classes/dropped.md +82 -0
  869. package/docs/trinityal/webgpu/README.md +3 -1
  870. package/docs/trinityal/webgpu/architecture.md +121 -228
  871. package/docs/trinityal/webgpu/reference/api.md +5 -5
  872. package/docs/trinityal/webgpu/reference/classes/README.md +13 -13
  873. package/format-notices/gr2/NOTICE +18 -12
  874. package/format-notices/gr2/THIRD-PARTY-NOTICES.md +5 -5
  875. package/package.json +4 -1
  876. package/dist/audio/trinity/audio/AudActionLog.js +0 -173
  877. package/dist/audio/trinity/audio/AudActionLog.js.map +0 -1
  878. package/dist/audio/trinity/audio/AudObstructionOcclusion.js.map +0 -1
  879. package/dist/global/contracts/CjsScriptCallback.js +0 -94
  880. package/dist/global/contracts/CjsScriptCallback.js.map +0 -1
  881. package/dist/trinity/controllers/ITr2Controller.js.map +0 -1
  882. package/dist/trinity/core/Tr2GpuResourcePool.js.map +0 -1
  883. package/dist/trinity/core/Tr2QuadRenderer.js.map +0 -1
  884. package/dist/trinity/core/Tr2TextureArray.js.map +0 -1
  885. package/dist/trinity/core/batch/ITriRenderBatchAccumulator.js.map +0 -1
  886. package/dist/trinity/core/batch/Tr2RenderBatch.js.map +0 -1
  887. package/dist/trinity/core/batch/TriRenderBatchAccumulator.js.map +0 -1
  888. package/dist/trinity/core/context/CjsShadowMapExecutor.js +0 -43
  889. package/dist/trinity/core/context/CjsShadowMapExecutor.js.map +0 -1
  890. package/dist/trinity/core/context/CjsVolumetricsExecutor.js +0 -64
  891. package/dist/trinity/core/context/CjsVolumetricsExecutor.js.map +0 -1
  892. package/dist/trinity/core/context/Tr2VisibilityResults.js +0 -109
  893. package/dist/trinity/core/context/Tr2VisibilityResults.js.map +0 -1
  894. package/dist/trinity/core/device/Tr2RingBuffer.js.map +0 -1
  895. package/dist/trinity/core/device/Tr2SuballocatedBuffer.js.map +0 -1
  896. package/dist/trinity/core/mesh/ITr2ImpostorSource.js.map +0 -1
  897. package/dist/trinity/core/mesh/ITr2InstanceData.js.map +0 -1
  898. package/dist/trinity/core/rawData/Tr2PerObjectData.js.map +0 -1
  899. package/dist/trinity/core/rawData/constantLayout.js +0 -175
  900. package/dist/trinity/core/rawData/constantLayout.js.map +0 -1
  901. package/dist/trinity/core/vertex/Tr2VertexDefinition.js.map +0 -1
  902. package/dist/trinity/eve/child/EveChildInstancedMeshes.js.map +0 -1
  903. package/dist/trinity/eve/child/EveChildPartData.js.map +0 -1
  904. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js +0 -47
  905. package/dist/trinity/generated/trinityCore/Tr2Denoiser.js.map +0 -1
  906. package/dist/trinity/particle/ITr2GenericEmitter.js.map +0 -1
  907. package/dist/trinityal/Tr2DeviceResourceAL.js.map +0 -1
  908. package/dist/trinityal/Tr2HalHelperStructures.js.map +0 -1
  909. package/dist/trinityal/Tr2RenderPassAL.js.map +0 -1
  910. package/dist/trinityal/Tr2ResourceSetAL.js +0 -419
  911. package/dist/trinityal/Tr2ResourceSetAL.js.map +0 -1
  912. package/dist/trinityal/Tr2SamplerDescription.js +0 -72
  913. package/dist/trinityal/Tr2SamplerDescription.js.map +0 -1
  914. package/dist/trinityal/stub/Tr2QueryALStub.js +0 -326
  915. package/dist/trinityal/stub/Tr2QueryALStub.js.map +0 -1
  916. package/dist/trinityal/stub/Tr2RenderContextALStub.js.map +0 -1
  917. package/dist/trinityal/stub/Tr2VideoAdapterInfoALStub.js.map +0 -1
  918. package/dist/trinityal/webgpu/core/batchGroups.js.map +0 -1
  919. package/dist/trinityal/webgpu/core/constantArena.js.map +0 -1
  920. package/dist/trinityal/webgpu/core/perFrameSource.js.map +0 -1
  921. package/dist/trinityal/webgpu/core/pipelineCache.js.map +0 -1
  922. package/dist/trinityal/webgpu/core/psoDescription.js.map +0 -1
  923. package/dist/trinityal/webgpu/core/renderTarget.js.map +0 -1
  924. package/dist/trinityal/webgpu/core/samplerSource.js.map +0 -1
  925. package/dist/trinityal/webgpu/core/textureSource.js.map +0 -1
  926. package/dist/trinityal/webgpu/core/trinityBatchDispatcher.js.map +0 -1
  927. package/dist/trinityal/webgpu/core/trinityBatchResolver.js.map +0 -1
  928. package/dist/trinityal/webgpu/core/trinityPassEncoder.js.map +0 -1
  929. package/dist/trinityal/webgpu/core/workQueue.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CjsGr2Format.js","sources":["../../../../../src/resource/formats/gr2/CjsGr2Format.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\r\n\r\nimport { curves } from \"./core/curves.js\";\r\nimport { GR2_MAGICS, bytesToHex } from \"./core/reader.js\";\r\nimport { tangents } from \"./core/tangents.js\";\r\nimport { inspectGsfRaw, isGsfRaw, projectGsf } from \"./core/gsf.js\";\nimport { writeGr2, writeSharedGr2 } from \"./core/writer.js\";\nimport {\r\n CLASS_KEYS,\r\n DEFAULT_VALUES,\r\n OUTPUT_CMF,\r\n OUTPUT_GR2,\r\n OUTPUT_GR2_JSON,\r\n OUTPUT_JSON,\r\n OUTPUT_RAW,\r\n inspectRawGr2Result,\r\n normalizeValues,\r\n readRawInput,\r\n readWithValues,\r\n toJsonValue,\r\n validateClass,\r\n validateClassKey\r\n} from \"./core/helpers.js\";\r\n\r\n/**\r\n * CarbonEngineJS-facing GR2/GSF reader and CMF-first GR2 geometry writer.\n *\r\n * The Cjs prefix marks this as a JavaScript format/construction boundary. It\r\n * reads `.gr2` geometry/skeleton/animation graphs and `.gsf` state profiles,\n * emits GR2 JSON, hydrated caller-supplied classes, or CMF-shaped output, and\n * writes pure-JavaScript GR2 geometry from CMF without pretending those\n * classes are the engine runtime itself.\n */\r\nexport class CjsGr2Format extends CjsFormat\r\n{\r\n\r\n #emit = DEFAULT_VALUES.emit;\r\n #decompressCurves = DEFAULT_VALUES.decompressCurves;\r\n #unpackTangents = DEFAULT_VALUES.unpackTangents;\r\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\r\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\r\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\r\n #classes = {};\r\n\r\n /**\r\n * Create a reusable format profile.\r\n *\r\n * @param {object} [options] Default format/build values.\r\n */\r\n constructor(options = {})\r\n {\r\n super();\r\n this.SetValues(options);\r\n }\r\n\r\n /**\r\n * Set format values for this reusable profile.\r\n *\r\n * @param {object} [options] Values to merge into the profile.\r\n * @returns {CjsGr2Format} This format profile.\r\n */\r\n SetValues(options = {})\r\n {\r\n const values = normalizeValues(this.GetValues(), options);\r\n\r\n this.#emit = values.emit;\r\n this.#decompressCurves = values.decompressCurves;\r\n this.#unpackTangents = values.unpackTangents;\r\n this.#rebuildMissingNormals = values.rebuildMissingNormals;\r\n this.#rebuildMissingTangents = values.rebuildMissingTangents;\r\n this.#rebuildMissingBiNormals = values.rebuildMissingBiNormals;\r\n this.#classes = values.classes;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Get this profile's current values, optionally with per-call overrides.\r\n *\r\n * @param {object} [options] Optional values to merge into a copy.\r\n * @returns {object} A copy of the effective values.\r\n */\r\n GetValues(options = {})\r\n {\r\n return normalizeValues({\r\n emit: this.#emit,\r\n decompressCurves: this.#decompressCurves,\r\n unpackTangents: this.#unpackTangents,\r\n rebuildMissingNormals: this.#rebuildMissingNormals,\r\n rebuildMissingTangents: this.#rebuildMissingTangents,\r\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\r\n classes: this.#classes\r\n }, options);\r\n }\r\n\r\n /**\r\n * Set multiple GR2 JSON node constructors for this profile.\r\n *\r\n * @param {object} [classes] Map of node class keys to constructors.\r\n * @returns {CjsGr2Format} This format profile.\r\n */\r\n SetClasses(classes = {})\r\n {\r\n return this.SetValues({ classes });\r\n }\r\n\r\n /**\r\n * Set a GR2 JSON node constructor for this profile.\r\n *\r\n * @param {string} type Node class key.\r\n * @param {Function|null|undefined} Class Constructor to use, or nullish to delete.\r\n * @returns {CjsGr2Format} This format profile.\r\n */\r\n SetClass(type, Class)\r\n {\r\n validateClassKey(type);\r\n if (Class === null || Class === undefined)\r\n {\r\n delete this.#classes[type];\r\n return this;\r\n }\r\n\r\n validateClass(type, Class);\r\n this.#classes = { ...this.#classes, [type]: Class };\r\n return this;\r\n }\r\n\r\n /**\r\n * Get a configured GR2 JSON node constructor.\r\n *\r\n * @param {string} type Node class key.\r\n * @returns {Function|undefined}\r\n */\r\n GetClass(type)\r\n {\r\n validateClassKey(type);\r\n return this.#classes[type];\r\n }\r\n\r\n /**\r\n * Whether this reader has a constructor for a GR2 JSON node key.\r\n *\r\n * @param {string} type Node class key.\r\n * @returns {boolean}\r\n */\r\n HasClass(type)\r\n {\r\n return !!this.GetClass(type);\r\n }\r\n\r\n /**\r\n * Parse a .gr2 buffer and return JSON by default, classes when configured,\r\n * or raw reflection data when `emit` is \"raw\".\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @param {object} [options] Per-call values.\r\n * @returns {object}\r\n */\r\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Serialize a native CMF graph as 32-bit little-endian GR2 bytes.\n *\n * @param {object} input Native CMF v1 graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n Write(input, options = {})\n {\n return writeGr2(input, options);\n }\n\n /**\n * Convert shared or GR2-shaped geometry through CMF and serialize GR2.\n *\n * @param {object} input Shared geometry root or GR2 JSON graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n WriteShared(input, options = {})\n {\n return writeSharedGr2(input, options);\n }\n\r\n /**\r\n * Parse a .gr2 buffer into the reflected Granny object graph.\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @returns {object}\r\n */\r\n ReadRaw(input)\r\n {\r\n return readRawInput(input);\r\n }\r\n\r\n /**\r\n * Return a stable, lightweight summary for a GR2 buffer or raw result.\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @returns {object}\r\n */\r\n Inspect(input)\r\n {\r\n return inspectRawGr2Result(this.ReadRaw(input));\r\n }\r\n\r\n /** Whether input is a Granny State document carried by the GR2 container. */\r\n IsGSF(input)\r\n {\r\n return isGsfRaw(this.ReadRaw(input));\r\n }\r\n\r\n /** Read the GState semantic projection, or raw reflected data with `emit: \"raw\"`. */\r\n ReadGSF(input, options = {})\r\n {\r\n const raw = this.ReadRaw(input);\r\n return options.emit === \"raw\" ? raw : projectGsf(raw);\r\n }\r\n\r\n /** Inspect a GSF document and its referenced GR2 animations. */\r\n InspectGSF(input)\r\n {\r\n return inspectGsfRaw(this.ReadRaw(input));\r\n }\r\n\r\n /**\r\n * Convert format output to plain JSON-compatible data.\r\n *\r\n * @param {object} value Format output to convert.\r\n * @returns {any} Plain JSON-compatible data.\r\n */\r\n ToJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n /**\r\n * Static one-shot read. Static methods use camelCase by convention.\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @param {object} [options] Reader and post-processing values.\r\n * @returns {object}\r\n */\r\n static read(input, options = {})\n {\n return readWithValues(CjsGr2Format, input, normalizeValues(DEFAULT_VALUES, options));\n }\n\n /**\n * Serialize a native CMF graph as 32-bit little-endian GR2 bytes.\n *\n * @param {object} input Native CMF v1 graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n static write(input, options = {})\n {\n return writeGr2(input, options);\n }\n\n /**\n * Convert shared or GR2-shaped geometry through CMF and serialize GR2.\n *\n * @param {object} input Shared geometry root or GR2 JSON graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n static writeShared(input, options = {})\n {\n return writeSharedGr2(input, options);\n }\n\r\n /**\r\n * Static one-shot raw read.\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @returns {object}\r\n */\r\n static readRaw(input)\r\n {\r\n return readRawInput(input);\r\n }\r\n\r\n /**\r\n * Static one-shot inspection.\r\n *\r\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\r\n * @returns {object}\r\n */\r\n static inspect(input)\r\n {\r\n return inspectRawGr2Result(readRawInput(input));\r\n }\r\n\r\n /** Whether input is a Granny State document carried by the GR2 container. */\r\n static isGsf(input)\r\n {\r\n try\r\n {\r\n return isGsfRaw(readRawInput(input));\r\n }\r\n catch\r\n {\r\n return false;\r\n }\r\n }\r\n\r\n /** Read the GState semantic projection, or raw reflected data with `emit: \"raw\"`. */\r\n static readGsf(input, options = {})\r\n {\r\n const raw = readRawInput(input);\r\n return options.emit === \"raw\" ? raw : projectGsf(raw);\r\n }\r\n\r\n /** Async one-shot GSF read for standard format API compatibility. */\r\n static readGsfAsync(input, options = {})\r\n {\r\n return Promise.resolve(this.readGsf(input, options));\r\n }\r\n\r\n /** Inspect a GSF document and its referenced GR2 animations. */\r\n static inspectGsf(input)\r\n {\r\n return inspectGsfRaw(readRawInput(input));\r\n }\r\n\r\n /**\r\n * Static JSON-compatible conversion.\r\n *\r\n * @param {object} value Format output to convert.\r\n * @returns {any} Plain JSON-compatible data.\r\n */\r\n static toJSON(value)\r\n {\r\n return toJsonValue(value);\r\n }\r\n\r\n static OUTPUT_JSON = OUTPUT_JSON;\r\n static OUTPUT_GR2 = OUTPUT_GR2;\r\n static OUTPUT_GR2_JSON = OUTPUT_GR2_JSON;\r\n static OUTPUT_CMF = OUTPUT_CMF;\r\n static OUTPUT_RAW = OUTPUT_RAW;\r\n static CLASS_KEYS = CLASS_KEYS;\r\n static id = \"gr2\";\r\n static mediaTypes = Object.freeze([ \"geometry\" ]);\r\n static outputs = CjsFormat.defineOutputs({\r\n gr2: { decoded: true },\r\n cmf: { decoded: true },\r\n json: { role: \"debug\", default: true, decoded: true },\r\n gr2Json: { role: \"debug\", decoded: true },\r\n raw: { role: \"debug\", decoded: true }\r\n });\r\n static extensions = Object.freeze([ \".gr2\", \".gsf\" ]);\r\n static curves = curves;\r\n static tangents = tangents;\r\n static gsf = Object.freeze({ isRaw: isGsfRaw, project: projectGsf, inspectRaw: inspectGsfRaw });\r\n\r\n /**\r\n * Cheap magic probe for GR2/GSF byte streams.\r\n *\r\n * @param {Uint8Array} bytes Candidate source bytes.\r\n * @returns {boolean} True when the 16-byte Granny magic is recognized.\r\n */\r\n static probeSupport(bytes)\r\n {\r\n if (!bytes || bytes.length < 16) return false;\r\n return bytesToHex(bytes.subarray(0, 16)) in GR2_MAGICS;\r\n }\r\n\r\n /**\r\n * Async read entrypoint for the resource-manager contract.\r\n *\r\n * @param {Uint8Array} bytes Source bytes.\r\n * @param {object} [options] Read options (emit, classes, conversions).\r\n * @returns {Promise<object>} The emitted GR2/GSF result.\r\n */\r\n static async readAsync(bytes, options = {})\r\n {\r\n return CjsGr2Format.read(bytes, options);\r\n }\r\n\r\n}\r\n\r\nexport default CjsGr2Format;\r\n"],"names":["CjsGr2Format","CjsFormat","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","constructor","options","SetValues","values","normalizeValues","GetValues","classes","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","readWithValues","Write","writeGr2","WriteShared","writeSharedGr2","ReadRaw","readRawInput","Inspect","inspectRawGr2Result","IsGSF","isGsfRaw","ReadGSF","raw","projectGsf","InspectGSF","inspectGsfRaw","ToJSON","value","toJsonValue","read","write","writeShared","readRaw","inspect","isGsf","readGsf","readGsfAsync","Promise","resolve","inspectGsf","toJSON","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","CLASS_KEYS","id","mediaTypes","Object","freeze","outputs","defineOutputs","gr2","decoded","cmf","json","role","default","gr2Json","extensions","curves","tangents","gsf","isRaw","project","inspectRaw","probeSupport","bytes","length","bytesToHex","subarray","GR2_MAGICS","readAsync"],"mappings":"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"}
1
+ {"version":3,"file":"CjsGr2Format.js","sources":["../../../../../src/resource/formats/gr2/CjsGr2Format.js"],"sourcesContent":["import { CjsFormat } from \"../../format/CjsFormat.js\";\n\nimport { curves } from \"./core/curves.js\";\nimport { GR2_MAGICS, bytesToHex } from \"./core/reader.js\";\nimport { tangents } from \"./core/tangents.js\";\nimport { inspectGsfRaw, isGsfRaw, projectGsf } from \"./core/gsf.js\";\nimport { writeGr2, writeSharedGr2 } from \"./core/writer.js\";\nimport {\n CLASS_KEYS,\n DEFAULT_VALUES,\n OUTPUT_CMF,\n OUTPUT_GR2,\n OUTPUT_GR2_JSON,\n OUTPUT_JSON,\n OUTPUT_RAW,\n inspectRawGr2Result,\n normalizeValues,\n readRawInput,\n readWithValues,\n toJsonValue,\n validateClass,\n validateClassKey\n} from \"./core/helpers.js\";\n\n/**\n * CarbonEngineJS-facing GR2/GSF reader and CMF-first GR2 geometry writer.\n *\n * The Cjs prefix marks this as a JavaScript format/construction boundary. It\n * reads `.gr2` geometry/skeleton/animation graphs and `.gsf` state profiles,\n * emits GR2 JSON, hydrated caller-supplied classes, or CMF-shaped output, and\n * writes pure-JavaScript GR2 geometry from CMF without pretending those\n * classes are the engine runtime itself.\n */\nexport class CjsGr2Format extends CjsFormat\n{\n\n #emit = DEFAULT_VALUES.emit;\n #decompressCurves = DEFAULT_VALUES.decompressCurves;\n #unpackTangents = DEFAULT_VALUES.unpackTangents;\n #rebuildMissingNormals = DEFAULT_VALUES.rebuildMissingNormals;\n #rebuildMissingTangents = DEFAULT_VALUES.rebuildMissingTangents;\n #rebuildMissingBiNormals = DEFAULT_VALUES.rebuildMissingBiNormals;\n #classes = {};\n\n /**\n * Create a reusable format profile.\n *\n * @param {object} [options] Default format/build 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 {CjsGr2Format} This format profile.\n */\n SetValues(options = {})\n {\n const values = normalizeValues(this.GetValues(), options);\n\n this.#emit = values.emit;\n this.#decompressCurves = values.decompressCurves;\n this.#unpackTangents = values.unpackTangents;\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 decompressCurves: this.#decompressCurves,\n unpackTangents: this.#unpackTangents,\n rebuildMissingNormals: this.#rebuildMissingNormals,\n rebuildMissingTangents: this.#rebuildMissingTangents,\n rebuildMissingBiNormals: this.#rebuildMissingBiNormals,\n classes: this.#classes\n }, options);\n }\n\n /**\n * Set multiple GR2 JSON node constructors for this profile.\n *\n * @param {object} [classes] Map of node class keys to constructors.\n * @returns {CjsGr2Format} This format profile.\n */\n SetClasses(classes = {})\n {\n return this.SetValues({ classes });\n }\n\n /**\n * Set a GR2 JSON node 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 {CjsGr2Format} This format profile.\n */\n SetClass(type, Class)\n {\n validateClassKey(type);\n if (Class === null || Class === undefined)\n {\n delete this.#classes[type];\n return this;\n }\n\n validateClass(type, Class);\n this.#classes = { ...this.#classes, [type]: Class };\n return this;\n }\n\n /**\n * Get a configured GR2 JSON node constructor.\n *\n * @param {string} type Node class key.\n * @returns {Function|undefined}\n */\n GetClass(type)\n {\n validateClassKey(type);\n return this.#classes[type];\n }\n\n /**\n * Whether this reader has a constructor for a GR2 JSON node key.\n *\n * @param {string} type Node class key.\n * @returns {boolean}\n */\n HasClass(type)\n {\n return !!this.GetClass(type);\n }\n\n /**\n * Parse a .gr2 buffer and return JSON by default, classes when configured,\n * or raw reflection data when `emit` is \"raw\".\n *\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @param {object} [options] Per-call values.\n * @returns {object}\n */\n Read(input, options = {})\n {\n return readWithValues(this, input, this.GetValues(options));\n }\n\n /**\n * Serialize a native CMF graph as 32-bit little-endian GR2 bytes.\n *\n * @param {object} input Native CMF v1 graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n Write(input, options = {})\n {\n return writeGr2(input, options);\n }\n\n /**\n * Convert shared or GR2-shaped geometry through CMF and serialize GR2.\n *\n * @param {object} input Shared geometry root or GR2 JSON graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n WriteShared(input, options = {})\n {\n return writeSharedGr2(input, options);\n }\n\n /**\n * Parse a .gr2 buffer into the reflected Granny object graph.\n *\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @returns {object}\n */\n ReadRaw(input)\n {\n return readRawInput(input);\n }\n\n /**\n * Return a stable, lightweight summary for a GR2 buffer or raw result.\n *\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @returns {object}\n */\n Inspect(input)\n {\n return inspectRawGr2Result(this.ReadRaw(input));\n }\n\n /** Whether input is a Granny State document carried by the GR2 container. */\n IsGSF(input)\n {\n return isGsfRaw(this.ReadRaw(input));\n }\n\n /** Read the GState semantic projection, or raw reflected data with `emit: \"raw\"`. */\n ReadGSF(input, options = {})\n {\n const raw = this.ReadRaw(input);\n return options.emit === \"raw\" ? raw : projectGsf(raw);\n }\n\n /** Inspect a GSF document and its referenced GR2 animations. */\n InspectGSF(input)\n {\n return inspectGsfRaw(this.ReadRaw(input));\n }\n\n /**\n * Convert format output to plain JSON-compatible data.\n *\n * @param {object} 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 {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @param {object} [options] Reader and post-processing values.\n * @returns {object}\n */\n static read(input, options = {})\n {\n return readWithValues(CjsGr2Format, input, normalizeValues(DEFAULT_VALUES, options));\n }\n\n /**\n * Serialize a native CMF graph as 32-bit little-endian GR2 bytes.\n *\n * @param {object} input Native CMF v1 graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n static write(input, options = {})\n {\n return writeGr2(input, options);\n }\n\n /**\n * Convert shared or GR2-shaped geometry through CMF and serialize GR2.\n *\n * @param {object} input Shared geometry root or GR2 JSON graph.\n * @param {object} [options] Tangent, curve-packing, and section-storage options.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\n static writeShared(input, options = {})\n {\n return writeSharedGr2(input, options);\n }\n\n /**\n * Static one-shot raw read.\n *\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @returns {object}\n */\n static readRaw(input)\n {\n return readRawInput(input);\n }\n\n /**\n * Static one-shot inspection.\n *\n * @param {Uint8Array|Buffer|object} input Raw .gr2 bytes or an existing raw read result.\n * @returns {object}\n */\n static inspect(input)\n {\n return inspectRawGr2Result(readRawInput(input));\n }\n\n /** Whether input is a Granny State document carried by the GR2 container. */\n static isGsf(input)\n {\n try\n {\n return isGsfRaw(readRawInput(input));\n }\n catch\n {\n return false;\n }\n }\n\n /** Read the GState semantic projection, or raw reflected data with `emit: \"raw\"`. */\n static readGsf(input, options = {})\n {\n const raw = readRawInput(input);\n return options.emit === \"raw\" ? raw : projectGsf(raw);\n }\n\n /** Async one-shot GSF read for standard format API compatibility. */\n static readGsfAsync(input, options = {})\n {\n return Promise.resolve(this.readGsf(input, options));\n }\n\n /** Inspect a GSF document and its referenced GR2 animations. */\n static inspectGsf(input)\n {\n return inspectGsfRaw(readRawInput(input));\n }\n\n /**\n * Static JSON-compatible conversion.\n *\n * @param {object} 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 static OUTPUT_JSON = OUTPUT_JSON;\n static OUTPUT_GR2 = OUTPUT_GR2;\n static OUTPUT_GR2_JSON = OUTPUT_GR2_JSON;\n static OUTPUT_CMF = OUTPUT_CMF;\n static OUTPUT_RAW = OUTPUT_RAW;\n static CLASS_KEYS = CLASS_KEYS;\n static id = \"gr2\";\n static mediaTypes = Object.freeze([ \"geometry\" ]);\n // Same shape as the other geometry writers: a native CMF v1 graph is the\n // default input, and `writeShared` adapts a shared or GR2-shaped root.\n static inputs = CjsFormat.defineInputs({\n cmf: { default: true, payloadType: \"geometry\", options: [ \"tangents\", \"packCurves\", \"sectionStorage\" ] },\n shared: { payloadType: \"geometry\", options: [ \"tangents\", \"packCurves\", \"sectionStorage\" ] }\n });\n\n static outputs = CjsFormat.defineOutputs({\n gr2: { decoded: true },\n cmf: { decoded: true },\n json: { role: \"debug\", default: true, decoded: true },\n gr2Json: { role: \"debug\", decoded: true },\n raw: { role: \"debug\", decoded: true }\n });\n static extensions = Object.freeze([ \".gr2\", \".gsf\" ]);\n static curves = curves;\n static tangents = tangents;\n static gsf = Object.freeze({ isRaw: isGsfRaw, project: projectGsf, inspectRaw: inspectGsfRaw });\n\n /**\n * Cheap magic probe for GR2/GSF byte streams.\n *\n * @param {Uint8Array} bytes Candidate source bytes.\n * @returns {boolean} True when the 16-byte Granny magic is recognized.\n */\n static probeSupport(bytes)\n {\n if (!bytes || bytes.length < 16) return false;\n return bytesToHex(bytes.subarray(0, 16)) in GR2_MAGICS;\n }\n\n /**\n * Async read entrypoint for the resource-manager contract.\n *\n * @param {Uint8Array} bytes Source bytes.\n * @param {object} [options] Read options (emit, classes, conversions).\n * @returns {Promise<object>} The emitted GR2/GSF result.\n */\n static async readAsync(bytes, options = {})\n {\n return CjsGr2Format.read(bytes, options);\n }\n\n}\n\nexport default CjsGr2Format;\n"],"names":["CjsGr2Format","CjsFormat","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","constructor","options","SetValues","values","normalizeValues","GetValues","classes","SetClasses","SetClass","type","Class","validateClassKey","undefined","validateClass","GetClass","HasClass","Read","input","readWithValues","Write","writeGr2","WriteShared","writeSharedGr2","ReadRaw","readRawInput","Inspect","inspectRawGr2Result","IsGSF","isGsfRaw","ReadGSF","raw","projectGsf","InspectGSF","inspectGsfRaw","ToJSON","value","toJsonValue","read","write","writeShared","readRaw","inspect","isGsf","readGsf","readGsfAsync","Promise","resolve","inspectGsf","toJSON","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","CLASS_KEYS","id","mediaTypes","Object","freeze","inputs","defineInputs","cmf","default","payloadType","shared","outputs","defineOutputs","gr2","decoded","json","role","gr2Json","extensions","curves","tangents","gsf","isRaw","project","inspectRaw","probeSupport","bytes","length","bytesToHex","subarray","GR2_MAGICS","readAsync"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { crc32 } from '#utils/checksum';
1
2
  import { CjsByteWriter } from '../../../format/CjsByteWriter.js';
2
3
  import { CjsFormatWriteError } from '../../../format/CjsFormatError.js';
3
4
  import { encodeBitKnit2Raw } from './bitknit2.js';
@@ -21,16 +22,6 @@ function bytesWith(size, write) {
21
22
  write(new DataView(bytes.buffer));
22
23
  return bytes;
23
24
  }
24
- function crc32(bytes, start = 0) {
25
- let crc = 0xffffffff;
26
- for (let index = start; index < bytes.length; index++) {
27
- crc ^= bytes[index];
28
- for (let bit = 0; bit < 8; bit++) {
29
- crc = crc >>> 1 ^ (crc & 1 ? 0xedb88320 : 0);
30
- }
31
- }
32
- return (crc ^ 0xffffffff) >>> 0;
33
- }
34
25
  function primitiveSize(type) {
35
26
  switch (type) {
36
27
  case M.Real32:
@@ -1 +1 @@
1
- {"version":3,"file":"container.js","sources":["../../../../../../src/resource/formats/gr2/core/container.js"],"sourcesContent":["import { CjsByteWriter } from \"../../../format/CjsByteWriter.js\";\nimport { CjsFormatWriteError } from \"../../../format/CjsFormatError.js\";\nimport { encodeBitKnit2Raw } from \"./bitknit2.js\";\nimport { GRANNY_MEMBER_TYPES } from \"./reader.js\";\n\nconst M = GRANNY_MEMBER_TYPES;\nconst MAGIC_32_LE = new Uint8Array([\n 0x29, 0xde, 0x6c, 0xc0, 0xba, 0xa4, 0x53, 0x2b,\n 0x25, 0xf5, 0xb7, 0xa5, 0xf6, 0x66, 0xe2, 0xee\n]);\nconst MEMBER_SIZE = 32;\nconst FILE_HEADER_OFFSET = 32;\nconst SECTION_DIRECTORY_OFFSET = 104;\nconst SECTION_RECORD_SIZE = 44;\nconst TYPE_TAG_2_12 = 0x80000039;\nconst UTF8 = new TextEncoder();\nexport const GR2_SECTION_COMPRESSION_NONE = \"none\";\nexport const GR2_SECTION_COMPRESSION_BITKNIT2_RAW = \"bitknit2Raw\";\n\nfunction align(value, alignment)\n{\n return Math.ceil(value / alignment) * alignment;\n}\n\nfunction bytesWith(size, write)\n{\n const bytes = new Uint8Array(size);\n write(new DataView(bytes.buffer));\n return bytes;\n}\n\nfunction crc32(bytes, start = 0)\n{\n let crc = 0xffffffff;\n for (let index = start; index < bytes.length; index++)\n {\n crc ^= bytes[index];\n for (let bit = 0; bit < 8; bit++)\n {\n crc = (crc >>> 1) ^ (crc & 1 ? 0xedb88320 : 0);\n }\n }\n return (crc ^ 0xffffffff) >>> 0;\n}\n\nfunction primitiveSize(type)\n{\n switch (type)\n {\n case M.Real32:\n case M.Int32:\n case M.UInt32:\n return 4;\n\n case M.Int16:\n case M.UInt16:\n case M.BinormalInt16:\n case M.NormalUInt16:\n case M.Real16:\n return 2;\n\n case M.Int8:\n case M.UInt8:\n case M.BinormalInt8:\n case M.NormalUInt8:\n return 1;\n\n default:\n return 0;\n }\n}\n\nfunction memberSize(member, sizeOf)\n{\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n switch (member.type)\n {\n case M.Inline:\n return sizeOf(member.ref) * width;\n\n case M.Reference:\n case M.String:\n return 4;\n\n case M.EmptyReference:\n return 4;\n\n case M.ReferenceToArray:\n case M.ArrayOfReferences:\n return 8;\n\n case M.VariantReference:\n return 8;\n\n case M.ReferenceToVariantArray:\n return 12;\n\n case M.Transform:\n return 68;\n\n default:\n return primitiveSize(member.type) * width;\n }\n}\n\n/** Define one reflected Granny type used by the pure-JavaScript writer. */\nexport function gr2Type(name, members)\n{\n return { name, members: members.map((member) => ({\n arrayWidth: 0,\n ref: null,\n ...member\n })) };\n}\n\n/** Wrap a dynamic object or array with its reflected Granny type. */\nexport function gr2Variant(type, value)\n{\n return { type, value };\n}\n\n/** Serializes one reflected Granny object graph into relocatable section data. */\nclass SectionSerializer\n{\n /** Create a serializer for a closed set of reflected types. */\n constructor(types)\n {\n this.types = types;\n this.writer = new CjsByteWriter();\n this.typeOffsets = new Map();\n this.stringOffsets = new Map();\n this.objectOffsets = new Map();\n this.sizeCache = new Map();\n this.fixups = [];\n this.mixedFixups = [];\n }\n\n /** Serialize the root graph and return section bytes plus relocation metadata. */\n Serialize(rootType, root)\n {\n for (const type of this.types)\n {\n this.typeOffsets.set(type, this.Allocate((type.members.length + 1) * MEMBER_SIZE));\n }\n for (const type of this.types) this.WriteType(type);\n const rootOffset = this.WriteObject(rootType, root);\n this.Align(4);\n this.fixups.sort((a, b) => a.from - b.from);\n this.mixedFixups.sort((a, b) => a.offset - b.offset);\n return {\n bytes: this.writer.toBytes(),\n fixups: this.fixups,\n mixedFixups: this.mixedFixups,\n rootTypeOffset: this.TypeOffset(rootType),\n rootOffset\n };\n }\n\n /** Advance the section cursor to the requested byte alignment. */\n Align(alignment)\n {\n const size = align(this.writer.length, alignment) - this.writer.length;\n if (size) this.writer.reserve(size);\n }\n\n /** Allocate a four-byte-aligned zeroed section block. */\n Allocate(size)\n {\n this.Align(4);\n return this.writer.reserve(size);\n }\n\n /** Resolve the section offset of a registered reflected type. */\n TypeOffset(type)\n {\n const offset = this.typeOffsets.get(type);\n if (offset === undefined)\n {\n throw new CjsFormatWriteError(`GR2 writer did not register reflected type \"${type?.name ?? \"\"}\"`);\n }\n return offset;\n }\n\n /** Compute the tightly packed 32-bit object size of a reflected type. */\n ObjectSize(type)\n {\n if (this.sizeCache.has(type)) return this.sizeCache.get(type);\n this.sizeCache.set(type, 0);\n let size = 0;\n for (const member of type.members) size += memberSize(member, (ref) => this.ObjectSize(ref));\n this.sizeCache.set(type, size);\n return size;\n }\n\n /** Record a non-null pointer relocation. */\n FixPointer(from, target)\n {\n if (target === null || target === undefined) return;\n this.fixups.push({ from, target });\n }\n\n /** Patch a signed 16-bit section value. */\n PatchI16(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(2, view => view.setInt16(0, value | 0, true)));\n }\n\n /** Patch an unsigned 16-bit section value. */\n PatchU16(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(2, view => view.setUint16(0, value & 0xffff, true)));\n }\n\n /** Patch a float32 section value. */\n PatchF32(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(4, view => view.setFloat32(0, Number(value) || 0, true)));\n }\n\n /** Deduplicate and write a null-terminated UTF-8 string. */\n WriteString(value)\n {\n const text = String(value ?? \"\");\n if (this.stringOffsets.has(text)) return this.stringOffsets.get(text);\n const encoded = UTF8.encode(text);\n const offset = this.writer.reserve(encoded.length + 1);\n this.writer.patchBytes(offset, encoded);\n this.stringOffsets.set(text, offset);\n return offset;\n }\n\n /** Write one reflected member-definition array. */\n WriteType(type)\n {\n const base = this.TypeOffset(type);\n for (let index = 0; index < type.members.length; index++)\n {\n const member = type.members[index];\n const offset = base + index * MEMBER_SIZE;\n this.writer.patchU32(offset, member.type);\n this.FixPointer(offset + 4, this.WriteString(member.name));\n if (member.ref) this.FixPointer(offset + 8, this.TypeOffset(member.ref));\n this.writer.patchU32(offset + 12, member.arrayWidth >>> 0);\n }\n }\n\n /** Get the identity cache for one reflected object type. */\n ObjectMap(type)\n {\n let map = this.objectOffsets.get(type);\n if (!map)\n {\n map = new WeakMap();\n this.objectOffsets.set(type, map);\n }\n return map;\n }\n\n /** Write or reuse one referenced object. */\n WriteObject(type, value)\n {\n if (value === null || value === undefined) return null;\n if (typeof value === \"object\")\n {\n const map = this.ObjectMap(type);\n if (map.has(value)) return map.get(value);\n const offset = this.Allocate(this.ObjectSize(type));\n map.set(value, offset);\n this.WriteObjectAt(type, value, offset);\n return offset;\n }\n const offset = this.Allocate(this.ObjectSize(type));\n this.WriteObjectAt(type, value, offset);\n return offset;\n }\n\n /** Resolve a member value, including scalar-wrapper shorthand. */\n MemberValue(type, value, member)\n {\n if (value && typeof value === \"object\" && Object.hasOwn(value, member.name)) return value[member.name];\n if (type.members.length === 1 && primitiveSize(member.type)) return value;\n return undefined;\n }\n\n /** Write an object into an already allocated section block. */\n WriteObjectAt(type, value, base)\n {\n let offset = base;\n for (const member of type.members)\n {\n this.WriteMember(member, this.MemberValue(type, value, member), offset);\n offset += memberSize(member, (ref) => this.ObjectSize(ref));\n }\n }\n\n /** Write a contiguous reflected object array. */\n WriteArray(type, values)\n {\n if (!values.length) return null;\n const stride = this.ObjectSize(type);\n const offset = this.Allocate(stride * values.length);\n for (let index = 0; index < values.length; index++)\n {\n this.WriteObjectAt(type, values[index], offset + index * stride);\n }\n return offset;\n }\n\n /** Write a contiguous array of relocated object pointers. */\n WriteReferences(type, values)\n {\n if (!values.length) return null;\n const offset = this.Allocate(values.length * 4);\n for (let index = 0; index < values.length; index++)\n {\n this.FixPointer(offset + index * 4, this.WriteObject(type, values[index]));\n }\n return offset;\n }\n\n /** Encode one member according to its reflected Granny member type. */\n WriteMember(member, value, offset)\n {\n switch (member.type)\n {\n case M.Inline: {\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n const values = width === 1 ? [ value ?? {} ] : value ?? [];\n const stride = this.ObjectSize(member.ref);\n for (let index = 0; index < width; index++)\n {\n this.WriteObjectAt(member.ref, values[index] ?? {}, offset + index * stride);\n }\n return;\n }\n\n case M.Reference:\n this.FixPointer(offset, this.WriteObject(member.ref, value));\n return;\n\n case M.String:\n if (value !== null && value !== undefined) this.FixPointer(offset, this.WriteString(value));\n return;\n\n case M.ReferenceToArray: {\n const values = Array.isArray(value) ? value : [];\n this.writer.patchU32(offset, values.length);\n this.FixPointer(offset + 4, this.WriteArray(member.ref, values));\n return;\n }\n\n case M.ArrayOfReferences: {\n const values = Array.isArray(value) ? value : [];\n this.writer.patchU32(offset, values.length);\n this.FixPointer(offset + 4, this.WriteReferences(member.ref, values));\n return;\n }\n\n case M.VariantReference:\n if (value)\n {\n const target = this.WriteObject(value.type, value.value);\n this.FixPointer(offset, this.TypeOffset(value.type));\n this.FixPointer(offset + 4, target);\n this.mixedFixups.push({ count: 1, offset: target, typeOffset: this.TypeOffset(value.type) });\n }\n return;\n\n case M.ReferenceToVariantArray:\n if (value)\n {\n const values = Array.isArray(value.value) ? value.value : [];\n const target = this.WriteArray(value.type, values);\n this.FixPointer(offset, this.TypeOffset(value.type));\n this.writer.patchU32(offset + 4, values.length);\n this.FixPointer(offset + 8, target);\n if (values.length)\n {\n this.mixedFixups.push({ count: values.length, offset: target, typeOffset: this.TypeOffset(value.type) });\n }\n }\n return;\n\n case M.Transform:\n this.WriteTransform(offset, value);\n return;\n\n case M.EmptyReference:\n return;\n\n default:\n this.WriteNumeric(member, value, offset);\n }\n }\n\n /** Encode Granny's fixed 68-byte transform value. */\n WriteTransform(offset, value = {})\n {\n const\n position = value?.position ?? value?.Position ?? [ 0, 0, 0 ],\n orientation = value?.orientation ?? value?.Orientation ?? [ 0, 0, 0, 1 ],\n scaleShear = value?.scaleShear ?? value?.ScaleShear ?? [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n this.writer.patchU32(offset, value?.flags ?? value?.Flags ?? 7);\n let cursor = offset + 4;\n for (const component of position) { this.PatchF32(cursor, component); cursor += 4; }\n for (const component of orientation) { this.PatchF32(cursor, component); cursor += 4; }\n for (const component of scaleShear) { this.PatchF32(cursor, component); cursor += 4; }\n }\n\n /** Encode a scalar or fixed-width numeric member. */\n WriteNumeric(member, value, offset)\n {\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n const values = width === 1 ? [ value ?? 0 ] : value ?? [];\n const stride = primitiveSize(member.type);\n for (let index = 0; index < width; index++)\n {\n const item = values[index] ?? 0;\n switch (member.type)\n {\n case M.Real32:\n this.PatchF32(offset + index * stride, item);\n break;\n\n case M.Int32:\n this.writer.patchBytes(offset + index * stride,\n bytesWith(4, view => view.setInt32(0, item | 0, true)));\n break;\n\n case M.UInt32:\n this.writer.patchU32(offset + index * stride, item);\n break;\n\n case M.Int16:\n case M.BinormalInt16:\n this.PatchI16(offset + index * stride, item);\n break;\n\n case M.UInt16:\n case M.NormalUInt16:\n case M.Real16:\n this.PatchU16(offset + index * stride, item);\n break;\n\n case M.Int8:\n case M.BinormalInt8:\n this.writer.patchU8(offset + index, item);\n break;\n\n case M.UInt8:\n case M.NormalUInt8:\n this.writer.patchU8(offset + index, item);\n break;\n\n default:\n throw new CjsFormatWriteError(`GR2 writer cannot encode member type ${member.type}`);\n }\n }\n }\n}\n\nfunction pointerFixupBytes(fixups)\n{\n const writer = new CjsByteWriter(fixups.length * 12);\n for (const fixup of fixups)\n {\n writer.u32(fixup.from);\n writer.u32(0);\n writer.u32(fixup.target);\n }\n return writer.toBytes();\n}\n\nfunction mixedFixupBytes(fixups)\n{\n const writer = new CjsByteWriter(fixups.length * 16);\n for (const fixup of fixups)\n {\n writer.u32(fixup.count);\n writer.u32(fixup.offset);\n writer.u32(0);\n writer.u32(fixup.typeOffset);\n }\n return writer.toBytes();\n}\n\nfunction alignWriter(writer, alignment)\n{\n writer.reserve(align(writer.length, alignment) - writer.length);\n}\n\nfunction appendFixups(writer, bytes, compressed)\n{\n if (!bytes.length) return 0;\n alignWriter(writer, 4);\n const offset = writer.length;\n if (compressed)\n {\n const packed = encodeBitKnit2Raw(bytes);\n writer.u32(packed.length);\n writer.bytes(packed);\n }\n else\n {\n writer.bytes(bytes);\n }\n return offset;\n}\n\n/**\n * Serialize one standard reflected graph as a 32-bit little-endian GR2 file.\n *\n * @param {object} rootType Reflected root type.\n * @param {object} root Root object graph.\n * @param {object[]} types Closed reflected type set.\n * @param {{sectionCompression?: \"none\"|\"bitknit2Raw\"}} [options] Outer-section storage.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\nexport function writeGr2Container(rootType, root, types, options = {})\n{\n const section = new SectionSerializer(types).Serialize(rootType, root);\n const headerSize = SECTION_DIRECTORY_OFFSET + SECTION_RECORD_SIZE;\n const sectionCompression = options.sectionCompression ?? GR2_SECTION_COMPRESSION_NONE;\n if (![ GR2_SECTION_COMPRESSION_NONE, GR2_SECTION_COMPRESSION_BITKNIT2_RAW ].includes(sectionCompression))\n {\n throw new CjsFormatWriteError(`GR2 container unknown sectionCompression \"${sectionCompression}\"`);\n }\n const compressed = sectionCompression === GR2_SECTION_COMPRESSION_BITKNIT2_RAW;\n const sectionBytes = compressed ? encodeBitKnit2Raw(section.bytes) : section.bytes;\n const writer = new CjsByteWriter(headerSize + sectionBytes.length);\n writer.reserve(headerSize);\n writer.bytes(sectionBytes);\n const pointerFixupOffset = appendFixups(writer, pointerFixupBytes(section.fixups), compressed);\n const mixedFixupOffset = appendFixups(writer, mixedFixupBytes(section.mixedFixups), compressed);\n\n const totalSize = writer.length;\n writer.patchBytes(0, MAGIC_32_LE);\n writer.patchU32(16, headerSize);\n writer.patchU32(FILE_HEADER_OFFSET, 7);\n writer.patchU32(FILE_HEADER_OFFSET + 4, totalSize);\n writer.patchU32(FILE_HEADER_OFFSET + 12, SECTION_DIRECTORY_OFFSET - FILE_HEADER_OFFSET);\n writer.patchU32(FILE_HEADER_OFFSET + 16, 1);\n writer.patchU32(FILE_HEADER_OFFSET + 20, 0);\n writer.patchU32(FILE_HEADER_OFFSET + 24, section.rootTypeOffset);\n writer.patchU32(FILE_HEADER_OFFSET + 28, 0);\n writer.patchU32(FILE_HEADER_OFFSET + 32, section.rootOffset);\n writer.patchU32(FILE_HEADER_OFFSET + 36, TYPE_TAG_2_12);\n\n writer.patchU32(SECTION_DIRECTORY_OFFSET, compressed ? 4 : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 4, headerSize);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 8, sectionBytes.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 12, section.bytes.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 16, 4);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 28, section.fixups.length ? pointerFixupOffset : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 32, section.fixups.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 36, section.mixedFixups.length ? mixedFixupOffset : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 40, section.mixedFixups.length);\n\n const bytes = writer.toBytes();\n new DataView(bytes.buffer).setUint32(FILE_HEADER_OFFSET + 8, crc32(bytes, SECTION_DIRECTORY_OFFSET), true);\n return bytes;\n}\n\nexport const container = {\n MAGIC_32_LE,\n GR2_SECTION_COMPRESSION_NONE,\n GR2_SECTION_COMPRESSION_BITKNIT2_RAW,\n TYPE_TAG_2_12,\n crc32,\n gr2Type,\n gr2Variant,\n write: writeGr2Container,\n writeGr2Container\n};\n"],"names":["M","GRANNY_MEMBER_TYPES","MAGIC_32_LE","Uint8Array","MEMBER_SIZE","FILE_HEADER_OFFSET","SECTION_DIRECTORY_OFFSET","SECTION_RECORD_SIZE","TYPE_TAG_2_12","UTF8","TextEncoder","GR2_SECTION_COMPRESSION_NONE","GR2_SECTION_COMPRESSION_BITKNIT2_RAW","align","value","alignment","Math","ceil","bytesWith","size","write","bytes","DataView","buffer","crc32","start","crc","index","length","bit","primitiveSize","type","Real32","Int32","UInt32","Int16","UInt16","BinormalInt16","NormalUInt16","Real16","Int8","UInt8","BinormalInt8","NormalUInt8","memberSize","member","sizeOf","width","arrayWidth","Inline","ref","Reference","String","EmptyReference","ReferenceToArray","ArrayOfReferences","VariantReference","ReferenceToVariantArray","Transform","gr2Type","name","members","map","gr2Variant","SectionSerializer","constructor","types","writer","CjsByteWriter","typeOffsets","Map","stringOffsets","objectOffsets","sizeCache","fixups","mixedFixups","Serialize","rootType","root","set","Allocate","WriteType","rootOffset","WriteObject","Align","sort","a","b","from","offset","toBytes","rootTypeOffset","TypeOffset","reserve","get","undefined","CjsFormatWriteError","ObjectSize","has","FixPointer","target","push","PatchI16","patchBytes","view","setInt16","PatchU16","setUint16","PatchF32","setFloat32","Number","WriteString","text","encoded","encode","base","patchU32","ObjectMap","WeakMap","WriteObjectAt","MemberValue","Object","hasOwn","WriteMember","WriteArray","values","stride","WriteReferences","Array","isArray","count","typeOffset","WriteTransform","WriteNumeric","position","Position","orientation","Orientation","scaleShear","ScaleShear","flags","Flags","cursor","component","item","setInt32","patchU8","pointerFixupBytes","fixup","u32","mixedFixupBytes","alignWriter","appendFixups","compressed","packed","encodeBitKnit2Raw","writeGr2Container","options","section","headerSize","sectionCompression","includes","sectionBytes","pointerFixupOffset","mixedFixupOffset","totalSize","setUint32"],"mappings":"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"}
1
+ {"version":3,"file":"container.js","sources":["../../../../../../src/resource/formats/gr2/core/container.js"],"sourcesContent":["import { crc32 } from \"#utils/checksum\";\nimport { CjsByteWriter } from \"../../../format/CjsByteWriter.js\";\nimport { CjsFormatWriteError } from \"../../../format/CjsFormatError.js\";\nimport { encodeBitKnit2Raw } from \"./bitknit2.js\";\nimport { GRANNY_MEMBER_TYPES } from \"./reader.js\";\n\nconst M = GRANNY_MEMBER_TYPES;\nconst MAGIC_32_LE = new Uint8Array([\n 0x29, 0xde, 0x6c, 0xc0, 0xba, 0xa4, 0x53, 0x2b,\n 0x25, 0xf5, 0xb7, 0xa5, 0xf6, 0x66, 0xe2, 0xee\n]);\nconst MEMBER_SIZE = 32;\nconst FILE_HEADER_OFFSET = 32;\nconst SECTION_DIRECTORY_OFFSET = 104;\nconst SECTION_RECORD_SIZE = 44;\nconst TYPE_TAG_2_12 = 0x80000039;\nconst UTF8 = new TextEncoder();\nexport const GR2_SECTION_COMPRESSION_NONE = \"none\";\nexport const GR2_SECTION_COMPRESSION_BITKNIT2_RAW = \"bitknit2Raw\";\n\nfunction align(value, alignment)\n{\n return Math.ceil(value / alignment) * alignment;\n}\n\nfunction bytesWith(size, write)\n{\n const bytes = new Uint8Array(size);\n write(new DataView(bytes.buffer));\n return bytes;\n}\n\n\nfunction primitiveSize(type)\n{\n switch (type)\n {\n case M.Real32:\n case M.Int32:\n case M.UInt32:\n return 4;\n\n case M.Int16:\n case M.UInt16:\n case M.BinormalInt16:\n case M.NormalUInt16:\n case M.Real16:\n return 2;\n\n case M.Int8:\n case M.UInt8:\n case M.BinormalInt8:\n case M.NormalUInt8:\n return 1;\n\n default:\n return 0;\n }\n}\n\nfunction memberSize(member, sizeOf)\n{\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n switch (member.type)\n {\n case M.Inline:\n return sizeOf(member.ref) * width;\n\n case M.Reference:\n case M.String:\n return 4;\n\n case M.EmptyReference:\n return 4;\n\n case M.ReferenceToArray:\n case M.ArrayOfReferences:\n return 8;\n\n case M.VariantReference:\n return 8;\n\n case M.ReferenceToVariantArray:\n return 12;\n\n case M.Transform:\n return 68;\n\n default:\n return primitiveSize(member.type) * width;\n }\n}\n\n/** Define one reflected Granny type used by the pure-JavaScript writer. */\nexport function gr2Type(name, members)\n{\n return { name, members: members.map((member) => ({\n arrayWidth: 0,\n ref: null,\n ...member\n })) };\n}\n\n/** Wrap a dynamic object or array with its reflected Granny type. */\nexport function gr2Variant(type, value)\n{\n return { type, value };\n}\n\n/** Serializes one reflected Granny object graph into relocatable section data. */\nclass SectionSerializer\n{\n /** Create a serializer for a closed set of reflected types. */\n constructor(types)\n {\n this.types = types;\n this.writer = new CjsByteWriter();\n this.typeOffsets = new Map();\n this.stringOffsets = new Map();\n this.objectOffsets = new Map();\n this.sizeCache = new Map();\n this.fixups = [];\n this.mixedFixups = [];\n }\n\n /** Serialize the root graph and return section bytes plus relocation metadata. */\n Serialize(rootType, root)\n {\n for (const type of this.types)\n {\n this.typeOffsets.set(type, this.Allocate((type.members.length + 1) * MEMBER_SIZE));\n }\n for (const type of this.types) this.WriteType(type);\n const rootOffset = this.WriteObject(rootType, root);\n this.Align(4);\n this.fixups.sort((a, b) => a.from - b.from);\n this.mixedFixups.sort((a, b) => a.offset - b.offset);\n return {\n bytes: this.writer.toBytes(),\n fixups: this.fixups,\n mixedFixups: this.mixedFixups,\n rootTypeOffset: this.TypeOffset(rootType),\n rootOffset\n };\n }\n\n /** Advance the section cursor to the requested byte alignment. */\n Align(alignment)\n {\n const size = align(this.writer.length, alignment) - this.writer.length;\n if (size) this.writer.reserve(size);\n }\n\n /** Allocate a four-byte-aligned zeroed section block. */\n Allocate(size)\n {\n this.Align(4);\n return this.writer.reserve(size);\n }\n\n /** Resolve the section offset of a registered reflected type. */\n TypeOffset(type)\n {\n const offset = this.typeOffsets.get(type);\n if (offset === undefined)\n {\n throw new CjsFormatWriteError(`GR2 writer did not register reflected type \"${type?.name ?? \"\"}\"`);\n }\n return offset;\n }\n\n /** Compute the tightly packed 32-bit object size of a reflected type. */\n ObjectSize(type)\n {\n if (this.sizeCache.has(type)) return this.sizeCache.get(type);\n this.sizeCache.set(type, 0);\n let size = 0;\n for (const member of type.members) size += memberSize(member, (ref) => this.ObjectSize(ref));\n this.sizeCache.set(type, size);\n return size;\n }\n\n /** Record a non-null pointer relocation. */\n FixPointer(from, target)\n {\n if (target === null || target === undefined) return;\n this.fixups.push({ from, target });\n }\n\n /** Patch a signed 16-bit section value. */\n PatchI16(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(2, view => view.setInt16(0, value | 0, true)));\n }\n\n /** Patch an unsigned 16-bit section value. */\n PatchU16(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(2, view => view.setUint16(0, value & 0xffff, true)));\n }\n\n /** Patch a float32 section value. */\n PatchF32(offset, value)\n {\n this.writer.patchBytes(offset, bytesWith(4, view => view.setFloat32(0, Number(value) || 0, true)));\n }\n\n /** Deduplicate and write a null-terminated UTF-8 string. */\n WriteString(value)\n {\n const text = String(value ?? \"\");\n if (this.stringOffsets.has(text)) return this.stringOffsets.get(text);\n const encoded = UTF8.encode(text);\n const offset = this.writer.reserve(encoded.length + 1);\n this.writer.patchBytes(offset, encoded);\n this.stringOffsets.set(text, offset);\n return offset;\n }\n\n /** Write one reflected member-definition array. */\n WriteType(type)\n {\n const base = this.TypeOffset(type);\n for (let index = 0; index < type.members.length; index++)\n {\n const member = type.members[index];\n const offset = base + index * MEMBER_SIZE;\n this.writer.patchU32(offset, member.type);\n this.FixPointer(offset + 4, this.WriteString(member.name));\n if (member.ref) this.FixPointer(offset + 8, this.TypeOffset(member.ref));\n this.writer.patchU32(offset + 12, member.arrayWidth >>> 0);\n }\n }\n\n /** Get the identity cache for one reflected object type. */\n ObjectMap(type)\n {\n let map = this.objectOffsets.get(type);\n if (!map)\n {\n map = new WeakMap();\n this.objectOffsets.set(type, map);\n }\n return map;\n }\n\n /** Write or reuse one referenced object. */\n WriteObject(type, value)\n {\n if (value === null || value === undefined) return null;\n if (typeof value === \"object\")\n {\n const map = this.ObjectMap(type);\n if (map.has(value)) return map.get(value);\n const offset = this.Allocate(this.ObjectSize(type));\n map.set(value, offset);\n this.WriteObjectAt(type, value, offset);\n return offset;\n }\n const offset = this.Allocate(this.ObjectSize(type));\n this.WriteObjectAt(type, value, offset);\n return offset;\n }\n\n /** Resolve a member value, including scalar-wrapper shorthand. */\n MemberValue(type, value, member)\n {\n if (value && typeof value === \"object\" && Object.hasOwn(value, member.name)) return value[member.name];\n if (type.members.length === 1 && primitiveSize(member.type)) return value;\n return undefined;\n }\n\n /** Write an object into an already allocated section block. */\n WriteObjectAt(type, value, base)\n {\n let offset = base;\n for (const member of type.members)\n {\n this.WriteMember(member, this.MemberValue(type, value, member), offset);\n offset += memberSize(member, (ref) => this.ObjectSize(ref));\n }\n }\n\n /** Write a contiguous reflected object array. */\n WriteArray(type, values)\n {\n if (!values.length) return null;\n const stride = this.ObjectSize(type);\n const offset = this.Allocate(stride * values.length);\n for (let index = 0; index < values.length; index++)\n {\n this.WriteObjectAt(type, values[index], offset + index * stride);\n }\n return offset;\n }\n\n /** Write a contiguous array of relocated object pointers. */\n WriteReferences(type, values)\n {\n if (!values.length) return null;\n const offset = this.Allocate(values.length * 4);\n for (let index = 0; index < values.length; index++)\n {\n this.FixPointer(offset + index * 4, this.WriteObject(type, values[index]));\n }\n return offset;\n }\n\n /** Encode one member according to its reflected Granny member type. */\n WriteMember(member, value, offset)\n {\n switch (member.type)\n {\n case M.Inline: {\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n const values = width === 1 ? [ value ?? {} ] : value ?? [];\n const stride = this.ObjectSize(member.ref);\n for (let index = 0; index < width; index++)\n {\n this.WriteObjectAt(member.ref, values[index] ?? {}, offset + index * stride);\n }\n return;\n }\n\n case M.Reference:\n this.FixPointer(offset, this.WriteObject(member.ref, value));\n return;\n\n case M.String:\n if (value !== null && value !== undefined) this.FixPointer(offset, this.WriteString(value));\n return;\n\n case M.ReferenceToArray: {\n const values = Array.isArray(value) ? value : [];\n this.writer.patchU32(offset, values.length);\n this.FixPointer(offset + 4, this.WriteArray(member.ref, values));\n return;\n }\n\n case M.ArrayOfReferences: {\n const values = Array.isArray(value) ? value : [];\n this.writer.patchU32(offset, values.length);\n this.FixPointer(offset + 4, this.WriteReferences(member.ref, values));\n return;\n }\n\n case M.VariantReference:\n if (value)\n {\n const target = this.WriteObject(value.type, value.value);\n this.FixPointer(offset, this.TypeOffset(value.type));\n this.FixPointer(offset + 4, target);\n this.mixedFixups.push({ count: 1, offset: target, typeOffset: this.TypeOffset(value.type) });\n }\n return;\n\n case M.ReferenceToVariantArray:\n if (value)\n {\n const values = Array.isArray(value.value) ? value.value : [];\n const target = this.WriteArray(value.type, values);\n this.FixPointer(offset, this.TypeOffset(value.type));\n this.writer.patchU32(offset + 4, values.length);\n this.FixPointer(offset + 8, target);\n if (values.length)\n {\n this.mixedFixups.push({ count: values.length, offset: target, typeOffset: this.TypeOffset(value.type) });\n }\n }\n return;\n\n case M.Transform:\n this.WriteTransform(offset, value);\n return;\n\n case M.EmptyReference:\n return;\n\n default:\n this.WriteNumeric(member, value, offset);\n }\n }\n\n /** Encode Granny's fixed 68-byte transform value. */\n WriteTransform(offset, value = {})\n {\n const\n position = value?.position ?? value?.Position ?? [ 0, 0, 0 ],\n orientation = value?.orientation ?? value?.Orientation ?? [ 0, 0, 0, 1 ],\n scaleShear = value?.scaleShear ?? value?.ScaleShear ?? [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\n this.writer.patchU32(offset, value?.flags ?? value?.Flags ?? 7);\n let cursor = offset + 4;\n for (const component of position) { this.PatchF32(cursor, component); cursor += 4; }\n for (const component of orientation) { this.PatchF32(cursor, component); cursor += 4; }\n for (const component of scaleShear) { this.PatchF32(cursor, component); cursor += 4; }\n }\n\n /** Encode a scalar or fixed-width numeric member. */\n WriteNumeric(member, value, offset)\n {\n const width = member.arrayWidth > 0 ? member.arrayWidth : 1;\n const values = width === 1 ? [ value ?? 0 ] : value ?? [];\n const stride = primitiveSize(member.type);\n for (let index = 0; index < width; index++)\n {\n const item = values[index] ?? 0;\n switch (member.type)\n {\n case M.Real32:\n this.PatchF32(offset + index * stride, item);\n break;\n\n case M.Int32:\n this.writer.patchBytes(offset + index * stride,\n bytesWith(4, view => view.setInt32(0, item | 0, true)));\n break;\n\n case M.UInt32:\n this.writer.patchU32(offset + index * stride, item);\n break;\n\n case M.Int16:\n case M.BinormalInt16:\n this.PatchI16(offset + index * stride, item);\n break;\n\n case M.UInt16:\n case M.NormalUInt16:\n case M.Real16:\n this.PatchU16(offset + index * stride, item);\n break;\n\n case M.Int8:\n case M.BinormalInt8:\n this.writer.patchU8(offset + index, item);\n break;\n\n case M.UInt8:\n case M.NormalUInt8:\n this.writer.patchU8(offset + index, item);\n break;\n\n default:\n throw new CjsFormatWriteError(`GR2 writer cannot encode member type ${member.type}`);\n }\n }\n }\n}\n\nfunction pointerFixupBytes(fixups)\n{\n const writer = new CjsByteWriter(fixups.length * 12);\n for (const fixup of fixups)\n {\n writer.u32(fixup.from);\n writer.u32(0);\n writer.u32(fixup.target);\n }\n return writer.toBytes();\n}\n\nfunction mixedFixupBytes(fixups)\n{\n const writer = new CjsByteWriter(fixups.length * 16);\n for (const fixup of fixups)\n {\n writer.u32(fixup.count);\n writer.u32(fixup.offset);\n writer.u32(0);\n writer.u32(fixup.typeOffset);\n }\n return writer.toBytes();\n}\n\nfunction alignWriter(writer, alignment)\n{\n writer.reserve(align(writer.length, alignment) - writer.length);\n}\n\nfunction appendFixups(writer, bytes, compressed)\n{\n if (!bytes.length) return 0;\n alignWriter(writer, 4);\n const offset = writer.length;\n if (compressed)\n {\n const packed = encodeBitKnit2Raw(bytes);\n writer.u32(packed.length);\n writer.bytes(packed);\n }\n else\n {\n writer.bytes(bytes);\n }\n return offset;\n}\n\n/**\n * Serialize one standard reflected graph as a 32-bit little-endian GR2 file.\n *\n * @param {object} rootType Reflected root type.\n * @param {object} root Root object graph.\n * @param {object[]} types Closed reflected type set.\n * @param {{sectionCompression?: \"none\"|\"bitknit2Raw\"}} [options] Outer-section storage.\n * @returns {Uint8Array} Complete GR2 file bytes.\n */\nexport function writeGr2Container(rootType, root, types, options = {})\n{\n const section = new SectionSerializer(types).Serialize(rootType, root);\n const headerSize = SECTION_DIRECTORY_OFFSET + SECTION_RECORD_SIZE;\n const sectionCompression = options.sectionCompression ?? GR2_SECTION_COMPRESSION_NONE;\n if (![ GR2_SECTION_COMPRESSION_NONE, GR2_SECTION_COMPRESSION_BITKNIT2_RAW ].includes(sectionCompression))\n {\n throw new CjsFormatWriteError(`GR2 container unknown sectionCompression \"${sectionCompression}\"`);\n }\n const compressed = sectionCompression === GR2_SECTION_COMPRESSION_BITKNIT2_RAW;\n const sectionBytes = compressed ? encodeBitKnit2Raw(section.bytes) : section.bytes;\n const writer = new CjsByteWriter(headerSize + sectionBytes.length);\n writer.reserve(headerSize);\n writer.bytes(sectionBytes);\n const pointerFixupOffset = appendFixups(writer, pointerFixupBytes(section.fixups), compressed);\n const mixedFixupOffset = appendFixups(writer, mixedFixupBytes(section.mixedFixups), compressed);\n\n const totalSize = writer.length;\n writer.patchBytes(0, MAGIC_32_LE);\n writer.patchU32(16, headerSize);\n writer.patchU32(FILE_HEADER_OFFSET, 7);\n writer.patchU32(FILE_HEADER_OFFSET + 4, totalSize);\n writer.patchU32(FILE_HEADER_OFFSET + 12, SECTION_DIRECTORY_OFFSET - FILE_HEADER_OFFSET);\n writer.patchU32(FILE_HEADER_OFFSET + 16, 1);\n writer.patchU32(FILE_HEADER_OFFSET + 20, 0);\n writer.patchU32(FILE_HEADER_OFFSET + 24, section.rootTypeOffset);\n writer.patchU32(FILE_HEADER_OFFSET + 28, 0);\n writer.patchU32(FILE_HEADER_OFFSET + 32, section.rootOffset);\n writer.patchU32(FILE_HEADER_OFFSET + 36, TYPE_TAG_2_12);\n\n writer.patchU32(SECTION_DIRECTORY_OFFSET, compressed ? 4 : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 4, headerSize);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 8, sectionBytes.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 12, section.bytes.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 16, 4);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 28, section.fixups.length ? pointerFixupOffset : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 32, section.fixups.length);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 36, section.mixedFixups.length ? mixedFixupOffset : 0);\n writer.patchU32(SECTION_DIRECTORY_OFFSET + 40, section.mixedFixups.length);\n\n const bytes = writer.toBytes();\n new DataView(bytes.buffer).setUint32(FILE_HEADER_OFFSET + 8, crc32(bytes, SECTION_DIRECTORY_OFFSET), true);\n return bytes;\n}\n\nexport const container = {\n MAGIC_32_LE,\n GR2_SECTION_COMPRESSION_NONE,\n GR2_SECTION_COMPRESSION_BITKNIT2_RAW,\n TYPE_TAG_2_12,\n crc32,\n gr2Type,\n gr2Variant,\n write: writeGr2Container,\n writeGr2Container\n};\n"],"names":["M","GRANNY_MEMBER_TYPES","MAGIC_32_LE","Uint8Array","MEMBER_SIZE","FILE_HEADER_OFFSET","SECTION_DIRECTORY_OFFSET","SECTION_RECORD_SIZE","TYPE_TAG_2_12","UTF8","TextEncoder","GR2_SECTION_COMPRESSION_NONE","GR2_SECTION_COMPRESSION_BITKNIT2_RAW","align","value","alignment","Math","ceil","bytesWith","size","write","bytes","DataView","buffer","primitiveSize","type","Real32","Int32","UInt32","Int16","UInt16","BinormalInt16","NormalUInt16","Real16","Int8","UInt8","BinormalInt8","NormalUInt8","memberSize","member","sizeOf","width","arrayWidth","Inline","ref","Reference","String","EmptyReference","ReferenceToArray","ArrayOfReferences","VariantReference","ReferenceToVariantArray","Transform","gr2Type","name","members","map","gr2Variant","SectionSerializer","constructor","types","writer","CjsByteWriter","typeOffsets","Map","stringOffsets","objectOffsets","sizeCache","fixups","mixedFixups","Serialize","rootType","root","set","Allocate","length","WriteType","rootOffset","WriteObject","Align","sort","a","b","from","offset","toBytes","rootTypeOffset","TypeOffset","reserve","get","undefined","CjsFormatWriteError","ObjectSize","has","FixPointer","target","push","PatchI16","patchBytes","view","setInt16","PatchU16","setUint16","PatchF32","setFloat32","Number","WriteString","text","encoded","encode","base","index","patchU32","ObjectMap","WeakMap","WriteObjectAt","MemberValue","Object","hasOwn","WriteMember","WriteArray","values","stride","WriteReferences","Array","isArray","count","typeOffset","WriteTransform","WriteNumeric","position","Position","orientation","Orientation","scaleShear","ScaleShear","flags","Flags","cursor","component","item","setInt32","patchU8","pointerFixupBytes","fixup","u32","mixedFixupBytes","alignWriter","appendFixups","compressed","packed","encodeBitKnit2Raw","writeGr2Container","options","section","headerSize","sectionCompression","includes","sectionBytes","pointerFixupOffset","mixedFixupOffset","totalSize","setUint32","crc32"],"mappings":";;;;;;AAMA,MAAMA,CAAC,GAAGC,mBAAmB;AAC7B,MAAMC,WAAW,GAAG,IAAIC,UAAU,CAAC,CAC/B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CACjD,CAAC;AACF,MAAMC,WAAW,GAAG,EAAE;AACtB,MAAMC,kBAAkB,GAAG,EAAE;AAC7B,MAAMC,wBAAwB,GAAG,GAAG;AACpC,MAAMC,mBAAmB,GAAG,EAAE;AAC9B,MAAMC,aAAa,GAAG,UAAU;AAChC,MAAMC,IAAI,GAAG,IAAIC,WAAW,EAAE;AACvB,MAAMC,4BAA4B,GAAG;AACrC,MAAMC,oCAAoC,GAAG;AAEpD,SAASC,KAAKA,CAACC,KAAK,EAAEC,SAAS,EAC/B;EACI,OAAOC,IAAI,CAACC,IAAI,CAACH,KAAK,GAAGC,SAAS,CAAC,GAAGA,SAAS;AACnD;AAEA,SAASG,SAASA,CAACC,IAAI,EAAEC,KAAK,EAC9B;AACI,EAAA,MAAMC,KAAK,GAAG,IAAIlB,UAAU,CAACgB,IAAI,CAAC;EAClCC,KAAK,CAAC,IAAIE,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,CAAC;AACjC,EAAA,OAAOF,KAAK;AAChB;AAGA,SAASG,aAAaA,CAACC,IAAI,EAC3B;AACI,EAAA,QAAQA,IAAI;IAER,KAAKzB,CAAC,CAAC0B,MAAM;IACb,KAAK1B,CAAC,CAAC2B,KAAK;IACZ,KAAK3B,CAAC,CAAC4B,MAAM;AACT,MAAA,OAAO,CAAC;IAEZ,KAAK5B,CAAC,CAAC6B,KAAK;IACZ,KAAK7B,CAAC,CAAC8B,MAAM;IACb,KAAK9B,CAAC,CAAC+B,aAAa;IACpB,KAAK/B,CAAC,CAACgC,YAAY;IACnB,KAAKhC,CAAC,CAACiC,MAAM;AACT,MAAA,OAAO,CAAC;IAEZ,KAAKjC,CAAC,CAACkC,IAAI;IACX,KAAKlC,CAAC,CAACmC,KAAK;IACZ,KAAKnC,CAAC,CAACoC,YAAY;IACnB,KAAKpC,CAAC,CAACqC,WAAW;AACd,MAAA,OAAO,CAAC;AAEZ,IAAA;AACI,MAAA,OAAO,CAAC;AAChB;AACJ;AAEA,SAASC,UAAUA,CAACC,MAAM,EAAEC,MAAM,EAClC;AACI,EAAA,MAAMC,KAAK,GAAGF,MAAM,CAACG,UAAU,GAAG,CAAC,GAAGH,MAAM,CAACG,UAAU,GAAG,CAAC;EAC3D,QAAQH,MAAM,CAACd,IAAI;IAEf,KAAKzB,CAAC,CAAC2C,MAAM;AACT,MAAA,OAAOH,MAAM,CAACD,MAAM,CAACK,GAAG,CAAC,GAAGH,KAAK;IAErC,KAAKzC,CAAC,CAAC6C,SAAS;IAChB,KAAK7C,CAAC,CAAC8C,MAAM;AACT,MAAA,OAAO,CAAC;IAEZ,KAAK9C,CAAC,CAAC+C,cAAc;AACjB,MAAA,OAAO,CAAC;IAEZ,KAAK/C,CAAC,CAACgD,gBAAgB;IACvB,KAAKhD,CAAC,CAACiD,iBAAiB;AACpB,MAAA,OAAO,CAAC;IAEZ,KAAKjD,CAAC,CAACkD,gBAAgB;AACnB,MAAA,OAAO,CAAC;IAEZ,KAAKlD,CAAC,CAACmD,uBAAuB;AAC1B,MAAA,OAAO,EAAE;IAEb,KAAKnD,CAAC,CAACoD,SAAS;AACZ,MAAA,OAAO,EAAE;AAEb,IAAA;AACI,MAAA,OAAO5B,aAAa,CAACe,MAAM,CAACd,IAAI,CAAC,GAAGgB,KAAK;AACjD;AACJ;;AAEA;AACO,SAASY,OAAOA,CAACC,IAAI,EAAEC,OAAO,EACrC;EACI,OAAO;IAAED,IAAI;AAAEC,IAAAA,OAAO,EAAEA,OAAO,CAACC,GAAG,CAAEjB,MAAM,KAAM;AAC7CG,MAAAA,UAAU,EAAE,CAAC;AACbE,MAAAA,GAAG,EAAE,IAAI;MACT,GAAGL;AACP,KAAC,CAAC;GAAG;AACT;;AAEA;AACO,SAASkB,UAAUA,CAAChC,IAAI,EAAEX,KAAK,EACtC;EACI,OAAO;IAAEW,IAAI;AAAEX,IAAAA;GAAO;AAC1B;;AAEA;AACA,MAAM4C,iBAAiB,CACvB;AACI;EACAC,WAAWA,CAACC,KAAK,EACjB;IACI,IAAI,CAACA,KAAK,GAAGA,KAAK;AAClB,IAAA,IAAI,CAACC,MAAM,GAAG,IAAIC,aAAa,EAAE;AACjC,IAAA,IAAI,CAACC,WAAW,GAAG,IAAIC,GAAG,EAAE;AAC5B,IAAA,IAAI,CAACC,aAAa,GAAG,IAAID,GAAG,EAAE;AAC9B,IAAA,IAAI,CAACE,aAAa,GAAG,IAAIF,GAAG,EAAE;AAC9B,IAAA,IAAI,CAACG,SAAS,GAAG,IAAIH,GAAG,EAAE;IAC1B,IAAI,CAACI,MAAM,GAAG,EAAE;IAChB,IAAI,CAACC,WAAW,GAAG,EAAE;AACzB,EAAA;;AAEA;AACAC,EAAAA,SAASA,CAACC,QAAQ,EAAEC,IAAI,EACxB;AACI,IAAA,KAAK,MAAM/C,IAAI,IAAI,IAAI,CAACmC,KAAK,EAC7B;MACI,IAAI,CAACG,WAAW,CAACU,GAAG,CAAChD,IAAI,EAAE,IAAI,CAACiD,QAAQ,CAAC,CAACjD,IAAI,CAAC8B,OAAO,CAACoB,MAAM,GAAG,CAAC,IAAIvE,WAAW,CAAC,CAAC;AACtF,IAAA;AACA,IAAA,KAAK,MAAMqB,IAAI,IAAI,IAAI,CAACmC,KAAK,EAAE,IAAI,CAACgB,SAAS,CAACnD,IAAI,CAAC;IACnD,MAAMoD,UAAU,GAAG,IAAI,CAACC,WAAW,CAACP,QAAQ,EAAEC,IAAI,CAAC;AACnD,IAAA,IAAI,CAACO,KAAK,CAAC,CAAC,CAAC;AACb,IAAA,IAAI,CAACX,MAAM,CAACY,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,IAAI,GAAGD,CAAC,CAACC,IAAI,CAAC;AAC3C,IAAA,IAAI,CAACd,WAAW,CAACW,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACG,MAAM,GAAGF,CAAC,CAACE,MAAM,CAAC;IACpD,OAAO;AACH/D,MAAAA,KAAK,EAAE,IAAI,CAACwC,MAAM,CAACwB,OAAO,EAAE;MAC5BjB,MAAM,EAAE,IAAI,CAACA,MAAM;MACnBC,WAAW,EAAE,IAAI,CAACA,WAAW;AAC7BiB,MAAAA,cAAc,EAAE,IAAI,CAACC,UAAU,CAAChB,QAAQ,CAAC;AACzCM,MAAAA;KACH;AACL,EAAA;;AAEA;EACAE,KAAKA,CAAChE,SAAS,EACf;AACI,IAAA,MAAMI,IAAI,GAAGN,KAAK,CAAC,IAAI,CAACgD,MAAM,CAACc,MAAM,EAAE5D,SAAS,CAAC,GAAG,IAAI,CAAC8C,MAAM,CAACc,MAAM;IACtE,IAAIxD,IAAI,EAAE,IAAI,CAAC0C,MAAM,CAAC2B,OAAO,CAACrE,IAAI,CAAC;AACvC,EAAA;;AAEA;EACAuD,QAAQA,CAACvD,IAAI,EACb;AACI,IAAA,IAAI,CAAC4D,KAAK,CAAC,CAAC,CAAC;AACb,IAAA,OAAO,IAAI,CAAClB,MAAM,CAAC2B,OAAO,CAACrE,IAAI,CAAC;AACpC,EAAA;;AAEA;EACAoE,UAAUA,CAAC9D,IAAI,EACf;IACI,MAAM2D,MAAM,GAAG,IAAI,CAACrB,WAAW,CAAC0B,GAAG,CAAChE,IAAI,CAAC;IACzC,IAAI2D,MAAM,KAAKM,SAAS,EACxB;MACI,MAAM,IAAIC,mBAAmB,CAAC,CAAA,4CAAA,EAA+ClE,IAAI,EAAE6B,IAAI,IAAI,EAAE,CAAA,CAAA,CAAG,CAAC;AACrG,IAAA;AACA,IAAA,OAAO8B,MAAM;AACjB,EAAA;;AAEA;EACAQ,UAAUA,CAACnE,IAAI,EACf;AACI,IAAA,IAAI,IAAI,CAAC0C,SAAS,CAAC0B,GAAG,CAACpE,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC0C,SAAS,CAACsB,GAAG,CAAChE,IAAI,CAAC;IAC7D,IAAI,CAAC0C,SAAS,CAACM,GAAG,CAAChD,IAAI,EAAE,CAAC,CAAC;IAC3B,IAAIN,IAAI,GAAG,CAAC;IACZ,KAAK,MAAMoB,MAAM,IAAId,IAAI,CAAC8B,OAAO,EAAEpC,IAAI,IAAImB,UAAU,CAACC,MAAM,EAAGK,GAAG,IAAK,IAAI,CAACgD,UAAU,CAAChD,GAAG,CAAC,CAAC;IAC5F,IAAI,CAACuB,SAAS,CAACM,GAAG,CAAChD,IAAI,EAAEN,IAAI,CAAC;AAC9B,IAAA,OAAOA,IAAI;AACf,EAAA;;AAEA;AACA2E,EAAAA,UAAUA,CAACX,IAAI,EAAEY,MAAM,EACvB;AACI,IAAA,IAAIA,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKL,SAAS,EAAE;AAC7C,IAAA,IAAI,CAACtB,MAAM,CAAC4B,IAAI,CAAC;MAAEb,IAAI;AAAEY,MAAAA;AAAO,KAAC,CAAC;AACtC,EAAA;;AAEA;AACAE,EAAAA,QAAQA,CAACb,MAAM,EAAEtE,KAAK,EACtB;IACI,IAAI,CAAC+C,MAAM,CAACqC,UAAU,CAACd,MAAM,EAAElE,SAAS,CAAC,CAAC,EAAEiF,IAAI,IAAIA,IAAI,CAACC,QAAQ,CAAC,CAAC,EAAEtF,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3F,EAAA;;AAEA;AACAuF,EAAAA,QAAQA,CAACjB,MAAM,EAAEtE,KAAK,EACtB;IACI,IAAI,CAAC+C,MAAM,CAACqC,UAAU,CAACd,MAAM,EAAElE,SAAS,CAAC,CAAC,EAAEiF,IAAI,IAAIA,IAAI,CAACG,SAAS,CAAC,CAAC,EAAExF,KAAK,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACjG,EAAA;;AAEA;AACAyF,EAAAA,QAAQA,CAACnB,MAAM,EAAEtE,KAAK,EACtB;AACI,IAAA,IAAI,CAAC+C,MAAM,CAACqC,UAAU,CAACd,MAAM,EAAElE,SAAS,CAAC,CAAC,EAAEiF,IAAI,IAAIA,IAAI,CAACK,UAAU,CAAC,CAAC,EAAEC,MAAM,CAAC3F,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AACtG,EAAA;;AAEA;EACA4F,WAAWA,CAAC5F,KAAK,EACjB;AACI,IAAA,MAAM6F,IAAI,GAAG7D,MAAM,CAAChC,KAAK,IAAI,EAAE,CAAC;AAChC,IAAA,IAAI,IAAI,CAACmD,aAAa,CAAC4B,GAAG,CAACc,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC1C,aAAa,CAACwB,GAAG,CAACkB,IAAI,CAAC;AACrE,IAAA,MAAMC,OAAO,GAAGnG,IAAI,CAACoG,MAAM,CAACF,IAAI,CAAC;AACjC,IAAA,MAAMvB,MAAM,GAAG,IAAI,CAACvB,MAAM,CAAC2B,OAAO,CAACoB,OAAO,CAACjC,MAAM,GAAG,CAAC,CAAC;IACtD,IAAI,CAACd,MAAM,CAACqC,UAAU,CAACd,MAAM,EAAEwB,OAAO,CAAC;IACvC,IAAI,CAAC3C,aAAa,CAACQ,GAAG,CAACkC,IAAI,EAAEvB,MAAM,CAAC;AACpC,IAAA,OAAOA,MAAM;AACjB,EAAA;;AAEA;EACAR,SAASA,CAACnD,IAAI,EACd;AACI,IAAA,MAAMqF,IAAI,GAAG,IAAI,CAACvB,UAAU,CAAC9D,IAAI,CAAC;AAClC,IAAA,KAAK,IAAIsF,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGtF,IAAI,CAAC8B,OAAO,CAACoB,MAAM,EAAEoC,KAAK,EAAE,EACxD;AACI,MAAA,MAAMxE,MAAM,GAAGd,IAAI,CAAC8B,OAAO,CAACwD,KAAK,CAAC;AAClC,MAAA,MAAM3B,MAAM,GAAG0B,IAAI,GAAGC,KAAK,GAAG3G,WAAW;MACzC,IAAI,CAACyD,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,EAAE7C,MAAM,CAACd,IAAI,CAAC;AACzC,MAAA,IAAI,CAACqE,UAAU,CAACV,MAAM,GAAG,CAAC,EAAE,IAAI,CAACsB,WAAW,CAACnE,MAAM,CAACe,IAAI,CAAC,CAAC;MAC1D,IAAIf,MAAM,CAACK,GAAG,EAAE,IAAI,CAACkD,UAAU,CAACV,MAAM,GAAG,CAAC,EAAE,IAAI,CAACG,UAAU,CAAChD,MAAM,CAACK,GAAG,CAAC,CAAC;AACxE,MAAA,IAAI,CAACiB,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,GAAG,EAAE,EAAE7C,MAAM,CAACG,UAAU,KAAK,CAAC,CAAC;AAC9D,IAAA;AACJ,EAAA;;AAEA;EACAuE,SAASA,CAACxF,IAAI,EACd;IACI,IAAI+B,GAAG,GAAG,IAAI,CAACU,aAAa,CAACuB,GAAG,CAAChE,IAAI,CAAC;IACtC,IAAI,CAAC+B,GAAG,EACR;AACIA,MAAAA,GAAG,GAAG,IAAI0D,OAAO,EAAE;MACnB,IAAI,CAAChD,aAAa,CAACO,GAAG,CAAChD,IAAI,EAAE+B,GAAG,CAAC;AACrC,IAAA;AACA,IAAA,OAAOA,GAAG;AACd,EAAA;;AAEA;AACAsB,EAAAA,WAAWA,CAACrD,IAAI,EAAEX,KAAK,EACvB;IACI,IAAIA,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK4E,SAAS,EAAE,OAAO,IAAI;AACtD,IAAA,IAAI,OAAO5E,KAAK,KAAK,QAAQ,EAC7B;AACI,MAAA,MAAM0C,GAAG,GAAG,IAAI,CAACyD,SAAS,CAACxF,IAAI,CAAC;AAChC,MAAA,IAAI+B,GAAG,CAACqC,GAAG,CAAC/E,KAAK,CAAC,EAAE,OAAO0C,GAAG,CAACiC,GAAG,CAAC3E,KAAK,CAAC;AACzC,MAAA,MAAMsE,MAAM,GAAG,IAAI,CAACV,QAAQ,CAAC,IAAI,CAACkB,UAAU,CAACnE,IAAI,CAAC,CAAC;AACnD+B,MAAAA,GAAG,CAACiB,GAAG,CAAC3D,KAAK,EAAEsE,MAAM,CAAC;MACtB,IAAI,CAAC+B,aAAa,CAAC1F,IAAI,EAAEX,KAAK,EAAEsE,MAAM,CAAC;AACvC,MAAA,OAAOA,MAAM;AACjB,IAAA;AACA,IAAA,MAAMA,MAAM,GAAG,IAAI,CAACV,QAAQ,CAAC,IAAI,CAACkB,UAAU,CAACnE,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC0F,aAAa,CAAC1F,IAAI,EAAEX,KAAK,EAAEsE,MAAM,CAAC;AACvC,IAAA,OAAOA,MAAM;AACjB,EAAA;;AAEA;AACAgC,EAAAA,WAAWA,CAAC3F,IAAI,EAAEX,KAAK,EAAEyB,MAAM,EAC/B;IACI,IAAIzB,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIuG,MAAM,CAACC,MAAM,CAACxG,KAAK,EAAEyB,MAAM,CAACe,IAAI,CAAC,EAAE,OAAOxC,KAAK,CAACyB,MAAM,CAACe,IAAI,CAAC;AACtG,IAAA,IAAI7B,IAAI,CAAC8B,OAAO,CAACoB,MAAM,KAAK,CAAC,IAAInD,aAAa,CAACe,MAAM,CAACd,IAAI,CAAC,EAAE,OAAOX,KAAK;AACzE,IAAA,OAAO4E,SAAS;AACpB,EAAA;;AAEA;AACAyB,EAAAA,aAAaA,CAAC1F,IAAI,EAAEX,KAAK,EAAEgG,IAAI,EAC/B;IACI,IAAI1B,MAAM,GAAG0B,IAAI;AACjB,IAAA,KAAK,MAAMvE,MAAM,IAAId,IAAI,CAAC8B,OAAO,EACjC;AACI,MAAA,IAAI,CAACgE,WAAW,CAAChF,MAAM,EAAE,IAAI,CAAC6E,WAAW,CAAC3F,IAAI,EAAEX,KAAK,EAAEyB,MAAM,CAAC,EAAE6C,MAAM,CAAC;AACvEA,MAAAA,MAAM,IAAI9C,UAAU,CAACC,MAAM,EAAGK,GAAG,IAAK,IAAI,CAACgD,UAAU,CAAChD,GAAG,CAAC,CAAC;AAC/D,IAAA;AACJ,EAAA;;AAEA;AACA4E,EAAAA,UAAUA,CAAC/F,IAAI,EAAEgG,MAAM,EACvB;AACI,IAAA,IAAI,CAACA,MAAM,CAAC9C,MAAM,EAAE,OAAO,IAAI;AAC/B,IAAA,MAAM+C,MAAM,GAAG,IAAI,CAAC9B,UAAU,CAACnE,IAAI,CAAC;IACpC,MAAM2D,MAAM,GAAG,IAAI,CAACV,QAAQ,CAACgD,MAAM,GAAGD,MAAM,CAAC9C,MAAM,CAAC;AACpD,IAAA,KAAK,IAAIoC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGU,MAAM,CAAC9C,MAAM,EAAEoC,KAAK,EAAE,EAClD;AACI,MAAA,IAAI,CAACI,aAAa,CAAC1F,IAAI,EAAEgG,MAAM,CAACV,KAAK,CAAC,EAAE3B,MAAM,GAAG2B,KAAK,GAAGW,MAAM,CAAC;AACpE,IAAA;AACA,IAAA,OAAOtC,MAAM;AACjB,EAAA;;AAEA;AACAuC,EAAAA,eAAeA,CAAClG,IAAI,EAAEgG,MAAM,EAC5B;AACI,IAAA,IAAI,CAACA,MAAM,CAAC9C,MAAM,EAAE,OAAO,IAAI;IAC/B,MAAMS,MAAM,GAAG,IAAI,CAACV,QAAQ,CAAC+C,MAAM,CAAC9C,MAAM,GAAG,CAAC,CAAC;AAC/C,IAAA,KAAK,IAAIoC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGU,MAAM,CAAC9C,MAAM,EAAEoC,KAAK,EAAE,EAClD;MACI,IAAI,CAACjB,UAAU,CAACV,MAAM,GAAG2B,KAAK,GAAG,CAAC,EAAE,IAAI,CAACjC,WAAW,CAACrD,IAAI,EAAEgG,MAAM,CAACV,KAAK,CAAC,CAAC,CAAC;AAC9E,IAAA;AACA,IAAA,OAAO3B,MAAM;AACjB,EAAA;;AAEA;AACAmC,EAAAA,WAAWA,CAAChF,MAAM,EAAEzB,KAAK,EAAEsE,MAAM,EACjC;IACI,QAAQ7C,MAAM,CAACd,IAAI;MAEf,KAAKzB,CAAC,CAAC2C,MAAM;AAAE,QAAA;AACX,UAAA,MAAMF,KAAK,GAAGF,MAAM,CAACG,UAAU,GAAG,CAAC,GAAGH,MAAM,CAACG,UAAU,GAAG,CAAC;AAC3D,UAAA,MAAM+E,MAAM,GAAGhF,KAAK,KAAK,CAAC,GAAG,CAAE3B,KAAK,IAAI,EAAE,CAAE,GAAGA,KAAK,IAAI,EAAE;UAC1D,MAAM4G,MAAM,GAAG,IAAI,CAAC9B,UAAU,CAACrD,MAAM,CAACK,GAAG,CAAC;UAC1C,KAAK,IAAImE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGtE,KAAK,EAAEsE,KAAK,EAAE,EAC1C;YACI,IAAI,CAACI,aAAa,CAAC5E,MAAM,CAACK,GAAG,EAAE6E,MAAM,CAACV,KAAK,CAAC,IAAI,EAAE,EAAE3B,MAAM,GAAG2B,KAAK,GAAGW,MAAM,CAAC;AAChF,UAAA;AACA,UAAA;AACJ,QAAA;MAEA,KAAK1H,CAAC,CAAC6C,SAAS;AACZ,QAAA,IAAI,CAACiD,UAAU,CAACV,MAAM,EAAE,IAAI,CAACN,WAAW,CAACvC,MAAM,CAACK,GAAG,EAAE9B,KAAK,CAAC,CAAC;AAC5D,QAAA;MAEJ,KAAKd,CAAC,CAAC8C,MAAM;QACT,IAAIhC,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAK4E,SAAS,EAAE,IAAI,CAACI,UAAU,CAACV,MAAM,EAAE,IAAI,CAACsB,WAAW,CAAC5F,KAAK,CAAC,CAAC;AAC3F,QAAA;MAEJ,KAAKd,CAAC,CAACgD,gBAAgB;AAAE,QAAA;UACrB,MAAMyE,MAAM,GAAGG,KAAK,CAACC,OAAO,CAAC/G,KAAK,CAAC,GAAGA,KAAK,GAAG,EAAE;UAChD,IAAI,CAAC+C,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,EAAEqC,MAAM,CAAC9C,MAAM,CAAC;AAC3C,UAAA,IAAI,CAACmB,UAAU,CAACV,MAAM,GAAG,CAAC,EAAE,IAAI,CAACoC,UAAU,CAACjF,MAAM,CAACK,GAAG,EAAE6E,MAAM,CAAC,CAAC;AAChE,UAAA;AACJ,QAAA;MAEA,KAAKzH,CAAC,CAACiD,iBAAiB;AAAE,QAAA;UACtB,MAAMwE,MAAM,GAAGG,KAAK,CAACC,OAAO,CAAC/G,KAAK,CAAC,GAAGA,KAAK,GAAG,EAAE;UAChD,IAAI,CAAC+C,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,EAAEqC,MAAM,CAAC9C,MAAM,CAAC;AAC3C,UAAA,IAAI,CAACmB,UAAU,CAACV,MAAM,GAAG,CAAC,EAAE,IAAI,CAACuC,eAAe,CAACpF,MAAM,CAACK,GAAG,EAAE6E,MAAM,CAAC,CAAC;AACrE,UAAA;AACJ,QAAA;MAEA,KAAKzH,CAAC,CAACkD,gBAAgB;AACnB,QAAA,IAAIpC,KAAK,EACT;AACI,UAAA,MAAMiF,MAAM,GAAG,IAAI,CAACjB,WAAW,CAAChE,KAAK,CAACW,IAAI,EAAEX,KAAK,CAACA,KAAK,CAAC;AACxD,UAAA,IAAI,CAACgF,UAAU,CAACV,MAAM,EAAE,IAAI,CAACG,UAAU,CAACzE,KAAK,CAACW,IAAI,CAAC,CAAC;UACpD,IAAI,CAACqE,UAAU,CAACV,MAAM,GAAG,CAAC,EAAEW,MAAM,CAAC;AACnC,UAAA,IAAI,CAAC1B,WAAW,CAAC2B,IAAI,CAAC;AAAE8B,YAAAA,KAAK,EAAE,CAAC;AAAE1C,YAAAA,MAAM,EAAEW,MAAM;AAAEgC,YAAAA,UAAU,EAAE,IAAI,CAACxC,UAAU,CAACzE,KAAK,CAACW,IAAI;AAAE,WAAC,CAAC;AAChG,QAAA;AACA,QAAA;MAEJ,KAAKzB,CAAC,CAACmD,uBAAuB;AAC1B,QAAA,IAAIrC,KAAK,EACT;AACI,UAAA,MAAM2G,MAAM,GAAGG,KAAK,CAACC,OAAO,CAAC/G,KAAK,CAACA,KAAK,CAAC,GAAGA,KAAK,CAACA,KAAK,GAAG,EAAE;UAC5D,MAAMiF,MAAM,GAAG,IAAI,CAACyB,UAAU,CAAC1G,KAAK,CAACW,IAAI,EAAEgG,MAAM,CAAC;AAClD,UAAA,IAAI,CAAC3B,UAAU,CAACV,MAAM,EAAE,IAAI,CAACG,UAAU,CAACzE,KAAK,CAACW,IAAI,CAAC,CAAC;AACpD,UAAA,IAAI,CAACoC,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,GAAG,CAAC,EAAEqC,MAAM,CAAC9C,MAAM,CAAC;UAC/C,IAAI,CAACmB,UAAU,CAACV,MAAM,GAAG,CAAC,EAAEW,MAAM,CAAC;UACnC,IAAI0B,MAAM,CAAC9C,MAAM,EACjB;AACI,YAAA,IAAI,CAACN,WAAW,CAAC2B,IAAI,CAAC;cAAE8B,KAAK,EAAEL,MAAM,CAAC9C,MAAM;AAAES,cAAAA,MAAM,EAAEW,MAAM;AAAEgC,cAAAA,UAAU,EAAE,IAAI,CAACxC,UAAU,CAACzE,KAAK,CAACW,IAAI;AAAE,aAAC,CAAC;AAC5G,UAAA;AACJ,QAAA;AACA,QAAA;MAEJ,KAAKzB,CAAC,CAACoD,SAAS;AACZ,QAAA,IAAI,CAAC4E,cAAc,CAAC5C,MAAM,EAAEtE,KAAK,CAAC;AAClC,QAAA;MAEJ,KAAKd,CAAC,CAAC+C,cAAc;AACjB,QAAA;AAEJ,MAAA;QACI,IAAI,CAACkF,YAAY,CAAC1F,MAAM,EAAEzB,KAAK,EAAEsE,MAAM,CAAC;AAChD;AACJ,EAAA;;AAEA;AACA4C,EAAAA,cAAcA,CAAC5C,MAAM,EAAEtE,KAAK,GAAG,EAAE,EACjC;AACI,IAAA,MACIoH,QAAQ,GAAGpH,KAAK,EAAEoH,QAAQ,IAAIpH,KAAK,EAAEqH,QAAQ,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAC5DC,MAAAA,WAAW,GAAGtH,KAAK,EAAEsH,WAAW,IAAItH,KAAK,EAAEuH,WAAW,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;MACxEC,UAAU,GAAGxH,KAAK,EAAEwH,UAAU,IAAIxH,KAAK,EAAEyH,UAAU,IAAI,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACxF,IAAA,IAAI,CAAC1E,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,EAAEtE,KAAK,EAAE0H,KAAK,IAAI1H,KAAK,EAAE2H,KAAK,IAAI,CAAC,CAAC;AAC/D,IAAA,IAAIC,MAAM,GAAGtD,MAAM,GAAG,CAAC;AACvB,IAAA,KAAK,MAAMuD,SAAS,IAAIT,QAAQ,EAAE;AAAE,MAAA,IAAI,CAAC3B,QAAQ,CAACmC,MAAM,EAAEC,SAAS,CAAC;AAAED,MAAAA,MAAM,IAAI,CAAC;AAAE,IAAA;AACnF,IAAA,KAAK,MAAMC,SAAS,IAAIP,WAAW,EAAE;AAAE,MAAA,IAAI,CAAC7B,QAAQ,CAACmC,MAAM,EAAEC,SAAS,CAAC;AAAED,MAAAA,MAAM,IAAI,CAAC;AAAE,IAAA;AACtF,IAAA,KAAK,MAAMC,SAAS,IAAIL,UAAU,EAAE;AAAE,MAAA,IAAI,CAAC/B,QAAQ,CAACmC,MAAM,EAAEC,SAAS,CAAC;AAAED,MAAAA,MAAM,IAAI,CAAC;AAAE,IAAA;AACzF,EAAA;;AAEA;AACAT,EAAAA,YAAYA,CAAC1F,MAAM,EAAEzB,KAAK,EAAEsE,MAAM,EAClC;AACI,IAAA,MAAM3C,KAAK,GAAGF,MAAM,CAACG,UAAU,GAAG,CAAC,GAAGH,MAAM,CAACG,UAAU,GAAG,CAAC;AAC3D,IAAA,MAAM+E,MAAM,GAAGhF,KAAK,KAAK,CAAC,GAAG,CAAE3B,KAAK,IAAI,CAAC,CAAE,GAAGA,KAAK,IAAI,EAAE;AACzD,IAAA,MAAM4G,MAAM,GAAGlG,aAAa,CAACe,MAAM,CAACd,IAAI,CAAC;IACzC,KAAK,IAAIsF,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGtE,KAAK,EAAEsE,KAAK,EAAE,EAC1C;AACI,MAAA,MAAM6B,IAAI,GAAGnB,MAAM,CAACV,KAAK,CAAC,IAAI,CAAC;MAC/B,QAAQxE,MAAM,CAACd,IAAI;QAEf,KAAKzB,CAAC,CAAC0B,MAAM;UACT,IAAI,CAAC6E,QAAQ,CAACnB,MAAM,GAAG2B,KAAK,GAAGW,MAAM,EAAEkB,IAAI,CAAC;AAC5C,UAAA;QAEJ,KAAK5I,CAAC,CAAC2B,KAAK;AACR,UAAA,IAAI,CAACkC,MAAM,CAACqC,UAAU,CAACd,MAAM,GAAG2B,KAAK,GAAGW,MAAM,EAC1CxG,SAAS,CAAC,CAAC,EAAEiF,IAAI,IAAIA,IAAI,CAAC0C,QAAQ,CAAC,CAAC,EAAED,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC3D,UAAA;QAEJ,KAAK5I,CAAC,CAAC4B,MAAM;AACT,UAAA,IAAI,CAACiC,MAAM,CAACmD,QAAQ,CAAC5B,MAAM,GAAG2B,KAAK,GAAGW,MAAM,EAAEkB,IAAI,CAAC;AACnD,UAAA;QAEJ,KAAK5I,CAAC,CAAC6B,KAAK;QACZ,KAAK7B,CAAC,CAAC+B,aAAa;UAChB,IAAI,CAACkE,QAAQ,CAACb,MAAM,GAAG2B,KAAK,GAAGW,MAAM,EAAEkB,IAAI,CAAC;AAC5C,UAAA;QAEJ,KAAK5I,CAAC,CAAC8B,MAAM;QACb,KAAK9B,CAAC,CAACgC,YAAY;QACnB,KAAKhC,CAAC,CAACiC,MAAM;UACT,IAAI,CAACoE,QAAQ,CAACjB,MAAM,GAAG2B,KAAK,GAAGW,MAAM,EAAEkB,IAAI,CAAC;AAC5C,UAAA;QAEJ,KAAK5I,CAAC,CAACkC,IAAI;QACX,KAAKlC,CAAC,CAACoC,YAAY;UACf,IAAI,CAACyB,MAAM,CAACiF,OAAO,CAAC1D,MAAM,GAAG2B,KAAK,EAAE6B,IAAI,CAAC;AACzC,UAAA;QAEJ,KAAK5I,CAAC,CAACmC,KAAK;QACZ,KAAKnC,CAAC,CAACqC,WAAW;UACd,IAAI,CAACwB,MAAM,CAACiF,OAAO,CAAC1D,MAAM,GAAG2B,KAAK,EAAE6B,IAAI,CAAC;AACzC,UAAA;AAEJ,QAAA;UACI,MAAM,IAAIjD,mBAAmB,CAAC,CAAA,qCAAA,EAAwCpD,MAAM,CAACd,IAAI,EAAE,CAAC;AAC5F;AACJ,IAAA;AACJ,EAAA;AACJ;AAEA,SAASsH,iBAAiBA,CAAC3E,MAAM,EACjC;EACI,MAAMP,MAAM,GAAG,IAAIC,aAAa,CAACM,MAAM,CAACO,MAAM,GAAG,EAAE,CAAC;AACpD,EAAA,KAAK,MAAMqE,KAAK,IAAI5E,MAAM,EAC1B;AACIP,IAAAA,MAAM,CAACoF,GAAG,CAACD,KAAK,CAAC7D,IAAI,CAAC;AACtBtB,IAAAA,MAAM,CAACoF,GAAG,CAAC,CAAC,CAAC;AACbpF,IAAAA,MAAM,CAACoF,GAAG,CAACD,KAAK,CAACjD,MAAM,CAAC;AAC5B,EAAA;AACA,EAAA,OAAOlC,MAAM,CAACwB,OAAO,EAAE;AAC3B;AAEA,SAAS6D,eAAeA,CAAC9E,MAAM,EAC/B;EACI,MAAMP,MAAM,GAAG,IAAIC,aAAa,CAACM,MAAM,CAACO,MAAM,GAAG,EAAE,CAAC;AACpD,EAAA,KAAK,MAAMqE,KAAK,IAAI5E,MAAM,EAC1B;AACIP,IAAAA,MAAM,CAACoF,GAAG,CAACD,KAAK,CAAClB,KAAK,CAAC;AACvBjE,IAAAA,MAAM,CAACoF,GAAG,CAACD,KAAK,CAAC5D,MAAM,CAAC;AACxBvB,IAAAA,MAAM,CAACoF,GAAG,CAAC,CAAC,CAAC;AACbpF,IAAAA,MAAM,CAACoF,GAAG,CAACD,KAAK,CAACjB,UAAU,CAAC;AAChC,EAAA;AACA,EAAA,OAAOlE,MAAM,CAACwB,OAAO,EAAE;AAC3B;AAEA,SAAS8D,WAAWA,CAACtF,MAAM,EAAE9C,SAAS,EACtC;AACI8C,EAAAA,MAAM,CAAC2B,OAAO,CAAC3E,KAAK,CAACgD,MAAM,CAACc,MAAM,EAAE5D,SAAS,CAAC,GAAG8C,MAAM,CAACc,MAAM,CAAC;AACnE;AAEA,SAASyE,YAAYA,CAACvF,MAAM,EAAExC,KAAK,EAAEgI,UAAU,EAC/C;AACI,EAAA,IAAI,CAAChI,KAAK,CAACsD,MAAM,EAAE,OAAO,CAAC;AAC3BwE,EAAAA,WAAW,CAACtF,MAAM,EAAE,CAAC,CAAC;AACtB,EAAA,MAAMuB,MAAM,GAAGvB,MAAM,CAACc,MAAM;AAC5B,EAAA,IAAI0E,UAAU,EACd;AACI,IAAA,MAAMC,MAAM,GAAGC,iBAAiB,CAAClI,KAAK,CAAC;AACvCwC,IAAAA,MAAM,CAACoF,GAAG,CAACK,MAAM,CAAC3E,MAAM,CAAC;AACzBd,IAAAA,MAAM,CAACxC,KAAK,CAACiI,MAAM,CAAC;AACxB,EAAA,CAAC,MAED;AACIzF,IAAAA,MAAM,CAACxC,KAAK,CAACA,KAAK,CAAC;AACvB,EAAA;AACA,EAAA,OAAO+D,MAAM;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASoE,iBAAiBA,CAACjF,QAAQ,EAAEC,IAAI,EAAEZ,KAAK,EAAE6F,OAAO,GAAG,EAAE,EACrE;AACI,EAAA,MAAMC,OAAO,GAAG,IAAIhG,iBAAiB,CAACE,KAAK,CAAC,CAACU,SAAS,CAACC,QAAQ,EAAEC,IAAI,CAAC;AACtE,EAAA,MAAMmF,UAAU,GAAGrJ,wBAAwB,GAAGC,mBAAmB;AACjE,EAAA,MAAMqJ,kBAAkB,GAAGH,OAAO,CAACG,kBAAkB,IAAIjJ,4BAA4B;EACrF,IAAI,CAAC,CAAEA,4BAA4B,EAAEC,oCAAoC,CAAE,CAACiJ,QAAQ,CAACD,kBAAkB,CAAC,EACxG;AACI,IAAA,MAAM,IAAIjE,mBAAmB,CAAC,CAAA,0CAAA,EAA6CiE,kBAAkB,GAAG,CAAC;AACrG,EAAA;AACA,EAAA,MAAMP,UAAU,GAAGO,kBAAkB,KAAKhJ,oCAAoC;AAC9E,EAAA,MAAMkJ,YAAY,GAAGT,UAAU,GAAGE,iBAAiB,CAACG,OAAO,CAACrI,KAAK,CAAC,GAAGqI,OAAO,CAACrI,KAAK;EAClF,MAAMwC,MAAM,GAAG,IAAIC,aAAa,CAAC6F,UAAU,GAAGG,YAAY,CAACnF,MAAM,CAAC;AAClEd,EAAAA,MAAM,CAAC2B,OAAO,CAACmE,UAAU,CAAC;AAC1B9F,EAAAA,MAAM,CAACxC,KAAK,CAACyI,YAAY,CAAC;AAC1B,EAAA,MAAMC,kBAAkB,GAAGX,YAAY,CAACvF,MAAM,EAAEkF,iBAAiB,CAACW,OAAO,CAACtF,MAAM,CAAC,EAAEiF,UAAU,CAAC;AAC9F,EAAA,MAAMW,gBAAgB,GAAGZ,YAAY,CAACvF,MAAM,EAAEqF,eAAe,CAACQ,OAAO,CAACrF,WAAW,CAAC,EAAEgF,UAAU,CAAC;AAE/F,EAAA,MAAMY,SAAS,GAAGpG,MAAM,CAACc,MAAM;AAC/Bd,EAAAA,MAAM,CAACqC,UAAU,CAAC,CAAC,EAAEhG,WAAW,CAAC;AACjC2D,EAAAA,MAAM,CAACmD,QAAQ,CAAC,EAAE,EAAE2C,UAAU,CAAC;AAC/B9F,EAAAA,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,EAAE,CAAC,CAAC;EACtCwD,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,CAAC,EAAE4J,SAAS,CAAC;EAClDpG,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAEC,wBAAwB,GAAGD,kBAAkB,CAAC;EACvFwD,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC;EAC3CwD,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC;EAC3CwD,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAEqJ,OAAO,CAACpE,cAAc,CAAC;EAChEzB,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAE,CAAC,CAAC;EAC3CwD,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAEqJ,OAAO,CAAC7E,UAAU,CAAC;EAC5DhB,MAAM,CAACmD,QAAQ,CAAC3G,kBAAkB,GAAG,EAAE,EAAEG,aAAa,CAAC;EAEvDqD,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,EAAE+I,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;EAC7DxF,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,CAAC,EAAEqJ,UAAU,CAAC;EACzD9F,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,CAAC,EAAEwJ,YAAY,CAACnF,MAAM,CAAC;AAClEd,EAAAA,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAEoJ,OAAO,CAACrI,KAAK,CAACsD,MAAM,CAAC;EACpEd,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAE,CAAC,CAAC;AACjDuD,EAAAA,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAEoJ,OAAO,CAACtF,MAAM,CAACO,MAAM,GAAGoF,kBAAkB,GAAG,CAAC,CAAC;AAC9FlG,EAAAA,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAEoJ,OAAO,CAACtF,MAAM,CAACO,MAAM,CAAC;AACrEd,EAAAA,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAEoJ,OAAO,CAACrF,WAAW,CAACM,MAAM,GAAGqF,gBAAgB,GAAG,CAAC,CAAC;AACjGnG,EAAAA,MAAM,CAACmD,QAAQ,CAAC1G,wBAAwB,GAAG,EAAE,EAAEoJ,OAAO,CAACrF,WAAW,CAACM,MAAM,CAAC;AAE1E,EAAA,MAAMtD,KAAK,GAAGwC,MAAM,CAACwB,OAAO,EAAE;EAC9B,IAAI/D,QAAQ,CAACD,KAAK,CAACE,MAAM,CAAC,CAAC2I,SAAS,CAAC7J,kBAAkB,GAAG,CAAC,EAAE8J,KAAK,CAAC9I,KAAK,EAAEf,wBAAwB,CAAC,EAAE,IAAI,CAAC;AAC1G,EAAA,OAAOe,KAAK;AAChB;;;;"}
@@ -1,3 +1,4 @@
1
+ import { toJsonAcyclic } from '../../../format/jsonPolicies.js';
1
2
  import { readGr2Raw } from './reader.js';
2
3
  import { emitJson } from './json.js';
3
4
  import { CLASS_KEYS as CLASS_KEYS$1, projectShared } from './shared.js';
@@ -102,9 +103,9 @@ function optionValue(options, keys) {
102
103
  return undefined;
103
104
  }
104
105
 
105
- /**
106
- * Normalizes reader options against their supported defaults for the GR2 format
107
- * reader.
106
+ /**
107
+ * Normalizes reader options against their supported defaults for the GR2 format
108
+ * reader.
108
109
  */
109
110
  function normalizeValues(base = DEFAULT_VALUES, options = {}) {
110
111
  if (!options || typeof options !== "object") {
@@ -154,15 +155,15 @@ function isRawGr2Result(value) {
154
155
  return !!value && typeof value === "object" && "fileInfo" in value && typeof value.version === "number";
155
156
  }
156
157
 
157
- /**
158
- * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,
159
- * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw
160
- * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which
161
- * is how ccpwgl's resource loader supplies bytes) must be wrapped in a
162
- * view before it reaches readGr2Raw, not passed straight through.
163
- *
164
- * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.
165
- * @returns {Uint8Array} A Uint8Array view over the same bytes.
158
+ /**
159
+ * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,
160
+ * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw
161
+ * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which
162
+ * is how ccpwgl's resource loader supplies bytes) must be wrapped in a
163
+ * view before it reaches readGr2Raw, not passed straight through.
164
+ *
165
+ * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.
166
+ * @returns {Uint8Array} A Uint8Array view over the same bytes.
166
167
  */
167
168
  function toBytes(input) {
168
169
  if (input instanceof Uint8Array) return input;
@@ -332,31 +333,19 @@ function readWithValues(reader, input, values) {
332
333
  }
333
334
 
334
335
  /** Converts a parsed payload into a JSON-safe value for the GR2 format reader. */
335
- function toJsonValue(value, seen = new WeakSet()) {
336
- if (value === null || typeof value !== "object") return value;
337
- if (ArrayBuffer.isView(value)) return Array.from(value, item => toJsonValue(item, seen));
338
- if (Array.isArray(value)) return value.map(item => toJsonValue(item, seen));
339
- if (seen.has(value)) {
340
- throw new TypeError("CjsGr2Format.toJSON cannot convert circular data");
341
- }
342
- if (typeof value.toJSON === "function") {
343
- seen.add(value);
344
- const json = toJsonValue(value.toJSON(), seen);
345
- seen.delete(value);
346
- return json;
347
- }
348
- seen.add(value);
349
- const out = {};
350
- for (const key of Object.keys(value)) {
351
- out[key] = toJsonValue(value[key], seen);
352
- }
353
- seen.delete(value);
354
- return out;
336
+ /**
337
+ * Convert to JSON, refusing a cycle, naming this reader in the error.
338
+ *
339
+ * @param {*} value Any decoded value.
340
+ * @returns {*} A JSON-safe value.
341
+ */
342
+ function toJsonValue(value) {
343
+ return toJsonAcyclic(value, "CjsGr2Format");
355
344
  }
356
345
 
357
- /**
358
- * Inspects raw GR2 result without materializing the full GR2 format reader
359
- * payload.
346
+ /**
347
+ * Inspects raw GR2 result without materializing the full GR2 format reader
348
+ * payload.
360
349
  */
361
350
  function inspectRawGr2Result(parsed) {
362
351
  const fileInfo = parsed.fileInfo || {},
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gr2/core/helpers.js"],"sourcesContent":["import { readGr2Raw } from \"./reader.js\";\r\nimport { emitJson } from \"./json.js\";\r\nimport { projectShared, CLASS_KEYS as GR2_CLASS_KEYS } from \"./shared.js\";\r\nimport { tangents } from \"./tangents.js\";\r\nimport { decompressAnimationCurves } from \"./curves.js\";\r\nimport { buildCmfFromShared, CMF_CLASS_KEYS, reassembleGr2Lods } from \"./targets.js\";\r\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\r\n\r\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\r\n ...GR2_CLASS_KEYS,\r\n ...CMF_CLASS_KEYS\r\n])));\r\n\r\nexport const OUTPUT_JSON = \"json\";\r\nexport const OUTPUT_GR2 = \"gr2\";\r\nexport const OUTPUT_GR2_JSON = \"gr2Json\";\r\nexport const OUTPUT_CMF = \"cmf\";\r\nexport const OUTPUT_RAW = \"raw\";\r\n\r\nexport const DEFAULT_VALUES = Object.freeze({\r\n emit: OUTPUT_JSON,\r\n decompressCurves: false,\r\n unpackTangents: false,\r\n rebuildMissingNormals: false,\r\n rebuildMissingTangents: false,\r\n rebuildMissingBiNormals: false,\r\n rebuildMissingBounds: false,\r\n classes: Object.freeze({})\r\n});\r\n\r\nconst OPTION_KEYS = new Set([\r\n \"emit\",\r\n \"decompressCurves\",\r\n \"unpackTangents\",\r\n \"rebuildMissingNormals\",\r\n \"rebuildMissingTangents\",\r\n \"rebuildMissingBiNormals\",\r\n \"rebuildMissingBounds\",\r\n \"classes\"\r\n]);\r\n\r\nfunction normalizeEmit(emit)\r\n{\r\n if (emit === undefined || emit === OUTPUT_JSON) return OUTPUT_JSON;\r\n if (emit === OUTPUT_GR2_JSON) return OUTPUT_GR2_JSON;\r\n if (emit === OUTPUT_GR2) return OUTPUT_GR2;\r\n if (emit === OUTPUT_CMF) return OUTPUT_CMF;\r\n if (emit === OUTPUT_RAW) return OUTPUT_RAW;\r\n throw new Error(`CjsGr2Format unknown emit value \"${emit}\"`);\r\n}\r\n\r\nfunction classMap(values)\r\n{\r\n return values && values.classes ? values.classes : {};\r\n}\r\n\r\nfunction cloneValues(values)\r\n{\r\n return {\r\n emit: values.emit,\r\n decompressCurves: values.decompressCurves,\r\n unpackTangents: values.unpackTangents,\r\n rebuildMissingNormals: values.rebuildMissingNormals,\r\n rebuildMissingTangents: values.rebuildMissingTangents,\r\n rebuildMissingBiNormals: values.rebuildMissingBiNormals,\r\n rebuildMissingBounds: values.rebuildMissingBounds,\r\n classes: { ...classMap(values) }\r\n };\r\n}\r\n\r\nfunction assertKnownOptions(options)\r\n{\r\n for (const key of Object.keys(options))\r\n {\r\n if (!OPTION_KEYS.has(key))\r\n {\r\n throw new TypeError(`CjsGr2Format unknown option \"${key}\"`);\r\n }\r\n }\r\n}\r\n\r\nfunction validateBoolean(name, value)\r\n{\r\n if (typeof value !== \"boolean\")\r\n {\r\n throw new TypeError(`CjsGr2Format ${name} option must be true or false`);\r\n }\r\n return value;\r\n}\r\n\r\nfunction validateRule(name, value)\r\n{\r\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\r\n throw new TypeError(`CjsGr2Format ${name} option must be true, false, or a function`);\r\n}\r\n\r\n/** Validates a requested runtime class key for the GR2 format reader. */\r\nexport function validateClassKey(key)\r\n{\r\n if (!CLASS_KEYS.includes(key))\r\n {\r\n throw new Error(`CjsGr2Format unknown class type \"${key}\"`);\r\n }\r\n}\r\n\r\n/** Validates a resolved runtime class constructor for the GR2 format reader. */\r\nexport function validateClass(type, Class)\r\n{\r\n validateClassKey(type);\r\n if (typeof Class !== \"function\")\r\n {\r\n throw new TypeError(`CjsGr2Format class \"${type}\" must be a constructor`);\r\n }\r\n}\r\n\r\nfunction mergeClasses(values, classes)\r\n{\r\n if (!classes || typeof classes !== \"object\")\r\n {\r\n throw new TypeError(\"CjsGr2Format classes option must be an object\");\r\n }\r\n\r\n const next = { ...values.classes };\r\n for (const [ type, Class ] of Object.entries(classes))\r\n {\r\n validateClass(type, Class);\r\n next[type] = Class;\r\n }\r\n values.classes = next;\r\n}\r\n\r\nfunction optionValue(options, keys)\r\n{\r\n for (const key of keys)\r\n {\r\n if (Object.hasOwn(options, key)) return options[key];\r\n }\r\n return undefined;\r\n}\r\n\r\n/**\r\n * Normalizes reader options against their supported defaults for the GR2 format\r\n * reader.\r\n */\r\nexport function normalizeValues(base = DEFAULT_VALUES, options = {})\r\n{\r\n if (!options || typeof options !== \"object\")\r\n {\r\n throw new TypeError(\"CjsGr2Format options must be an object\");\r\n }\r\n\r\n assertKnownOptions(options);\r\n\r\n const values = cloneValues(base);\r\n\r\n if (Object.hasOwn(options, \"emit\")) values.emit = normalizeEmit(options.emit);\r\n if (Object.hasOwn(options, \"decompressCurves\"))\r\n {\r\n values.decompressCurves = validateBoolean(\"decompressCurves\", options.decompressCurves);\r\n }\r\n\r\n const unpackTangents = optionValue(options, [ \"unpackTangents\" ]);\r\n if (unpackTangents !== undefined)\r\n {\r\n values.unpackTangents = validateRule(\"unpackTangents\", unpackTangents);\r\n }\r\n\r\n const rebuildMissingNormals = optionValue(options, [ \"rebuildMissingNormals\" ]);\r\n if (rebuildMissingNormals !== undefined)\r\n {\r\n values.rebuildMissingNormals = validateRule(\"rebuildMissingNormals\", rebuildMissingNormals);\r\n }\r\n\r\n const rebuildMissingTangents = optionValue(options, [ \"rebuildMissingTangents\" ]);\r\n if (rebuildMissingTangents !== undefined)\r\n {\r\n values.rebuildMissingTangents = validateRule(\"rebuildMissingTangents\", rebuildMissingTangents);\r\n }\r\n\r\n const rebuildMissingBiNormals = optionValue(options, [ \"rebuildMissingBiNormals\" ]);\r\n if (rebuildMissingBiNormals !== undefined)\r\n {\r\n values.rebuildMissingBiNormals = validateRule(\"rebuildMissingBiNormals\", rebuildMissingBiNormals);\r\n }\r\n\r\n const rebuildMissingBounds = optionValue(options, [ \"rebuildMissingBounds\" ]);\r\n if (rebuildMissingBounds !== undefined)\r\n {\r\n if (typeof rebuildMissingBounds !== \"boolean\")\r\n {\r\n throw new TypeError(\"CjsGr2Format rebuildMissingBounds option must be true or false\");\r\n }\r\n values.rebuildMissingBounds = rebuildMissingBounds;\r\n }\r\n\r\n if (Object.hasOwn(options, \"classes\"))\r\n {\r\n mergeClasses(values, options.classes);\r\n }\r\n\r\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\r\n {\r\n throw new TypeError(`CjsGr2Format emit \"${values.emit}\" requires explicit classes`);\r\n }\r\n\r\n return values;\r\n}\r\n\r\nfunction hasClasses(classes)\r\n{\r\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\r\n}\r\n\r\nfunction isRawGr2Result(value)\r\n{\r\n return !!value && typeof value === \"object\" && \"fileInfo\" in value &&\r\n typeof value.version === \"number\";\r\n}\r\n\r\n/**\r\n * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,\r\n * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw\r\n * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which\r\n * is how ccpwgl's resource loader supplies bytes) must be wrapped in a\r\n * view before it reaches readGr2Raw, not passed straight through.\r\n *\r\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.\r\n * @returns {Uint8Array} A Uint8Array view over the same bytes.\r\n */\r\nfunction toBytes(input)\r\n{\r\n if (input instanceof Uint8Array) return input;\r\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer) return new Uint8Array(input);\r\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\r\n throw new TypeError(\"CjsGr2Format: input must be GR2 bytes (Uint8Array, Buffer, DataView or ArrayBuffer)\");\r\n}\r\n\r\n/** Reads and validates raw input bytes for the GR2 format reader. */\r\nexport function readRawInput(input)\r\n{\r\n return isRawGr2Result(input) ? input : readGr2Raw(toBytes(input));\r\n}\r\n\r\nfunction meshName(mesh, meshIndex)\r\n{\r\n return mesh && mesh.name ? `\"${mesh.name}\"` : `#${meshIndex}`;\r\n}\r\n\r\nfunction vertexChannel(mesh, channel)\r\n{\r\n return mesh && mesh.vertex && mesh.vertex[channel];\r\n}\r\n\r\nfunction hasVertexChannel(mesh, channel)\r\n{\r\n const value = vertexChannel(mesh, channel);\r\n return !!value && value.length > 0;\r\n}\r\n\r\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\r\n{\r\n const value = vertexChannel(mesh, channel);\r\n if (!value || value.length === 0)\r\n {\r\n throw new Error(`CjsGr2Format ${feature} requires mesh.vertex.${channel} for mesh ${meshName(mesh, meshIndex)}`);\r\n }\r\n return value;\r\n}\r\n\r\nfunction triangleFaces(mesh, meshIndex, feature)\r\n{\r\n const faces = [];\r\n for (const group of mesh.indices || [])\r\n {\r\n for (const index of group?.faces ?? [])\r\n {\r\n faces.push(index);\r\n }\r\n }\r\n\r\n if (faces.length === 0)\r\n {\r\n throw new Error(`CjsGr2Format ${feature} requires triangle indices for mesh ${meshName(mesh, meshIndex)}`);\r\n }\r\n\r\n return faces;\r\n}\r\n\r\nfunction shouldApplyMeshRule(reader, rule, context)\r\n{\r\n const fullContext = { reader, ...context };\r\n\r\n if (typeof rule === \"function\")\r\n {\r\n const result = rule(fullContext);\r\n if (typeof result !== \"boolean\")\r\n {\r\n throw new TypeError(`CjsGr2Format ${context.feature} rule must return true or false`);\r\n }\r\n return result;\r\n }\r\n\r\n return rule;\r\n}\r\n\r\nfunction unpackMeshTangents(reader, json, raw, values)\r\n{\r\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\r\n {\r\n const mesh = json.meshes[meshIndex];\r\n if (shouldApplyMeshRule(reader, values.unpackTangents, {\r\n options: values, raw, json, mesh, meshIndex,\r\n feature: \"unpackTangents\",\r\n channel: \"tangent\"\r\n }))\r\n {\r\n tangents.unpack(mesh);\r\n for (const target of mesh.morphTargets ?? [])\r\n {\r\n const\r\n indices = target.vertexIndices ?? [],\r\n positions = target.vertex?.position ?? [],\r\n count = indices.length || Math.floor(positions.length / 3) ||\r\n Math.floor((mesh.vertex?.position ?? []).length / 3);\r\n tangents.unpack({ vertex: target.vertex }, count);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction rebuildMeshNormals(mesh, meshIndex)\r\n{\r\n const\r\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\r\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\");\r\n\r\n mesh.vertex.normal = Array.from(tangents.generateNormals(positions, faces));\r\n}\r\n\r\nfunction rebuildMeshTangents(mesh, meshIndex)\r\n{\r\n const\r\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\r\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\r\n uvs = requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\r\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\");\r\n\r\n mesh.vertex.tangent = Array.from(tangents.generateTangents(positions, normals, uvs, faces));\r\n}\r\n\r\nfunction rebuildMeshBiNormals(mesh, meshIndex)\r\n{\r\n const\r\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\r\n tangentValues = requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\");\r\n\r\n mesh.vertex.binormal = tangents.generateBiNormals(normals, tangentValues);\r\n}\r\n\r\nfunction rebuildMissingMeshData(reader, json, raw, values)\r\n{\r\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\r\n {\r\n const mesh = json.meshes[meshIndex];\r\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\r\n reader,\r\n values.rebuildMissingNormals,\r\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\r\n {\r\n rebuildMeshNormals(mesh, meshIndex);\r\n }\r\n\r\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\r\n reader,\r\n values.rebuildMissingTangents,\r\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\r\n {\r\n rebuildMeshTangents(mesh, meshIndex);\r\n }\r\n\r\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\r\n reader,\r\n values.rebuildMissingBiNormals,\r\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\r\n {\r\n rebuildMeshBiNormals(mesh, meshIndex);\r\n }\r\n }\r\n}\r\n\r\nfunction processMeshData(reader, json, raw, values)\r\n{\r\n unpackMeshTangents(reader, json, raw, values);\r\n rebuildMissingMeshData(reader, json, raw, values);\r\n}\r\n\r\nfunction finishProjection(reader, projected, raw, values)\r\n{\r\n if (values.decompressCurves)\r\n {\r\n decompressAnimationCurves(projected);\r\n }\r\n\r\n processMeshData(reader, projected, raw, values);\r\n return projected;\r\n}\r\n\r\nfunction buildJson(reader, raw, values)\r\n{\r\n return finishProjection(reader, emitJson(raw.fileInfo, raw.version, {\r\n classes: values.emit === OUTPUT_GR2 || ((values.emit === OUTPUT_JSON || values.emit === OUTPUT_GR2_JSON) && hasClasses(values.classes))\r\n ? values.classes\r\n : {},\r\n rebuildMissingBounds: values.rebuildMissingBounds\r\n }), raw, values);\r\n}\r\n\r\nfunction buildCmf(reader, raw, values)\r\n{\r\n const shared = finishProjection(\r\n reader,\r\n projectShared(raw.fileInfo, raw.version, { rebuildMissingBounds: values.rebuildMissingBounds }),\r\n raw,\r\n values\r\n );\r\n return hydrateCmf(\r\n buildCmfFromShared(reassembleGr2Lods(shared)),\r\n values.classes,\r\n { source: values.source },\r\n \"CjsGr2Format CMF\"\r\n );\r\n}\r\n\r\n/** Reads input using normalized format options for the GR2 format reader. */\r\nexport function readWithValues(reader, input, values)\r\n{\r\n const parsed = readRawInput(input);\r\n if (values.emit === OUTPUT_RAW) return parsed;\r\n if (values.emit === OUTPUT_CMF) return buildCmf(reader, parsed, values);\r\n return buildJson(reader, parsed, values);\r\n}\r\n\r\n/** Converts a parsed payload into a JSON-safe value for the GR2 format reader. */\r\nexport function toJsonValue(value, seen = new WeakSet())\r\n{\r\n if (value === null || typeof value !== \"object\") return value;\r\n if (ArrayBuffer.isView(value)) return Array.from(value, item => toJsonValue(item, seen));\r\n if (Array.isArray(value)) return value.map(item => toJsonValue(item, seen));\r\n\r\n if (seen.has(value))\r\n {\r\n throw new TypeError(\"CjsGr2Format.toJSON cannot convert circular data\");\r\n }\r\n\r\n if (typeof value.toJSON === \"function\")\r\n {\r\n seen.add(value);\r\n const json = toJsonValue(value.toJSON(), seen);\r\n seen.delete(value);\r\n return json;\r\n }\r\n\r\n seen.add(value);\r\n const out = {};\r\n for (const key of Object.keys(value))\r\n {\r\n out[key] = toJsonValue(value[key], seen);\r\n }\r\n seen.delete(value);\r\n return out;\r\n}\r\n\r\n/**\r\n * Inspects raw GR2 result without materializing the full GR2 format reader\r\n * payload.\r\n */\r\nexport function inspectRawGr2Result(parsed)\r\n{\r\n const\r\n fileInfo = parsed.fileInfo || {},\r\n count = value => Array.isArray(value) ? value.filter(Boolean).length : 0;\r\n\r\n return {\r\n reader: \"CjsGr2Format\",\r\n format: \"gr2\",\r\n version: parsed.version | 0,\r\n sectionCount: parsed.secCount | 0,\r\n source: fileInfo.FromFileName ?? \"\",\r\n counts: {\r\n meshes: count(fileInfo.Meshes),\r\n models: count(fileInfo.Models),\r\n animations: count(fileInfo.Animations),\r\n materials: count(fileInfo.Materials),\r\n textures: count(fileInfo.Textures)\r\n }\r\n };\r\n}\r\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","rebuildMissingBounds","classes","OPTION_KEYS","normalizeEmit","undefined","Error","classMap","values","cloneValues","assertKnownOptions","options","key","keys","has","TypeError","validateBoolean","name","value","validateRule","validateClassKey","includes","validateClass","type","Class","mergeClasses","next","entries","optionValue","hasOwn","normalizeValues","base","hasClasses","some","isRawGr2Result","version","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readRawInput","readGr2Raw","meshName","mesh","meshIndex","vertexChannel","channel","vertex","hasVertexChannel","length","requireVertexChannel","feature","triangleFaces","faces","group","indices","index","push","shouldApplyMeshRule","reader","rule","context","fullContext","result","unpackMeshTangents","json","raw","meshes","tangents","unpack","target","morphTargets","vertexIndices","positions","position","count","Math","floor","rebuildMeshNormals","normal","generateNormals","rebuildMeshTangents","normals","uvs","tangent","generateTangents","rebuildMeshBiNormals","tangentValues","binormal","generateBiNormals","rebuildMissingMeshData","processMeshData","finishProjection","projected","decompressAnimationCurves","buildJson","emitJson","fileInfo","buildCmf","shared","projectShared","hydrateCmf","buildCmfFromShared","reassembleGr2Lods","source","readWithValues","parsed","toJsonValue","seen","WeakSet","item","isArray","map","toJSON","add","delete","out","inspectRawGr2Result","filter","Boolean","format","sectionCount","secCount","FromFileName","counts","Meshes","models","Models","animations","Animations","materials","Materials","textures","Textures"],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sources":["../../../../../../src/resource/formats/gr2/core/helpers.js"],"sourcesContent":["import { toJsonAcyclic } from \"../../../format/jsonPolicies.js\";\nimport { readGr2Raw } from \"./reader.js\";\nimport { emitJson } from \"./json.js\";\nimport { projectShared, CLASS_KEYS as GR2_CLASS_KEYS } from \"./shared.js\";\nimport { tangents } from \"./tangents.js\";\nimport { decompressAnimationCurves } from \"./curves.js\";\nimport { buildCmfFromShared, CMF_CLASS_KEYS, reassembleGr2Lods } from \"./targets.js\";\nimport { hydrateCmf } from \"../../cmf/core/utils/hydration.js\";\n\nexport const CLASS_KEYS = Object.freeze(Array.from(new Set([\n ...GR2_CLASS_KEYS,\n ...CMF_CLASS_KEYS\n])));\n\nexport const OUTPUT_JSON = \"json\";\nexport const OUTPUT_GR2 = \"gr2\";\nexport const OUTPUT_GR2_JSON = \"gr2Json\";\nexport const OUTPUT_CMF = \"cmf\";\nexport const OUTPUT_RAW = \"raw\";\n\nexport const DEFAULT_VALUES = Object.freeze({\n emit: OUTPUT_JSON,\n decompressCurves: false,\n unpackTangents: false,\n rebuildMissingNormals: false,\n rebuildMissingTangents: false,\n rebuildMissingBiNormals: false,\n rebuildMissingBounds: false,\n classes: Object.freeze({})\n});\n\nconst OPTION_KEYS = new Set([\n \"emit\",\n \"decompressCurves\",\n \"unpackTangents\",\n \"rebuildMissingNormals\",\n \"rebuildMissingTangents\",\n \"rebuildMissingBiNormals\",\n \"rebuildMissingBounds\",\n \"classes\"\n]);\n\nfunction normalizeEmit(emit)\n{\n if (emit === undefined || emit === OUTPUT_JSON) return OUTPUT_JSON;\n if (emit === OUTPUT_GR2_JSON) return OUTPUT_GR2_JSON;\n if (emit === OUTPUT_GR2) return OUTPUT_GR2;\n if (emit === OUTPUT_CMF) return OUTPUT_CMF;\n if (emit === OUTPUT_RAW) return OUTPUT_RAW;\n throw new Error(`CjsGr2Format unknown emit value \"${emit}\"`);\n}\n\nfunction classMap(values)\n{\n return values && values.classes ? values.classes : {};\n}\n\nfunction cloneValues(values)\n{\n return {\n emit: values.emit,\n decompressCurves: values.decompressCurves,\n unpackTangents: values.unpackTangents,\n rebuildMissingNormals: values.rebuildMissingNormals,\n rebuildMissingTangents: values.rebuildMissingTangents,\n rebuildMissingBiNormals: values.rebuildMissingBiNormals,\n rebuildMissingBounds: values.rebuildMissingBounds,\n classes: { ...classMap(values) }\n };\n}\n\nfunction assertKnownOptions(options)\n{\n for (const key of Object.keys(options))\n {\n if (!OPTION_KEYS.has(key))\n {\n throw new TypeError(`CjsGr2Format unknown option \"${key}\"`);\n }\n }\n}\n\nfunction validateBoolean(name, value)\n{\n if (typeof value !== \"boolean\")\n {\n throw new TypeError(`CjsGr2Format ${name} option must be true or false`);\n }\n return value;\n}\n\nfunction validateRule(name, value)\n{\n if (typeof value === \"boolean\" || typeof value === \"function\") return value;\n throw new TypeError(`CjsGr2Format ${name} option must be true, false, or a function`);\n}\n\n/** Validates a requested runtime class key for the GR2 format reader. */\nexport function validateClassKey(key)\n{\n if (!CLASS_KEYS.includes(key))\n {\n throw new Error(`CjsGr2Format unknown class type \"${key}\"`);\n }\n}\n\n/** Validates a resolved runtime class constructor for the GR2 format reader. */\nexport function validateClass(type, Class)\n{\n validateClassKey(type);\n if (typeof Class !== \"function\")\n {\n throw new TypeError(`CjsGr2Format class \"${type}\" must be a constructor`);\n }\n}\n\nfunction mergeClasses(values, classes)\n{\n if (!classes || typeof classes !== \"object\")\n {\n throw new TypeError(\"CjsGr2Format classes option must be an object\");\n }\n\n const next = { ...values.classes };\n for (const [ type, Class ] of Object.entries(classes))\n {\n validateClass(type, Class);\n next[type] = Class;\n }\n values.classes = next;\n}\n\nfunction optionValue(options, keys)\n{\n for (const key of keys)\n {\n if (Object.hasOwn(options, key)) return options[key];\n }\n return undefined;\n}\n\n/**\n * Normalizes reader options against their supported defaults for the GR2 format\n * reader.\n */\nexport function normalizeValues(base = DEFAULT_VALUES, options = {})\n{\n if (!options || typeof options !== \"object\")\n {\n throw new TypeError(\"CjsGr2Format options must be an object\");\n }\n\n assertKnownOptions(options);\n\n const values = cloneValues(base);\n\n if (Object.hasOwn(options, \"emit\")) values.emit = normalizeEmit(options.emit);\n if (Object.hasOwn(options, \"decompressCurves\"))\n {\n values.decompressCurves = validateBoolean(\"decompressCurves\", options.decompressCurves);\n }\n\n const unpackTangents = optionValue(options, [ \"unpackTangents\" ]);\n if (unpackTangents !== undefined)\n {\n values.unpackTangents = validateRule(\"unpackTangents\", unpackTangents);\n }\n\n const rebuildMissingNormals = optionValue(options, [ \"rebuildMissingNormals\" ]);\n if (rebuildMissingNormals !== undefined)\n {\n values.rebuildMissingNormals = validateRule(\"rebuildMissingNormals\", rebuildMissingNormals);\n }\n\n const rebuildMissingTangents = optionValue(options, [ \"rebuildMissingTangents\" ]);\n if (rebuildMissingTangents !== undefined)\n {\n values.rebuildMissingTangents = validateRule(\"rebuildMissingTangents\", rebuildMissingTangents);\n }\n\n const rebuildMissingBiNormals = optionValue(options, [ \"rebuildMissingBiNormals\" ]);\n if (rebuildMissingBiNormals !== undefined)\n {\n values.rebuildMissingBiNormals = validateRule(\"rebuildMissingBiNormals\", rebuildMissingBiNormals);\n }\n\n const rebuildMissingBounds = optionValue(options, [ \"rebuildMissingBounds\" ]);\n if (rebuildMissingBounds !== undefined)\n {\n if (typeof rebuildMissingBounds !== \"boolean\")\n {\n throw new TypeError(\"CjsGr2Format rebuildMissingBounds option must be true or false\");\n }\n values.rebuildMissingBounds = rebuildMissingBounds;\n }\n\n if (Object.hasOwn(options, \"classes\"))\n {\n mergeClasses(values, options.classes);\n }\n\n if ((values.emit === OUTPUT_GR2 || values.emit === OUTPUT_CMF) && !hasClasses(values.classes))\n {\n throw new TypeError(`CjsGr2Format emit \"${values.emit}\" requires explicit classes`);\n }\n\n return values;\n}\n\nfunction hasClasses(classes)\n{\n return !!classes && Object.values(classes).some((Class) => typeof Class === \"function\");\n}\n\nfunction isRawGr2Result(value)\n{\n return !!value && typeof value === \"object\" && \"fileInfo\" in value &&\n typeof value.version === \"number\";\n}\n\n/**\n * Normalizes GR2 input into a Uint8Array. readGr2Raw indexes `.buffer`,\n * `.byteOffset`, `.byteLength` and calls `.subarray()`, so a raw\n * ArrayBuffer (e.g. from `fetch(...).then(r => r.arrayBuffer())`, which\n * is how ccpwgl's resource loader supplies bytes) must be wrapped in a\n * view before it reaches readGr2Raw, not passed straight through.\n *\n * @param {Uint8Array|ArrayBuffer|Buffer|DataView} input GR2 bytes.\n * @returns {Uint8Array} A Uint8Array view over the same bytes.\n */\nfunction toBytes(input)\n{\n if (input instanceof Uint8Array) return input;\n if (typeof ArrayBuffer !== \"undefined\" && input instanceof ArrayBuffer) return new Uint8Array(input);\n if (ArrayBuffer.isView(input)) return new Uint8Array(input.buffer, input.byteOffset, input.byteLength);\n throw new TypeError(\"CjsGr2Format: input must be GR2 bytes (Uint8Array, Buffer, DataView or ArrayBuffer)\");\n}\n\n/** Reads and validates raw input bytes for the GR2 format reader. */\nexport function readRawInput(input)\n{\n return isRawGr2Result(input) ? input : readGr2Raw(toBytes(input));\n}\n\nfunction meshName(mesh, meshIndex)\n{\n return mesh && mesh.name ? `\"${mesh.name}\"` : `#${meshIndex}`;\n}\n\nfunction vertexChannel(mesh, channel)\n{\n return mesh && mesh.vertex && mesh.vertex[channel];\n}\n\nfunction hasVertexChannel(mesh, channel)\n{\n const value = vertexChannel(mesh, channel);\n return !!value && value.length > 0;\n}\n\nfunction requireVertexChannel(mesh, meshIndex, channel, feature)\n{\n const value = vertexChannel(mesh, channel);\n if (!value || value.length === 0)\n {\n throw new Error(`CjsGr2Format ${feature} requires mesh.vertex.${channel} for mesh ${meshName(mesh, meshIndex)}`);\n }\n return value;\n}\n\nfunction triangleFaces(mesh, meshIndex, feature)\n{\n const faces = [];\n for (const group of mesh.indices || [])\n {\n for (const index of group?.faces ?? [])\n {\n faces.push(index);\n }\n }\n\n if (faces.length === 0)\n {\n throw new Error(`CjsGr2Format ${feature} requires triangle indices for mesh ${meshName(mesh, meshIndex)}`);\n }\n\n return faces;\n}\n\nfunction shouldApplyMeshRule(reader, rule, context)\n{\n const fullContext = { reader, ...context };\n\n if (typeof rule === \"function\")\n {\n const result = rule(fullContext);\n if (typeof result !== \"boolean\")\n {\n throw new TypeError(`CjsGr2Format ${context.feature} rule must return true or false`);\n }\n return result;\n }\n\n return rule;\n}\n\nfunction unpackMeshTangents(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (shouldApplyMeshRule(reader, values.unpackTangents, {\n options: values, raw, json, mesh, meshIndex,\n feature: \"unpackTangents\",\n channel: \"tangent\"\n }))\n {\n tangents.unpack(mesh);\n for (const target of mesh.morphTargets ?? [])\n {\n const\n indices = target.vertexIndices ?? [],\n positions = target.vertex?.position ?? [],\n count = indices.length || Math.floor(positions.length / 3) ||\n Math.floor((mesh.vertex?.position ?? []).length / 3);\n tangents.unpack({ vertex: target.vertex }, count);\n }\n }\n }\n}\n\nfunction rebuildMeshNormals(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingNormals\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingNormals\");\n\n mesh.vertex.normal = Array.from(tangents.generateNormals(positions, faces));\n}\n\nfunction rebuildMeshTangents(mesh, meshIndex)\n{\n const\n positions = requireVertexChannel(mesh, meshIndex, \"position\", \"rebuildMissingTangents\"),\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingTangents\"),\n uvs = requireVertexChannel(mesh, meshIndex, \"texcoord0\", \"rebuildMissingTangents\"),\n faces = triangleFaces(mesh, meshIndex, \"rebuildMissingTangents\");\n\n mesh.vertex.tangent = Array.from(tangents.generateTangents(positions, normals, uvs, faces));\n}\n\nfunction rebuildMeshBiNormals(mesh, meshIndex)\n{\n const\n normals = requireVertexChannel(mesh, meshIndex, \"normal\", \"rebuildMissingBiNormals\"),\n tangentValues = requireVertexChannel(mesh, meshIndex, \"tangent\", \"rebuildMissingBiNormals\");\n\n mesh.vertex.binormal = tangents.generateBiNormals(normals, tangentValues);\n}\n\nfunction rebuildMissingMeshData(reader, json, raw, values)\n{\n for (let meshIndex = 0; meshIndex < (json.meshes || []).length; meshIndex++)\n {\n const mesh = json.meshes[meshIndex];\n if (!hasVertexChannel(mesh, \"normal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingNormals\", channel: \"normal\" }))\n {\n rebuildMeshNormals(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"tangent\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingTangents,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingTangents\", channel: \"tangent\" }))\n {\n rebuildMeshTangents(mesh, meshIndex);\n }\n\n if (!hasVertexChannel(mesh, \"binormal\") && shouldApplyMeshRule(\n reader,\n values.rebuildMissingBiNormals,\n { options: values, raw, json, mesh, meshIndex, feature: \"rebuildMissingBiNormals\", channel: \"binormal\" }))\n {\n rebuildMeshBiNormals(mesh, meshIndex);\n }\n }\n}\n\nfunction processMeshData(reader, json, raw, values)\n{\n unpackMeshTangents(reader, json, raw, values);\n rebuildMissingMeshData(reader, json, raw, values);\n}\n\nfunction finishProjection(reader, projected, raw, values)\n{\n if (values.decompressCurves)\n {\n decompressAnimationCurves(projected);\n }\n\n processMeshData(reader, projected, raw, values);\n return projected;\n}\n\nfunction buildJson(reader, raw, values)\n{\n return finishProjection(reader, emitJson(raw.fileInfo, raw.version, {\n classes: values.emit === OUTPUT_GR2 || ((values.emit === OUTPUT_JSON || values.emit === OUTPUT_GR2_JSON) && hasClasses(values.classes))\n ? values.classes\n : {},\n rebuildMissingBounds: values.rebuildMissingBounds\n }), raw, values);\n}\n\nfunction buildCmf(reader, raw, values)\n{\n const shared = finishProjection(\n reader,\n projectShared(raw.fileInfo, raw.version, { rebuildMissingBounds: values.rebuildMissingBounds }),\n raw,\n values\n );\n return hydrateCmf(\n buildCmfFromShared(reassembleGr2Lods(shared)),\n values.classes,\n { source: values.source },\n \"CjsGr2Format CMF\"\n );\n}\n\n/** Reads input using normalized format options for the GR2 format reader. */\nexport function readWithValues(reader, input, values)\n{\n const parsed = readRawInput(input);\n if (values.emit === OUTPUT_RAW) return parsed;\n if (values.emit === OUTPUT_CMF) return buildCmf(reader, parsed, values);\n return buildJson(reader, parsed, values);\n}\n\n/** Converts a parsed payload into a JSON-safe value for the GR2 format reader. */\n/**\n * Convert to JSON, refusing a cycle, naming this reader in the error.\n *\n * @param {*} value Any decoded value.\n * @returns {*} A JSON-safe value.\n */\nexport function toJsonValue(value)\n{\n return toJsonAcyclic(value, \"CjsGr2Format\");\n}\n\n/**\n * Inspects raw GR2 result without materializing the full GR2 format reader\n * payload.\n */\nexport function inspectRawGr2Result(parsed)\n{\n const\n fileInfo = parsed.fileInfo || {},\n count = value => Array.isArray(value) ? value.filter(Boolean).length : 0;\n\n return {\n reader: \"CjsGr2Format\",\n format: \"gr2\",\n version: parsed.version | 0,\n sectionCount: parsed.secCount | 0,\n source: fileInfo.FromFileName ?? \"\",\n counts: {\n meshes: count(fileInfo.Meshes),\n models: count(fileInfo.Models),\n animations: count(fileInfo.Animations),\n materials: count(fileInfo.Materials),\n textures: count(fileInfo.Textures)\n }\n };\n}\n"],"names":["CLASS_KEYS","Object","freeze","Array","from","Set","GR2_CLASS_KEYS","CMF_CLASS_KEYS","OUTPUT_JSON","OUTPUT_GR2","OUTPUT_GR2_JSON","OUTPUT_CMF","OUTPUT_RAW","DEFAULT_VALUES","emit","decompressCurves","unpackTangents","rebuildMissingNormals","rebuildMissingTangents","rebuildMissingBiNormals","rebuildMissingBounds","classes","OPTION_KEYS","normalizeEmit","undefined","Error","classMap","values","cloneValues","assertKnownOptions","options","key","keys","has","TypeError","validateBoolean","name","value","validateRule","validateClassKey","includes","validateClass","type","Class","mergeClasses","next","entries","optionValue","hasOwn","normalizeValues","base","hasClasses","some","isRawGr2Result","version","toBytes","input","Uint8Array","ArrayBuffer","isView","buffer","byteOffset","byteLength","readRawInput","readGr2Raw","meshName","mesh","meshIndex","vertexChannel","channel","vertex","hasVertexChannel","length","requireVertexChannel","feature","triangleFaces","faces","group","indices","index","push","shouldApplyMeshRule","reader","rule","context","fullContext","result","unpackMeshTangents","json","raw","meshes","tangents","unpack","target","morphTargets","vertexIndices","positions","position","count","Math","floor","rebuildMeshNormals","normal","generateNormals","rebuildMeshTangents","normals","uvs","tangent","generateTangents","rebuildMeshBiNormals","tangentValues","binormal","generateBiNormals","rebuildMissingMeshData","processMeshData","finishProjection","projected","decompressAnimationCurves","buildJson","emitJson","fileInfo","buildCmf","shared","projectShared","hydrateCmf","buildCmfFromShared","reassembleGr2Lods","source","readWithValues","parsed","toJsonValue","toJsonAcyclic","inspectRawGr2Result","isArray","filter","Boolean","format","sectionCount","secCount","FromFileName","counts","Meshes","models","Models","animations","Animations","materials","Materials","textures","Textures"],"mappings":"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"}